pytorch 使用转置卷积对4DTensor的空间维度进行上采样

8yoxcaq7  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(157)

我有一个大小为(16, 64, 4,4)的Tensor,我想使用转置卷积对这个Tensor的空间大小进行上采样。我如何选择核大小、步幅、填充,以得到大小为(16, 64, 4,6)的Tensor?
例如,这是我的代码,用于从(16, 64, 1,1)上采样到(16, 64, 4,4)

nn.convTranspose2d(64,64,kernel_size=6,stride=4,padding=1)
taor4pac

taor4pac1#

计算输出大小的公式在ConvTranspose2d的pytorch文档中。输入您的输入大小,设置您想要的输出大小,然后求解内核大小、步幅、填充等的公式。可能有多个有效的解决方案。
对于您的特定问题,可以使用以下方法:

from torch import nn

t = torch.ones((16, 64, 4, 4))  # test data
layer = nn.ConvTranspose2d(64, 64, kernel_size=(1, 3))
print(layer(t).shape)  # torch.Size([16, 64, 4, 6])

为了证明可以有多个有效解,这里是用于将形状为(16, 64, 1, 1)的Tensor上采样为(16, 64, 4, 4)的另一个解。

from torch import nn

t = torch.ones((16, 64, 1, 1))  # test data
layer = nn.ConvTranspose2d(64, 64, kernel_size=(4, 4))
print(layer(t).shape)  # torch.Size([16, 64, 4, 4])

相关问题