У меня возникли проблемы с тем, чтобы torch.nn.functional
работал так, как мне хотелось бы, что иллюстрируется приведенным ниже примером:
import torch
import torch.nn.functional as F
import numpy as np
sz = 5
input_arr = torch.from_numpy(np.arange(sz*sz).reshape(1,1,sz,sz)).float()
indices = torch.from_numpy(np.array([-1,-1, -0.5,-0.5, 0,0, 0.5,0.5, 1,1]).reshape(1, 1, 5, 2)).float()
out = F.grid_sample(input_arr, indices)
print(input_arr)
print(out)
Поскольку индексы являются только диагоналями ввода, я ожидал получить что-то вроде tensor([[[[0., 6., 12., 18., 24.]]]])
(поскольку (-1, -1) должно давать верхний левый угол, а (1,1) должен давать нижний правый, в соответствии с документами ). Тем не менее, я получаю это как вывод на консоль:
tensor([[[[ 0., 1., 2., 3., 4.],
[ 5., 6., 7., 8., 9.],
[10., 11., 12., 13., 14.],
[15., 16., 17., 18., 19.],
[20., 21., 22., 23., 24.]]]])
tensor([[[[ 0.0000, 4.5000, 12.0000, 19.5000, 6.0000]]]])
Что я делаю не так? Большое спасибо!