解读DPFPS: Dynamic and Progressive Filter Pruning for Compressing Convolutional Neural Networks from

DPFPS: Dynamic and Progressive Filter Pruning for Compressing Convolutional
Neural Networks from Scratch

代码地址:https://github.com/taoxvzi/DPFPS/blob/main/scripts/run_resnet101_dpss_pr_0.45.sh
先来聊聊题目:动态渐进式滤波器修剪
其有两个主要内容:
1、动态:每层的修建率不是固定的,是动态计算出来的。其优点很明显:防止修剪过度导致精度下降
2、渐进:施加惩罚项的系数lamda,不是一个固定值,是随着epoch而变化,这样不会一开始就大量修剪

一、训练的Loss 如下:
在这里插入图片描述
对于正则项,会发现是施加在在这里插入图片描述上的,这个符号代表的是需要被修剪通道的参数,可以这样理解:惩罚项只对修剪通道起作用。
那么开始所说的渐进式修剪,体现在lamda的更新上,其更新公式如下:
在这里插入图片描述

二、训练过程当中对待修剪通道参数梯度的更新如下:

在这里插入图片描述
三、开始所说的动态含义,体现在修剪每一层时,计算该层的灵敏度,然后根据灵敏度得出修剪率。
那么就来说说灵敏度的计算:

解读DPFPS: Dynamic and Progressive Filter Pruning for Compressing Convolutional Neural Networks from_第1张图片
该公式第一项是当前层参数的函数,第二项是下层参数的函数。也就是说灵敏度的计算结合了该层参数和下一层的参数。使得灵敏度更加准确,有利于剪枝。

最后,是该论文思路的算法:

epcoh迭代:

  1. 前向后向传播更新参数
  2. 计算灵敏度,根据算出来的修剪率,取出灵敏度低的部分,即需要修剪的部分
  3. 对于该部分通道参数根据上面二 所示的更新公式进行更新
  4. 计算修剪率
  5. 循环
    最后,进行修剪并返回模型
    解读DPFPS: Dynamic and Progressive Filter Pruning for Compressing Convolutional Neural Networks from_第2张图片

你可能感兴趣的:(剪枝,算法,人工智能)