TypeError: can‘t convert cuda:0 device type tensor to numpy. Use Tensor.cpu() to copy the tensor to

在使用YOLOv5进行训练的过程中遇到了类型转换错误,具体为无法将CUDA设备类型的张量直接转换为numpy数组。解决方法是在转换前先将张量移到CPU内存中,即调用`.cpu()`方法。修改后的代码为`return self.cpu().numpy()`。
摘要由CSDN通过智能技术生成

环境:

  • Python:3.7.10
  • Anaconda:2.0.4
  • YOLOv5:3.1
  • torch:1.7.0+cu101
  • torchvision:0.8.1+cu101

Traceback (most recent call last):
File “train.py”, line 460, in
train(hyp, opt, device, tb_writer)
File “train.py”, line 320, in train
plots=epoch == 0 or final_epoch) # plot first and last
File “C:\Users\vvcat\Desktop\yolov5\yolov5-3.1\test.py”, line 197, in test
plot_images(img, output_to_target(output, width, height), paths, str(f), names) # predictions
File “C:\Users\vvcat\Desktop\yolov5\yolov5-3.1\utils\general.py”, line 951, in output_to_target
return np.array(targets)
File “H:\AnacondaNavigator\Anaconda\envs\yolov5\lib\site-packages\torch\tensor.py”, line 630, in array
return self.numpy()
TypeError: can’t convert cuda:0 device type tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first.

根据错误提示找到 该文件

H:\AnacondaNavigator\Anaconda\envs\yolov5\lib\site-packages\torch\tensor.py

在 630 行找到

return self.numpy()

更改为

return self.cpu().numpy()
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值