torcheval.metrics.functional.topk_multilabel_accuracy¶
- torcheval.metrics.functional.topk_multilabel_accuracy(input: Tensor, target: Tensor, *, criteria: str = 'exact_match', k: int = 2) Tensor¶
计算多标签准确率分数,即预测的前k个标签与目标匹配的频率。 其类版本为
torcheval.metrics.TopKMultilabelAccuracy。- Parameters:
input (Tensor) – 具有形状 (n_sample, n_class) 的 logits/概率张量。
target (Tensor) – 形状为 (n_sample, n_class) 的真实标签张量。
criteria –
[default] (- 'exact_match') – 为样本预测的前k个标签集必须与目标中的相应标签集完全匹配。也称为子集准确性。
'hamming' (-) – 前k个正确标签占总标签数的比例。
'overlap' (-) – 为样本预测的前k个标签集必须与目标中的相应标签集重叠。
'contain' (-) – 为样本预测的前k个标签集必须包含目标中的相应标签集。
'belong' (-) – 为样本预测的前k个标签集必须(完全)属于目标中的相应标签集。
k – 要考虑的顶部概率的数量。K 应该是一个大于或等于 1 的整数。
示例:
>>> import torch >>> from torcheval.metrics.functional import topkmultilabel_accuracy >>> input = torch.tensor([[0.1, 0.5, 0.2], [0.3, 0.2, 0.1], [0.2, 0.4, 0.5], [0, 0.1, 0.9]]) >>> target = torch.tensor([[1, 1, 0], [0, 1, 0], [1, 1, 1], [0, 1, 0]]) >>> topkmultilabel_accuracy(input, target, k = 2) tensor(0) # 0 / 4 >>> input = torch.tensor([[0.1, 0.5, 0.2], [0.3, 0.2, 0.1], [0.2, 0.4, 0.5], [0, 0.1, 0.9]]) >>> target = torch.tensor([[1, 1, 0], [0, 1, 0], [1, 1, 1], [0, 1, 0]]) >>> topkmultilabel_accuracy(input, target, criteria="hamming", k = 2) tensor(0.583) # 7 / 12 >>> input = torch.tensor([[0.1, 0.5, 0.2], [0.3, 0.2, 0.1], [0.2, 0.4, 0.5], [0, 0.1, 0.9]]) >>> target = torch.tensor([[1, 1, 0], [0, 1, 0], [1, 1, 1], [0, 1, 0]]) >>> topkmultilabel_accuracy(input, target, criteria="overlap", k = 2) tensor(1) # 4 / 4 >>> input = torch.tensor([[0.1, 0.5, 0.2], [0.3, 0.2, 0.1], [0.2, 0.4, 0.5], [0, 0.1, 0.9]]) >>> target = torch.tensor([[1, 1, 0], [0, 1, 0], [1, 1, 1], [0, 1, 0]]) >>> topkmultilabel_accuracy(input, target, criteria="contain", k = 2) tensor(0.5) # 2 / 4 >>> input = torch.tensor([[0.1, 0.5, 0.2], [0.3, 0.2, 0.1], [0.2, 0.4, 0.5], [0, 0.1, 0.9]]) >>> target = torch.tensor([[1, 1, 0], [0, 1, 0], [1, 1, 1], [0, 1, 0]]) >>> topkmultilabel_accuracy(input, target, criteria="belong", k = 2) tensor(0.25) # 1 / 4