ввод изображений массивов в нейронную сеть Pytorch - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть представление изображения в виде массива, и я хочу превратить его в тензор, чтобы я мог передать его через свою нейронную сеть 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

1 Ответ

0 голосов
/ 13 декабря 2018

Проблема заключается в том, что входные данные, которые вы вводите в свою сеть, имеют тип ByteTensor, в то время как только операции с плавающей запятой выполняются для подобных операций.Попробуйте следующее

my_img_tensor = my_img_tensor.type('torch.DoubleTensor')
# for converting to double tensor

Источник PyTorch Дискуссионный форум

Спасибо AlbanD

...