if val_dataset is not None: if miou > best_mean_iou: best_mean_iou = acc best_model_iter = iter best_model_dir = os.path.join(save_dir, "best_model_mIoU") paddle.save( model.state_dict(), os.path.join(best_model_dir, 'model.pdparams')) logger.info( '[EVAL] The model with the best validation mIoU ({:.4f}) was saved at iter {}.' .format(best_mean_iou, best_model_iter))
直接保存bestmodel就好,但是往往需要多保存几个,使用额外的数据再次验证
直接Paddle套件里面去抄下作业不就好了吗
可以借鉴paddleseg\core\train.py中代码
if val_dataset is not None:
if miou > best_mean_iou:
best_mean_iou = acc
best_model_iter = iter
best_model_dir = os.path.join(save_dir, "best_model_mIoU")
paddle.save(
model.state_dict(),
os.path.join(best_model_dir, 'model.pdparams'))
logger.info(
'[EVAL] The model with the best validation mIoU ({:.4f}) was saved at iter {}.'
.format(best_mean_iou, best_model_iter))
高的保存一下
eval的时候
如果怕占空间
遇到高的保存一下
可以覆盖掉之前的
~
可以覆盖掉之前的
我在项目:『网盘赛』基于自定义训练模板的文档阴影消除 - 飞桨AI Studio - 人工智能学习实训社区 (baidu.com) 中实现了该功能,只保存评价指标最高的模型。
用valid过程的metrics排序保存
使用callback函数,请参考这个文档: https://aistudio.baidu.com/aistudio/projectdetail/1318174
开发套件里面自带这个功能啊,paddleDetection、paddleclas等,你设置训练时epoch之后都eval一次,训练结束之后在output里面有每次训练之后保存的模型,同时还有final模型和best模型, best就是你要的。但是这个best是在验证集上产生的,在测试集上有时候还是final的模型表现要好一点,当然过拟合就另说了
高阶API里面有,save_best,你找找看,我之前用过
Define a best_metric flag, and save the best_model every time it saw the best_metric
解决了嘛?可以看一下paddleclas套件里怎么写的
get