在PyTorch中使用转置卷积进行上采样



我有一个(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])

最新更新