Ошибка типа: невозможно преобразовать тензор CUDA в numpy.Используйте Tensor.cpu (), чтобы сначала скопировать тензор в память хоста. - PullRequest
0 голосов
/ 23 декабря 2018

Я использую модифицированный предикат.py для тестирования обрезанной модели SqueezeNet

[phung@archlinux SqueezeNet-Pruning]$ python predict.py --image 3_100.jpg --model model_prunned --num_class 2
prediction in progress
Traceback (most recent call last):
File “predict.py”, line 66, in
prediction = predict_image(imagepath)
File “predict.py”, line 52, in predict_image
index = output.data.numpy().argmax()
TypeError: can’t convert CUDA tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first.
[phung@archlinux SqueezeNet-Pruning]$

Я понимаю, что numpy пока не поддерживает gpu.

Как мне изменить код, чтобы избежать этой ошибки, не вызывая операцию тензорного копирования данных, Tensor.cpu ()?

Ответы [ 2 ]

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

Я узнал, что могу просто использовать

output.argmax()
0 голосов
/ 23 декабря 2018

Изменить

index = output.data.numpy().argmax()

на

index = output.cpu().data.numpy().argmax()

Это означает, что данные сначала перемещаются в процессор, а затем преобразуются в массив numpy

...