Shortcuts

ClassifyFPreRecMetric

class ClassifyFPreRecMetric(gather_result=False, tag_vocab=None, only_gross=True, f_type='micro', beta=1)[源代码]

计算分类结果 F值Metric

参数:
  • gather_result (bool, default: False) – 在计算 metric 的时候是否自动将各个进程上的输入进行聚合后再输入到 update 之中。

  • tag_vocab (default: None) – 标签的 vocabulary(Dict类型)。默认值为``None``。 若为 None 则使用数字来作为标签内容,否则使用 vocab 来作为标签内容。

  • only_gross (bool, default: True) – 是否只计算总的 f1, precision, recall 的值; 如果为 False,不仅返回总的 f1, pre, rec, 还会返回每个 label 的 f1, pre, rec

  • f_type (default: 'micro') –

    micromacro

    • micro : 通过先计算总体的 TP,FN 和 FP 的数量,再计算 f, precision, recall;

    • macro : 分布计算每个类别的 f, precision, recall,然后做平均(各类别 f 的权重相同)。

  • beta (default: 1) –

    f_beta 分数中的 beta 值。常用为 beta=0.5, 1, 2 若 为 0.5 则 精确率 的权重高于 召回率;若为1,则两者平等;若为2,则 召回率 权重高于 精确率f_beta 分数的计算公式为:

    \[f_{beta} = \frac{(1 + {beta}^{2})*(pre*rec)}{({beta}^{2}*pre + rec)}\]

reset()[源代码]

重置 tp, fp, fn 的值。

get_metric()[源代码]

get_metric() 函数将根据 update() 函数累计的评价指标统计量来计 算最终的评价结果。

返回类型:

Dict

返回:

包含以下内容的字典:{"f1": float, "pre": float, "rec": float}

update(result)[源代码]

update() 函数将针对一个批次的预测结果做评价指标的累计。

参数:

result (Dict) –

类型为 Dict 且 keys 至少包含[“pred”, “target”]

  • pred - 预测的 tensor, tensor 的形状可以是 torch.Size([B,])torch.Size([B, n_classes])torch.Size([B, max_len])torch.Size([B, max_len, n_classes])

  • target - 真实值的 tensor, tensor 的形状可以是 torch.Size([B,])torch.Size([B, max_len])torch.Size([B, max_len])

  • seq_len - 序列长度标记, 标记的形状可以是 None, 或者 torch.Size([B]) 。 如果 mask 也被传进来的话 seq_len 会被忽略