出现这种错误,就是代表当前训练model的输入,输出,不在同一个设备上
(改了一天了,终于解决了,谁懂。。。。)
device,顾名思义,就是当前使用的设备,一般出现这种错误,就是两个张量(tensor)一个在gpu上,一个在cpu上,(为什么以前没出现这个错误呢,因为你现在是不是改了模型,新添加了tensor变量)
然后,你找到当前报错的最后一行,一步一步往上找报错的代码
(我想上传图片,可是csdn为啥一直上传失败。。。无语,反正一直往上找报错,一直到到哪行代码)
比如下面
cur_embedding=self.pisj_embedding
这个是我新加入模型的变量,于是我先在输入为tensor的变量前加入该代码,查看当下的device型号
print(原本输入tensor.device)
print(新加的输入tensor.device)
输出为
cuda:0
cpu
所以我们就知道是device不匹配问题
解决方法是
在该文件开头加入
devices=torch.device('cuda:0')#这里gpu型号为0还是1,看原本tensor输入使用的gpu型号
然后在新加入变量x的后面加入
x=x.to(device)
就ok啦·!!