使用Metrics评估模型
MindNLP中有很多 Metric 可以用于模型评估: Accuracy , BleuScore, ConfusionMatrix, Distinct, EmScore, F1Score, MatthewsCorrelation, PearsonCorrelation, Perplexity, Precision, Recall, RougeL, RougeN, SpearmanCorrelation。
我们可以直接使用这些预定义好的评价指标,通过实例化一些相关类,并将实例化后的对象送入 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():返回评价指标名称。
完成上述操作后,要使用自定义的评价指标来训练和评估模型,后续操作与前文一致。