torch.Size([4, 64, 8, 112, 112])是输入,x_rgb = self.rgb_path.maxpool(x_rgb)是最大池化,MaxPool3d(kernel_size=(1, 3, 3), stride=(1, 2, 2), padding=(0, 1, 1), dilation=1, ceil_mode=False)是结构,输出是多少?
来计算一下这个最大池化层的输出尺寸。
输入尺寸:
torch.Size([4, 64, 8, 112, 112])
- Batch 大小: 4
- 输入通道数: 64
- 输入深度: 8
- 输入高度: 112
- 输入宽度: 112
最大池化层结构:
MaxPool3d(kernel_size=(1, 3, 3), stride=(1, 2, 2), padding=(0, 1, 1), dilation=1, ceil_mode=False)
- 核大小: (1, 3, 3)
- 步长: (1, 2, 2)
- 填充: (0, 1, 1)
- dilation: 1
- ceil_mode: False
根据三维最大池化的计算公式:
- 输出深度:
D_out = floor((D_in + 2 * padding[0] - (kernel_size[0] - 1) - 1) / stride[0]) + 1 = floor((8 + 2 * 0 - (1 - 1) - 1) / 1) + 1 = 8
- 输出高度:
H_out = floor((H_in + 2 * padding[1] - (kernel_size[1] - 1) - 1) / stride[1]) + 1 = floor((112 + 2 * 1 - (3 - 1) - 1) / 2) + 1 = 56
- 输出宽度:
W_out = floor((W_in + 2 * padding[2] - (kernel_size[2] - 1) - 1) / stride[2]) + 1 = floor((112 + 2 * 1 - (3 - 1) - 1) / 2) + 1 = 56
综上所述,经过这个最大池化层后,输出特征图的尺寸为 (4, 64, 8, 56, 56)
。
发现手动计算和程序自动计算的是一致的