论文笔记——PRUNING FILTERS FOR EFFICIENT CONVNETS

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

路人实现代码:https://github.com/tyui592/Pruning_filters_for_efficient_convnets

https://github.com/slothkong/DNN-Pruning

主要思想

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

实现效果

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

具体实现

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

实现细节


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

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

残差网络的处理:

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

Prune and Retrain 方法

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

最新文章

  1. Adobe Audition音频制作
  2. boxes
  3. opencv学习笔记(三)基本数据类型
  4. Unity3D 游戏开发构架篇 —— 动态大场景生成 = 区域加载+对象池管理
  5. Heritrix与Nutch对比
  6. 温故知新 javascript 正则表达式
  7. Unity strip engine code可能会使程序崩溃
  8. 【原创】大数据基础之Marathon(2)marathon-lb
  9. 如何用Python计算Softmax?
  10. pip3 freeze导出依赖包 --Python3
  11. jsp相关笔记(三)
  12. Alpine Linux:如何配置GUI的图形桌面环境:x Desktop Environment
  13. python-day41--约束条件
  14. 代理模式及Spring AOP (一)
  15. 基于Java IO 序列化方案的memcached-session-manager多memcached节点配置
  16. N年的经验在别人眼里是怎么看的?
  17. HTML5 Canvas画图与动画学习59例
  18. ServiceMetadataBehavior 的 HttpsGetEnabled 属性设置为 True,而 HttpsGetUrl 属性是相对地址,但没有 https 基址
  19. WPF 背景网格图
  20. c# AOP 文章地址

热门文章

  1. 快速认识Python
  2. JVM指令集[转]
  3. 出现 “java”不是内部或外部命令,也不是可运行程序或批处理文件的问题
  4. TFTP简单文件传送协议
  5. OPT
  6. vscode 中 vue项目使用eslint插件 检查代码
  7. Tensorflow2.0学习(一)
  8. [2019牛客多校第四场][G. Tree]
  9. 省选模拟赛 Problem 3. count (矩阵快速幂优化DP)
  10. dubbo配置文件