异常
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 版权协议,转载请附上原文出处链接和本声明。