最近接触PyTorch 相关项目代码遇到的问题

  • Post author:
  • Post category:其他




异常



RuntimeError: scatter(): Expected dtype int64 for index

问题出在scatter的函数参数上:第2个(算上self是第3个)参数应该是tensor,且其包含的元素类型应该是Long型,而原来程序内是Int型。

true_dist.scatter_(1, target.data.unsqueeze(1), self.confidence)

应改为

true_dist.scatter_(1, target.data.unsqueeze(1).long(), self.confidence)



没有CUDA 的情况下,无GPU的环境,或者不想用GPU、不想装GCUDA的情况下,只用CPU来处理

# device = "cuda"
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
# 代码其余地方出现.cuda()的地方改成.to(device)就可以在无gpu的环境中运行了。

举个例子

if device == "cuda":
    model.cuda()
else:
    model.to(device)



size_average, reduce 在后面的版本弃用

  self.criterion =nn.KLDivLoss(size_average=False)

改为

 self.criterion = nn.KLDivLoss(reduction='sum')



版权声明:本文为qq_33511315原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。