![ac114ed0a7075fdfc25a6f6de5eca2ba.png](https://i-blog.csdnimg.cn/blog_migrate/fe96fcac5981ec53b2d4283e18e3aff6.png)
引言
在上一篇介绍了如何将高维度卷积核拆分成低维度小卷积核,从而降低计算量的方法。本篇介绍的也是采用了降维的思想来加速网络推理,但是数学上采用了不同的方法。而且这篇文章提出的方法可以加速深度网络,其在vgg-16上进行了实验,获得了4倍的加速效果,而在imageNet分类中top-5错误率仅有0.3%升高。
1 原理
首先我们来看神经网络中的卷积运算的形式,对于任一个隐藏层,它有c幅输入图片,每幅图片都会和一个卷积核进行卷积运算。假设卷积核大小为kxk,那么就有c个卷积核。我们可以将图片沿着个数方向重新生成一个维度,图片就成了一个3D的张量,大小为hxhxc。卷积核为kxkxc,其在kxk方向进行划窗,而c方向进行求和。每个输出点实际上是kxkxc个乘法求和结果。这c个卷积核会输出一幅图片,如果隐藏层有d个节点,实际上是输出n幅图片。如果将kxkxcxd这么大的卷积核进行重新排列,排成一个d行,每行有kxkxc个数据,就称为了一个矩阵,我们令为W。那么输入图片排成一个向量,长度为kxkxc。用矩阵乘法可以表示为: