神经网络模型压缩

神经网络模型压缩优化方法:

1.优化压缩模型的三个方向:

1)设计更为精细的网络设计,比如:简化卷积层和全连接层的形式
2)对模型进行裁剪。在结构复杂的神经网络中,往往存在着大量的参数冗余,因此可以寻找一个适当的评定方法进行剪枝优化
3)**数据进行量化或者二值化。**为了保持原有模型中的数据精度,一般常见的网络中,都会以32bit的浮点类型保存模型权重。这种保存方式,增加了数据存储的大小和重载模型的计算复杂度。对于以上的情况,可以将数据进行量化或者二值化。通过量化或者二值化之后,可以对于存储空间进行压缩。
此外,还可以对卷积核进行稀疏化,将卷积核一部分裁剪为0,从而减少再次加载模型的计算量。
在这里插入图片描述

**注意:**网络蒸馏不需要对大网络的参数初始化,其他方法需要对大网络进行参数的初始化。

1.网络裁剪

裁剪本质:
在这里插入图片描述
难点:
在这里插入图片描述
裁剪类型:

  1. filter pruning
  2. kernel/group pruning
  3. 稀疏矩阵

参数重要性:
在这里插入图片描述
旷世的论文:
LASSO regression
ResNet 迭代
实验(分类和回归)

通道剪枝:

在这里插入图片描述
裁剪浅层的网络结构。

2.低秩估计 Low Rank Approximation
  • 矩阵分解 SVD PCA
  • 张量分解 CP、Tucker

LRA加速率
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Trucker分解:

步骤:
在这里插入图片描述

3.参数量化

聚类编码
方法:k-means

乘积量化

4.模型蒸馏 Hinton

训练好的大网络
适用条件:

  • 大网络模型准确率一定比小网络好
  • 小网络容量要适合任务需求
  • 对于以特征图作指导的网络,需要分析特征图中的冗余信息或者错误信息。

设计技巧:

  • 小网络最好与大网络结构相近

  • 网络的初始化
    在这里插入图片描述
    在这里插入图片描述
    Distilling就是将复杂网络中的有用信息提取出来迁移到一个更小的网络上,这样学习来的小网络可以具备和大的复杂网络想接近的性能效果,并且也大大的节省了计算资源。这个复杂的网络可以看成一个教师,而小的网络则可以看成是一个学生。

    学生网络的训练含有两个目标:一个是hard target,即原始的目标函数,为小模型的类别概率输出与label真值的交叉熵;另一个为soft target,为小模型的类别概率输出与大模型的类别概率输出的交叉熵,在soft target中,概率输出的公式调整如下,这样当T值很大时,可以产生一个类别概率分布较缓和的输出:
    这里写图片描述

tiny-yolo压缩与加速

基于 Tiny-yolo 的网络压缩与硬件加速方法

Tiny-yolo的网络模型占用63. 5MB的存储空间,而Yolo的模型更是达到了258MB,不利于在存储空间有限的嵌入式端存储.同时,神经网络包含了大量的卷积运算,消耗时间多.针对这两点问题,文中采用网络裁剪的方法对网络进行压缩,达到减小模型体积的目的:通过数据量化操作,对权重值进行量化,进一步减少模型所占内存,以及运行消耗的位宽;最后在嵌入式端,采用硬件加速。FPGA并行加速,提高网络运算速度.

在这里插入图片描述

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值