后续卷积层如何工作?

数据挖掘 神经网络 卷积网络
2021-10-11 20:31:24

这个问题归结为“卷积层究竟是如何工作的。

假设我有一个 n×m灰度图像。所以图像只有一个通道。在第一层,我应用了一个3×3 卷积 k1过滤器和填充。然后我有另一个卷积层5×5 卷积和 k2过滤器。我有多少特征图?

类型 1 卷积

第一层被执行。在那之后,我有k1特征图(每个过滤器一个)。每个都有大小n×m. 每一个像素都是通过取33=9来自填充输入图像的像素。

然后应用第二层。每个过滤器都分别应用于每个特征图这导致k2每个特征图k1特征图。所以有k1×k2第二层之后的特征图。每个新特征图的每个像素都是通过以下方式创建的55=25之前填充的特征图的“像素”。

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

类型 2.1 卷积

像以前一样:第一层被执行。在那之后,我有k1特征图(每个过滤器一个)。每个都有大小n×m. 每一个像素都是通过取33=9来自填充输入图像的像素。

与以前不同:然后应用第二层。每个过滤器都应用于同一区域,但所有特征图都来自之前。这导致k2第二层执行后的总特征图。每个新特征图的每个像素都是通过以下方式创建的k255=25k2 之前填充的特征图的“像素”。

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

类型 2.2 卷积

像上面一样,但不是有 55=25 每个过滤器的参数必须学习并简单地复制到其他输入特征图,你有 k133+k2k155 必须学习的参数。

问题

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

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

奖金问题 1

池化是始终仅针对每个特征图应用,还是也针对多个特征图进行?

奖金问题 2

我比较确定类型 1 是正确的,我对 GoogLe 论文有误。但是也有 3D 卷积。假设你有 1337 个大小的特征图42×314 你申请一个 3×4×5筛选。你如何在特征图上滑动过滤器?(从左到右,从上到下,从第一个特征图到最后一个特征图?)只要你始终如一地做这件事有关系吗?

我的研究

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

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

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

奖励 1:池化是针对每个特征图单独完成的。

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

我刚刚在同一个问题上挣扎了几个小时。以为我会分享帮助我理解它的网站。

答案是第二个卷积层的过滤器与第一层的过滤器没有相同的维度。通常,过滤器必须具有与其输入相同的维数所以在第一个 conv 层中,输入有 2 个维度(因为它是一个图像)。因此过滤器也有两个维度。如果第一个 conv 层有 20 个过滤器,那么第一个 conv 层的输出是 20 个 2D 特征图的堆栈。所以第一个conv层的输出是3维的,其中第三维的大小等于第一层的filter个数。

现在这个 3D 堆栈形成了第二个卷积层的输入。由于第 2 层的输入是 3D,因此过滤器也必须是 3D。使第二层过滤器在第三维中的大小等于作为第一层输出的特征图的数量。

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

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

检查这个讲座和这个可视化

通常使用 2.1 型卷积。在您的输入中NxMx1图像,然后在第一次卷积后,您将获得N1xM1xk1,所以第一次卷积后的图像将有k1渠道。新维度N1M1将取决于你的步伐S和填充P:N1=(N3+2P)/S+1, 你计算M1以此类推。对于第一个 conv 层,您将拥有3x3xk1+k1权重。有添加k1对于非线性函数中的偏差。

在第二层,你有一个大小为输入图像N1xM1xk1, 在哪里k1是新的频道数。在第二次卷积之后,您获得N2xM2xk2图像(数组)。你有5x5xk2xk1+k2第二层参数。

为了1x1 卷积 k3过滤器和输入NxMxC(C是输入通道数)您将获得新图像(数组)NxMxk3, 所以1x1说得通。他们在本文中进行了介绍

奖励 1:每个特征图都应用池化。

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

第一层由 k1 有大小的内核 331 给予 k1 深度堆叠的特征图。

第二层由 k2 有大小的内核 55k1 给予 k2 深度堆叠的特征图。

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

一层与 1×1 卷积层实际上有 kn 大小的内核 11kn1.

推测:

奖励问题 2 不是我熟悉的问题,但我猜卷积中的深度参数会变成一个额外的维度。

例如,如果层的输出是大小 mnkn,带有填充的 3D 卷积将导致输出大小为 mnkn+1kn