论文笔记——PRUNING FILTERS FOR EFFICIENT CONVNETS

论文地址:https://arxiv.org/abs/1608.08710

主要思想

这篇文章主要讲了对filters的裁剪,裁剪方法是计算L1范数,然后裁剪掉较少的,多少取决于加速比。

实现效果

  1. VGG-16 34%加速
  2. ResNet-110 38%加速

具体实现

819060-20171009172954355-879082926.png

  1. 对于每一个kernel matrix按列绝对值求和
  2. 对求和结果排序
  3. 裁剪掉m个filters(对应内核矩阵的列),以及对应的输出(Xi+1层中),它又是下一层的输入,所以也得去掉对应的输入filters(对应内核矩阵的行)
  4. 剩余的kernel weights保留

实现细节

819060-20171009173007605-1448211193.png
在跨越多层裁剪的过程中,可能出现kernel matrix裁剪交叉的情况,两种处理方法:

  1. Independent pruning 假设蓝色是确定要裁剪的,然后计算绿色的L1时,要考虑黄色的值,跟之前的裁剪无关。
  2. Greedy pruning 也就是计算绿色的L1时,不考虑已经被裁剪的黄色值
    结果:
    第二种的准确率辉更高。

819060-20171009173036121-805019425.png

残差网络的处理:

  1. 第一层随意裁剪(根据需求),因为它只会影响Xi+1的输入,但是不会影响最后的输出。
  2. residual block里面的裁剪需要注意,因为裁剪需要和shortcut layer保持一致,才能累加。
  3. 因为identical feature maps比added residual maps更重要,所以后者的裁剪结果应该由前者决定。

Prune and Retrain 方法

  1. 裁剪所有层后再继续训练网络
  2. 裁剪一层,重新训练一下
    结果:
    显然第二种好啊,第一种太暴力了,可能造成无法修复的裁剪

转载于:https://www.cnblogs.com/zhonghuasong/p/7642000.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值