马春杰杰博客
致力于深度学习经验分享!

[mcj]深度学习卷积神经网络中1*1卷积核的作用详解

这里主要介绍下1*1卷积核的神奇之处核最好的使用范围,在开始之前需要了解下卷积网络的权值共享概念,其中权值共享基本上有两种方法:

在同一特征图和不同通道特征图都使用共享权值,这样的卷积参数是最少的,例如上一层为30*30*40,当使用3*3*120的卷积核进行卷积时,卷积参数为:3*3*120个.(卷积跟mlp有区别也有联系一个神经元是平面排列,一个是线性排列)

第二种只在同一特征图上使用共享权值,根据上面的例子,则卷积参数为:3*3*40*120.

1*1卷积核主要作用:

  • 实现跨通道的交互和信息整合(具有线性修正特性,实现多个feature map的线性组合,可以实现feature map在通道个数上的变化,想象成跨通道的pooling,(输入的多通道的feature map和一组卷积核做卷积求和得到一个输出的feature map)
  • 在pooling层后面加入的1×1的卷积也是降维,使得最终得到更为紧凑的结构,虽然有22层,但是参数数量却只是alexnet的1/12.
  • 最近大热的MSRA的resnet也利用了1×1的卷积,并且是在3×3卷积层的前后都使用了,不仅进行了降维,还进行了升维,使得卷积层的输入和输出的通道数都减小,数量进一步减少。如果1×1卷积核接在普通的卷积层后面,配合激活函数,就可以实现network in network的结构了。
  • 还有一个很重要的功能,就是可以在保持feature map尺度不变的(即不损失分辨率)的前提下大幅增加非线性特性(利用后接的非线性激活函数),把网络做的很deep。(平均池化是针对每个feature map的平均操作,没有通道间的交互,而1×1卷积是对通道的操作,在通道的维度上进行线性组合)

例子:

进行降维和升维引起人们重视的(可能)是在GoogLeNet里。对于每一个Inception模块(如下图),原始模块是左图,右图中是加入了1×1卷积进行降维的。虽然左图的卷积核都比较小,但是当输入和输出的通道数很大时,乘起来也会使得卷积核参数变的很大,而右图加入1×1卷积后可以降低输入的通道数,卷积核参数、运算复杂度也就跟着降下来了。以GoogLeNet的3a模块为例,输入的feature map是28×28×192,3a模块中1×1卷积通道为64,3×3卷积通道为128,5×5卷积通道为32,如果是左图结构,那么卷积核参数为1×1×192×64+3×3×192×128+5×5×192×32,而右图对3×3和5×5卷积层前分别加入了通道数为96和16的1×1卷积层,这样卷积核参数就变成了1×1×192×64+(1×1×192×96+3×3×96×128)+(1×1×192×16+5×5×16×32),参数大约减少到原来的三分之一。同时在并行pooling层后面加入1×1卷积层后也可以降低输出的feature map数量,左图pooling后feature map是不变的,再加卷积层得到的feature map,会使输出的feature map扩大到416,如果每个模块都这样,网络的输出会越来越大。而右图在pooling后面加了通道为32的1×1卷积,使得输出的feature map数降到了256。GoogLeNet利用1×1的卷积降维后,得到了更为紧凑的网络结构,虽然总共有22层,但是参数数量却只是8层的AlexNet的十二分之一(当然也有很大一部分原因是去掉了全连接层)。

[mcj]深度学习卷积神经网络中1*1卷积核的作用详解

最近大热的MSRA的ResNet同样也利用了1×1卷积,并且是在3×3卷积层的前后都使用了,不仅进行了降维,还进行了升维,使得卷积层的输入和输出的通道数都减小,参数数量进一步减少,如下图的结构。(不然真不敢想象152层的网络要怎么跑起来TAT)

[mcj]深度学习卷积神经网络中1*1卷积核的作用详解

转自:https://blog.csdn.net/yangdashi888/article/details/78032387

本文最后更新于2022年11月7日,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!

如果你对这篇文章有什么疑问或建议,欢迎下面留言提出,我看到会立刻回复!

打赏
未经允许不得转载:马春杰杰 » [mcj]深度学习卷积神经网络中1*1卷积核的作用详解
超级便宜的原生ChatGPT4.0

留个评论吧~ 抢沙发 评论前登陆可免验证码!

私密评论
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址(选填,便于回访^_^)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

登录

忘记密码 ?

切换登录

注册