《ResRep: Lossless CNN Pruning via Decoupling Remembering and Forgetting》

论文地址:https://arxiv.org/pdf/2007.03260.pdf
code地址:https://link.zhihu.com/?target=https%3A//github.com/DingXiaoH/ResRep

一、论文主要思路:

  1. 在模型的conv层之后(若没bn层,有bn层则将conv-bn层合并形成一个卷积操作之后再加入compactor layer)加入修剪层(compactor layer论文最后说明为何要单独加入修剪层),是1*1的卷积核,也就是只对conv输出做线性变换
  2. 在1加入的修剪层上施加惩罚项,使之趋于0,增加稀疏性。(在本文中,并没有这种做,在更新修剪层参数时直接加上惩罚项的梯度,这样等价于在目标损失函数上加上惩罚项)对于施加惩罚项进行稀疏训练可以参考这个论文:https://blog.csdn.net/janezjlj/article/details/127508566?spm=1001.2014.3001.5501
  3. 对于2训练之后,将接近0的通道进行删除
  4. 将conv-compactor layer 进行等价合并,形成修剪后的模型
    思路对应原文如下:

二、接下来对思路当中几个点作一下说明:

  1. 思路第一步的在conv后紧跟bn层,如何将conv-bn合并成一个conv
    公式1:conv层的输出
    公式2:conv-bn的输出

    公式4:将公式2拆解即可得到以下

  2. 施加惩罚项与不施加直接更新梯度的对比
    公式10 是直接在损失函数之后加入惩罚项

    在本文当中惩罚项如下公式11和12,是通道的参数平方和

    那么,更新则使用公式14,故我们可以省略在损失函数之后加入惩罚项,直接在梯度更新时加上惩罚项的梯度。
    观察公式14还会发现在第一项损失的梯度乘上了m,这个m是{0,1},代表是否希望将F参数进行置为0。当m=0时,那么前一项为0,F就可以在后一项的作用下稳步趋于0,达到高修剪性。

  3. 那么第三步来说下修剪,在下图公式3中,S(i)是保留的通道index,那么左边是该层修剪之后的参数。由于修剪该层的输出通道,下一层的输入通道数也会随之改变,故公式3右边的是下一层修剪之后的参数,可以看到输入通道也是S(i)。

  4. 再来聊一聊,修剪之后如何将conv-compactor合并成一个conv,进而形成修剪后的模型:
    下图是conv-compactor的输出

    那么下图是上图由于卷积可加性,展开之后:

    想要将上图中公式7左边转换为等号右边部分,则K`如公式8,b的如公式9

三、最后说一下文章标题:ResRep

其实就是将训练与修剪进行解耦,使得修剪不会影响训练的准确率。解耦即是通过在conv之后加入单独的修剪层实现的。只在修剪层进行惩罚项,不会影响其他层参数的梯度更新结果。那么就不会使训练性能下降。

论文解读《ResRep: Lossless CNN Pruning via Decoupling Remembering and Forgetting》相关推荐

  1. 论文解读PCT: Point Cloud Transformer(用于点云处理的Transformer)

    最近几年transformer越来越火,在NLP.CV等领域都取得了很大的成功.这篇文章作者利用了transformer能够处理无序数据的特点,将transformer应用到点云的处理上.它的想法是基 ...

  2. CVM2021| PCT: Point cloud transformer(分类+分割任务SOTA)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨paopaoslam 来源丨 泡泡机器人SLAM 标题:PCT: Point cloud tra ...

  3. PCT: Point Cloud Transformer

    PCT:点云Transformer Meng-Hao Guo Tsinghua University gmh20@mails.tsinghua.edu.cn Jun-Xiong Cai Tsinghu ...

  4. FastFormers 论文解读:可以使Transformer 在CPU上的推理速度提高233倍

    自Transformers诞生以来,紧随其后的是BERT,在几乎所有与语言相关的任务中,无论是问题回答,情感分析,文本分类还是文本生成,都占据着NLP的主导地位. 与RNN和LSTM消失的梯度问题(不 ...

  5. Point Cloud Transformer(PCT)代码实现

    Point Cloud Transformer(PCT)代码实现 目前最火热的Transformer在自然语言和图像识别中扮演了极其重要的角色,在点云数据集中也不例外,清华大学近期提出在点云中运用Tr ...

  6. 论文解读:《基于BERT和二维卷积神经网络的DNA增强子序列识别transformer结构》

    论文解读:<A transformer architecture based on BERT and 2D convolutional neural network to identify DN ...

  7. Point Cloud Transformer(PCT)阅读翻译

    PCT: Point Cloud Transformer 1. Introduction transformer是一种 encoder-decoder结构,包含了三个模块:输入词嵌入,位置(顺序)编码 ...

  8. 论文阅读 PCT:Point Cloud Transformer

    论文阅读 PCT:Point Cloud Transformer PCT 介绍 Input Embedding native 版本 enhanced 版本 Attention PCT 介绍 PCT是基 ...

  9. AI论文解读:基于Transformer的多目标跟踪方法TrackFormer

    摘要:多目标跟踪这个具有挑战性的任务需要同时完成跟踪目标的初始化.定位并构建时空上的跟踪轨迹.本文将这个任务构建为一个帧到帧的集合预测问题,并提出了一个基于transformer的端到端的多目标跟踪方 ...

  10. 论文解读:《功能基因组学transformer模型的可解释性》

    论文解读:<Explainability in transformer models for functional genomics> 1.文章概括 2.背景 3.相关工作 4.方法 4. ...

最新文章

  1. CentOS安装VSFTP及配置用户
  2. jQuery 的 slideUp 和 slideDown 下拉卷动问题
  3. html5插件教程,HTML5教程 | HTML5 time元素
  4. PHP代码加密 -- php_strip_whitespace函数,去掉源代码所有注释和空格并显示在一行...
  5. Subject 在 SAP Spartacus Popover Component 中的应用
  6. 开心的金明(洛谷-P1060)
  7. Mysql数据库-Centos和Raspbian主从复制(备份)
  8. 刚装的matlab R2010a运行quad2d时提示找不到指定的程序! 提示信息: libmwblas: load error: csrot Caught
  9. 电脑一直弹出传奇游戏网页弹窗怎么办
  10. 转:标准C++中的string类的用法总结
  11. 奥本海姆信号与系统第2版笔记和课后答案
  12. 用QT实现一个简单的桌面宠物
  13. 结构梁配筋最牛插件_结构设计最让人困惑的问题解析汇总
  14. ARM学习日记--开发板的使用
  15. 车主之家-汽车销量与汽车配置-python爬虫实现
  16. 微信小程序WebSocket使用案例
  17. python学习No5
  18. echarts中国地图(百度地图)
  19. 中国农业科学院培训中心职业技能等级证书及培训证书
  20. 二维点云拉普拉斯深度平滑算法-matlab

热门文章

  1. 报SQL异常Parameter index out of range (1 > number of parameters, which is 0).
  2. 全面解析四大主流音频技术
  3. zblog php wordpress,zblog和wordpress哪个好
  4. ArcGIS API For Javascript 4.15 绘制地图:在地图上测距离、测面积和在不同图层上搜索
  5. Learn OpenGL 笔记7.4 PBR-Specular IBL(Image based lighting-特殊的基于图像的照明)
  6. win10 icc文件路径
  7. 运营技巧|要如何提升用户留存率?
  8. 关于wlw(windows live writer):“无法连接到您的日志服务:服务器响应无效”的解决方案
  9. 读 Lars V. Ahlfors 之《复分析》
  10. Mac 如何开启实现DOH保护隐私?