【CNN】卷积神经网络中的 1*1 卷积 的作用

本文探讨了1×1卷积在卷积神经网络(CNN)中的核心作用,包括改变通道数量以实现降维/升维、数据融合、减少计算量以及作为非线性操作的组成部分。1×1卷积在googLeNet、ResNet等深度学习模型中发挥关键作用,有助于优化计算效率和提高网络表达能力。

在论文 Network In Network 中,提出了一个重要的方法: 1×1 1 × 1 卷积。这个方法也在后面比较火的方法,如 googLeNet、ResNet、DenseNet ,中得到了非常广泛的应用。特别是在 googLeNetInception中,发挥的淋漓尽致。

初次看到 1×1 1 × 1 卷积,可能会觉得没有什么作用,因为给人的感觉就是 1×1 1 × 1 的卷积核好像并没有改变什么。但如果对卷积操作有过深入的理解,就会发现并没有那么简单。

这里强调一下,下图只是用了一个卷积核(filter)。下面的 32 是为了匹配上一层的channels,输出的结果只有一个channel。这里如果不理解,可以看我的另一篇博客,【CNN】理解卷积神经网络中的通道 channel
非线性

总结了一下其作用,主要分为一下两种:

  • 改变通道(channels)
    • 降维 / 升维
    • 数据融合
    • 减少计算量
  • 非线性操作

下面详细介绍一下。

改变通道(channels)

之前有详细讲过对 通道 的理解。通过改变 1×1 1 × 1 卷积核的数量来改变输出通道的数量。

降维 / 升维

由于 1×1 1 × 1 并不会改变 height 和 width,改变通道的第一个最直观的结果,就是可以将原本的数据量进行增加或者减少。这里看其他文章或者博客中都称之为升维、降维。但我觉得维度并没有改变,改变的只是 height × width × channels 中的 channels 这一个维度的大小而已。

数据融合

在 ResNet 中,数据要进行相加 ,但有时并不能保证通道大小匹配。这个时候就需要使用 1×1 1 × 1 卷积操作,是数据在各个维度上进行匹配,从何对两个数据进行计算。

减少计算量

在 GoogLeNet 中,Inception中的卷积多数先进行了 1×1 1 × 1 卷积操作,再进行其他卷积操作,这样其实可以减少计算量。某些程度上避免了过拟合。

原因如下。
如果不加入 1×1 1 × 1 而直接使用 5×5 5 × 5
不使用
就像这样,得到结果。
正常计算
需要计算的量为

(28×28×32)×(5×5×192) ( 28 × 28 × 32 ) × ( 5 × 5 × 192 )

大概需要1.3亿次。

而加入了之后,
Inception
加入
计算量变为

(28×28×16)×(1×1×192)+(28×28×32)×(5×5×16) ( 28 × 28 × 16 ) × ( 1 × 1 × 192 ) + ( 28 × 28 × 32 ) × ( 5 × 5 × 16 )

大概在1240万左右。

相比之下,计算量减少了10倍多。

非线性操作

在ResNet中,卷积核进行相关计算后,输出的结果需要经过 ReLU 进行非线性转换 。相当于多进行了一次 ReLU 操作,所以这里也会使整个模型相对更加的复杂,提升网络的表达能力。


一直在学习中,如有错误,请批评指正。

文中图片引自吴恩达老师的 深度学习课程视频 和 GoogLeNet论文 Going Deeper with Convolutions

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值