1x1 卷积层的目的是什么?

数据挖掘 机器学习 神经网络 美国有线电视新闻网 卷积
2021-10-13 23:11:56

SqueezeNet使用 1x1 卷积。我试图在这个简单的例子中理解它:如果输入是一个 MNIST 数字,即形状1x28x28x1(我使用Batch x Height x Width x Channel)。

然后应用 aConv2D(16, kernel_size=(1,1))产生一个大小的输出1x28x28x16,我认为每个通道1x28x28xi(1..16中的 i)只是输入层乘以一个常数。是对的吗?

更具体地说:Output[channel i][x,y] = InputLayer[x,y] * alpha_i对于 1..28 中的 x,y,其中alpha_i是每个通道的常数。

这个对吗?

这就像从 1 个通道变为 16 个相同的通道(除了每个通道乘以一个全局常数)。

它的目的是什么?


注意:我已经阅读了 1x1 卷积如何与全连接层相同?1x1 卷积。数学是如何工作的?但这里略有不同。

2个回答

首先,Conv2D(16, kernel_size=(1,1))应用于28x28x1将产生28x28x16,因为它不会改变维度的数量。其次,我查看了您所指的论文,并没有发现他们将1x1过滤器应用于只有一个通道的输入,如您提供的示例中所示。如果输入中只有一个通道,您的推理是正确的,但它不能转移到具有多个通道的输入。

Conv2D1x1根据定义,在选定区域的所有通道(在内核的情况下为一整列节点)和输出网格中相应的节点列之间分配权重。然后它根据步幅和填充参数将这些权重随后应用于所有有效区域。因此1x1,在 1 通道输入上应用内核没有意义,因为所有输出通道将彼此成正比,并且与输入通道也成比例。在多个通道的情况下,根据定义Conv2D,输出的每个节点将是相应输入列的加权(非平凡)总和,并且在大多数情况下不会与输入的任一通道成比例。

在这里找到有用的例子

1x1 卷积。
顺便说一句,一些论文使用 1x1 卷积,正如Network in Network首次研究的那样。有些人起初对 1x1 卷积感到困惑,尤其是当他们来自信号处理背景时。通常信号是二维的,因此 1x1 卷积没有意义(它只是逐点缩放)。然而,在 ConvNets 中情况并非如此,因为我们必须记住我们在 3 维体积上进行操作,并且过滤器总是延伸到输入体积的整个深度。例如,如果输入是 [32x32x3],那么进行 1x1 卷积将有效地进行 3 维点积(因为输入深度是 3 个通道)。