paddle,恢复训练时报错
收藏
使用paddle2.2.0,前期训练中断后,
parser.add_argument('-resume', type=str, default='./output/train-20211210-09-50-43/Swin-Epoch-45')
写入地址,并运行main_single_gpu,model的恢复是能通过的,但是在optimizer恢复是报错'Momentum' object has no attribute 'set_dict'
代码和错误如下,各位大佬求教。
if config.MODEL.RESUME:
assert os.path.isfile(config.MODEL.RESUME+'.pdparams') is True
assert os.path.isfile(config.MODEL.RESUME+'.pdopt') is True
model_state = paddle.load(config.MODEL.RESUME+'.pdparams')
model.set_dict(model_state)
opt_state = paddle.load(config.MODEL.RESUME+'.pdopt')
optimizer.set_dict(opt_state)
logger.info(
f"----- Resume Training: Load model and optmizer states from {config.MODEL.RESUME}")
UnseenMe
已解决
4#
回复于2021-12
不好意思。 又仔细看了下你的报错。这个问题,应该把 optimizer.set_dict(opt_state) 改成 optimizer.set_state_dict(opt_state)
0
收藏
请登录后评论
恢复训练的话,应该是还需要一个
.pdstates
文件。这里有优化器相关状态。
.pdstates 没有看见这文件吧,大佬能给个截图例子吗?
这个地方不是要给地址嘛(config.MODEL.RESUM),.pdparams .pdopt是自己就能调用了,但是没看见有.pdstates 的文件
不好意思。
又仔细看了下你的报错。这个问题,应该把
optimizer.set_dict(opt_state)
改成
optimizer.set_state_dict(opt_state)
感谢感谢,我去尝试了一下,确实不报错了,但是并没有从中断的地方开始训练,是重头开始的,这是读取了参数,从头开始训练吗?再次感谢解惑。
感谢大佬,虽然epoch是从0开始计算,但是参数是保存过的
不客气。
如果是自己写的训练脚本的话,需要保存epoch。恢复的时候继续。
好兄弟能将完整的流程讲一下吗?我现在也遇到这个问题,先谢谢了
可以用warmup
这样对训练好的影响少
我也遇到关于恢复训练的问题,在训练过程中能够保存、重新载入保存文件、评估都没有问题,但是训练结束后单独进行载入、评估,损失就很高,我感觉应该是模型还有东西没有保存始终没有看出问题,不知道哪里出问题了