Shortcuts

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]