Pruning Filters for Efficient ConvNets
作者:弓 长 木 公
论文: https://arxiv.org/pdf/1608.08710.pdf
github代码:https://github.com/tyui592/Pruning_filters_for_efficient_convnets

主要思想:

由于CNN通常在不同的 Filter 和特征信道之间具有显着的冗余,论文中通过裁剪 Filter 来减少CNN的计算成本。裁剪方法是计算L1范数,然后裁剪掉较少的,多少取决于加速比。

理论基础:

具体实现


Determining single layer’s sensitivity to pruning

为了弄清楚每层的敏感度,我们对每一层独立剪枝并在验证集上对剪枝后的网络进行评估。Figure 2(b)展示了结果,很明显斜率比较平缓的层对剪枝的敏感度更高,我们根据经验来决定对每一层的卷积核进行剪枝,对于深度网络(如VGG-16或ResNets),我们观察到同一stage(相同尺寸的特征图)对应的层对剪枝的敏感度相似,为了避免引入layer-wise meta-parameters,我们对于同一stage的所有层使用相同的剪枝比例。对于那些敏感度高的层,我们剪枝时比例很小,甚至完全不进行剪枝。

Puring filters across multiple layers

之前的工作是逐层剪枝,然后重复训练来恢复精度。然而,理解如何能一次性对多层进行剪枝是非常有必要的:

  1. 对于深度网络,逐层剪枝再训练太耗时;
  2. 整体剪枝的方法提供给网络稳健性的一个全面视野,从而导致产生一个更小的网络;
  3. 对于复杂的网络,一个整体的方法很有必要,比如对于ResNet,对恒等映射特征图或者每个残差模块的第二个层剪枝会导致额外层的修剪;
    为了对多层同时剪枝,我们考虑了两个策略:
  4. 每一层独立剪枝,即在计算(求权重绝对值之和)时不考虑上一层的修剪情况,所以计算时下图中的黄点仍然参与计算;
  5. 贪心策略,计算时不计算已经修剪过的,即黄点不参与计算;

上图说明了两种方法之间的区别,实验结果证明第二种方法精度会高一点。

残差网络的处理:

residual block 中的第一层的 Filter 可以随便修剪,因为它不改变 block 的输出特征图的数量。
residual block 中的第二层(标记为绿色)的 Filter 的修剪由 shortcut projection 的修剪结果决定,因为要保证输入和输出的尺寸要相同才能相加(ResNet原理)。
因为 identical feature maps 比 added residual maps 更重要,因此要修剪的 feature maps 应该由shortcut layer的修剪结果确定。为了确定要修剪哪些特征图,论文中使用与1 × 1 kernels shortcut convolutional layers 相同的选择标准。
residual block 中第二层修剪的 Filter index 与shortcut layer 所选择的 Filter index 相同。

再训练:

两种策略:
1)修剪一次并重新训练:一次性同时修剪多个层的 Filter 然后重新训练。
2)迭代修剪并重新训练:一层层的修剪或者一个一个 Filter 的修剪然后迭代重新训练。
对于具有修剪弹性的图层,第一种方法可以用于删除网络的重要部分,并且可以通过短时间重新训练来恢复精度(小于原始训练时间)。但是,当敏感层的一些 Filter 被剪掉或大部分网络被剪掉时,可能无法恢复原始精度。这时第二种方法可能会产生更好的结果,但迭代过程需要更多的 epochs,特别是对于非常深的网络。

