Pytorch 如何从pytroch CUDA中恢复内存不足?
我尝试了以下代码。当Pytorch 如何从pytroch CUDA中恢复内存不足?,pytorch,Pytorch,我尝试了以下代码。当try中的代码因CUDA内存不足而失败时,我在except中将批大小减少到了一半,但在except中运行模型时仍然会出现同样的问题,但我确信批大小的一半是可运行的,因为我尝试在except中直接运行代码,而没有尝试整个批。它很好用。顺便问一下,有没有办法自动设置批量大小以充分利用CUDA内存而不会溢出 try: output = model(Variable(torch.LongTensor(np.array(x))).to(device),Variable(torc
try
中的代码因CUDA内存不足而失败时,我在except
中将批大小减少到了一半,但在except
中运行模型时仍然会出现同样的问题,但我确信批大小的一半是可运行的,因为我尝试在except
中直接运行代码,而没有尝试整个批。它很好用。顺便问一下,有没有办法自动设置批量大小以充分利用CUDA内存而不会溢出
try:
output = model(Variable(torch.LongTensor(np.array(x))).to(device),Variable(torch.LongTensor(np.array(pos))).to(device),Variable(torch.LongTensor(np.array(m))).to(device))
loss = criterion(output, Variable(torch.LongTensor(y)).to(device))#lb.transform(y)
loss.backward()
optimizer.step()
losses.append(loss.data.mean())
except:
half = int(len(x) / 2)
x1 = x[:half]
x2 = x[half:]
pos1 = pos[:half]
pos2 = pos[half:]
m1 = m[:half]
m2 = m[half:]
y1 = y[:half]
y2 = y[half:]
optimizer.zero_grad()
output = model(Variable(torch.LongTensor(np.array(x1))).to(device),Variable(torch.LongTensor(np.array(pos1))).to(device),Variable(torch.LongTensor(np.array(m1))).to(device))
loss = criterion(output, Variable(torch.LongTensor(y1)).to(device))#lb.transform(y)
loss.backward()
optimizer.step()
losses.append(loss.data.mean())
output = model(Variable(torch.LongTensor(np.array(x2))).to(device),Variable(torch.LongTensor(np.array(pos2))).to(device),Variable(torch.LongTensor(np.array(m2))).to(device))
loss = criterion(output, Variable(torch.LongTensor(y2)).to(device))#lb.transform(y)
loss.backward()
optimizer.step()
losses.append(loss.data.mean())
看起来你的gpu上还剩下一些东西。您是否尝试在开始时使用torch.cuda.empty_cache()释放cuda缓存