特征图是合并还是按原样传递?

人工智能 神经网络 深度学习 卷积神经网络 定义 执行
2021-11-10 16:11:19

我不确定 CNN 中卷积层的架构和机制的以下部分。可能,这取决于实现。

第一个问题:

假设我有 2 个卷积层,每个层有 10 个过滤器,输入张量的维度是n×m×1 (例如,灰度图像)。将此输入传递给第一个卷积层会产生 10 个特征图(10 个n×m,如果我们使用填充),每个都由不同的过滤器产生。

现在,当它被传递到第二个卷积层时实际发生了什么?是否所有 10 个特征图都作为一个大图通过m×n×10张量 或 是平均 10 个特征图的重叠单元,并且m×n×1张量被传递到下一个卷积层?前者会导致特征图随着卷积层数量的增加而爆炸式增长,空间复杂度将在O((nm)k), 在哪里k是链式卷积层的数量。在将特征图传递到下一层之前对其进行平均将使复杂度保持线性。那么,它是什么?还是两种可能性都常用?

第二个问题(有两个子问题)

a) 这是一个类似的问题。如果我的输入音量为n×m×3(例如 RGB 图像),我又有 2 个卷积层和 10 个过滤器,每个卷积层实际上有 30 个过滤器吗?那么10组3个过滤器,每个通道一个?或者我实际上只有 10 个过滤器并且过滤器应用于所有 3 个通道?

b)这与问题(1)相同,但对于通道:一旦我在输入张量上卷积了一个过滤器(由三个通道过滤器组成?(a)),我最终得到 3 个特征图。每个频道一个。我该怎么处理这些?我是否将它们按组件平均?或者我是否将它们分开,直到我对输入的所有 10 个过滤器进行卷积,然后平均每个通道的 10 个特征图?或者我是否平均所有三个通道的所有 30 个特征图?还是我只是将 30 个特征图传递给下一个卷积层,这些层又知道这些特征图中的哪些属于哪个通道?

相当多的可能性......我咨询过的资料都没有明确说明这一点。也许是因为它取决于个人的实施。

无论如何,如果有人可以稍微消除这种混乱,那就太好了!

2个回答

tl;博士

它有助于认为卷积层的通道维度就像一个完全连接的层(即该层计算所有通道的加权和)。

对于单个像素...

让我们考虑一个像素(例如左上角的像素)。这个像素有C不同的值,其中C是通道数。为了产生单个过滤器的结果,该层采用这些的加权和C像素。它通过实际拥有C权重,将像素值与其对应的权重相乘并将它们相加。

例子

假设你有一个n×m×10张量作为卷积层的输入1过滤器和一个3×3核心。为了创建其输出,该层具有3×3×10=90权重,即不同的3×3每个内核10输入通道。为了创建其输出,该层在每个输入通道(每个通道都有其相应的权重矩阵)上分别执行卷积操作,并以这种方式创建10相加在一起的特征图。

现在想象图层有20过滤器而不是1. 没有任何变化,只是完成了相同的程序20次与20不同的权重集因此在这种情况下,层中的权重总数为3×3×10×20=1800.

为了回答你的问题...

(1)你有一张灰度图n×m×1它通过第一个卷积层(它有10过滤器)。该层将对输入图像进行卷积操作10独立时间和生产10特征图,即输出张量n××10. 现在将其馈入第二个卷积层,该层再次具有10过滤器。对于每个过滤器,该层将在10独立输入特征图,并将相应的像素相加,形成一个n××1特征图。它将执行此过程10次并生成输出张量n××10.

(2)是的,每一层实际上都有30过滤器,共10对于每个 R、G、B 通道。该层只是将 R、G、B 通道的结果相加以生成单个特征图。对于第二部分,如果我做对了,那几乎就是您所说的,但它是对地图求和而不是对它们进行平均

笔记

我建议您查看斯坦福的 CS231 关于卷积层的笔记,其中详细解释了它,并且还有数字示例来确认您是否正确。

您还可以查看此答案以获取更多详细信息。

答案:

  1. 一般是前者。下一层将在每个滤波器处学习如何合并前一层的通道,这就是为什么在 2D 卷积中,内核是 3 维张量。但是参数的数量是nC一世C一世+1一世H层(这是忽略偏见)。让我们假设所有频道都是(C)那么空间复杂度变为(ķnC2)在哪里ķ是层数。
  2. a)第一个卷积滤波器的内核大小为 (w,h,3,10),其中 w 和 h 是 2d 卷积的内核大小(实际上通常为 3)。所以有 10 个大小为 (w,h,3) 的过滤器,但参数的数量是 w*h*30(再次为方便起见,忽略偏差)。但是第二层,因为它在一个有 10 个通道的层上工作,所以将有内核 (w,h,10,10)。
    b)我认为您需要返回并查看卷积的作用(在您的设置中,特别是 2D 卷积)。每个过滤器都适用于前一层的每个通道最后一个卷积层的每个通道都指的是单个过滤器,该过滤器将整个前一层卷积到该过滤器。