首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pytorch .cuda()无法获取cuda的张量

pytorch .cuda()无法获取cuda的张量
EN

Stack Overflow用户
提问于 2020-03-28 18:05:35
回答 1查看 386关注 0票数 0

我试着把我的数据放到gpu上,但它不起作用;

在我的train.py

代码语言:javascript
复制
if __name__ == '__main__':
ten = torch.FloatTensor(2)
ten = ten.cuda()
print(ten)

args = config()
train_net(args, args.train_net, loss_config=net_loss_config[args.train_net])

当它运行时,它会打印以下内容

tensor([0., 0.])

张量不在cuda上

但在test.py中

代码语言:javascript
复制
import torch
ten=torch.FloatTensor(2)
ten=ten.cuda()
print(ten)

它会打印以下内容

代码语言:javascript
复制
tensor([1.4013e-45, 0.0000e+00], device='cuda:0')

现在张量在cuda上

EN

回答 1

Stack Overflow用户

发布于 2020-03-28 18:33:05

该错误意味着模型中的十个变量属于torch.FloatTensor (CPU)类型,而您提供给模型的输入是torch.cuda.FloatTensor (GPU)类型。

最有可能的情况是,您在模型的__init__()方法中定义了nn.Parameter或其他模块(如nn.Conv2d ),并在模型的forward()方法中定义了其他权重或层。

在这种情况下,forward()方法中定义的层不是模型的模块,当您调用cuda()时,它们不会被映射到GPU。

如果希望参数使用梯度下降进行更新,还需要显式地将参数添加到优化器中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60899711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档