卷积神经网络中每个卷积层产生的特征图数量

7

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

enter image description here

第一个卷积层经过池化之后的输出是6个特征图(红线)。在下一个卷积层中使用这些特征图,会产生16个新的特征图(绿线),但是为什么?每个前一层的特征图应该只能创建1、2、3...个新的特征图,我们不应该在下一层中得到16个新的特征图。这是怎么回事?我的假设是错误的吗?

3个回答

8

我也曾经有过这种困惑,只有经过一番探索才消除了疑虑。

使用单通道卷积和使用多通道卷积的区别 这就是我理解错误的地方。我将尝试解释这个差异。我不是专家,请您谅解。

使用单通道卷积的卷积操作

当我们考虑一个简单的灰度 32X32 图像和一个卷积操作时,在第一层中我们应用1个或多个卷积矩阵。

根据您的示例,每个维度为5X5的卷积矩阵都会产生一个28x28的矩阵作为输出。为什么是28X28?因为,假设步幅(stride)=1且填充(padding)=0,您可以在32-5+1=28个位置上滑动一个5像素正方形的窗口。

enter image description here

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

使用多通道卷积的卷积操作

如果图像是一个RGB 32X32的图片呢?根据流行文献,应该将图像视为由3个通道组成,并对每个通道执行卷积操作。我必须承认,我匆忙得出了一些误导性的结论。我曾认为我们应该针对每个通道使用三个独立的5X5卷积矩阵。我错了

当您有3个通道时,每个卷积矩阵的维度应为3X5X5——将其视为一个单元,其中包含3个叠放的5X5矩阵。因此,您有5x5x3=75个可训练权重 + 1个可训练偏置

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

enter image description here

在你的例子中,我发现将第一个CONV1+MAXPOOL1层产生的6个特征图视为6个通道更容易理解。因此,按照之前的RGB逻辑,我们在第二个CONV2层应用的任何卷积核都应该具有6X5X5的尺寸。为什么是6? 因为CONV1+MAXPOOL1产生了6个特征图。为什么是5x5? 在你的例子中,你选择了一个大小为5x5的窗口。理论上,我可以选择3x3,这种情况下,内核维度将是6X3X3。

因此,在当前示例中,如果在CONV2层中有N2个卷积矩阵,则每个这些N2个内核都将是6X5X5的矩阵。在当前示例中,N2=16,将6通道X 14X14输入图像上的6X5X5内核卷积操作将产生N2个矩阵,每个矩阵的尺寸为10X10。为什么是10? 10=14-5+1(步长=1,填充=0)。

现在,你已经有了N2=16个矩阵,准备用于MAXPOOL2层。

参考文献:LeNet架构

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

enter image description here 注意圆圈区域。你可以看到在第二个卷积层中,操作跨越了第一层产生的4个特征图。

参考文献:Andrew Ng讲座

https://youtu.be/bXJx7y51cl0

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

我发现另一个SFO问题很好地描述了这一点。 How a Convolutional Neural Net handles channels

enter image description here

请注意,在引用的示例中,3个通道中的信息被压缩成2维矩阵。这就是为什么来自CONV1+MAXPOOL1层的6个特征图似乎不再对第一个完全连接的层的尺寸产生影响的原因。


5
第二次卷积的工作方式如下:
  • 输入矩阵形状:6@14x14(6个通道 - 应用于上一(第一)次卷积步骤中的6个滤波器的结果)
  • 将使用16个滤波器对6@14x14的输入矩阵进行卷积(每个滤波器都应该有6个通道,以匹配输入矩阵中的通道数)
  • 这将导致16@5x5的输出矩阵

注意: 输入矩阵的通道数和每个滤波器的通道数必须匹配,才能执行逐元素乘法。

因此,第一次和第二次卷积之间的主要区别在于第一次卷积中输入矩阵的通道数为1,因此我们将使用6个滤波器,其中每个滤波器只有一个通道(矩阵的深度)。

对于第二次卷积,输入矩阵具有6个通道(特征图),因此这个卷积的每个滤波器也必须有6个通道。例如:16个滤波器中的每个都将具有6@3x3的形状。

6@3x3形状的单个滤波器的卷积步骤的结果将是WxH(宽度,高度)形状的单个通道。应用所有16个滤波器(其中每个滤波器的形状为:6@3x3),我们将得到16个通道,其中每个通道都是单个滤波器的卷积结果。


谢谢您的回答 :) 但是您说“每个过滤器都应该有6个通道,以匹配输入矩阵中的通道数”的意思是什么?16个过滤器,每个过滤器都有6个通道吗?我不理解这个。 - Fcoder
@Fcoder,你明白第一个卷积步骤是如何工作的吗? - MaxU - stand with Ukraine
是的,我想我们有一个输入矩阵,并在其上应用6个过滤器,然后我们得到6个特征映射的结果。我的问题是,对于6个新的输入矩阵,我们如何得到16个特征映射。它应该是6或12或18...而不是16。我感到困惑! - Fcoder
@Fcoder,不,可以是任意数量的滤波器(具有相同数量的通道),从而产生一个输出矩阵,其中通道数(您称之为“特征图”)将等于滤波器的数量。 - MaxU - stand with Ukraine

4
让我用一个简单的例子来介绍卷积是如何工作的:
如果我们有一张大小为32x32,3个通道的输入图像,并选择使用5x5的过滤器,则该过滤器的尺寸将是5x5x3(隐含)。现在卷积将在输入图像和过滤器的对应通道之间进行,产生3个通道,这些通道将被加起来产生给定5x5x3滤波器的单个输出。
因此,每当我们说深度时,我们指的是希望添加的过滤器数量。如果我们想要深度为6,则意味着我们正在使用6个大小为5x5x3的过滤器,仅产生6层输出。
回答您的问题,在给定的架构中,他们正在使用6个过滤器对输入图像进行处理,然后使用16个大小为(y x y x 6)的过滤器,其中y应该是所选过滤器的高度和宽度。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接