1*1卷积层的简单理解

本文探讨了1*1卷积层在深度学习模型中的重要作用,包括跨通道信息整合、升维降维及减少模型参数量。通过具体案例分析,展示了1*1卷积如何在不增加计算负担的情况下优化模型结构。

在很多模型中都会有一些1∗11*111的卷积层,打眼一看感觉这些layer很鸡肋,不知道放在模型里能起到什么作用。但深入理解一下就能发现,1*1的卷积是非常有用的,可以很灵活地控制特征图的深度,并能起到减少参数量的作用。

本文就基于个人粗浅的理解,简单讨论一下1*1卷积的作用。

1. 升维降维,实现跨通道的信息整合

feature map和1*1的卷积核做卷积时,只需要考虑当前像素即可,并不需要考虑周围的像素值。因此第一个作用主要是可以用来调节feature map的通道数,对不同通道上的像素点进行线性组合,即可实现feature map的升维或降维功能,这也是通道见信息的交互和整合过程。

例如现在的feature map维度是(48, 28, 28),48表示channel,28表示长和宽。如果给定一个1*1的卷积层,输入channel=48,出的channel=32,那么就可以对特征图实现从48维到32维的降维操作。

同样地,只要输出channel大于48,就可以实现升维操作。

2. 减少模型参数量

减少模型参数这一想法最早应该是在GoogleNet中提出的,假设给定如下两个Inception模块:
在这里插入图片描述

如上图,现在蓝色方框中,左侧是3∗33*333的卷积,而右侧是1∗11*111和一个3∗33*333的卷积。两者的功能是一样的,即得到的输出维度相同。现在要计算两者的参数量,直觉上来说,单个3∗33*333的卷积参数似乎较少,但事实真的如此吗?

我们假设Previous Layer得到结果的维度是(96, 28, 28),即这个Inception模块的输入是96通道,长宽均为28的feature map,卷积后输出通道为48。假设经过左侧和右侧模块的方框所需要的计算参数分别为p1,p2,则p1和p2的计算公式如下:

p1 = 96∗3∗3∗48=4147296*3*3*48=41472963348=41472

右图中第一个1∗11*111卷积可以先将原始输入降维,假设这里降到32维,则:

p2 = 96∗1∗1∗32+32∗3∗3∗48=1689696*1*1*32+32*3*3*48=16896961132+323348=16896

注:卷积核的通道数与输入的feature map一致,而卷积核的个数与输出channel一致。

我们惊奇的发现,反而是第二种采用了1∗11*1113∗33*333两次卷积的结构,拥有更少的训练参数。由此可见,虽然加入了这额外的1∗11*111的卷积层,但竟然可以减少训练的参数。

Resnet中的残差模块使用1∗11*111卷积核意义也是如此:
在这里插入图片描述
假设输入feature map的维度是(256, 28, 28),左侧和右侧模块的参数量分别是p1和p2,那么p1和p2的计算值分别如下(为了追求两者输入输出的一致性,需要把左侧图的64都改为256,且中间只有一层3∗3∗2563*3*25633256的卷积层):

p1 = 256∗3∗3∗256=589824256*3*3*256=58982425633256=589824

p1 = 256∗1∗1∗64+64∗3∗3∗64+64∗1∗1∗256=69632256*1*1*64+64*3*3*64+64*1*1*256=696322561164+643364+6411256=69632

可见采用了1∗11*111卷积后的参数量会减少很多,我觉得这主要是1∗11*111卷积核可以先进行降维,降维之后需要的3∗33*333的卷积核数目就变少了。而真正占用参数量的是3∗33*333卷积核,1*1$卷积核的参数量其实非常少,所以引入了1∗11*111卷积核来减少训练参数。

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值