1

我正在对大量数据训练文本分类模型,并且正在使用 simpletransformer 库的 bert 分类器(bert-base-uncased)。Simpletransformer 在默认情况下 retportsmcceval_loss用于在训练和测试(评估)阶段进行评估。我能够为测试阶段设置额外的指标,例如 acc、f1 等(通过向eval_model函数发送额外的指标),但我不知道如何告诉 simpletransformer 在训练阶段也报告这些指标?可以用 train_model 函数做同样的事情吗?
值得一提的是,eval_during_training选项是True.

它打印每个检查点的训练的 mcc 和 eval_loss(eval_results.txt在输出中),我还需要在每个检查点中报告其他指标。

result, model_outputs, wrong_predictions = model.eval_model(eval_df, f1=f1_multiclass, acc=accuracy_score)

提前致谢

干杯

4

1 回答 1

0

上网后,我找不到我的问题的答案。所以,我开始查看源代码。事实证明它比我想象的要简单得多。要在训练期间包含更多指标,您需要按照在 eval_model 方法中包含它们的方式包含它们。这是一个示例代码,展示了如何将额外的指标提供给 simpletransformer train_model 和 eval_model。

def f1_multiclass(labels, preds):
    return f1_score(labels, preds, average='weighted')

def prec_multiclass(labels, preds):
    return precision_score(labels, preds, average='weighted')

def recall_multiclass(labels, preds):
    return recall_score(labels, preds, average='weighted')
    

model.train_model(train_df, eval_df=test_df,
                  f1=f1_multiclass,
                  acc=accuracy_score,
                  prec=prec_multiclass,
                  recall=recall_multiclass,
                  cohen=cohen_kappa_score)

result, model_outputs, wrong_predictions = model.eval_model(test_df,
                                                            f1=f1_multiclass,
                                                            acc=accuracy_score,
                                                            prec=prec_multiclass,
                                                            recall=recall_multiclass,
                                                            cohen=cohen_kappa_score)
于 2021-11-30T19:15:38.613 回答