今天,调试深度学习网络代码时,遇到了两个错误,想着之前也遇见过,今天再遇见,要记下来,方便查错,也可以帮助别人,遇到这类错误的人可以有所借鉴,快速解决 Bug。
1. RuntimeError: Expected object of type torch.FloatTensor but found type torch.cuda.FloatTensor for argument
-
分析
这个错误的含义是需要传入一个
torch.FloatTensor
,但是却给了一个torch.cuda.FloatTensor
。Pytorch 中的类型若需要使用 GPU 进行运算加速,就要用*.cuda()
或者*.to(device)
来转换。比如我有个模型为model
和 Tensor 变量x
,如需要用 GPU 加速model
和x
,就可以用model.cuda()
和x.cuda()
,而通过查看model.weight.type()
和x.type()
,就可以看到它们的类型。我在出现这个错误的地方,输出了
x
与model
参数的类型,发现x
是torch.cuda.F