所谓信道压缩,Network in Network是怎么做到的?
对于如下的二维矩阵,做卷积,相当于直接乘以2,貌似看上去没什么意义。
但是,对于下面这种32通道的数据,如果我用1个1x1x32的卷积核与其做卷积运算,得到的就是1个6x6的矩阵。
在这个过程中,发生了如下的事情:
- (1)遍历36个单元格(6x6)
- (2)计算左图中32个信道中截面与卷积核中32个元素的乘积
- (3)此时得到的结果,仍然是6x6x32的矩阵
- (4)每个6x6的矩阵都叠加起来,得到一个6x6的矩阵
- (5)接下来用Relu函数作用于这个6x6的矩阵
- (6)得到6x6的输出
同理,如果我用N个1x1x32的卷积核与其做卷积运算,得到的就是N个6x6的矩阵。
所以,1x1的卷积,可以从根本上理解为:有一个全连接的神经网络,作用在了不同的32个位置上。
这种做法,通常称为1x1卷积
或Network in Network
。它的主要作用,就是降低信道数量
。如下图
28x28x192的数据,被32个1x1x192的卷积核作用后,就变为28x28x32的数据。这也就是所谓信道压缩
,信道降维
。当然如果你愿意,也可以增加信道维度。这在Inception网络中很有用。
本篇参考了AndrewNG的Deep Learning课程。