paddle如何保存模型状态字典
收藏
paddle应该如何保存状态字典,使用paddle.save(ckpt,path)会报错
def ckpt_save(val_dict, model, optimizer, save_path):
ckpt = {
'acc': val_dict['acc_now'],
'loss': val_dict['loss_now'],
'epoch': val_dict['epoch_now'],
'model_state_dict': model.state_dict(),
'optimizer_state_dict': optimizer.state_dict(),
}
paddle.save(ckpt, save_path)
File "E:\0_Python\02_git\segmentation_paddle\my_utils\net_prepare.py", line 455, in model_save
ckpt_save(val_dict, model, optimizer, Model_ckpt_path)
File "E:\0_Python\02_git\segmentation_paddle\my_utils\net_prepare.py", line 469, in ckpt_save
paddle.save(ckpt, save_path)
File "C:\Users\12458\AppData\Local\Programs\Python\Python36\lib\site-packages\paddle\framework\io.py", line 289, in save
pickle.dump(saved_obj, f, protocol=pickle_protocol)
TypeError: can't pickle ParamBase objects
0
收藏
请登录后评论
有没有大佬帮忙解答下
https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/framework/io/save_cn.html#save
我觉得你需要看一下这个api
保存为pdmodel文件
或者pdopt
感谢,之前看过很多次了,这个api,以及paddle.jit.save api,似乎都只支持对于网络模型参数、优化器参数的保存,不支持checkpoint这种状态字典的保存,所以才在此提问
不知道大佬是否了解paddle中关于checkpoint这种状态字典的保存方法
感谢大佬,都尝试过,都无法保存checkpoint
确定paddle 有存储“状态字典”的api,有文档链接么?
paddle.save() 存储的就是 state dict 格式的模型
你指的是这个么?
https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/framework/io/save_cn.html#save
这个才是paddle.save() api的接口
那个字典类型的参数格式是哪来的啊
感谢,
3楼的大佬发的就是你发的这个链接;
正是因为不知道有没有类似的api,所以才在这里提问;
保存的内容除了模型参数和优化器参数外,其余均是自定义,我在pytorch中都是这样用的
paddle里应该没强制要求那些训练信息,自己定义下吧
感谢各位大佬,该问题已经解决。
paddle保存模型参数是parambase格式,paddle.save对要保存的字典对象的值会进行解码,对于parambase格式会进行转换
但我的保存方式,字典的值是字典(相当于2级字典),该2级字典的值是模型参数(parambase格式),但是paddle.save只对字典的值进行解码,对于该2级字典的值不会进行解译,因此需要手动修改。
在保存时,对模型参数进行手动解码就可以了。我的修改代码如下:
字典这种能保存吗?
他说的跟这个不一样坤哥
明白了
model_rebuild(model.state_dict()) 还是这里的问题