更深层的卷积层尺寸?

数据挖掘 深度学习 卷积
2022-03-07 06:53:03

我正在尝试了解 CNN 网络维度:

layer                   activation shape    number of weights 

Input                   (25, 64, 1)         0
Conv2D(7x7, 1, 100)     (25, 64, 100)       4.900 (7x7x100)
MaxPool2D               (13, 32, 100)       0
Conv2D(5x5, 1, 150)     (13, 32, 150)       375.000 (5x5x150x100) 
...

输入维度是 25x64,然后第一个 Conv 层应用 100 个卷积 - 所以输出维度是 25x64x100。最大池化将其减少到 13x32x100。

第二个 Conv 层应用 150 个卷积。我不清楚的是第二个 Conv 层之后的维度。不应该是 13x32x150x100(而不仅仅是 13x32x150)吗?卷积层如何应用于 3D 输入?

第一个 Conv 层的权重数量为 7x7x100,第二层为 5x5x150 x100,这意味着为前一个 conv 的 100 个输入层中的每一个保存权重。这也让我认为输出维度应该是 4D。

2个回答

卷积层的输出形状按以下方式计算:

假设某个卷积层的输入形状是WxHxC

  • W- 宽度
  • H- 高度
  • C- 渠道

现在,假设您只有一个卷积核,例如。大小5x5(宽度和高度)。该内核实际上将具有大小5x5xCC是输入形状中的通道数),因为当一个内核固定在输入的某个位置时,它必须乘以输入中的所有通道。如您所知,对于那个固定位置,您只会得到一个输出编号当您对所有输入位置重复此操作时,您只会得到一个输出特征图(即,WxHx1假设您通过使用填充来保持输入尺寸......)。

为了在输出上获得更多特征图,您需要使用新的卷积核重复该过程(所有这些核必须具有等于输入形状通道的通道数)。因此,如果您重复此次K,您的输出特征图将具有尺寸WcHxK并且该卷积层的内核大小据说是5x5xCxK

您可以参考下图:

卷积层示例

在图像中,一个卷积核(在图像中称为“Convnet Filter”)输出一个输出特征图(在图像中称为“One Feature Map”)。

因此,在您的情况下,对于第一个卷积层,内核的大小为7x7x1x100,输出形状为25x64x100对于第二个卷积层,内核大小为5x5x100x150,输出形状为13x32x150


上述卷积是“经典”卷积。还有其他类型的卷积,例如。深度可分离卷积,它使用不同的计算方式。有关不同类型的卷积的更多信息,请参阅可分离卷积的基本介绍教程(它还包括“普通卷积”部分中“经典”卷积的描述)。

第二个 Conv 层应用 150 个卷积。我不清楚的是第二个 Conv 层之后的维度。不应该是 13x32x100x150 吗?卷积层如何应用于 3D 输入?

与全连接层相比,CNN 背后的一个关键思想是限制连接数。这部分是通过使用定义要考虑的空间输入的窗口大小的内核来完成的:

步幅=1,填充=1

如您所见,给定的绿色神经元不会考虑所有蓝色输入,而只考虑内核定义的子集。

然而,这个插图没有显示的是考虑了整个输入深度。上图中绿色层的每个神经元不仅连接到33蓝色输入但33depthinput蓝色输入。

这就是为什么转换。层输出与应用内核一样多的特征图(相当于卷积层的深度)。因此,您的第二次转化。层的输出深度为 150。

第一个 Conv 层的权重数量为 7x7x100,第二层为 5x5x150x100,这意味着为前一个 conv 的 100 个输入层中的每一个保存权重。

如果你选择一个特征图F转化率 层:这个特征图在空间输入维度上使用相同的权重,即它需要KwidhtKheight重量(其中K是内核大小)。这意味着上图中的绿色神经元共享它们的权重!

然而,如前所述,它不仅采用该图像中显示的空间输入,而且还考虑输入的整个深度。因此,特征图F拥有KwidthKheightdepthinput权重。而且由于每次转化。层有depthoutput这些特征中的一个映射了一个 conv 的权重总数。层是KwidthKheightdepthinputdepthoutput.

哪个是55100150第二次转化 在你的例子中层。

如果这仍然不清楚,请查看斯坦福课程的这个解释。