I have a PyTorch tensor of size (5, 1, 44, 44)
(batch, channel, height, width), and I want to 'resize' it to (5, 1, 224, 224)
How can I do that? What functions should I use?
I have a PyTorch tensor of size (5, 1, 44, 44)
(batch, channel, height, width), and I want to 'resize' it to (5, 1, 224, 224)
How can I do that? What functions should I use?
It seems like you are looking for interpolate
(a function in 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)
If you really care about the accuracy of the interpolation, you should have a look at ResizeRight
: a pytorch/numpy package that accurately deals with all sorts of "edge cases" when resizing images. This can have an effect when directly merging features of different scales: inaccurate interpolation may result in misalignments.
The TorchVision transforms.functional.resize()
function is what you're looking for:
import torchvision.transforms.functional as F
t = torch.randn([5, 1, 44, 44])
t_resized = F.resize(t, 224)
If you wish to use another interpolation mode than bilinear, you can specify this with the interpolation
argument.