У меня есть представление изображения в виде массива, и я хочу превратить его в тензор, чтобы я мог передать его через свою нейронную сеть Pytorch.
Я понимаю, что нейронные сети принимают преобразованные тензоры, которые расположены не в [100,100,3], а в [3,100,100], и пиксели масштабируются, и изображения должны быть пакетными.
Итак, я сделал следующее:
import cv2
my_img = cv2.imread('testset/img0.png')
my_img.shape #reuturns [100,100,3] a 3 channel image with 100x100 resolution
my_img = np.transpose(my_img,(2,0,1))
my_img.shape #returns [3,100,100]
#convert the numpy array to tensor
my_img_tensor = torch.from_numpy(my_img)
#rescale to be [0,1] like the data it was trained on by default
my_img_tensor *= (1/255)
#turn the tensor into a batch of size 1
my_img_tensor = my_img_tensor.unsqueeze(0)
#send image to gpu
my_img_tensor.to(device)
#put forward through my neural network.
net(my_img_tensor)
Однако это возвращает ошибку:
RuntimeError: _thnn_conv2d_forward is not implemented for type torch.ByteTensor