深度学习-一篇入门

【模型】一篇入门之-CNN的1x1卷积的意义

作者 : 老饼 发表日期 : 2023-12-23 11:59:05 更新日期 : 2024-11-01 23:11:16
本站原创文章,转载请说明来自《老饼讲解-深度学习》www.bbbdata.com



在CNN卷积神经网络中,通常使用1x1卷积来控制FeatureMap的通道维度

本文讲解1x1卷积在CNN卷积神经网络中的意义,以及剖析CNN经典模块中的一些1x1卷积使用场景

通过本文,可以快速了解1x1卷积在CNN中有什么用,以及如何使用1x1卷积来控制输入输出的通道数





     01. CNN的1x1卷积有什么用      




本节讲解CNN中常用的1x1卷积的作用与意义




     CNN中的1x1卷积      


在CNN中,卷积层主要是为了综合像素周边的信息,
但是,1x1卷积是不能综合周边信息的,它有着更特殊的意义
 
 单输出通道1x1卷积的意义
如下所示,1x1(步幅为1)卷积的输出是将各个通道的对应元素进行加权
 单输出通道1x1卷积的意义
单个1x1卷积核可以理解为以通道为单位,将各个通道的信息加权合并为一个通道
 多输出通道1x1卷积的意义
而多个1x1卷积核则是以不同的权重,将输入通道加权合并出成多个输出通道
 多输出通道1x1卷积的意义 
总的来说,1x1卷积以通道为加权单位,它的意义就是将通道进行加权合并
1x1卷积的作用
由于1x1卷积的意义就是将通道进行加权合并为新的通道
因此,在CNN神经网络中,1x1卷积一般用于将输入的通道进行升维或降维
总之,只希望单纯改变通道个数时,就使用1x1卷积,并设置所需要的输出通道个数







     02. CNN的1x1卷积-应用例子      




本节展示1x1卷积在一些经典CNN模块中的应用,以及剖析其意义





     1x1卷积应用举例一:ResNet中的Bottleneck模块      


 如下所示,在ResNet中,Bottleneck-ResNet模块就在普通ResNet模块的首尾加入1×1卷积
 1x1卷积应用举例一:ResNet中的Bottleneck模块 
Bottleneck-ResNet模块的原理就是通过首尾的1×1卷积来对中间层的输入输出进行升降维
这样就可以保持中间层的输入输出通道不变,只需通过修改首尾的1×1卷积来适配任意输入输出通道






          1x1卷积应用举例二:GoogLeNet中的Inception模块      


在GoogLeNet的Inception-V1模块中,可以看到它引入了三个1×1卷积,如下:
 1x1卷积应用举例二:GoogLeNet中的Inception模块
各个1×1卷积的目的就是为了控制了各条路线的维度,使得每条路线的维度减少
这样做的好处,一方面是减少计算量,另一方面则可以使得最终各条路线的合并输出不会升维











 End 







联系老饼