一、剪枝分类
目前常见的模型剪枝算法主要分成两类,即非结构化剪枝与结构化剪枝;在不少的神经网络加速器中已经应用了这些剪枝算法,早期常见的是非结构化剪枝,例如MIT的韩松组的前几年的相关工作中就有此类应用,但是在设计中采用的特殊数据格式和额外的编码/解码会带来额外的硬件开销;
这在基于传统系统架构的情况下,利用非结构化剪枝或者可以为NN模型的计算起到加速的作用,但是在存内计算架构下,基于ReRAM或SRAM这类紧耦合的电路结构中将很难去利用网络中存在的稀疏特征;
为此,近年来关于剪枝的算法工作,越来越聚焦于各种结构化剪枝的方法,从剪枝尺度的角度来分的话,结构化剪枝主要包括:filter-wise、channel-wise、shape-wise以及block-wise pruning这四种;鉴于工作需要,后面主要介绍在硬件加速器中常见的通道剪枝算法。
二、通道(channel-wise)剪枝与卷积核(filter-wise)剪枝的区别
其实从网络模型最终的呈现形式来看,通道剪枝与卷积核剪枝的效果是一样的,具体可以结合下面这张图来看:
如果是通道剪枝的话,可以认为先剪掉输入B中的C个通道,而这会直接导致该层的所有卷积核也需要剪掉相应的通道,这样进行卷积的时候才能进行相应的匹配;这是通道剪枝对该层的影响,他还会对该层的上一层产生影响,我们知道