使用Metrics评估模型

MindNLP中有很多 Metric 可以用于模型评估: AccuracyBleuScoreConfusionMatrixDistinctEmScoreF1ScoreMatthewsCorrelationPearsonCorrelationPerplexityPrecisionRecallRougeLRougeNSpearmanCorrelation

我们可以直接使用这些预定义好的评价指标,通过实例化一些相关类,并将实例化后的对象送入 Trainer 作为其参数之一。

Accuracy 的使用为例,使用评价指标,进行模型训练和评估的代码如下所示:

from mindnlp.engine.metrics import Accuracy

from mindnlp.engine.trainer import Trainer

metric = Accuracy()

trainer = Trainer(network=network, train_dataset=train_dataset, eval_dataset=eval_dataset,
                    metrics=metric, epochs=epochs, loss_fn=loss_fn, optimizer=optimizer,
                    callbacks=callbacks)

trainer.run(tgt_columns="label", jit=False)

定义新的评价指标

如果MindNLP没有提供我们需要的评价指标,我们也可以轻松定义自己的评价指标。

MindNLP定义的所有评价指标类都继承自基类 Metric 。定义我们自己的评价指标类时,也需要继承 Metric ,并重写该类的函数:

  • __init__():初始化评价指标。

  • clear():清空中间评估结果。

  • eval():计算并返回评价指标值。

  • update(*inputs):更新局部变量。

  • get_metric_name():返回评价指标名称。

完成上述操作后,要使用自定义的评价指标来训练和评估模型,后续操作与前文一致。