运行时报错RuntimeError: expected device cpu but got device cuda:0

最近在运行pytorch代码时发现的该错误,不管是 expected cpu 还是 expected cuda, 本质原因都是类型不匹配。

一般是因为:

  1. 等号左边和右边类型不一样
  2. 运算符左右两端类型不同,例:+ - * /
  3. 同一个函数内,传入参数的类型不同,例matmul等

你要考虑你的大环境是在什么上面部署的,CPU 还是 CUDA,然后再出错位置尝试修改数据.

->cuda : data.cuda()

->cpu: data.cpu()

->numpy:注意cuda类型不能直接转numpy 须先转成Cpu类型,data.cpu().numpy()   

                  注意在CUDA下训练中的数据不能直接转换为numpy,data.cpu().detach().numpy()

你可能感兴趣的:(坑)