前言

这里就不赘述卷积神经网络相关内容了,直接通过博主看的一些资料,自己进行了一些整合,大佬绕道。
对于1x1卷积核的作用主要可以归纳为以下几点

  1. 增加网络深度(增加非线性映射次数)
  2. 升维/降维
  3. 跨通道的信息交互
  4. 减少卷积核参数(简化模型)

1、普通卷积

这里首先展示了一个我们最常见的卷积方式(通道数为1),一个5x5的图怕,通过一个3x3的卷积核提取特征得到一个3x3的结果。如果这里的卷积核是1x1的,那么效果如下

2、1x1卷积核作用

2.1 增加网络深度(增加非线性映射次数)

首先直接从网络深度来理解,1x1 的卷积核虽小,但也是卷积核,加 1 层卷积,网络深度自然会增加。
1x1卷积核,可以在保持feature map尺度不变的(即不损失分辨率)的前提下大幅增加非线性特性(利用后接的非线性激活函数),把网络做的很深。并且1x1卷积核的卷积过程相当于全连接的计算过程,通过加入非线性激活函数,可以增加网络的非线性,使得网络可以表达更复杂的特征。
具体来说,引用一下「frank909」博客的内容:
其实问题往下挖掘,应该是增加网络深度有什么好处?为什么非要用 1x1 来增加深度呢?其它的不可以吗?

其实,这涉及到感受野的问题,我们知道卷积核越大,它生成的 featuremap 上单个节点的感受野就越大,随着网络深度的增加,越靠后的 featuremap 上的节点感受野也越大。因此特征也越来越抽象。

但有的时候,我们想在不增加感受野的情况下,让网络加深,为的就是引入更多的非线性。

而 1x1 卷积核,恰巧可以办到。

我们知道,卷积后生成图片的尺寸受卷积核的大小和跨度影响,但如果卷积核是 1x1 ,跨度也是 1,那么生成后的图像大小就并没有变化。

但通常一个卷积过程包括一个激活函数,比如 Sigmoid 和 Relu。

所以,在输入不发生尺寸的变化下,却引入了更多的非线性,这将增强神经网络的表达能力

2.2、升维/降维

其实这里的升维、降维具体指的是通道数的变化,当我们确定了卷积核尺寸后,我们的height、width都不变,那么这里的维度具体指的就是channels。我们通过改变卷积核的数量来改变卷积后特征图的通道channels来实现升维、降维的效果。这样可以将原本的数据量进行增加或者减少
下面分别举两个例子就能明显看到效果

2.2.1 升维

2.2.2 降维

其实很明显的能看出来,无论是升维还是降维,我们都是通过改变卷积核的数量实现的,卷积后的特征图的通道数channels同卷积核的数量保持一致,这里其实不仅仅是1x1卷积核能实现这个功能,其他尺寸的卷积核也可以,那么我们为什么要选用1x1卷积核呢

2.2.3 使用1x1卷积核升维/降维的原因

当我们仅仅只是想要改变通道数的情况下,1x1卷积核是最小的选择,因为大于1x1的卷积核无疑会增加计算的参数量,内存也会随之增大,所以只想单纯的去提升或者降低特征图的通道,选用1x1卷积核最为合适, 1x1卷积核会使用更少的权重参数数量

2.3 跨通道的信息交互

1x1卷积核只有一个参数,当它作用在多通道的feature map上时,相当于不同通道上的一个线性组合,实际上就是加起来再乘以一个系数,但是这样输出的feature map就是多个通道的整合信息了,能够使网络提取的特征更加丰富。

使用1x1卷积核,实现降维和升维的操作其实就是 channel 间信息的线性组合变化。

比如:在尺寸 3x3,64通道个数的卷积核后面添加一个尺寸1x1,28通道个数的卷积核,就变成了尺寸3x3,28尺寸的卷积核。 原来的64个通道就可以理解为跨通道线性组合变成了28通道,这就是通道间的信息交互。

