剪枝是压缩神经网络模型的常用技术。 剪枝方法探索模型权重(参数)中的冗余,并尝试删除/修剪冗余和非关键权重。 冗余元素从模型中修剪,其值归零,我们确保它们不参与反向传播过程。
修剪深度学习模型有三种常见做法,NNI 通过在关键修剪阶段工作来支持上述所有修剪实践。
第一步:加载待剪枝的模型
使用一个简单的模型,并在MNIST数据集上进行了预训练。
import torch
import torch.nn.functional as F
from torch.optim import SGD
from nni_assets.compression.mnist_model import TorchModel, trainer, evaluator, device
# 随机数种子
import numpy as np
import random
torch.manual_seed(1)
torch.cuda.manual_seed_all(1)
np.random.seed(1)
random.seed(1)
# define the model
model = TorchModel().to(device)
第二步:待剪枝模型的预训练
训练一个深度学习模型,实际上是在用数据来寻找一个最优的参数组合,这些参数决定了模型在输入数据时如何进行计算。通过训练,我们可以找到一组能够最好地拟合我们的数据的参数。这个过程还可以帮助我们理解每个参数在模型中的重要性。
在模型剪枝的过程