训练深度网络怎么这么费内存 RuntimeError: Unknown error -1

训练了个U-net,结果跑了几个epoch后,总是 RuntimeError: Unknown error -1。

我参考了https://www.jianshu.com/p/1d630843a844?utm_source=oschina-app的解决方法。一个原因是存储空间满了,还有就是pytorch自身的bug。

我开始是不相信自己内存不够的,试了第二种方法不管用,看了内存空间后确实满的不行了。但是为什么还能跑几轮呢?

原因在于,我每跑完一轮后,都执行下面代码,存一下state_dict,用于之后推理或恢复训练的通用检查点。

if epoch % epoch_save_frequency == 0:
    print('save start: epoch_{}.pt'.format(epoch))
    checkpoint = {
         'state_dict': net.module.state_dict(),
         'optimizer': optimizer.state_dict()
         }
    checkpoint_save_path = osp.join(model_save_dir, 'epoch_{}.pt'.format(epoch))
    torch.save(checkpoint, checkpoint_save_path)

之前没太在意,但是这次内存不够,我猜测应该是训练期间保存文件的问题,就发现每次保存的state_dict居然有240M。

为什么state_dict这么大,还需要参考:

    https://pytorch.org/tutorials/beginner/saving_loading_models.html#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值