注意:只是在通道维度上做线性组合,W和H上是共享权值的滑动窗口。

2.4 减少卷积核参数(简化模型)

下面仅以计算权重数为例子进行计算(不添加bias)

2.4.1 一层卷积添加1x1卷积核,分别计算权重数

(1)不使用1x1卷积核

(2)使用1x1卷积核

可以看到不使用1x1的卷积核是使用卷积核的10倍左右

2.4.2 GoogLeNet的3a模块

(1)不使用1x1卷积核

权重数:192 × (1×1×64) +192 × (3×3×128) + 192 × (5×5×32) = 387072
这个网络的说明如下
(1)采用不同大小的卷积核意味着不同大小的感受野,最后拼接意味着不同尺度特征的融合;
(2)之所以卷积核大小采用1、3和5,主要是为了方便对齐。设定卷积步长stride=1之后,只要分别设定pad=0、1、2,那么卷积之后便可以得到相同维度的特征,然后这些特征就可以直接拼接在一起了;
(3)文章说很多地方都表明pooling挺有效,所以Inception里面也嵌入了。
(4)网络越到后面,特征越抽象,而且每个特征所涉及的感受野也更大了,因此随着层数的增加,3x3和5x5卷积的比例也要增加。
(2)使用1x1卷积核


权重数:192 × (1×1×64) +(192×1×1×96+ 96 × 3×3×128)+(192×1×1×16+16×5×5×32)= 157184

不使用1x1的卷积核是使用1x1卷积核的权重数2倍

2.4.3 ResNet

ResNet同样也利用了1×1卷积,并且是在3×3卷积层的前后都使用了,不仅进行了降维,还进行了升维,参数数量进一步减少

其中右图又称为”bottleneck design”,目的一目了然,就是为了降低参数的数目,第一个1x1的卷积把256维channel降到64维,然后在最后通过1x1卷积恢复,
当我们的特征图通道数为256时,变得很大,出现的问题是计算复杂度会很高,这里做法是通过1×1卷积投影映射回64维,再做一个3×3通道数不变的卷积,然后再通过1×1卷积投影回去256维,因为输入是256维,输出要匹配上,这样设计之后复杂度就跟左图差不多了。
左图参数量:64 x ( 3 x 3 x 64)+64 x ( 3 x 3 x 64 ) = 73728
当通道数增加到 256时:256 x ( 3 x 3 x 256 ) + 256 x ( 3 x 3 x 256 ) = 1179648
右图参数量:256 x ( 1 x 1 x 64) + 64 x ( 3 x 3 x 64 ) + 256 x ( 1 x 1 x 64) = 69632

当通道数增加为256时,可以发现添加两层1x1的卷积的参数量和64为原有残差块参数量差不多。

对于常规ResNet,可以用于34层或者更少的网络中,对于Bottleneck Design的ResNet通常用于更深的网络中,目的是减少计算和参数量(实用目的)

参考资料

一文读懂卷积神经网络中的1x1卷积核
1x1卷积核的作用
【深度学习】CNN 中 1x1 卷积核的作用
深度学习 1x1卷积核的作用
1x1卷积的作用

