卷积通用模型的剪枝、蒸馏---剪枝篇(此处以deeplabv3+为例,可根据模型自行定制剪枝层)

这篇博客总结了作者在剪枝方面的经验,以deeplabv3+模型为例,介绍了环境配置、剪枝过程和微调步骤。首先,详细说明了环境配置和所需库的安装。接着,讲解了两种剪枝策略:结构化剪枝和针对特定卷积层的剪枝,并给出了剪枝成功的标志。最后,提到了在训练时如何使用剪枝后的模型进行微调。
摘要由CSDN通过智能技术生成

之后的两篇文章是对前段时间工作的一个总结。
采用DepGrap进行结构化剪枝,剪枝方法是利用BN进行通道剪枝。
一、原理
网络结构通常会在卷积层之后插入一个 BN 层,并带有通道级缩放/移位参数。因此,我们可以直接利用 BN 层中的 γ 参数作为网络瘦身所需的缩放因子。它的巨大优势在于不会给网络增加开销。
1)如果我们在没有 BN 层的 CNN 中添加缩放层,缩放因子的值对于评估通道的重要性没有意义,因为卷积层和缩放层都是线性变换。可以通过减小缩放因子值同时放大卷积层中的权重来获得相同的结果。
2)如果我们在 BN 层之前插入一个缩放层,缩放层的缩放效果将被 BN 中的归一化过程完全抵消。
3)如果我们在 BN 层之后插入缩放层,则每个通道有两个连续的缩放因子。

BN会按通道对输入特征进行归一化,使得不同的特征处于比较接近的范围内。我们将缩放因子(从批量归一化层重用)与卷积层中的每个通道相关联,为每个通道引入一个缩放因子 γ,它与该通道的输出相乘。稀疏正则化则被施加在这些缩放因子上,以自动识别不重要的通道。缩放因子值较小(橙色)的通道将被修剪(左侧)。修剪后,我们获得紧凑模型(右侧),然后对其进行微调,以实现与正常训练的全网络相当(甚至更高)的精度。
在任何一个网络中,BN的scale参数都具备一定的绝对值大小(也就是不会过小),这意味着各个通道都具有不可忽略的重要性。解决这类问题的一种有效方法是使用稀疏训练,通过对scale参数施加正则化项来稀疏化一部分通道。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ghx3110

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值