我目前正在做 Udacity 深度学习教程。在第 3 课中,他们讨论了 1x1 卷积。这种 1x1 卷积用于 Google Inception Module。我无法理解什么是 1x1 卷积。
我也看过Yann Lecun 的这篇文章。
有人可以向我解释一下吗?
我目前正在做 Udacity 深度学习教程。在第 3 课中,他们讨论了 1x1 卷积。这种 1x1 卷积用于 Google Inception Module。我无法理解什么是 1x1 卷积。
我也看过Yann Lecun 的这篇文章。
有人可以向我解释一下吗?
假设我有一个卷积层,它输出一个形状的张量,其中:
假设输入被馈送到具有 1x1 过滤器、零填充和步幅 1 的卷积层。那么这个 1x1 卷积层的输出将具有形状。
所以可以使用 1x1 conv 过滤器来改变过滤器空间中的维度。如果那么我们正在增加维度,如果我们正在减少维度,在过滤器维度中。
事实上,在 Google Inception 文章Going Deeper with Convolutions中,他们说(粗体字是我的,不是原作者的):
上述模块的一个大问题,至少在这种幼稚的形式中,是即使是适度数量的 5x5 卷积,在具有大量过滤器的卷积层之上也可能非常昂贵。
这导致了所提出架构的第二个想法:明智地应用降维和投影,否则计算需求会增加太多。这是基于嵌入的成功:即使是低维嵌入也可能包含有关相对较大的图像块的大量信息……在昂贵的 3x3 和 5x5 卷积之前,使用 1x1 卷积来计算缩减。除了用作还原外,它们还包括使用整流线性激活,这使得它们具有双重用途。
所以在 Inception 架构中,我们使用 1x1 卷积滤波器来降低滤波器维度上的维度。正如我上面所解释的,这些 1x1 卷积层通常可以用来改变过滤器空间的维度(增加或减少),在 Inception 架构中,我们看到这些 1x1 过滤器在降维方面的效果如何,明确地在过滤器维度空间中,而不是空间维度空间。
或许还有其他对 1x1 conv 过滤器的解释,但我更喜欢这种解释,尤其是在 Google Inception 架构的上下文中。
1x1 卷积只是将输入像素及其所有通道映射到输出像素,而不查看其周围的任何东西。它通常用于减少深度通道的数量,因为将具有极大深度的体积相乘通常非常慢。
input (256 depth) -> 1x1 convolution (64 depth) -> 4x4 convolution (256 depth)
input (256 depth) -> 4x4 convolution (256 depth)
底部的速度慢约 3.7 倍。
从理论上讲,神经网络可以“选择”使用哪个输入“颜色”来查看,而不是蛮力乘以一切。
我不了解 1x1 卷积的主要原因是因为我不了解卷积的真正工作原理——关键因素是计算多个通道/滤波器的卷积是如何工作的。为了理解这一点,我发现这个答案也很有用:
https://datascience.stackexchange.com/questions/9175/how-do-subsequent-convolution-layers-work
特别是,Type 2.2 是那里卷积的正确描述。
另一个有用的答案:
这个答案解释了您如何为每个输入/输出通道组合使用单独的过滤器。在计算每一个之后,结果在输入通道轴上求和,并留下输出通道数量的值。
这是我发现的一个视频,它帮助我了解了 1x1 卷积的工作原理。
以下是我从中得到的主要内容:
一个1*1 的转化率(又名Network-in-Network)?
假设您输入的是(,,)。您可以将(1*1* ) 视为单个神经元(一个完全连接的网络- 即为什么Network-in-Network),它在输入将它们与 (1*1* ) 相乘,然后相加,然后采用 ReLu 和输出 (, ),如果您有多个过滤器 ( ),那么输出将是 (,,)。
因此,您可以使用池化层来减少空间维度(,),并且可以使用 1*1 conv 来减少(即通道数),从而节省大量计算。例如
因此,带走
您可以使用 1x1 卷积层来减少但不能、。
您可以使用池化层来减少、和。
你在做什么使用 1*1 CONV 过滤器是什么?您基本上采用“1 * 1 * num_input_channel_of_featureMap”大小的权重和卷积(按元素*,后跟+)这个体积在大小为“W H num_input_channel_of_featureMap”的图像/特征映射上,你得到的是大小为“W * H”的输出。
现在,您可以使用“1*1*num_input_channel_of_featureMap”这种类型的“#filters”数字,并获得音量“W H #filter”作为最终输出!
更准确地说,您将“1 * 1”这样 32 个不同的权重(1 * 1 体积)与输入特征图中相同位置的一个切片相乘,然后是 ReLu 并生成一个对应的数字,被视为绿色像素!
1*1 CONV 有助于缩小通道数量并节省某些网络中的计算(INCEPTIONS)。!
但是,当然,如果你想保持通道数与输入特征图相同,那也没关系,1*1 CONV 所做的一件事就是简单地对其应用 ReLU 非线性,这允许它学习复杂的函数神经网络。