PyTorch - RuntimeError: Ожидаемый объект внутреннего процессора, но получил внутренний CUDA для аргумента # 2 'weight' - PullRequest
0 голосов
/ 04 мая 2019

Я загружаю свою ранее обученную модель и хочу классифицировать одно (тестовое) изображение с диска через эту модель. Все операции в моей модели выполняются на моем GPU. Поэтому я перемещаю numpy array тестового изображения в графический процессор, вызывая функцию cuda(). Когда я вызываю функцию forward() моей модели с numpy array тестового изображения, я получаю RuntimeError: Expected object of backend CPU but got backend CUDA for argument #2 'weight'.

Вот код, который я использую для загрузки образа с диска и вызова функции forward():

test_img = imageio.imread('C:\\Users\\talha\\Desktop\\dog.png')
test_img = imresize(test_img, (28, 28))
test_tensor = torch.from_numpy(test_img)
test_tensor = test_tensor.cuda()
test_tensor = test_tensor.type(torch.FloatTensor)
log_results = model.forward(test_tensor)

Программная среда:

факел: 1.0.1

GPU: Nvidia GeForce GTX 1070

ОС: Windows 10 64-bit

Python: 3.7.1

1 Ответ

1 голос
/ 04 мая 2019

Преобразовать в FloatTensor перед отправкой через GPU.

Итак, порядок операций будет:

test_tensor = torch.from_numpy(test_img)

# Convert to FloatTensor first
test_tensor = test_tensor.type(torch.FloatTensor)

# Then call cuda() on test_tensor
test_tensor = test_tensor.cuda()

log_results = model.forward(test_tensor)
...