首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

深度学习笔记(六):1x1卷积核的作用归纳和实例分析

  • 25-03-03 18:01
  • 2930
  • 5201
blog.csdn.net

文章目录

  • 一、1x1卷积核介绍
  • 二、举例说明实际作用
    • 例子1:线性变换
    • 例子2:降低通道数(归纳整理进行一次输入通道间的非线性映射)
  • 三、1x1卷积核作用
    • 降低/提升通道数
    • 增加非线性
    • 跨通道信息交互(channal 的变换)
  • 四、1x1卷积应用
    • Inception
    • ResNet
  • 参考文献
  • 待看文献

一、1x1卷积核介绍

1x1卷积核,又称为网中网(Network in Network)。

其实1x1卷积,可以看成一种全连接(full connection)。

二、举例说明实际作用

例子1:线性变换

这里通过一个例子来直观地介绍1x1卷积。输入32x32x1的矩阵,这里的1x1卷积形式为1x1x1,即为一个元素元素X,输出也是32x32x1的矩阵。但输出矩阵中的每个元素值是输入矩阵中每个元素值与元素X相乘的结果。

在这里插入图片描述

上述情况,并没有显示1x1卷积的特殊之处,那是因为上面输入的矩阵channel为1,所以1x1卷积的channel也为1。这时候只能起到线性变换或者理解为放缩的作用。这种用法是不常见的。

例子2:降低通道数(归纳整理进行一次输入通道间的非线性映射)

让我们看一下真正work的示例。当输入为32x32x10时,1x1卷积的形式是1x1x10(只有一个卷积核的情况下后面的个数我就不写了),此时输出为32x32x1。此时便可以体会到1x1卷积的实质作用:降维。当1x1卷积核的个数小于输入channels数量时,即降维。

蓝色虚线是卷积的对应关系,在输入中滑动,每一次滑动到一个位置,按照卷积核十个channel的权重计算输入channel之间的加权求和,然后进行红色虚线的对应位置输出,输出为单一通道

在这里插入图片描述

其实就等价于输入channel之间的权重链接之后统一到一个输出featuremap中。

如果有多个这种卷积核那就等价于多种不懂的权重全连接关系,可以理解为多种不同的整合归纳方式。

注:1x1卷积一般只改变输出通道数(channels),(因为滑动step的设置一般为1)所以不改变输出的宽度和高度,会生成一个拥有通道数量等于卷积核个数的,长宽不变的featuremap

三、1x1卷积核作用

降低/提升通道数

在这里插入图片描述

增加非线性

1*1卷积核,可以在保持feature map尺度不变的(即不损失分辨率)的前提下大幅增加非线性特性(利用后接的非线性激活函数),把网络做的很deep。但是同时也相应的增加了网络深度。

一个filter对应卷积后得到一个feature map,我认为可以理解为输入的一种映射关系,一个针对现有featuremap概括归纳,也可以理解为一次更高维的特征提取整合。

不同的filter(不同的weight和bias),卷积以后得到不同的feature map,提取不同的特征,得到对应的specialized neuron。建立多种映射关系,得到一个更加丰富的概括结论。

跨通道信息交互(channal 的变换)

使用1x1卷积核,实现通道数变化的操作其实就是channel间信息的线性组合变化,更加丰富的深度特征提取方式,3x3x输入通道数x64的卷积核后面添加一个1x1x64x28的卷积核,就变成了3x3x28的卷积核,原来的64个中间特征就可以理解为跨通道线性组合变成了28个最终输出特征,这就是通道间的信息交互。

四、1x1卷积应用

Inception

在这里插入图片描述

提高表达能力也就是上面所说的增加非线性度、实现跨通道的信息整合的作用。同时进行降维和升维也是一个点。

对于每一个Inception模块:

原始模块(左图):虽然卷积核都比较小,但是当输入和输出的通道数很大时,乘起来也会使得卷积核参数变的很大。计算量也会很大。max pooling后feature map输入输出通道数是不变的,再加不同蓝色卷积层得到的其他feature map,会使输出的feature map扩大到416,如果每个模块都这样,不断叠加,网络的输出会越来越大。

改进模块(右图)中是加入了1×1卷积进行通道数降低之后再卷积。卷积核参数、运算复杂度也就跟着降下来了。在max pooling层后面加入1×1卷积层后也可以降低输出的feature map数量,使得输出的feature map数降到了256。

GoogLeNet利用1×1的卷积降维后,得到了更为紧凑的网络结构,虽然总共有22层,但是参数数量却只是8层的AlexNet的十二分之一(当然也有很大一部分原因是去掉了全连接层)。

ResNet

在这里插入图片描述

主要目的是减少计算量和参数量

ResNet在3×3卷积层的前后都使用这种结构,先减少通道数,在进行通道数的扩充,虽然增加了网络层数,但是总体的参数数量减少了,因为进行3×3卷及操作的通道数减少了,具体可见如下图的结构。

其中右图又称为”bottleneck design”,因为像一个瓶颈一样,通道数由大变小在由小变大,目的一目了然,就是为了降低参数的数目,第一个1x1的卷积把256维channel降到64维,然后在最后通过1x1卷积恢复,整体上用的参数数目:1x1x256x64 + 3x3x64x64 + 1x1x64x256 = 69632,而不使用bottleneck的话就是两个3x3x256的卷积,参数数目: 3x3x256x256x2 = 1179648,差了16.94倍。

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

参考文献

主要来自于大佬的专栏,加入了一些自己的解释:一文读懂卷积神经网络中的1x1卷积核 - 知乎

1*1的卷积核与Inception

《Network in network》

Networks in Networks and 1x1 Convolutions - Deep convolutional models: case studies | Coursera

如何理解卷积神经网络中的1*1卷积

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

卷积神经网络中用1*1 卷积有什么作用或者好处呢? - 知乎

1×1 卷积核的作用?(附实例):

ResNet解析 - CSDN博客blog.csdn.net!

1X1卷积核到底有什么作用呢?

ResNet解析 - CSDN博客

卷积神经网络中用1*1 卷积有什么作用或者好处呢?

待看文献

mlpconv层(cccp层)mlpconv层 convolution层

文章知识点与官方知识档案匹配,可进一步学习相关知识
Python入门技能树首页概览416623 人正在系统学习中
注:本文转载自blog.csdn.net的呆呆象呆呆的文章"https://blog.csdn.net/qq_41554005/article/details/107392995"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top