1x1的卷积作用我们肯定很好理解:
1.跨通道的特征整合
比如:输入的特征是32x64x64(32为通道数),我想要把32个通道的信息进行融合,最后输出8个特征,那我们就可以设计1x1的卷积核为:输入通道:32,输出通道:8。
2.特征通道的升维和降维
上面的例子也是一个降维的操作,我们把32通道的特征图融合成了8通道的特征图,这样做可以融合不同的特征模式(其本质是增大感受野)。
升维是把特征上升到更高维度,比如,我们设计1x1卷积核为:输入通道:32,输出通道:64,这样可以得到更多的特征模式。
3.减少模型参数量
图1
我们可以看到,以一种方式:直接把192x28x28的数据放入5x5的卷积,参数量是120,422,400。而第二种方式:在放入5x5卷积之前,先用1x1卷积进行变换通道,这样的参数量是12,433,648。直接少了一个量级。
ok,接下来,我们谈一个更有意思的话题:1x1的卷积可以代替全连接层
我们以单通道的3x3的特征图为例
1 | 2 | 3 |
4 | 5 | 6 |
7 | 8 | 9 |
我们把该特征图开成一维(9个)
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
图2
上面是一个神经元的输出,我们可以发现,全连接层其实就是一个全局的卷积
1 | 2 | 3 |
4 | 5 | 6 |
7 | 8 | 9 |
X
w1 | w2 | w3 |
w4 | w5 | w6 |
w7 | w8 | w9 |
= 卷积后的输出:
1xw1+2xw2+3xw3+…+9xw9
我们发现,全连接层和卷积是一样的。
我们再来看一看1x1的卷积是如何运算的
1 | 2 | 3 |
4 | 5 | 6 |
7 | 8 | 9 |
X
w |
= 卷积后的输出:
1xw+2x2+...+9xw
我们发现,其实也是差不多的,只是卷积的w是共享参数的。
我们思考这样一个问题:为什么矩阵形式的形式的特征图好像和一维展开的数据一致了,这一由卷积的运算顺序决定的:
图3
我们发现,这是一个“2”型的结构,卷积的运算过程就相当于把数据拉直了,并且他是1 x1的卷积,始终保持保持了和全连接层一样的线性关系。
当然,这里只探讨了单通道,多通道也是一样的。