异常解决(一)-- RuntimeError: expected device cpu but got device cuda:0

不同版本的软件,哟普不同的容错机制,但是有时候可以自己修改解决一些问题。

最近在编写深度学习的相关代码,基于PyTorch,运行程序的时候,报错,报错内容如下所示:

RuntimeError: expected device cpu but got device cuda:0

 
   
   
   
   
 
   
   
   
   

    归根结底,这个错误出现的主要原因是GPU类型的数据和CPU类型的数据不匹配。了解了错误的本质原因,那如何解决就非常简单了。
    首先,需要分析大环境是在GPU上还是在CPU上,然后在出错的位置更改。无非就两种情况,分别如下:

    • 1.将数据改为GPU支持的类型
    data.cuda()
    
     
       
       
       
       
     
       
       
       
       
      • 2.将数据改为CPU支持的类型
      data.cpu()
      
       
         
         
         
         
       
         
         
         
         

        另外,需要注意的一点是:

        • 在CUDA下训练中的数据不能直接转换为numpy

        需要用这行代码先将cuda数据转为cpu数据,然后在转为numpy数据。

        data.cpu().detach().numpy()
        
         
           
           
           
           
         
           
           
           
           

          这里,用我自己项目里的代码举例(环境是GPU),output是以训练好的网络模型对测试集某张图片的预测结果,是Tensor类型,支持cuda类型的。
          在这里插入图片描述

          更多参考

          https://www.codeleading.com/article/38534962243/
          https://stackoverflow.com/questions/63359246/runtimeerror-expected-device-cpu-and-dtype-float-but-got-device-cpu-and-dtype-b
          https://cloud.tencent.com/developer/article/1762737
          https://github.com/shaoshengsong/MobileNetV3-SSD/issues/5
          https://blog.csdn.net/weixin_43786241/article/details/107239616

          你可能感兴趣的:(人工智能-神经网络,机器学习入门必备,Python使用技巧,人工智能)