【问题标题】:How do stacked convolutional layers work in a CNN?堆叠卷积层如何在 CNN 中工作?
【发布时间】:2020-11-22 18:28:56
【问题描述】:

我无法理解 2 个或更多卷积层(每个后跟一个池化层)在 CNN 中的工作方式。

将输入视为 3 通道 300x300 图像。如果第一个卷积层有 32 个卷积,第二个卷积层有 64 个卷积层,那么第一个卷积层会创建 32 个特征图。但是第二层创建了多少特征图呢? 64 个卷积中的每个卷积是否都作用于先前生成的 32 个特征图,从而总共创建 32*64 = 2048 个特征图?还是发生了其他事情?

与问题相关的简单代码是:

model = keras.models.Sequential([
keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(300, 300, 3)),
keras.layers.MaxPooling2D(2, 2),

keras.layers.Conv2D(64, (3, 3), activation='relu'),
keras.layers.MaxPooling2D(2, 2)])

【问题讨论】:

    标签: python tensorflow keras deep-learning conv-neural-network


    【解决方案1】:

    第一个卷积层有 32 个过滤器,但它适用于图像的所有三个通道,因此第一个 Conv2D 之后的特征图是 32x3 = 96,然后第二个 Conv2D 的 64 个过滤器每个都适用于这 96 个特征图,所以在第二个 Conv2D 之后它是 64x96 = ...(填空)。
    但为简单起见,Keras 仅显示 (..., 32) 或 (..., 64)。你可以使用model.summary()来检查。

    【讨论】:

      【解决方案2】:

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

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

      对于第二个卷积,输入矩阵有 32 个通道(特征图),所以这个卷积的每个滤波器也必须有 32 个通道。例如:64 个过滤器中的每一个都将具有 32@3x3 的形状。

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

      【讨论】:

        猜你喜欢
        • 2019-07-10
        • 2018-06-21
        • 1970-01-01
        • 1970-01-01
        • 2019-09-08
        • 1970-01-01
        • 2015-12-15
        • 2015-07-23
        • 1970-01-01
        相关资源
        最近更新 更多