参考链接:https://www.cnblogs.com/wanghui-garcia/p/11399053.html
官方文档:https://pytorch.apachecn.org/docs/1.0/nn.html
torch.nn.Upsample(size=None, scale_factor=None, mode='nearest', align_corners=None)
# size:一个独立的元组,想要得到的输出尺寸
# scale_factor:可以为int和tuple,图像高度/宽度/深度的乘数
# mode:上采样算法,nearest, linear, bilinear和trilinear。
# align_corners:为True,则输入和输出张量的角像素对齐,从而保留这些像素的值。这只会在mode是linear, bilinear,或trilinear。默认值:false
注意:size和scale_factor二选一(不能两者兼而有之,因为它是模棱两可的)
>>> input = torch.arange(1, 5).view(1, 1, 2, 2).float()
>>> input
tensor([[[[ 1., 2.],
[ 3., 4.]]]])
>>> m = nn.Upsample(scale_factor=2, mode='nearest')
>>> m(input)
tensor([[[[ 1., 1., 2., 2.],
[ 1., 1., 2., 2.],
[ 3., 3., 4., 4.],
[ 3., 3., 4., 4.]]]])
>>> m = nn.Upsample(scale_factor=2, mode='bilinear') # align_corners=False
>>> m(input)
tensor([[[[ 1.0000, 1.2500, 1.7500, 2.0000],
[ 1.5000, 1.7500, 2.2500, 2.5000],
[ 2.5000, 2.7500, 3.2500, 3.5000],
[ 3.0000, 3.2500, 3.7500, 4.0000]]]])
>>> m = nn.Upsample(scale_factor=2, mode='bilinear', align_corners=True)
>>> m(input)
tensor([[[[ 1.0000, 1.3333, 1.6667, 2.0000],
[ 1.6667, 2.0000, 2.3333, 2.6667],
[ 2.3333, 2.6667, 3.0000, 3.3333],
[ 3.0000, 3.3333, 3.6667, 4.0000]]]])
###############################################
>>>m = nn.Upsample(size=(3,5), mode='bilinear',align_corners=True)
>>>m(input)
tensor([[[[1.0000, 1.2500, 1.5000, 1.7500, 2.0000],
[2.0000, 2.2500, 2.5000, 2.7500, 3.0000],
[3.0000, 3.2500, 3.5000, 3.7500, 4.0000]]]])