• 网络结构 压缩方法


    引自:https://www.cnblogs.com/zhonghuasong/p/7493475.html

    深度学习网络压缩模型方法总结(model compression)


    主要分为两类:

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

    (1)、SqueezedNet,mobileNet 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到原来的准确率,主要有一些方法
    (1)、剪枝:神经网络是由一层一层的节点通过边连接,每个边上会有权重,所谓剪枝,就是当我们发现某些边上的权重很小,可以认为这样的边不重要,进而可以去掉这些边。在训练的过程中,在训练完大模型之后,看看哪些边的权值比较小,把这些边去掉,然后继续训练模型;
    (2)、权值共享:就是让一些边共用一个权值,达到缩减参数个数的目的。假设相邻两层之间是全连接,每层有1000个节点,那么这两层之间就有1000*1000=100万个权重参数。可以将这一百万个权值做聚类,利用每一类的均值代替这一类中的每个权值大小,这样同属于一类的很多边共享相同的权值,假设把一百万个权值聚成一千类,则可以把参数个数从一百万降到一千个。
    (3)、量化:一般而言,神经网络模型的参数都是用的32bit长度的浮点型数表示,实际上不需要保留那么高的精度,可以通过量化,比如用0~255表示原来32个bit所表示的精度,通过牺牲精度来降低每一个权值所需要占用的空间。
    (4)、神经网络二值化:比量化更为极致的做法就是神经网络二值化,也即将所有的权值不用浮点数表示了,用二进制的数表示,要么是+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. 相比权值连接的裁剪,这种比较暴力,好处就是不会引入稀疏矩阵的计算,从而也不需要稀疏矩阵库,坏处就是可能无法恢复到最开始的准确率

  • 相关阅读:
    内置函数拾遗
    jQuery与其他JS库冲突解决
    ckeditor+ckfinder添加水印。
    PostgreSQL与mysql的比较
    php函数 之 iconv 不是php的默认函数,也是默认安装的模块。需要安装才能用的。
    php mb_substr()函数的详细解释!
    成为一名PHP专家其实并不难
    php中级程序员的进化标准
    鼠标经过图片切换效果。
    计算两个日期之间的工作日
  • 原文地址:https://www.cnblogs.com/lyp1010/p/11693502.html
Copyright © 2020-2023  润新知