Fco*_*der 7 artificial-intelligence machine-learning neural-network deep-learning convolutional-neural-network
我的问题是关于每个卷积层后特征图的数量。根据我的研究,在每个卷积层中,基于我们想要的过滤器,我们得到了确切数量的特征图。但是在一些教程中我遇到了一些不遵循这一点的架构。例如在这个例子中:
池化后第一个卷积层的输出是 6 个特征图(红线)。在下一个卷积层中使用该特征图,产生了 16 个新特征图(绿线),但是如何呢?之前的每一层特征图都应该创建 1,2,3... 新的特征图,我们不应该在下一层得到 16 个新的特征图。这是怎么发生的?我的假设不对?
我也有一段时间有这种困惑,只有在一些挖掘之后,雾才清除。
1通道卷积和多通道卷积之间的差异 这是我理解出错的地方。我将尝试解释这种差异。我不是专家所以请多多包涵
单通道卷积操作
当我们想到一个简单的灰度 32X32 图像和卷积操作时,我们在第一层应用了 1 个或多个卷积矩阵。
根据您的示例,这些维度为 5X5 的卷积矩阵中的每一个都生成一个 28x28 矩阵作为输出。为什么是 28X28?因为,假设 stride=1 和 padding=0,您可以在 32-5+1=28 个位置滑动一个 5 像素正方形的窗口。
在这种情况下,您的每个卷积矩阵都有5X5=25 个可训练权重 + 1 个可训练偏差。您可以拥有任意数量的卷积核。但是,每个内核都是二维的,每个内核都会产生一个维度为 28X28 的输出矩阵,然后将其馈送到 MAXPOOL 层。
多通道卷积运算
如果图像是 RGB 32X32 图片怎么办?根据流行文献,图像应被视为由 3 个通道组成,并且应对每个通道进行卷积运算。我必须承认,我草率地得出了一些误导性的结论。我的印象是我们应该使用三个独立的 5X5 卷积矩阵 - 每个通道 1 个。我错了。
当你有3 个通道时,你的每个卷积矩阵的维度应该是3X5X5 - 把它想象成一个由 5X5 矩阵堆叠 3 次组成的单个单元。因此,您有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 个特征图中的每一个。
参考:吴恩达讲座
参考:多通道的卷积算法是怎样的?
我发现了另一个 SFO 问题,它很好地描述了这一点。 卷积神经网络如何处理通道
请注意,在引用的示例中,3 个通道中的信息被压缩成一个二维矩阵。这就是为什么来自 CONV1+MAXPOOL1 层的6 个特征图似乎不再对第一个全连接层的维度有贡献的原因。
第二个卷积的工作原理如下:
注意:输入矩阵的通道数和每个过滤器中的通道数必须匹配才能执行逐元素乘法。
所以第一和第二圈间的主要区别是,在第一输入卷积矩阵信道的#是1这样,我们将使用6的过滤器,其中每个滤光器具有仅一个信道(基质的深度)。
对于第二个卷积,输入矩阵有 6 个通道 ( feature maps),因此这个卷积的每个过滤器也必须有 6 个通道。例如:16 个过滤器中的每一个都将具有6@3x3形状。
单个6@3x3形状滤波器的卷积步骤的结果将是(宽度,高度)形状的单个通道WxH。应用所有 16 个过滤器(其中每个过滤器都有形状6@3x3:)后,我们将获得 16 个通道,其中每个通道是单个过滤器卷积的结果。