Pytorch直接在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()

这下,就不再报错了。

  • 18
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值