我试着把我的数据放到gpu上,但它不起作用;
在我的train.py
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中
import torch
ten=torch.FloatTensor(2)
ten=ten.cuda()
print(ten)它会打印以下内容
tensor([1.4013e-45, 0.0000e+00], device='cuda:0')现在张量在cuda上
发布于 2020-03-28 18:33:05
该错误意味着模型中的十个变量属于torch.FloatTensor (CPU)类型,而您提供给模型的输入是torch.cuda.FloatTensor (GPU)类型。
最有可能的情况是,您在模型的__init__()方法中定义了nn.Parameter或其他模块(如nn.Conv2d ),并在模型的forward()方法中定义了其他权重或层。
在这种情况下,forward()方法中定义的层不是模型的模块,当您调用cuda()时,它们不会被映射到GPU。
如果希望参数使用梯度下降进行更新,还需要显式地将参数添加到优化器中。
https://stackoverflow.com/questions/60899711
复制相似问题