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') –micro 或 macro。
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)}\]
- 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会被忽略