论文记录-Pruning Filters For Efficient ConvNets

1、概述

  • 一些剪枝的操作主要是减少了全连接层的参数,全连接层的参数量占比最多(比如VGG-16中全连接层操作占了90%,计算量只占了不到1%), 但是主要的计算量集中在卷层操作
  • 论文就是提出了对卷积层进行剪枝操作,然后进行retrain,不会造成稀疏连接(像上篇论文一样,稀疏矩阵操作需要特殊的库等来处理)
  • 全连接层可以使用平均池化层来代替以减少参数量

2、对Filters进行剪枝,以及Feature maps

2.1 基础(CNN相关内容)

  • 设第 i 层的卷积层的输入 channel ni , hi wi 表示输入的特征图feature map的高和宽
  • 使用 ni+1 3D filters Fi,jRni×k×k , 则卷积操作可以将输入的feature maps xiRni×hi×wi 转化为 xi+1Rni+1×hi+1×wi+1
  • 卷积操作的运算数量是: ni+1nik2hi+1wi+1 (对应到下图的kernel matrix)
  • 所以如下图所示,取出一个feature map可以直接减少 nik2hi+1wi+1 个运算
    • 同时接下来的feature map也就没有了,附加移除 ni+2k2hi+2wi+2 个运算
  • 所以减少mfeaturemaps 可以减少 m/ni+1 的计算量
    • 下图的kernel matrix,一个 feature map 对应一列,所以是 m/ni+1
      filters

2.2 去除哪些filters (在单层中)

  • 之前的论文介绍的,权重的绝对值越小,则权重的作用也就越小
    • [ 假设权重值都在0附近,进行乘积得到的值很小,所以对结果造成的影响也很小 ]
    • [ 删除一些冗余的值还有可能防止过拟合 ]
  • 本文使用的是filter的绝对值的和来衡量这个filter的作用,即 |Fi,j| , ( l1 范数)
    • 选择前m最小的绝对值删除
    • 文章和随机选择相同数量的filters和选择最大值的结果比较,此方法最好
  • VGG-16Cifar-10数据集上训练得到的卷积层的权重分布情况,可以看出每一卷积层的分布变化还是很大的

each layer distribution of abs value

2.3 剪枝的敏感度(Sensitivity)

  • 就是每一卷积层进行单独剪枝,查看在validation set上准确度的变化
  • 对于VGG-16, 一些卷积层的filter数量是一样的,所以对于差不多 Sensitivity 的卷积层,使用相同的比例进行剪枝,而对于 Sensitivity 比较大的,选择最小的比例进行剪枝或者不进行剪枝

accuracy

2.4 多层剪枝的策略

  • 之前的一些剪枝策略是逐层剪枝,然后进行retraining,但是这样是非常耗时的
  • 两种策略
    • 独立剪枝:就是每一层是独立的,然后进行剪枝
    • 贪心剪枝:就是考虑到上一层被剪掉的情况
  • 如下图,第一种方法就是不考虑已经前面已经移除的filters(蓝色的),就是黄色的kernel仍然参与计算
    • 而对于贪心剪枝就不用计算黄色的kernel

two strategies of pruning

3、 Retraining

  • 剪枝之后,应该retraining,(和迁移学习很像,有些fine-tune的意思)
  • 也是两种策略:
    • 一次性剪枝然后 retrain
    • 逐层剪枝进行 retrain
  • 第二种策略结果可能会更好,但是需要更多的epochs

4、实验结果

  • 剪枝之后进行retrain,在原来的基础之上得到的结果要比完全重新训练得到的结果好

result
- 和随机剪枝、减去最大值 l1 范数的filters的结果比较

comparison

5、结论

  • 剪枝filters,减少计算量
  • 注意有Batch Normalization层的对应剪枝后,BN层也要对应删除
  • [其实感觉方法挺简单的]

Reference

  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值