因为对深度压缩中的剪枝不太理解遂读了原文作者更早的这篇详细讲网络剪枝的文章点击打开链接
剪枝的过程为:
1.首先剪枝的前提是对已完成训练的网络
2.进行剪枝 要点:根据一个阈值去裁剪参数
a.阈值的确定:首先这个阈值相关于这一层权重的标准差(The pruning threshold is chosen as a quality parameter multiplied by the standard deviation of a layer’s weights.),同时每一层的阈值的确定也要参考相应层对裁剪的敏感度(We used the sensitivity results to find each layer’s threshold: for example, the smallest threshold was applied to the most sensitive layer, which is the first convolutional layer. )。文中以折线图的形式展示了AlexNet每一层对裁剪的敏感度如下:
b.某个权重被裁剪后,与其相连的前一层或者后一层的连接也自动失效了。
3.迭代剪枝(即一次剪枝+一次重新练为一个迭代)
a.重新练的时候参数是在剪枝完的基础上,所以不需要重新初始化;
b.为了消除裁剪产生的错误率,重新训练的时候卷积层固定为剪完后的参数不变,仅重训练全连接层的参数,反之亦然;
c.重新训练采用L2规则化效果更好
4.剪枝完成
如下图示:对AlexNet的第一个全连接层剪枝完后的前后权重分布差异,之前分布范围在 [−0.015,0.015],之后为 [−0.025,0.025].