如何调整 PyTorch 张量的大小?

14
我有一个PyTorch张量,大小为(5, 1, 44, 44)(批次、通道、高度、宽度),我想将其“调整大小”为(5, 1, 224, 224)。我该如何做?应该使用哪些函数?

你想如何调整大小?通过填充 0 进行调整吗?还是通过膨胀图像进行调整? - iacob
2个回答

21

看起来你正在寻找插值(位于 nn.functional 中的一个函数):interpolate

import torch.nn.functional as nnf

x = torch.rand(5, 1, 44, 44)
out = nnf.interpolate(x, size=(224, 224), mode='bicubic', align_corners=False)

如果您真的关心插值的准确性,应该查看ResizeRight:这是一个pytorch/numpy软件包,可以准确处理调整图像大小时出现的各种“边缘情况”。当直接合并不同比例的特征时,不准确的插值可能会导致错位。


3
有关双三次插值,需要提醒的一点是结果的范围可能比输入范围更宽。如果这很重要,那么可以使用双线性插值。 - jodag

3

您要找的是 TorchVision transforms.functional.resize() 函数:

import torchvision.transforms.functional as F

t = torch.randn([5, 1, 44, 44])
t_resized = F.resize(t, 224)

如果您希望使用双线性插值以外的其他插值模式,您可以使用interpolation参数指定。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接