lossVal = 0
lossValNorm = 0
losstensorMean = 0
for i, (input, target) in enumerate (dataLoader):
target = target.cuda(async=True)
varInput = torch.autograd.Variable(input, volatile=True)
varTarget = torch.autograd.Variable(target, volatile=True)
varOutput = model(varInput)
losstensor = loss(varOutput, varTarget)
losstensorMean += losstensor
lossVal += losstensor.item()
lossValNorm += 1
outLoss = lossVal / lossValNorm
losstensorMean = losstensorMean / lossValNorm
在利用pytorch进行模型验证中,报出内存溢出的bug,代码如上,去查看gpu的利用情况,发现GPU的利用率一直都是0,这明显不是GPU不够用呀,纳闷中查资料,看到别人相似的报错才知道是因为数据类型的问题。在我的代码中存在循环累加的部分,然而我将losstensorMean定义为int类型,当累加到一定程度就会溢出,将losstensorMean += losstensor改为losstensorMean += float(losstensor)就不报错了。