在很多模型中都会有一些1∗11*11∗1的卷积层,打眼一看感觉这些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*33∗3的卷积,而右侧是1∗11*11∗1和一个3∗33*33∗3的卷积。两者的功能是一样的,即得到的输出维度相同。现在要计算两者的参数量,直觉上来说,单个3∗33*33∗3的卷积参数似乎较少,但事实真的如此吗?
我们假设Previous Layer得到结果的维度是(96, 28, 28),即这个Inception模块的输入是96通道,长宽均为28的feature map,卷积后输出通道为48。假设经过左侧和右侧模块的方框所需要的计算参数分别为p1,p2,则p1和p2的计算公式如下:
p1 = 96∗3∗3∗48=4147296*3*3*48=4147296∗

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

1141

被折叠的 条评论
为什么被折叠?



