两派

1. 新的卷机计算方法

这种是直接提出新的卷机计算方式,从而减少参数,达到压缩模型的效果,例如SqueezedNet,mobileNet

  1. SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size

    修改网络结构,类似于mobileNet

  2. MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

    修改卷机计算方式,depth-wise 卷积

2. 已训练好的模型上做裁剪

这种就是在训练好的模型上做一些修改,然后在fine-tuning到原来的准确率,主要有一些方法

  • 剪枝:神经网络是由一层一层的节点通过边连接,每个边上会有权重,所谓剪枝,就是当我们发现某些边上的权重很小,可以认为这样的边不重要,进而可以去掉这些边。在训练的过程中,在训练完大模型之后,看看哪些边的权值比较小,把这些边去掉,然后继续训练模型;

  • 权值共享:就是让一些边共用一个权值,达到缩减参数个数的目的。假设相邻两层之间是全连接,每层有1000个节点,那么这两层之间就有1000*1000=100万个权重参数。可以将这一百万个权值做聚类,利用每一类的均值代替这一类中的每个权值大小,这样同属于一类的很多边共享相同的权值,假设把一百万个权值聚成一千类,则可以把参数个数从一百万降到一千个。

  • 量化:一般而言,神经网络模型的参数都是用的32bit长度的浮点型数表示,实际上不需要保留那么高的精度,可以通过量化,比如用0~255表示原来32个bit所表示的精度,通过牺牲精度来降低每一个权值所需要占用的空间。

  • 神经网络二值化:比量化更为极致的做法就是神经网络二值化,也即将所有的权值不用浮点数表示了,用二进制的数表示,要么是+1,要么是-1,用二进制的方式表示,原来一个32bit权值现在只需要一个bit就可以表示,可以大大减小模型尺寸。

  1. XNOR-Net: ImageNet Classification Using Binary Convolutional Neural Networks

    网络权重二值化、输入二值化,从头开始训练一个二值化网络,不是在已有的网络上二值化

  2. Learning both Weights and Connections for Efficient Neural Networks

    学习重要的连接,根据连接的权重进行裁剪,fine-tuning让网络保持稀疏的连接

  3. Exploiting linear structure within convolutional networks for efficient evaluation.

    对已经训练好的网络应用奇异值分解

  4. Eie: Efficient inference engine on compressed deep neural network.

    加速器

  5. Deep compression: Compressing DNNs with pruning, trained quantization and huffman coding.

    裁剪(阈值)、量化(8bit,存储方式)、哈夫曼编码
    http://blog.csdn.net/may0324/article/details/52935869

  6. Deep Model Compression: Distilling Knowledge from Noisy Teachers

    Teacher-student Framework,一个网络指导另外一个网络的训练

  7. PerforatedCNNs: Acceleration through Elimination of Redundant Convolutions

    在一些稀疏位置跳过CNN求值,加速效果不明显,且不能压缩模型

  8. Binarized Neural Networks: Training Neural Networks with Weights and Activations Constrained to +1 or −1

    训练二值化网络
    https://tensortalk.com/?cat=model-compression-parameter-pruning

  9. PRUNING FILTERS FOR EFFICIENT CONVNETS

    计算filter的L1范数,直接过滤掉较小L1范数对应的feature map, 然后再次训练,有两种,一是每裁剪一层训练一下,一是直接裁剪整个网络,然后fine-tuning. 相比权值连接的裁剪,这种比较暴力,好处就是不会引入稀疏矩阵的计算,从而也不需要稀疏矩阵库,坏处就是可能无法恢复到最开始的准确率。

