Advertisement

Tensor for ‘out‘ is on CPU, Tensor for argument #1 ‘self‘ is on CPU

阅读量:

模型在GPU上加载后,由于之前的权重还在CPU中,导致测试时出现Tensor不一致的报错。问题出在加载模型和设置设备的顺序不正确。解决方法是先加载模型再设置设备,这样权重和设备会同步,避免报错。原文链接:

1、问题
模型训练完后进行测试,报错

该运算结果的Tensor位于CPU上,而输入Tensor位于CPU上,而期望它们位于GPU上(在addmm操作的验证过程中)

在将模型传输至GPU后,随后加载了之前训练好的模型,导致模型被加载至GPU,然而,你的网络权重仍停留在CPU上,此时会报错如下,报错部分代码:

复制代码
 device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

    
 net.to(device)
    
 net.load_state_dict(torch.load('./results/bestmodel30.pth'),False)

3、解决
换下位置即可

复制代码
  
    
 net.load_state_dict(torch.load('./results/bestmodel30.pth'),False)
    
 device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
    
 net.to(device)

原文链接:

全部评论 (0)

还没有任何评论哟~