深度模型压缩论文(01)- Meta Filter Pruning to Accelerate Deep Convolutional Neural Networks

文章目录

    • 1.摘要和介绍
      • 1.1摘要部分
    • 2.背景和方法
      • 2.1 背景
      • 2.2 贡献
      • 2.3 方法
    • 3.实验和结果
      • 3.1 实验
      • 3.2 结果
    • 4.总结和展望
      • 4.1 总结
      • 4.2 展望

本系列是在阅读深度神经网络模型小型化方面论文时的笔记!内容大部分从论文中摘取,也会有部分自己理解,有错误的地方还望大家批评指出!

论文链接:Meta Filter Pruning to Accelerate Deep Convolutional Neural Networks

1.摘要和介绍

1.1摘要部分

原文摘要:
Existing methods usually utilize pre-defined criterions, such as ‘ p-norm, to prune unimportant filters. There are
two major limitations in these methods. First, the relations of the filters are largely ignored. The filters usually work
jointly to make an accurate prediction in a collaborative way. Similar filters will have equivalent effects on the network prediction, and the redundant filters can be further pruned. Second, the pruning criterion remains unchanged during training. As the network updated at each iteration, the filter distribution also changes continuously. The pruning criterions should also be adaptively switched.
传统的通道裁剪方法都是需要预先定义通道的裁剪准则,然后使用该一成不变的准则对网络进行裁剪,而其中使用的是裁剪准则是不考虑通道之间的相关性,如:lp_norm。该方法存在下面两个问题:1)没有考虑网络中不同通道之间的相关性。一般而言,相关性大的两个通道就可以裁剪掉其中的一个。2)没有考虑网络更新过程中状态的改变。应该使用自适应的通道裁剪准则。
In this paper, we propose Meta Filter Pruning (MFP) to solve the above problems. First, as a complement to the existing ‘p-norm criterion, we introduce a new pruning criterion considering the filter relation via filter distance.
Additionally, we build a meta pruning framework for filter pruning, so that our method could adaptively select the most appropriate pruning criterion as the filter distribution changes. Experiments validate our approach on two image classification benchmarks. Notably, on ILSVRC-2012, our MFP reduces more than 50% FLOPs on ResNet-50 withonly 0.44% top-5 accuracy loss.
文章提出了一种基于元学习的通道删除方法。主要是改进了上面提出的另个问题。其中为了解决第一个问题,提出了两种用于度量两个不同通道之间的相关性的方法,并将其作为新的通道裁剪准则,与常用lp_norm准则一起构成裁剪准则候选集合;为了解决第二个问题,提出了一种基于元学习的自动选择合适的通道裁剪准则框架,其在每一个epoch中会根据当前网络的状态,自动从通道裁剪集合中选择合适的裁剪准则。最终,本文实现了在ILSVRC-2012数据集上,对模型resnet50裁剪50%的flops,得到0.44%的top_5的精度。

2.背景和方法

2.1 背景

  • 为了在计算资源有限的平台上(手机等终端设备)上使用深度神经网络模型,对模型的裁剪是必须的。其中对模型的裁剪分为:权重的裁剪(weight pruning)和卷积通道( filter pruning)的裁剪。其中前者是对神经元进行裁剪,而后者是将整个通道都删除了。前者因为得到的是非结构化稀疏(unstructured sparsity)无发很好的利用基本线性代数子程序库(BLAS)进行加速,所以意义不是很大,所以大家基本上都是研究通道级别的裁剪,因为其得到的是结构化的稀疏( structured sparsity)。
    在这里插入图片描述
  • 在过去的工作中,裁剪的准则主要分为两种:1)系数值越小则越不重要(smaller-norm-less-important),即:如果某个通道的卷积系数或者BN层的稀疏比较小,那么该通道对于结果贡献就不大,可以删除。所以,该类方法大多采用正则化的方法使得模型的系数稀疏化,从而达到裁剪通道的目的。但是该方法没有考虑到通道之间的相关性。2)基于通道之间的相关性(Relational Criterion),相关性越大的两个通道,则必定有一个是冗余的。采用的方法是使用几何均值筛选中模型中最不重要的通道,因为越是接近集合均值的通道这说明和剩下的通道相关性越大,则可以被删除。
  • 传统的通道裁剪存在以下两个问题:1)通道之间的相关性度量方法尝试太少;2)由于通道的裁剪,模型中卷积核的参数分布是动态变换的,所以固定不变的通道裁剪准则是不是不太合适。

