在这里插入图片描述
每个具体的参数代表什么,明确好。无非就是第几个样本,属于某个类别的概率,非常清晰

from paddlenlp.metrics import AccuracyAndF1

@paddle.no_grad()
def evaluate(model, criterion, metric, data_loader):
    """
    Given a dataset, it evals model and computes the metric.

    Args:
        model(obj:`paddle.nn.Layer`): A model to classify texts.
        data_loader(obj:`paddle.io.DataLoader`): The dataset loader which generates batches.
        criterion(obj:`paddle.nn.Layer`): It can compute the loss.
        metric(obj:`paddle.metric.Metric`): The evaluation metric.
    """
    model.eval()
    metric.reset()
    losses = []
    for batch in data_loader:
        input_ids, token_type_ids, labels = batch
        logits = model(input_ids, token_type_ids)
        loss = criterion(logits, labels)
        losses.append(loss.numpy())
        correct = metric.compute(logits, labels)
        metric.update(correct)
    res = metric.accumulate()
    print(
        "eval loss: %f, acc: %s, precision: %s, recall: %s, f1: %s, acc and f1: %s, "
        % (
            np.mean(losses),
            res[0],
            res[1],
            res[2],
            res[3],
            res[4],))
    model.train()
    metric.reset()
    return res[0], res[1], res[2], res[3], res[4]
Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