本站原创文章,转载请说明来自《老饼讲解-深度学习》www.bbbdata.com
在CNN卷积神经网络中,通常使用1x1卷积来控制FeatureMap的通道维度
本文讲解1x1卷积在CNN卷积神经网络中的意义,以及剖析CNN经典模块中的一些1x1卷积使用场景
通过本文,可以快速了解1x1卷积在CNN中有什么用,以及如何使用1x1卷积来控制输入输出的通道数
本节讲解CNN中常用的1x1卷积的作用与意义
CNN中的1x1卷积
在CNN中,卷积层主要是为了综合像素周边的信息,
但是,1x1卷积是不能综合周边信息的,它有着更特殊的意义
单输出通道1x1卷积的意义
如下所示,1x1(步幅为1)卷积的输出是将各个通道的对应元素进行加权
单个1x1卷积核可以理解为以通道为单位,将各个通道的信息加权合并为一个通道
多输出通道1x1卷积的意义
而多个1x1卷积核则是以不同的权重,将输入通道加权合并出成多个输出通道
总的来说,1x1卷积以通道为加权单位,它的意义就是将通道进行加权合并
1x1卷积的作用
由于1x1卷积的意义就是将通道进行加权合并为新的通道
因此,在CNN神经网络中,1x1卷积一般用于将输入的通道进行升维或降维
总之,只希望单纯改变通道个数时,就使用1x1卷积,并设置所需要的输出通道个数
本节展示1x1卷积在一些经典CNN模块中的应用,以及剖析其意义
1x1卷积应用举例一:ResNet中的Bottleneck模块
如下所示,在ResNet中,Bottleneck-ResNet模块就在普通ResNet模块的首尾加入1×1卷积
Bottleneck-ResNet模块的原理就是通过首尾的1×1卷积来对中间层的输入输出进行升降维
这样就可以保持中间层的输入输出通道不变,只需通过修改首尾的1×1卷积来适配任意输入输出通道
1x1卷积应用举例二:GoogLeNet中的Inception模块
在GoogLeNet的Inception-V1模块中,可以看到它引入了三个1×1卷积,如下:
各个1×1卷积的目的就是为了控制了各条路线的维度,使得每条路线的维度减少
这样做的好处,一方面是减少计算量,另一方面则可以使得最终各条路线的合并输出不会升维
End