2.2 贡献

  • 提出了两种新的通道相关性度量的方法
  • 提出了基于元学习的通道裁剪准则自适应变换框架,从而尽可能的降低裁剪前后模型之前的loss差异
  • 在常用的数据集:cifar10和ImageNet上对常用的模型(resnet , vggnet等)进行试验,得到的实验记过非常好。

2.3 方法

在这里插入图片描述

  • 在每一个epoch过程中,分别会根据lp_norm准则和distace_norm准则,对网络中所有的通道进行排序,然后通过元学习的方法筛选出适合当前状态的通道裁剪准则,并按照该准则的分数对模型进行裁剪。
  • 其中距离准则下使用了Minkowski Distance和Cosine Distance,并通过计算当前通道与剩下所有通道之间距离之和然后再求平均得到的值表示该通道的相关性分数,分数越大则表示通道越重要。
  • lp_norm准则下,使用的是l1和l2正则化来产生稀疏性,然后计算当前通道参数的1范数或者2范数作为通道重要性的分数,分数越大,则通道越重要。
  • 文章的优化目标是降低模型裁剪前后元属性,其中元属性可以为:sparsity level κ, the mean value of weights,
    top-5 loss, top-1 loss等。

3.实验和结果

3.1 实验

  • 数据集:CIFAR-10 , ILSVRC-2012
  • 模型: ResNet , VGGNet
  • 每个实验重复三次,并对结果取均值和方差
  • Minkowski distance with p = 1; 2 cosine distance

3.2 结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 通过上面的实验结果可以看出,无论是在resnet模型还是vggnet模型,在数据集cifar10和imgnet上的结果都比其他方法要好,即:更大的裁剪量可以得到更好的模型
  • 在裁剪量小于40%的时候,在resnet-100,数据集cifar10上,得到的裁剪后的模型精度比未裁剪的要好。
  • This means the performance of our framework is not sensitive to the pruning interval
  • we find that during the early training process, the distance-based criteria are adopted less than norm-based criteria

4.总结和展望

4.1 总结

  • 本文的方法不仅使用基于系数大小的裁剪准则,还使用了基于相关性的裁剪准则,使得结果更好
  • 本文提出了一种基于元学习的自适应选取裁剪准则的框架,可以在每个epoch下,更根据模型的状态选择合适的裁剪专责。
  • MFP achieves comparable performance with state-of-theart methods in several benchmarks.

4.2 展望

  • 目前裁剪准则的查找是在epoch级别上,未来可以考虑将其做在层上。
  • 可以尝试更多的元属性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/445135.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

架构分享--微博架构

先来分享下大神Tim Yang的关于微博的架构设计: 这里主要从 存储和接口角度来讲 对于大流量系统的架构设计,对于写入方面是特别需要注意的,基本上现在遇到的系统都是对于主数据库的写入,然后对于从数据库实现流量的分发。 对于存…

Pytorch(7)-自己设计神经网络会遇到的问题

操作pytorch架构遇到的问题1.网络参数初始化2.查看当前可学习参数3.增加可学习的参数4.参数优化函数Adagrad5.直接修改网络梯度值6.optimizers.zero_grad()报错7.tensor.detach() 和 tensor.data 的区别1.网络参数初始化 在pytorch中,有自己默认初始化参数方式&…

Python里的OS模块常用函数说明

Python的标准库中的os模块包含普遍的操作系统功能。如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的。即它允许一个程序在编写后不需要任何改动,也不会发生任何问题,就可以在Linux和Windows下运行。 下面列出了一些在os模块中比较…

深度模型压缩论文(03)- Be Your Own Teacher: Improve the Performance of Convolutional Neural Networks via Self

文章目录1.摘要和背景1.1 摘要1.2 背景2.方法和贡献2.1 方法2.1.1 训练过程2.1.2 loss介绍2.2 贡献3.实验和结果3.1 实验3.2 结果4.总结和展望4.1 总结4.2 展望主要贡献:基于网络蒸馏方法,提出了一种提升裁剪后模型的精度的方法!将训练时间大…

关系数据库——基础

数据库系统概论 四个基本概念 数据:数据库中存储的基本对象,描述一个事物的符号记录,数据和其语义不可分开说 数据库(DB):是长期储存在计算机内、有组织的、可共享的大量数据的集合。 数据库管理系统&a…

Python(27)-模块

模块、包1.模块导入的方式2.使用as给模块取一个别名(大驼峰命名法)3.从模块中导入部分工具4.从模块中导入全部工具5.模块搜索顺序6__name__7.包8.发布模块、安装模块、卸载包9.pip安装第三方模块本系列博文来自学习《Python基础视频教程》笔记整理&#…

Wow6432Node

