关于optimizer的adam接着训练参数无法赋值问题
收藏
问题描述:在paddleseg框架下,使用optimizer=paddle.optimizer.Adam(lr,parameters=model.parameters(), weight_decay=1.0e-4)这个优化器进行训练。训练了一定回合后,想接着继续训练。如下图代码我想从iter_10240步继续往后训练。该优化器参数那iter_10240下的modelpdopt会报错。看了下modelopt文件里面存了大量参数动量的值,而optimizer的state_dict中没有那么多值。那么resume_model在优化器为adam的时候难道没法用吗?有没有啥解决方法
%cd /home/aistudio
%cd PaddleSeg
train(
model=model, # 创建的模型
train_dataset=train_dataset, # 训练数据集
val_dataset=eval_dataset, # 验证数据集
optimizer=optimizer, # 优化器
save_dir='output', # 保存路径--不必该,否则后边程序也需要修正
# resume_model='output/iter_10240',
iters=40960, # 训练迭代次数(这里不是轮次)
batch_size=4, # 批大小
save_interval=256, # 验证+保存的迭代周期
log_iters=32, # 日志输出的迭代周期
num_workers=0, # 多线程关闭(0)--在平台上开启可能会断掉
losses=losses, # 损失字典
use_vdl=True) # 是否记录训练参数
0
收藏
请登录后评论
如果存储的比读取的多会被自动忽略,但需要读取的值没有就会报错了。
一般自己存的,接着训练时读取没问题啊。不行就只读模型权重吧,优化器按当前学习率重新warmup下应该也行吧。