- 四维度数据顺序为 n, c, h, w. ref: https://github.com/julyfun/numpytorch/blob/main/numpytorch/nn/modules/conv.py
- Flatten 不会展开 batch 维度,(n, 512, 1, 1) 经过 Flatten 以后的形状为 (n, 512)
- 卷积层中,输入通道到输出通道是全连接的。卷积核的形状是
out_channel * in_channel * k_h * k_w
,这也是一层的参数量,每个输入-输出通道 pair 拥有仅一个 $k_h times k_w$ 的二维卷积核(或者说每个输出通道拥有一个in_channel * k_h * k_w
的三维卷积核). - 每个输出通道由所有 (输入通道,卷积核) 卷出来.
torch.nn.Conv2d
1# [解释] 输入通道 3,输出通道 96,输出大小 54 * 54,注意这里 kernel 没有刚好填到最右端,下取整为 54. 卷积核有 96 个(每个输出通道拥有一个三维卷积核,每个卷积核的形状是 3 * 11 * 11).2nn.Conv2d(3, 96, kernel_size=11, stride=4, padding=1),
Classes
ConvTranspose2d
1self.upconv2 = nn.ConvTranspose2d(128, 64, kernel_size=2, stride=2)
他会在卷积逆操作的同时插入 0,放大分辨率。
1输入张量:21 233 44
5插入零后的张量:61 0 2 070 0 0 083 0 4 090 0 0 010
11卷积核:121 0130 114
15转置卷积操作的输出:4 collapsed lines
161 0 2 0170 0 0 0183 0 4 0190 0 0 0