卷积神经网络的加速主要包括两类,硬件加速和软件加速,本篇将总结一下软件加速中网络剪枝所使用的方法。
软件加速可以分为压缩结构和压缩参数两种,压缩结构就是将模型结构简化,设计结构更小、参数更小的网络后,从头开始训练,之前博文中提到的MobileNet及ShuffleNet系列网络就是模型压缩的一种。
压缩参数是在已训练完模型的基础上,对参数进行筛选、转换已达到更少参数和更小结构的结果,包括网络剪枝、低秩估计、参数量化和模型蒸馏等。前面有博文提到了旷视科技在2017年提出的通道裁剪剪枝的一篇论文。
网络剪枝
在常用的深度学习框架中,通常将多维张量转换为矩阵乘法来实现卷积操作,而网络剪枝就是基于矩阵乘法来做的。
Tensorflow中的张量转换为矩阵[N,H,W,C]分别代表batch size,输入特征图高度,输入特征图宽度,通道数。
设输入特征图为4*4大小,卷积核大小为3*3,通道数为2,步长为1:
通道1:
通道2:
Tensorflow中先将张量转换为矩阵,将卷积运算转换为和