卷积神经网络压缩参数加速(一)---网络剪枝

卷积神经网络的加速主要包括两类,硬件加速和软件加速,本篇将总结一下软件加速中网络剪枝所使用的方法。

软件加速可以分为压缩结构和压缩参数两种,压缩结构就是将模型结构简化,设计结构更小、参数更小的网络后,从头开始训练,之前博文中提到的MobileNet及ShuffleNet系列网络就是模型压缩的一种。

压缩参数是在已训练完模型的基础上,对参数进行筛选、转换已达到更少参数和更小结构的结果,包括网络剪枝、低秩估计、参数量化和模型蒸馏等。前面有博文提到了旷视科技在2017年提出的通道裁剪剪枝的一篇论文。

网络剪枝

在常用的深度学习框架中,通常将多维张量转换为矩阵乘法来实现卷积操作,而网络剪枝就是基于矩阵乘法来做的。

Tensorflow中的张量转换为矩阵[N,H,W,C]分别代表batch size,输入特征图高度,输入特征图宽度,通道数。

设输入特征图为4*4大小,卷积核大小为3*3,通道数为2,步长为1:

通道1:

通道2:

Tensorflow中先将张量转换为矩阵,将卷积运算转换为(H_{out}*W_{out})*(K_{H}*K_{W}*C_{in})(K_{H}*K_{W}*C_{in})*C_{out}的矩阵乘法。[N, H, W, C]中,首先优先顺序为[C, W, H, N]。

因此,输入特征图转换的矩阵根据第一步卷积操作:

可以转换为:

batch中每一个样本都是连接在这个矩阵下面的。

下图从左到右分别为输入矩阵,卷积核矩阵和输出矩阵,蓝色的行与蓝色的列生成蓝色的单元。

以上卷积操作转矩阵乘法是网络剪枝的基础,我们可以看到,参数剪枝,是有规律可寻的。

1. filter level and channel level pruning

删除一个卷积核,等于删除第二个矩阵的一列,也就删除了第三个矩阵的一列,即输出通道数减少,相应的下层中的卷积核的通道数也减少了。

相反的,删除卷积核中的通道,相对应的输入特征图的通道就不会再对结果产生影响,同时生成输入该特征图通道的卷积核也可以删除。

2. group level

(1)对卷积核宽高进行裁剪,例如3*3的卷积核裁剪为2*3的卷积核,等同于同时删除卷积核的若干行和特征图的若干行。

(2)对卷积核中某些固定位置进行删减。

3. 稀疏矩阵

将无用参数设置为0,使矩阵稀疏,达到压缩加速的效果。

 

低秩估计:卷积神经网络压缩参数加速(二)---低秩估计

  • 6
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值