如何调整 PyTorch 张量的大小?
Posted
技术标签:
【中文标题】如何调整 PyTorch 张量的大小?【英文标题】:How to resize a PyTorch tensor? 【发布时间】:2020-02-28 18:45:17 【问题描述】:我有一个大小为 (5, 1, 44, 44)
(批次、通道、高度、宽度)的 PyTorch 张量,我想将其“调整大小”为 (5, 1, 224, 224)
我该怎么做?我应该使用哪些功能?
【问题讨论】:
你想如何调整它的大小?通过用0
s 填充?通过放大图像?
【参考方案1】:
您似乎正在寻找interpolate
(nn.functional
中的一个函数):
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 包,它可以在调整图像大小时准确处理各种“边缘情况”。这在直接合并不同尺度的特征时会起作用:不准确的插值可能会导致错位。
【讨论】:
关于双三次插值的警告是,结果的范围可能比输入的范围更宽。如果这比你可以使用双线性更重要【参考方案2】:TorchVision transforms.functional.resize()
功能正是您要找的:
import torchvision.transforms.functional as F
t = torch.randn([5, 1, 44, 44])
t_resized = F.resize(t, 224)
如果您希望使用双线性以外的其他插值模式,可以使用 interpolation
参数指定。
【讨论】:
以上是关于如何调整 PyTorch 张量的大小?的主要内容,如果未能解决你的问题,请参考以下文章