RuntimeError: Expected object of device type cuda but got device type cpu for argument #2 ‘mat2’ in call to _th_mm
最近在利用Linux服务器训练强化学习模型,由于是现在CPU上跑的,后来放到了GPU跑,结果出现了上述问题,
大致意思是object 的 device 类型期望得到的是 cuda 类型,但是实际上的类型确实 cpu 类型
经检查发现虽然device = torch.device("cuda:1" if torch.cuda.is_available() else "cpu")
,device是GPU,但是我的模型未放到设备上,如图
将其改为
即可。
一般遇到这个错误可以从以下几个方面着手:
-
模型是否放到了CUDA上
model = model.to(device)
-
输入数据是否放到了CUDA上
data = data.to(device)
-
模型内部新建的张量是否放到了CUDA上
state = torch.FloatTensor(state).to(device)