深度学习基础学习-1x1卷积核的作用(CNN中)相关推荐

  1. 【深度学习】CNN 中 1x1 卷积核的作用

    最近研究 GoogLeNet 和 VGG 神经网络结构的时候,都看见了它们在某些层有采取 1x1 作为卷积核,起初的时候,对这个做法很是迷惑,这是因为之前接触过的教材的例子中最小的卷积核是 3x3 , ...

  2. 深度学习基础:1x1的卷积为什么代替全连接

    1x1的卷积作用我们肯定很好理解: 1.跨通道的特征整合 比如:输入的特征是32x64x64(32为通道数),我想要把32个通道的信息进行融合,最后输出8个特征,那我们就可以设计1x1的卷积核为:输入 ...

  3. CNN 中1X1卷积核的作用

    转载自: http://blog.csdn.net/u014696921/article/details/52950247 http://www.caffecn.cn/?/question/136 从 ...

  4. 深度学习基础学习-注意力机制(计算机视觉中)

    在网上看到很多关于注意力机制的说明,下面自己总结一下.大佬绕道 下面放几个文章的链接 添深度学习中的注意力模型 计算机视觉中的注意力机制 图像处理注意力机制Attention汇总 注意力机制详述 注意 ...

  5. Android开发学习——基础学习

    在微信公众号上,发现一个自学android的一个文章,觉得不错.对其进行小小总结,整理给大家. 1. 基础UI学习 Button/TextView/EditText/CheckBox/ImageVie ...

  6. 【深度学习】6万字解决算法面试中的深度学习基础问题

    这是对白的第 51 期分享 作者 l 清雨卢    出品 l 对白的算法屋 前言 真的是千呼万唤始出来emmmm,去年春招结束写了篇面试的经验分享.在文中提到和小伙伴整理了算法岗面试时遇到的常见知识点 ...

  7. 6万字解决算法面试中的深度学习基础问题

    这是对白的第 51 期分享 作者 l 清雨卢 出品 l 对白的算法屋 前言 真的是千呼万唤始出来emmmm,去年春招结束写了篇面试的经验分享.在文中提到和小伙伴整理了算法岗面试时遇到的常见知识点及回答 ...

  8. 深度学习-基础知识-经典网络

    目录 经典网络 CNN(卷积神经网络) BN层 LeNet AlexNet VGGNet inception structure(GoogLeNet) RFBnet ResNet残差网路 Encode ...

  9. 2023双非计算机硕士应战秋招算法岗之深度学习基础知识

    word版资料自取链接: 链接:https://pan.baidu.com/s/1H5ZMcUq-V7fxFxb5ObiktQ 提取码:kadm 卷积层 全连接神经网络需要非常多的计算资源才能支撑它来 ...

最新文章

  1. 练习5-2 找两个数中最大者 (10 分)
  2. SQL Server 2008空间数据应用系列三:SQL Server 2008空间数据类型
  3. 织梦DEDECMS网站批量删除未审核稿件的方法
  4. php 怎么实现收藏功能,php收藏功能如何实现
  5. jQuery Mobile动态刷新页面样式
  6. cli dll打包 vue_vue-cli3使用 DllPlugin 实现预编译提升构建速度
  7. matlab 神经网络工具箱的实用
  8. Windows进程间各种通信方式浅谈(转)
  9. poj 无向图最小环问题 详解,模板
  10. 经济数学线性代数第三版课后习题答案
  11. Mac 终端运行jar文件
  12. hge引擎配置登录器教程_HGEM2引擎登录器列表格式TXT
  13. .net core快速开发平台,learun自主工作流引擎设计规范
  14. 寄存器的偏移地址是什么意思?还有基地址,偏移地址就是相对于及地址的offset
  15. 整理41个Python不同方面的练习题,希望对你有帮助
  16. 国外天气预报接口 全球热门城市7天天气预报接口
  17. caj 格式的文件转换为word
  18. ❤Linux文件、目录与磁盘格式总结❤
  19. 如何解决蓝牙耳机总是声音断断续续的?
  20. 下载蓝盒插件_Fredo6插件下载 FredoTools(Fredo工具箱) 3.8c for Sketchup 中文免费版 下载-脚本之家...

热门文章

  1. 2016广东工业大学新生杯决赛网络同步赛暨全国新生邀请赛 题解源码
  2. 疫情之下:医疗服务机器人寒冬突围
  3. c语言实现单字节反码,C语言之原码、反码和补码
  4. Matlab:logical函数(逻辑函数)的使用及注意事项
  5. eclipse怎么设置字体大小
  6. 操作系统-第1章习题
  7. 魔兽争霸不死打赢疯狂不死
  8. 2010十大新兴技术展望 (转载)
  9. 20150129 N2 成绩133 合格!
  10. 飞鸽传书 “ bind()error=10048 ”的解决办法