为什么可以用1*1卷积层代替全连接层

Network in Network 这篇论文中 提出了 11卷积层,那么问题来了,为什么可以用11卷积层来代替全连接层

假设当前输入张量维度为6×6×32,卷积核维度为1×1×32,取输入张量的某一个位置(如图黄色区域)与卷积核进行运算。实际上可以看到,如果把1×1×32卷积核看成是32个权重W,输入张量运算的1×1×32部分为输入x,那么每一个卷积操作相当于一个Wx过程,多个卷积核就是多个神经元,相当于一个全连接网络。

综上,可以将1×1卷积过程看成是将输入张量分为一个个输入为1×1×32的x,他们共享卷积核变量(对应全连接网络的权重)W的全连接网络。
在这里插入图片描述

显然用1*1的卷积核W来遍历图像时,就相当于图像每个pixel点*卷积核的值W,这就同全连接层乘以权重W是一个含义,所以等同。

总结一下:
全连接层的作用是,可以将卷积得到的局部特征连接起来,综合考虑整个图像。

当1*1卷积层的channel个数等于全连接层的节点个数时,可以看成全连接层,其中空间维度高和宽上的每个元素相当于样本,通道相当于特征。

那么还有人想问,1*1 卷积的作用

1*1 卷积的作用

一、 实现特征通道的升维和降维
  通过控制卷积核的数量达到通道数大小的放缩。而池化层只能改变高度和宽度,无法改变通道数。

二、 增加非线性
  如上所述,1×1卷积核的卷积过程相当于全连接层的计算过程,并且还加入了非线性激活函数,从而可以增加网络的非线性,使得网络可以表达更加复杂的特征。

三、 减少卷积核参数(简化模型)
  在Inception Network中,由于需要进行较多的卷积运算,计算量很大,可以通过引入1×1确保效果的同时减少计算量。具体可以通过下面例子量化比较

3.3.1 - 不引入1×1卷积的卷积操作
  
在这里插入图片描述
3.3.2 - 引入1×1卷积的卷积操作
  在这里插入图片描述

总共需要的计算量为(28×28×16)×(1×1×192)+(28×28×32)×(5×16×16)≈ 12.4 million,明显少于不引入1×1卷积的卷积过程的计算量。其本质我觉得可以理解成,通过1×1卷积操作提取出输入张量的重要特征(相当于降维),然后通过5×5卷积的计算量可以减少很多(减少的比引入1×1卷积所需额外的计算量多多了)。

用1*1卷积层代替全连接层的好处:

1、不改变图像空间结构

全连接层会破坏图像的空间结构,而1*1卷积层不会破坏图像的空间结构。

2、输入可以是任意尺寸

全连接层的输入尺寸是固定的,因为全连接层的参数个数取决于图像大小。而卷积层的输入尺寸是任意的,因为卷积核的参数个数与图像大小无关。

参考博客:
https://blog.csdn.net/wydbyxr/article/details/84061410
https://blog.csdn.net/qq_32172681/article/details/95971492
https://www.cnblogs.com/tianqizhi/p/9665436.html

发布了79 篇原创文章 · 获赞 149 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/ding_programmer/article/details/104109895