RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:0

报错

写一个深度学习代码的时候,发现一个报错:

 RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu!

错误的意思就是说,有的变量在CPU上处理,有的变量在GPU上处理

查找报错原因并解决

定位到报错位置,发现是如下代码

mae += torch.abs(predict.sum() - gt).item()

这行代码中涉及待两个变量,一个是predict,一个是gt

利用下述代码查看两个变量所属的

print(predict.device,'***********',gt.device)

输出如下

cuda:0 '***********' cpu

发现gt这个变量是在cpu上的

沿着gt寻根溯源,一路翻到Dateset处理代码,

gt来自label,但是这里数据没有输入模型处理,发现下面遍历数据的代码image输进了device,但是gt没有

加上这一行

gt = gt.to(device)

搞定

你可能感兴趣的:(深度学习,报错处理,深度学习,RuntimeError,Pytorch,bug,Debug)