ThiNet: A Filter Level Pruning Method for Deep Neural Network Compression 阅读笔记

今天阅读了ThiNet: A Filter Level Pruning Method for Deep Neural Network Compression。

剪枝可以用一句话总结:得到各神经元的重要性,去除不重要的神经元并微调网络。如下图所示:
ThiNet: A Filter Level Pruning Method for Deep Neural Network Compression 阅读笔记_第1张图片

ThiNet的框架分如下几步:

  1. 滤波器选择,利用layer i+1 的input channels来选择剪枝layer i哪些部分。
  2. 剪枝,去除layer i+1的弱input channels所对应的layer i的滤波器。
  3. 微调,修复模型,为节省时间,对一层剪枝后仅训练一两个epochs,当整个网络都剪枝后,再训练足够多轮。
  4. 循环至第一步对下一层网络剪枝。

在对layer i剪枝时,其先采样足够多的数据,得到layer i+1 的输入值x_{i+1},以及layer i+1的输出值Y(relu前),相应的x_{i+1}与layer i+1的filter卷积结果X,X在输出通道上的累计就是Y,如下图:
ThiNet: A Filter Level Pruning Method for Deep Neural Network Compression 阅读笔记_第2张图片
选择一个X的子集,该子集和最接近Y,即:
ThiNet: A Filter Level Pruning Method for Deep Neural Network Compression 阅读笔记_第3张图片

上述优化问题可以转化成如下(寻找X的子集,该子集之和最小):
ThiNet: A Filter Level Pruning Method for Deep Neural Network Compression 阅读笔记_第4张图片

文章采用了贪心算法,每步选择一个X之和最小的channel加入T集中。

在上述选择好channel并剔除对应的layer i 滤波器后,还要进行权值放缩来进一步缩小公式5。

需要注意的是,对于ResNet,为保证一个ResNet block输入输出channel数一致,不对block最后一层剪枝。

你可能感兴趣的:(deap,learning,ThiNet)