问题
在推理时爆显存
做过的尝试,本案例无效
1,降低batch_size
2,推理时,output = model(x), 将output移到cpu再用它算metrics
3,本案例是目标检测,本来是将(b,3,S,S,6) 的target 放入cuda中和在cuda中的output算metrics的,做过的尝试是,只将有object的target放入cuda
最终解决方法
找到了问题的原因,在推理执行前,我没有with torch.no_grad(),导致显存占用过大,就爆了。with 会执行清理操作,释放资源。torch.no_grad() 会将tensor的requires_grad设为False,表示不需要梯度。
with torch.no_grad():
out = model(x)