Pruning Filters for Efficient ConvNets详解相关推荐

  1. 【模型压缩】通道剪枝--《Pruning Filters for Efficient ConvNets》

    论文题目:<Pruning Filters For Efficient ConvNets> 论文地址:https://arxiv.org/abs/1608.08710 1. 概述 由于CN ...

  2. 【模型压缩】通道剪枝《Pruning Filters For Efficient ConvNets》论文翻译

    论文题目:<Pruning Filters For Efficient ConvNets> 论文地址:https://arxiv.org/abs/1608.08710 主要思想: 这篇文章 ...

  3. 模型剪枝学习笔记--Pruning Filters for Efficient Convnets

    Pruning Filters for Efficient Convnets 是 ICLR 2017的一篇文章,属于filter pruning,论文链接https://arxiv.org/abs/1 ...

  4. 【神经网络压缩加速之剪枝二】Pruning Filters for Efficient ConvNets

    Abstract 神经网络的广泛应用伴随着计算量的增加和参数存储成本. 最近的研究工作在不损害原来准确度的基础上,通过剪枝和压缩不同层间的权重进行网络压缩. 然而,基于幅值的剪枝(magnitude- ...

  5. 【PRUNING FILTERS FOR EFFICIENT CONVNETS】半译笔记

    一个还可以的中文博客:Pruning Filters For Efficient ConvNets论文解读 - 知乎 摘要 近期关于降低模型压力的方法包括在不降低原始精度的情况下修剪和压缩不同层的权重 ...

  6. 论文笔记——PRUNING FILTERS FOR EFFICIENT CONVNETS

    论文地址:https://arxiv.org/abs/1608.08710 主要思想 这篇文章主要讲了对filters的裁剪,裁剪方法是计算L1范数,然后裁剪掉较少的,多少取决于加速比. 实现效果 V ...

  7. 《Building Efficient ConvNets using Redundant Feature Pruning》论文笔记

    1. 概述 一般在做模型的时候开始最关心的是模型的性能,也就是模型的精度,我们可以增加网络的宽度与深度,来不断增加模型的表达能力.在精度达标之后,网络也变地很臃肿了,其实里面很多的参数都是非必须的,也 ...

  8. Accelerate CNNs from Three Dimensions: A Comprehensive Pruning Framework详解

    Accelerate CNNs from Three Dimensions: A Comprehensive Pruning Framework详解 文章目录 Accelerate CNNs from ...

  9. vue如何过滤html标签,Vue过滤器filters使用详解

    这次给大家带来Vue过滤器filters使用详解,Vue过滤器filters使用的注意事项有哪些,下面就是实战案例,一起来看一下. 示例代码 采用vue单文件组件,使用moment插件格式化日期 {{ ...

最新文章

  1. 基于单幅图像一致性学习的弱光视频增强(CVPR2021)
  2. 没有对“C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files”的写访问权限...
  3. Android Studio Debug
  4. python相比c语言更动态_Python金融大数据分析
  5. 实例:如何设计一款好的Metro UI应用
  6. 用Springboot实现文件下载功能
  7. 针对C64x+的一些优化经验
  8. C#加密解密DES字符串转
  9. Python学习笔记整理(三)Python中的动态类型简介
  10. 详述MySQL事务及ACID特性的实现原理
  11. [翻译] Canvas 不用写代码的动画
  12. gmt绘制江苏省高程异常图
  13. 阿里iconfont矢量图库使用
  14. SylixOS --- RMS调度详解
  15. 大一java计算圆面积_Java练习题——计算圆的面积
  16. 深入java虚拟机 视频_深入理解Java虚拟机全套完整视频教程
  17. oracle数据库userenv,Oracle数据库中userenv、sys_context的参数
  18. 腾讯云服务器--学生优惠版购买以及配置方法
  19. JAVA 按姓氏分类的电话薄(界面、方法的实现和讲解)
  20. Multisim基础 利用示波器观察二极管的正向电压

热门文章

  1. uniapp使用高德地图线路规划
  2. UI自动化测试框架-从入门到精通
  3. EXCEL显示 文件未保存 解决方法
  4. ZZULIOJ:1015 计算时间间隔
  5. C# AssemblyInfo.cs文件的作用
  6. 深入解析Word页码设置:你不得不学的Office技巧(一)
  7. 动态代理的原理及其应用
  8. 利用Google Chrome滚动截屏,截取整个网页
  9. 全班抽签java程序
  10. 敏捷-细说敏捷建模思想与实践(转)