首页 > 解决方案 > CNN 中每个卷积层后生成的特征图数量

问题描述

我的问题是关于每个卷积层之后的特征图数量。根据我的研究,在每个卷积层中,基于我们想要的过滤器,我们得到特征图的确切数量。但在一些教程中,我遇到了一些不遵循这一点的架构。例如在这个例子中:

在此处输入图像描述

池化后第一个卷积层的输出是 6 个特征图(红线)。在下一个卷积层中使用该特征图,产生了 16 个新的特征图(绿线),但是如何?之前的每一层特征图都应该创建 1,2,3... 新的特征图,我们不应该在下一层获得 16 个新的特征图。这是怎么发生的?我的假设不对?

标签: machine-learningneural-networkdeep-learningartificial-intelligenceconvolutional-neural-network

解决方案


我也有过一段时间的困惑,只是经过一番挖掘,雾气才散去。

1通道卷积和多通道卷积之间的差异 这是我的理解出错的地方。我将尝试解释这种差异。我不是专家所以请多多包涵

单通道卷积运算

当我们想到一个简单的灰度 32X32 图像和卷积运算时,我们在第一层应用了一个或多个卷积矩阵。

根据您的示例,这些尺寸为 5X5 的卷积矩阵中的每一个都会产生一个 28x28 矩阵作为输出。为什么是 28X28?因为,假设 stride=1 和 padding=0,您可以在 32-5+1=28 个位置滑动一个 5 像素正方形的窗口。

在此处输入图像描述

在这种情况下,每个卷积矩阵都有5X5=25 可训练权重 + 1 可训练偏差。您可以拥有任意数量的卷积核。但是,每个内核都是二维的,每个内核都会产生一个维度为 28X28 的输出矩阵,然后将其馈送到 MAXPOOL 层。

多通道卷积运算

如果图像是 RGB 32X32 图片怎么办?根据流行文献,图像应被视为由 3 个通道组成,并且应在每个通道上执行卷积操作。我必须承认我仓促得出了一些误导性的结论。我的印象是我们应该使用三个独立的 5X5 卷积矩阵——每个通道 1 个。我错了

当你有3 个通道时,你的每个卷积矩阵的维度应该是3X5X5 - 将其视为一个由堆叠 3 次的 5X5 矩阵组成的单个单元。因此,您有5x5x3=75 可训练权重 + 1 可训练偏差

第二个卷积层会发生什么?

在此处输入图像描述

在您的示例中,我发现将第一个 CONV1+MAXPOOL1 层生成的 6 个特征图可视化为 6 个通道更容易。然后像以前一样应用相同的 RGB 逻辑,我们在第二个 CONV2 层中应用的任何卷积核都应该具有 6X5X5 的维度。为什么是6?因为我们 CONV1+MAXPOOL1 已经产生了 6 个特征图。为什么是 5x5?在您的示例中,您选择了 5x5 的窗口尺寸。理论上,我可以选择 3x3,在这种情况下,内核维度将是 6X3X3。

因此,在当前示例中,如果您在 CONV2 层中有 N2 个卷积矩​​阵,那么这些 N2 个内核中的每一个都将是一个大小为 6X5X5 的矩阵。在当前示例中,N2=16 并且尺寸为 6X5X5 的内核对具有6 个通道 X 14X14的输入图像的卷积运算将产生 N2 个矩阵,每个矩阵的尺寸为 10X10。为什么是10?10=14-5+1(步幅=1,填充=0)。

您现在为 MAXPOOL2 层排列了 N2=16 个矩阵。

参考:LeNet架构

http://deeplearning.net/tutorial/lenet.html

在此处输入图像描述 注意被包围的区域。您可以看到,在第二个卷积层中,显示的操作跨越了第一层生成的 4 个特征映射中的每一个。

参考:吴恩达讲座

https://youtu.be/bXJx7y51cl0

参考:多通道的卷积算法是什么样子的?

我发现另一个 SFO 问题很好地描述了这一点。 卷积神经网络如何处理通道

在此处输入图像描述

请注意,在参考示例中,3 个通道中的信息被压缩成一个二维矩阵。这就是为什么来自 CONV1+MAXPOOL1 层的6 个特征图似乎不再有助于第一个全连接层的维度。


推荐阅读