使用SimpleTransformers时如何在训练阶段上报更多自定义评估指标
解决方法
你完全可以通过配置train_model函数实现训练阶段上报自定义指标,操作方式和你给eval_model传参的逻辑完全一致,具体步骤如下:
- 你已经开启了
eval_during_training=True,只需要在调用train_model方法时,和你传入eval_model的自定义指标参数一样,把f1、acc等你需要的指标作为关键字参数传入即可,同时要确保传入验证集eval_df。
示例代码如下:
from functools import partial from sklearn.metrics import f1_score, accuracy_score # 提前定义好符合你需求的指标函数,多分类场景记得指定f1的average规则 f1_multiclass = partial(f1_score, average="macro") # 训练时直接传入自定义指标即可 model.train_model( train_df, eval_df=eval_df, f1=f1_multiclass, acc=accuracy_score )
- 传入的自定义指标函数需要满足参数要求:第一个入参为真实标签数组,第二个入参为模型预测结果数组,大部分sklearn内置的指标函数默认都符合这个规则,自定义指标时注意参数顺序即可。
- 配置完成后,训练过程中每次触发评估(默认是每个checkpoint保存、每个epoch结束时,你也可以通过模型初始化参数
evaluate_during_training_steps自定义评估步长),你配置的acc、f1等指标会和默认的mcc、eval_loss一起输出,同时自动写入输出目录的eval_results.txt文件。
内容的提问来源于stack exchange,提问作者Firouziam
相关产品推荐
相关产品推荐

