我用pytorch计算损失函数时出现了RuntimeError: expected device cpu and dtype Float but got device cuda:0 and dtype Float。
当时想法是,无论是训练的数据还是定义的模型都通过xx.to(device=device) 放到GPU中去了,所以所有的计算应该是在GPU上进行,因而不应该出现这种错误。然后去网上查了一下说是pytorch版本不对,然后我更换了分别更换了高、低pytorch版本,发现这问题依旧存在。
其实这问题是出在模型自定义损失函数上的,因为使用我自己定义的损失函数时可以正常运行。事实上,这是因为模型自定义的损失函数是在CPU上的,所以才会出现这种bug,找到了问题就很容易解决了。只需在损失函数后面加上.cuda()就行了。
计算损失函数时RuntimeError: expected device cpu and dtype Float but got device cuda:0 and dtype Float
最新推荐文章于 2022-05-17 17:07:39 发布