Pytorch直接在GPU上创建张量报错
Pytorch直接在GPU上创建张量报错:legacy constructor expects device type: cpubut device type: cuda was passed一般的创建张量方法:torch.Tensor(x)# x可以是list或者np.array类型但是这种创建方式默认是在把张量放在CPU(内存)中的。如果我们要使用GPU来训练模型,那么就还必须进行一步将张量复
·
Pytorch直接在GPU上创建张量报错:legacy constructor expects device type: cpubut device type: cuda was passed
一般的创建张量方法:
torch.Tensor(x) # x可以是list或者np.array类型
但是这种创建方式默认是在把张量放在CPU(内存)中的。如果我们要使用GPU来训练模型,那么就还必须进行一步将张量复制到GPU上的操作,这样显然会费时间。
之前也是看到其他文章有说可以直接在GPU上创建张量,因此自己也做了一下尝试:
MyDevice=torch.device('cuda:0')
x = torch.LongTensor(x, device=MyDevice) # 由于我的模型底层为Embedding层,因此使用LongTensor
运行程序的时候报错:
legacy constructor expects device type: cpu but device type: cuda was passed
根据报错分析问题是这里不能给device参数传’cuda’?然后查了一下,发现pytorch官方给的回答是,Tensor类是tensor的子类,不能给其device传参。而使用tensor类进行构建就不存在问题。
⭐️ 因此将代码改为如下:
MyDevice = torch.device('cuda:0')
x = torch.tensor(x, device=MyDevice)
x = x.long()
这下,就不再报错了。
更多推荐
所有评论(0)