torcheval.metrics.functional.multilabel_accuracy¶
- torcheval.metrics.functional.multilabel_accuracy(input: Tensor, target: Tensor, *, threshold: float = 0.5, criteria: str = 'exact_match') Tensor¶
计算多标签准确率分数,这是输入与目标匹配的频率。 其类版本是
torcheval.metrics.MultilabelAccuracy。- Parameters:
input (Tensor) – 形状为 (n_sample, n_class) 的标签预测张量。 torch.where(input < threshold, 0, 1)` 将应用于
input。target (Tensor) – 形状为 (n_sample, n_class) 的真实标签张量。
threshold – 用于将输入转换为每个样本的预测标签的阈值。
criteria –
[default] (- 'exact_match') – 样本预测的标签集必须与目标中的相应标签集完全匹配。也称为子集准确性。
'hamming' (-) – 正确标签占总标签数的比例。
'overlap' (-) – 为样本预测的标签集必须与目标中的相应标签集重叠。
'contain' (-) – 样本预测的标签集必须包含目标中的相应标签集。
'belong' (-) – 为样本预测的标签集必须(完全)属于目标中相应的标签集。
示例:
>>> import torch >>> from torcheval.metrics.functional import multilabel_accuracy >>> input = torch.tensor([[0, 1], [1, 1], [0, 0], [0, 1]]) >>> target = torch.tensor([[0, 1], [1, 0], [0, 0], [1, 1]]) >>> multilabel_accuracy(input, target) tensor(0.5) # 2 / 4 >>> input = torch.tensor([[0, 1], [1, 1], [0, 0], [0, 1]]) >>> target = torch.tensor([[0, 1], [1, 0], [0, 0], [1, 1]]) >>> multilabel_accuracy(input, target, criteria="hamming") tensor(0.75) # 6 / 8 >>> input = torch.tensor([[0, 1], [1, 1], [0, 0], [0, 1]]) >>> target = torch.tensor([[0, 1], [1, 0], [0, 0], [1, 1]]) >>> multilabel_accuracy(input, target, criteria="overlap") tensor(1) # 4 / 4 >>> input = torch.tensor([[0, 1], [1, 1], [0, 0], [0, 1]]) >>> target = torch.tensor([[0, 1], [1, 0], [0, 0], [1, 1]]) >>> multilabel_accuracy(input, target, criteria="contain") tensor(0.75) # 3 / 4, input[0],input[1],input[2] >>> input = torch.tensor([[0, 1], [1, 1], [0, 0], [0, 1]]) >>> target = torch.tensor([[0, 1], [1, 0], [0, 0], [1, 1]]) >>> multilabel_accuracy(input, target, criteria="belong") tensor(0.75) # 3 / 4, input[0],input[1],input[3]