《Learning Efficient Convolutional Networks through Network Slimming》论文笔记

代码地址:slimming

1. 概述

导读:这篇文章是一篇关于CNN网络剪枝的文章,文章里面提出通过BatchNorm层的scaling参数确定重要的channel,排除不重要的channel,从而达到网络瘦身的目的。此外文章还引入了L1范数,通过L1范数约束的稀疏特性使得BN的scaling参数趋于0,从而帮助确定非重要的channel,并按照给定的阈值剪裁掉。总的来说这篇文章具有一定局限性,个人还是比较推崇在线的剪裁算法。

文章中对于剪裁的流程可以归纳为下图1所示,通过BN的scaling参数确定非重要的channel并剪裁掉,之后再根据需要是否再进行迭代剪裁。
在这里插入图片描述

2. 剪裁方法

文章中将正则化引入到网络的损失函数中,其总的定义如下:
在这里插入图片描述
公式的前半部分就是标准的CNN损失函数部分,后面的就是添加的正则化系数,其中 λ \lambda λ是平衡因子, g ( s ) = ∣ s ∣ g(s)=|s| g(s)=s是代表L1正则化。但是由于L1范数的引入导致的梯度问题,可以使用smooth-L1进行替换。

文章使用到的原理其实很简单,就是BN层做归一化的操作,按照其中的参数 γ \gamma γ来选择channel的重要性,其中BN层的运算过程可以描述为:
【公式2】
这里引入scaling参数有如下需要注意的事项:

  • 1)scaling参数是加载BN层上的,若是对于没有BN的CNN网络来说加入scaling会增加卷积的权值参数,带来不了稀疏的结构;
  • 2)在BN层的前面添加scaling参数会被BN给补偿回来;
  • 3)加在BN层的后面就相当于是两个Scaling参数进行运算了,也是达到不了稀疏的目的的;

这篇文章的剪裁方法是迭代进行的,其剪裁的流程图见下图所示:
在这里插入图片描述

3. 实验结果

下表是文章的方法在一些网络在进行剪裁得到的结果:
在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值