一个内存溢出Bug——RuntimeError: CUDA out of memory.

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)就不报错了。

你可能感兴趣的:(pytorch)