mindformers.core.PromptAccMetric
- class mindformers.core.PromptAccMetric[源代码]
计算每个实体的提示准确率(prompt acc)。提示准确率是基于构建提示的文本分类准确度。准确的索引是具有最小困惑度的提示索引。
为该评估指标构建提示的方式如下:
这是关于**体育**的文章:$passage 这是关于**文化**的文章:$passage
计算基于提示生成的每个上下文的困惑度。困惑度是衡量概率分布或模型预测样本能力的指标。较低的困惑度表示模型能够很好地预测样本。公式如下:
\[PP(W) = P(w_{1}w_{2}...w_{N})^{-\frac{1}{N}} = \sqrt[N]{\frac{1}{P(w_{1}w_{2}...w_{N})}}\]其中, \(w\) 代表语料库中的词。
通过选择困惑度最小的提示索引来计算分类结果。
计算正确分类的数量和样本总数,并计算准确率,公式如下:
\[\text{accuracy} = \frac{\text{correct_sample_nums}}{\text{total_sample_nums}}\]
样例:
>>> import numpy as np >>> from mindspore import Tensor >>> from mindformers.core.metric.metric import PromptAccMetric >>> logtis = Tensor(np.array([[[[0.2, 0.5], [0.3, 0.1], [0.9, 0.6]]]])) >>> input_ids = Tensor(np.array([[15, 16, 17]])) >>> labels = Tensor(np.array([[1, 0, 1]])) >>> mask = Tensor(np.array([[1, 1, 1]])) >>> metric = PromptAccMetric() >>> metric.clear() >>> metric.update(logtis, input_ids, mask, labels) >>> result = metric.eval() >>> print(result) Current data num is 1, total acc num is 1.0, ACC is 1.000 Acc: 1.000, total_acc_num: 1.0, total_num: 1 {'Acc': 1.0}