最近在运行pytorch代码时发现的该错误,不管是 expected cpu 还是 expected cuda, 本质原因都是类型不匹配。
一般是因为:
- 等号左边和右边类型不一样
- 运算符左右两端类型不同,例: - * /
- 同一个函数内,传入参数的类型不同,例matmul等
你要考虑你的大环境是在什么上面部署的,CPU 还是 CUDA,然后再出错位置尝试修改数据.
->cuda : data.cuda()
->cpu: data.cpu()
->numpy:注意cuda类型不能直接转numpy 须先转成Cpu类型,data.cpu().numpy()
注意在CUDA下训练中的数据不能直接转换为numpy,data.cpu().detach().numpy()