Pytorch 神经网络( out of memory )

本文讨论了Pytorch神经网络训练中出现内存不足(Out of Memory)的问题,包括在恢复训练时内存占用增加的情况。解决方法包括在加载检查点时注意设备分配,尽量将操作放在CPU上,以及使用torch.cuda.empty_cache()清理显存。测试阶段要记得设置no_grad以防止显存爆满。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、从头开始训练的时候正常,大概占了4/5的显存容量,然后中断了, 再resume 就会出现out of memory ?

因为你 load checkpoint 的时候把参数加载到 显存 里面了;而且大概率你的code是这么写的然后报的错:

model = Network().cuda()
# 这里如果你存下来的权重device在cuda上,那么将自动载入GPU; 此时 model在GPU,新载入的参数也在GPU,就很有可能放不下
# 而且就算不在,在内存上,你还是得 state_dict = state_dict.cuda() 还是会炸显存
state_dict =  torch.load('xxxxx.pth.tar') 
model.load_state_dict(state_dict)

改成这样就行了

model = Network()
model.load_state_dict(torch.load('xxxx.pth.tar',  map_location='cpu' ))
model.cuda()

存储方面,能在 device='cpu' 上面做的事情,就别在 devi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiangyong58

喝杯茶还能肝到天亮,共同进步

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值