后续的卷积层如何工作?


29

这个问题归结为“卷积层如何正确工作。

假设我有一个灰度图像。因此图像只有一个通道。在第一层中,我使用过滤器和填充进行卷积。然后我有另一个卷积层,其中有卷积和过滤器。我有多少个特征图?3 × 3 k 1 5 × 5 k 2n×m3×3k15×5k2

1型卷积

第一层被执行。之后,我有特征图(每个过滤器一个)。这些中的每一个的大小均为。通过从填充的输入图像中提取像素来创建每个像素。 Ñ × 3 3 = 9k1n×m33=9

然后第二层被应用。每个单个过滤器都分别应用于每个特征图。这将为每个特征图生成特征图。因此,第二层之后有特征图。每个新要素地图的每个像素都是通过从以前获取填充要素地图的 “像素”而创建的。ķ 1 ķ 1 × ķ 2 5 5 = 25k2k1k1×k255=25

系统必须学习参数。k133+k255

2.1型卷积

像以前一样:执行第一层。之后,我有特征图(每个过滤器一个)。这些中的每一个的大小均为。通过从填充的输入图像中提取像素来创建每个像素。 Ñ × 3 3 = 9k1n×m33=9

与之前不同:第二层得到应用。每个滤镜都会应用到相同的区域,但是所有功能图都是以前的。这导致得到执行的第二层功能后总映射。每个新特征图的每个像素都是通过从以前获取填充特征图的 “像素”而创建的。ķ 25 5 = 25 ķ 2k2k255=25k2

系统必须学习参数。k133+k255

2.2型卷积

像上面一样,而不是每个过滤器有个必须学习并简单复制以复制其他输入特征图的参数,而是拥有必须学习的参数。ķ 13 3 + ķ 2ķ 15 555=25k133+k2k155

  1. 通常使用1型还是2型?
  2. Alexnet使用哪种类型?
  3. GoogLeNet中使用哪种类型?
    • 如果您说类型1:为什么卷积有意义?他们不只是将数据乘以常数吗?1×1
    • 如果您说类型2:请说明二次成本(例如,在深度视觉网络中,如果将两个卷积层链接在一起,则其过滤器数量的任何均匀增加都会导致计算的二次增加”)

对于所有答案,请提供一些证据(文件,教科书,框架文档)以证明您的答案是正确的。

奖金问题1

是仅始终对每个要素图应用池化,还是对多个要素图进行池化?

奖金问题2

我相对确定类型1是正确的,但GoogLe纸张出了点问题。但是也有3D卷积。假设您有大小为 1337个特征图,并应用了过滤器。您如何在特征图上滑动过滤器?(从左到右,从上到下,第一个要素图到最后一个要素图?)只要您始终如一地进行操作,这有关系吗?3 × 4 × 542×3143×4×5

我的研究

  • 我已经从上面阅读了两篇论文,但是我仍然不确定使用什么。
  • 我已经阅读过千层面的文档
  • 我已经阅读了theano文档
  • 我已经阅读了有关了解卷积神经网络的答案(没有遵循所有链接)
  • 我已经阅读了卷积神经网络(LeNet)。特别是图1使我相对确定类型2.1是正确的。这也符合GoogLe Net中的“二次成本”注释以及我在Caffee上获得的一些实践经验。

不久之后:卷积神经网络体系结构的分析和优化,特别是第2章和图2.2和图2.3。
Martin Thoma

Answers:


5

我不确定上述替代方法,但是常用的方法是:

在应用非线性之前,每个滤波器的输出线性依赖于补丁之前的所有特征图,因此最终在第二层之后得到滤波器。参数的总数为。 3 ˙k23˙3˙k1+k1˙5˙5˙k2

奖励1:对每个要素图分别进行池化。

奖励2:“滑动”的顺序无关紧要。实际上,每个输出都是基于上一层计算的,因此输出滤波器的响应并不相互依赖。它们可以并行计算。


1
我完全忘记了这个问题。同时,我写了关于CNN的硕士论文。第3章介绍了它们如何工作。
马丁·托马

1
需要说明的是:类型2.2是正确的类型(在此答案中进行了描述)
Martin Thoma

1
如果有人真的想看到这个动作,我实现了在谷歌张深卷积神经网络。你可以看到过滤器和输入图像,像素像素,因为它的工作原理通过CNN它的方式,直到CNN预测答案:docs.google.com/spreadsheets/d/...
bwest87

5

我为这个问题苦了几个小时。以为我会分享帮助我了解它的现场。

答案是第二卷积层的滤镜与第一层滤镜的维数不同。通常,过滤器必须具有与其输入相同的尺寸数。因此,在第一转换层中,输入具有2维(因为它是图像)。因此,过滤器也具有二维。如果第一转换层中有20个滤镜,则第一转换层的输出为20个2D特征图的堆栈。因此,第一转换层的输出是3维的,其中三维的大小等于第一层中的滤镜数量。

现在,此3D堆栈形成了第二个转换层的输入。由于第二层的输入是3D,因此滤镜也必须是3D。使第二层滤镜在第三维上的大小等于作为第一层输出的要素图的数量。

现在,您只需对前两个维度进行卷积即可;行和列。因此,每个第二层过滤器与特征图堆栈(第一层的输出)的卷积产生单个特征图。

因此,第二层的输出的第三维的大小等于第二层中的滤波器的数量。


2

查看本讲座和此可视化

通常使用2.1型卷积。在输入中,您具有NxMx1图像,然后在第一次卷积后将获得N_1xM_1xk_1,因此第一次卷积后的图像将具有k_1个通道。新的维数N_1和M_1将取决于步幅S和填充P:N_1 =(N-3 + 2P)/ S + 1,您可以类似地计算M_1。对于第一个转换层,您将拥有3x3xk_1 + k_1权重。为非线性函数中的偏差添加了k_1。

在第二层中,您将输入图像的大小为N_1xM_1xk_1,其中k_1是新的通道数。在第二次卷积后,您将获得N_2xM_2xk_2图像(数组)。第二层中有5x5xk_2xk_1 + k_2个参数。

对于具有k_3个滤波器和输入NxMxC(C是输入通道数)的1x1卷积,您将获得新图像(数组)NxMxk_3,因此1x1有意义。本文介绍了它们

奖励1:每个要素图应用池化。

有关详细信息,请参阅斯坦福大学CNN课程的幻灯片 -您可以很好地看到如何从多个输入通道对卷积求和。


2
不鼓励仅链接的答案-链接可能会停止工作。您可以内联相关信息吗?
肖恩·欧文

1
可视化真的很有帮助。我顿悟的时刻是当我意识到滤镜是3D而非2D时。
kmace

1
很棒的链接,为我整理东西。但是您的答案似乎与链接中的说法不一致,特别是在转换层2中,每个接受字段都是3D尺寸为5x5xk_1的3D,因此参数的数量应为5 * 5 * k_1 * k_2(加上偏差)。
丹尼尔·施劳格

@DanielSchlaug你是对的,我纠正了答案。
pplonski

1

k1331k1

k255k1k2

也就是说,卷积层中的内核跨越前一层输出的深度。

1×1kn11kn1

推测:

奖金问题2不是我所熟悉的,但是我猜想卷积中的depth参数将成为额外的维度。

mnknmnkn+1kn

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.