美文网首页
1x1卷积层的作用

1x1卷积层的作用

作者: 求索_700e | 来源:发表于2019-05-05 23:03 被阅读0次

转自:https://www.jianshu.com/p/73faedf0887c

       在各种神经网络都会用到1x1 conv,它到底起到什么作用呢?要回答这个问题,先从最经典的Inception模型说起,Figure 1是Inception-ResNet-v2的block架构图。

Figure 1: https://arxiv.org/pdf/1602.07261.pdf


作用一:改变矩阵维度

      block中每个sublayer的第一层都1x1 conv,它在这里的作用之一是降维,减少运算量--feature map channel数越少,卷积操作需要的计算量越小。但就像图像压缩一样,压缩率越大丢帧越多,1x1 conv是如果做到在质量与速度的平衡的呢?

Figure 2

       Figure 2中间图形就是1x1卷积核,左边的矩阵是input,而右边的正方形代表feature map中的一个grid,或一个pixel,它是1x1卷积核其中一个channel:(1x1x1),与input矩阵对应pixel位置的pixel-wise向量:(1x1x32)的点积的结果。当input矩阵与1x1卷积核完成所有pixel位置(4x4)的点积计算后,会得到一个4x4x1 shape的feature map,grid size不变,整个过程相当于把一个3D矩阵压缩为一个2D矩阵。feature map经过非线性(激活函数)计算后,每个pixel位置就相当于input矩阵对应pixel位置的pixel-wise向量的均值。这就是为什么神经网络会用1x1 conv来改变矩阵维度的原因,无论是降维还是升维,矩阵的性质不变,所以可以构造出各种结构的神经网络

      要特别注意的是,这里的一个Conv层并不是只有一个conv(),而是conv()、droupout()、BN()和ReLu()等组合。Conv层是CNN的底层模块,每个神经网络都有自己的定义,例如:

defConv(nin, nf, stride=1): return nn.Sequential(

      nn.Conv2d(nin, nf, 3, stride, 1, bias=False),

      nn.BatchNorm2d(nf),

      nn.ReLU(inplace=True)

  )


作用二:增加非线性

Figure 3: https://arxiv.org/pdf/1512.03385.pdf

      Figure 3是Resnet-18/34/50/101/152的block架构图,图中黄色框位置是Resnet-50的一个block,它由三个Conv层组成,开头和结尾都是1x1 conv,三个block组成一个conv2_x层。把这三个block展开你会发现一个很有趣的结构,即block中的第二层、第三层,以及下一个block的第一层组成了一个如Figure 4,称为“bottleneck”的从低纬到高维又到低维的网络,bottleneck是瓶颈的意思,它是从一个空间到另一个大(或小)空间的过度地带,“小->大->小”或“大->小->大”都是bottleneck network。

      前文已经分析了1x1 conv不会对矩阵的性质产生大影响,Resnet-50为什么要引入bottleneck,而不是像隔壁Resnet-34那样每个block的卷积核维数都是相同的呢?原因有两个:

      如上前文所述,矩阵降维可以减小所需运算量。深层神经网络的计算量可能会随层数增加呈指数增长,所以,Resnet-50/101/152都引入了1x1conv,1x1卷积核相比3x3卷积核所需计算量更少。

     增加神经网络非线性程度。增加非线性可以增加神经网络的复杂度,复杂的神经网络才可以更精确地逼近任意函数(或数学模型),而1x1 conv可以用较低运算成本通过改变channel维度为网络增加复杂度。如果对非线性与神经网络的关系有疑问,可以阅读我另一篇博文你真的明白神经网络是什么?

总结

      1x1卷积层可以在不改变矩阵性质的情况下,可以灵活地变化矩阵channel的维度,不仅可以给矩阵降维减轻运算量,还可以构建bottleneck,低成本地增加网络复杂度使其可以逼近更精确的目标数学模型。

Refences

Inception-ResNet-v2

Resnet-18/34/50/101/152

你真的明白神经网络是什么?

相关文章

  • ResNet 论文中的一个关于 1x1 conv 的细节

    早上拓哥考了我几个问题,记录一下: 拓: 立峰, 说一下 1x1 卷积层的作用。 我: 我第一次碰见1x1 卷积层...

  • 为什么要使用1x1卷积

    为什么要使用1x1卷积,哪些情况可以使用1x1卷积?11卷积的主要作用有以下几点:1、降维( dimension ...

  • PyTorch Convolution Layers

    卷积核的作用是什么? 1x1 卷积核在 Network in Network 中被提出了,主要作用有:1.压缩/提...

  • 7.cnn

    1.卷积神经网络详解 2.卷积神经网络简介 卷积神经网络由一个或多个卷积层和顶端的全连通层(也可以使用1x1的卷积...

  • 关于不同卷积核大小的思考

    未经同意,不得转载 一、1x1卷积核的作用 (1)实现跨通道的交互和信息整合 使用1x1卷积核,其实就是对不同ch...

  • 1x1卷积层的作用

    转自:https://www.jianshu.com/p/73faedf0887c 在各种神经网络都会用到1...

  • 神经网络实践经验(2)

    前言 本人萌新,请多指教 2. 1x1卷积层的作用 我们都知道,CNN强于MLP的地方在于其局部连接性减少了过拟合...

  • 1*1卷积核的作用

    1*1卷积核作用之我见 1X1卷积顾名思义就是卷积核的尺寸为1,不同与2维或3等卷积核,没有考虑在前一特征局部信息...

  • 卷积神经网络的组件

    卷积神经网络的组件包括输入层,卷积层,激活层,池化层,全连接层。 输入层 输入层的作用是把输入数据送入卷积神经网络...

  • 1x1卷积

    转自:1X1卷积核到底有什么作用呢?我来说说我的理解,我认为1×1的卷积大概有两个方面的作用吧:1. 实现跨通道的...

网友评论

      本文标题:1x1卷积层的作用

      本文链接:https://www.haomeiwen.com/subject/saokoqtx.html