在深度卷积神经网络中,计算经过多层卷积和池化后的特征图的尺寸是很常见的需求。这样的计算可以帮助我们设计全连接层的输入。对于每个卷积层或池化层,输出特征图的尺寸可以使用以下公式计算:
这里:
- 和 是输入特征图的高和宽。
- pad 是应用到输入特征图的边缘的填充的像素数。
- kernel_size 是卷积核或池化核的大小。
- stride 是卷积或池化操作的步长。
根据您提供的网络结构和假设输入是256x256单通道灰度图,我们可以计算最后一个卷积层后的输出维度。让我们逐层计算:
-
第一个卷积层 (Layer 1):
- 输入: 256x256
- Kernel size: 3x3, Stride: 1, Padding: 1
- 输出: ((256 + 2*1 - 3)/1 + 1 = 256) (同样适用于宽度)
-
第一个池化层 (Layer 3):
- 输入: 256x256
- Kernel size: 2x2, Stride: 2, Padding: 0
- 输出: ((256 + 2*0 - 2)/2 + 1 = 128) (同样适用于宽度)
以此类推,继续计算下去:
- 第二个卷积层 (Layer 4) 和第二个ReLU层 (Layer 5) 不改变尺寸:128x128
- 第二个池化层 (Layer 6) 输出尺寸:
- 第三个、第四个卷积层 (Layer 7, 9) 和相应的ReLU层 (Layer 8, 10) 不改变尺寸:64x64
- 第三个池化层 (Layer 11) 输出尺寸:
- 第五、第六个卷积层 (Layer 12, 14) 和相应的ReLU层 (Layer 13, 15) 不改变尺寸:32x32
最终输出尺寸在通过所有卷积和池化层之后为32x32。因此,在全连接层之前,您需要将这32x32的特征图展平,如果卷积层的输出通道数为256,则展平后的特征向量维度为 。