64 位版本 Windows 中的注册表分为 32 位注册表项和 64 位注册表项。许多 32 位注册表项与其相应的 64 位注册表项同名,反之亦然。 64 位版本 Windows 包含的默认 64 位版本注册表编辑器 (Regedit.exe) 可显示 64 位和 32 位的 注册表项。WOW64 注册表重定向器为 32 位程序提供…

如何使用docker配置深度学习开发环境

文章目录1.底层驱动的安装1.1 操作系统的安装1.2 显卡驱动的安装1.3 cuda的安装2.使用docker配置深度学习开发环境2.1 docker的安装2.2 nvidia_docker的安装2.3 安装过程中的问题2.3.1 docker和nvidia_docker的版本不匹配的问题。2.3.2 解决每次运行docker命令的时候要加sudo.2…

反射全解

反射的概念 反射的引入: Object obj new Student(); 若程序运行时接收到外部传入的一个对象,该对象的编译类型是Object,但程序又需要调用该对象运行类型的方法: 1.若编译和运行类型都知道,使用 instanceof判断后&…

MachineLearning(4)-核函数与再生核希尔伯特空间

核函数与再生核希尔伯特空间1.支持向量积-核函数2.一个函数为核函数的条件3.核函数与希尔伯特空间3.1希尔伯特空间-Hilbert空间1.支持向量积-核函数 核(kernel)的概念由Aizenman et al.于1964年引入模式识别领域,原文介绍的是势函数的方法。在那之后,核…

CRegKey 注册表操作

1.简介 CRegKey提供了对系统注册表的操作方法,通过CRegKey类,可以方便的打开注册表的某个分支或子键(CRegKey::Open),可以方便的修改一个键的键值(CRegKey::SetValue),也可以查询某…

进程基础

进程的基本概念 程序顺序执行的特征: 1)顺序性:处理机严格按照程序所规定的顺序执行,每一步操作必须在下一步操作开始前执行 2)封闭性:程序在封闭的环境下运行,程序独占资源,资源的状…

用Docker容器自带的tensorflow serving部署模型对外服务

相信很多人和我一样,在试图安装tensorflow serving的时候,翻遍了网上的博客和官网文档,安装都是以失败而告终,我也是一样,这个问题折磨了我两个星期之久,都快放弃了。幸运的是在同事的建议下,我…

C资源

云风最近写了一篇博客《C语言的前世今生》。作为长期使用C语言开发网络游戏服务器的程序员,云风是有理由写这样一篇文字,不过还是感觉谈的不够深入,C语言在业界使用的现状没有怎么描写,有些意犹未尽。在这里想比较系统的谈谈个人对…

学点数学(2)-特征函数

特征函数1.数列特征方程2.矩阵特征方程3.微分方程特征方程4.积分方程特征方程特征方程是为研究相应的数学对象而引入的一些等式,这些等式描述了特定对象的特性。依据研究的对象不同,特征方程包括数列特征方程、矩阵特征方程、微分方程特征方程、积分方程…

GCC如何产生core dump

先决条件1.安装apport(automatically generate crash reports for debugging)2.修改/etc/security/limits.conf文件,使允许core dump,或者用ulimit -c unlimited设置core dump文件的大小为unlimited3.C/C的编译开关-g(…

经典的进程同步问题

经典的进程同步问题 普通版:一类进程作为生产者,生产产品,生产的产品放入一个缓冲区,消费者从缓冲区中取出产品,需要保证生产者不可以向满的缓冲区中添加产品,消费者不可以从空的缓冲区中取出产品。同一时刻…

面试题汇总---深度学习(图像识别,NLP内容)

文章目录1.基本概念1.1 为什么神经网络中深度网络的表现比广度网络表现好?1.2 推导BP算法1.3 什么是梯度消失和梯度爆炸?1.4 常用的激活函数有哪些?1.5 常用的参数更新方法有哪些?1.6 解决过拟合的方法?数据层面模型层…

Linux-2.6.25 TCPIP函数调用大致流程

Linux-2.6.25 TCPIP函数调用大致流程学习目的,随手笔记。函数和文字说明会不断补充更新。Changelog2008.10.08 最近找工作忙。暂时缓缓插口层系统调用sendsys_sendsys_sendtosendtosys_sendtosock_sendmsgsendmsgsys_sendmsgsock_sendmsgwritesys_writevfs_write…

Python(28)-文件,os模块

文件1. 文件2. 文件的基本操作3. 读取文件open()3.1 文件指针: 标记从哪一个位置开始读取数据.3.2 文件的打开方式mode3.3 文件按行读取3.3.1 readline()3.3.2 readlines()4.文件输出f.write(),print()5.文件复制5.1 小文件复制(搬家)5.2 大文件复制&…