深度学习网络压缩模型方法总结(model compression)的更多相关文章

  1. 时间序列深度学习:seq2seq 模型预测太阳黑子

    目录 时间序列深度学习:seq2seq 模型预测太阳黑子 学习路线 商业中的时间序列深度学习 商业中应用时间序列深度学习 深度学习时间序列预测:使用 keras 预测太阳黑子 递归神经网络 设置.预处 ...

  2. <深度学习优化策略-3> 深度学习网络加速器Weight Normalization_WN

    前面我们学习过深度学习中用于加速网络训练.提升网络泛化能力的两种策略:Batch Normalization(Batch Normalization)和Layer Normalization(LN). ...

  3. 【转】[caffe]深度学习之图像分类模型AlexNet解读

    [caffe]深度学习之图像分类模型AlexNet解读 原文地址:http://blog.csdn.net/sunbaigui/article/details/39938097   本文章已收录于: ...

  4. 深度学习 vs. 概率图模型 vs. 逻辑学

    深度学习 vs. 概率图模型 vs. 逻辑学 摘要:本文回顾过去50年人工智能(AI)领域形成的三大范式:逻辑学.概率方法和深度学习.文章按时间顺序展开,先回顾逻辑学和概率图方法,然后就人工智能和机器 ...

  5. 深度学习的seq2seq模型——本质是LSTM,训练过程是使得所有样本的p(y1,...,yT‘|x1,...,xT)概率之和最大

    from:https://baijiahao.baidu.com/s?id=1584177164196579663&wfr=spider&for=pc seq2seq模型是以编码(En ...

  6. [caffe]深度学习之图像分类模型VGG解读

    一.简单介绍 vgg和googlenet是2014年imagenet竞赛的双雄,这两类模型结构有一个共同特点是go deeper.跟googlenet不同的是.vgg继承了lenet以及alexnet ...

  7. 深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)

    深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam) 深度学习笔记(一):logistic分类 深度学习笔记(二):简单神经网络,后向传播算法及实现 ...

  8. 利用Tengine在树莓派上跑深度学习网络

    树莓派是国内比较流行的一款卡片式计算机,但是受限于其硬件配置,用树莓派玩深度学习似乎有些艰难.最近OPENAI为嵌入式设备推出了一款AI框架Tengine,其对于配置的要求相比传统框架降低了很多,我尝 ...

  9. 【神经网络与深度学习】chainer边运行边定义的方法使构建深度学习网络变的灵活简单

    Chainer是一个专门为高效研究和开发深度学习算法而设计的开源框架. 这篇博文会通过一些例子简要地介绍一下Chainer,同时把它与其他一些框架做比较,比如Caffe.Theano.Torch和Te ...

随机推荐

  1. 深入浅出的webpack构建工具---devTool中SourceMap模式详解(四)

    阅读目录 一:什么是SourceMap? 二:理解webpack中的SourceMap的eval,inline,sourceMap,cheap,module 三:开发环境和线上环境如何选择source ...

  2. Omi框架学习之旅 - 插件机制之omi-touch 及原理说明

    这个插件也能做好多好多的事,比如上拉下拉加载数据,轮播,等一切和运动有关的特效. 具体看我的allowTouch这篇博客,掌握了其用法,在来看它是怎么和omi结合的.就会很简单. 当然使用起来也比较方 ...

  3. python运算符基础实例

    # encoding=utf-8 #两个数字相加 sumNumber=1+2 print(sumNumber) #输出结果:3 #两个字符串相加 sumString="Nice work&q ...

  4. sql语句,查询昨天的数据

    如果在程序中,有前台传来两个时间点:beginTime和endTime,在sql查询中的限制条件就是查询昨天的数据,那么可以这样写: 但是如果在这里要查询昨天的数据的话, 则不能简单地在开始时间的那里 ...

  5. 在asp.net web form项目中添加webapi接口

    我有一个支付宝服务网关是ASP.NET WEB FORM项目,但是最近这个网关需要对外提供几个接口,想了下,使用web api比较合适,实现很简单,GO 1,首先添加一个文件夹名字叫App_Start ...

  6. 支持自定义协议的虚拟仪器【winform版】

    首先,这个程序的由来,额,工作以来,做的最久的就是上位机,对市面上的大部分组态软件都感到不满,不好用,LabView虽然用起来不错,但是入门还是不够简单,刚好现在工作比较闲(已经不再做上位机了),所以 ...

  7. C#编写WINNT服务,随便解决安卓开发遇到的5037被众多程序无节操占用的问题

    需求分析: 最近重新开始学习安卓开发,好久不用的ADT集成开发环境频繁遇到不能在仿真机和真机上调试的问题,也就是本人另一篇博文描述的ADB(Android Debug Bridge)监控的5037被金 ...

  8. LInux下设置账号有效时间 以及 修改用户名(同时修改用户组名和家目录)

    在linux系统中,默认创建的用户的有效期限都是永久的,但有时候,我们需要对某些用户的有效期限做个限定!比如:公司给客户开的ftp账号,用于客户下载新闻稿件的.这个账号是有时间限制的,因为是付费的.合 ...

  9. python基础学习笔记(七)

    本章介绍如何将语句组织成函数,这样,可以告诉计算机如何做事. 下面编写一小段代码计算婓波那契数列(前两个数的和是第三个数) fibs = [0,1] # 定义一个列表,初始内容是0,1 for i i ...

  10. 12.8 Daily Scrum

    最近大家都比较忙,任务今天也才刚刚分配,所以具体的编码任务从明天开始.   Tomorrow's Task 丁辛 完善餐厅列表,显示距离.             邓亚梅          美化搜索框 ...