我有一个(2,1024,4,6)
的4D张量。我想使用转置卷积将这种张量的空间维度上采样2倍,并将通道数从1024减少到512。我想要一个像(2,512,8,12)
这样的4D张量。我该怎么做?此外,转置卷积是减少通道数的好主意吗?例如,我使用了以下脚本,但它不起作用:
nn.ConvTranspose3d(in_channels=1024, out_channels=512, kernel_size=(1,2,2), stride=(1,3,2), padding=(0,1,1))
似乎应该使用ConvTranspose2d
而不是ConvTranspose3d
,因为您的输入张量是4D,形状为NCHW
。有不同的方法可以获得这些结果,但一种简单的方法是使用具有匹配步长的2
内核大小:
>>> conv = nn.ConvTranspose2d(1024, 512, kernel_size=2, stride=2)
下面是一个推理示例:
>>> conv(torch.rand(2, 1024, 4, 6)).shape
torch.Size([2, 512, 8, 12])