Shortcuts

torcheval.metrics.BinaryConfusionMatrix

class torcheval.metrics.BinaryConfusionMatrix(*, threshold: float = 0.5, normalize: Optional[str] = None, device: Optional[device] = None)[source]

Compute binary confusion matrix, a 2 by 2 tensor with counts ( (true positive, false negative) , (false positive, true negative) ) See also MulticlassConfusionMatrix

Parameters:
  • input (Tensor) – Tensor of label predictions with shape of (n_sample,). torch.where(input < threshold, 0, 1) will be applied to the input.
  • target (Tensor) – Tensor of ground truth labels with shape of (n_sample,).
  • threshold (float, default 0.5) – Threshold for converting input into predicted labels for each sample. torch.where(input < threshold, 0, 1) will be applied to the input.
  • normalize (str) –
    • None [default]:
      Give raw counts (‘none’ also defaults to this)
    • 'pred':
      Normalize across the prediction class, i.e. such that the rows add to one.
    • 'true':
      Normalize across the condition positive, i.e. such that the columns add to one.
    • 'all'
      Normalize across all examples, i.e. such that all matrix entries add to one.
  • device (torch.device) – Device for internal tensors

Examples:

>>> import torch
>>> from torcheval.metrics import BinaryConfusionMatrix
>>> input = torch.tensor([0, 1, 0.7, 0.6])
>>> target = torch.tensor([0, 1, 1, 0])
>>> metric = BinaryConfusionMatrix()
>>> metric.update(input, target)
>>> metric.compute()
tensor([[1, 1],
        [0, 2]])

>>> input = torch.tensor([0, 1, 0.7, 0.6])
>>> target = torch.tensor([0, 1, 1, 0])
>>> metric = BinaryConfusionMatrix(threshold=1)
>>> metric.update(input, target)
>>> metric.compute()
tensor([[0, 1],
        [2, 1]])

>>> input = torch.tensor([1, 1, 0, 0])
>>> target = torch.tensor([0, 1, 1, 1])
>>> metric = BinaryConfusionMatrix()
>>> metric.update(input, target)
>>> metric.compute()
tensor([[0., 1.],
        [2., 1.]])
>>> metric.normalized("pred")
tensor([[0.0000, 0.5000],
        [1.0000, 0.5000]])
>>> metric.normalized("true")
tensor([[0.0000, 1.0000],
        [0.6667, 0.3333]])
>>> metric.normalized("all")
tensor([[0.0000, 0.5000],
        [1.0000, 0.5000]])

>>> input = torch.tensor([1, 1, 0, 0])
>>> target = torch.tensor([0, 1, 1, 1])
>>> metric = BinaryConfusionMatrix(normalize="true")
>>> metric.update(input, target)
>>> metric.compute()
tensor([[0.0000, 1.0000],
        [0.6667, 0.3333]])
>>> metric.normalized(None)
tensor([[0., 1.],
        [2., 1.]])
__init__(*, threshold: float = 0.5, normalize: Optional[str] = None, device: Optional[device] = None) None[source]

Initialize a metric object and its internal states.

Use self._add_state() to initialize state variables of your metric class. The state variables should be either torch.Tensor, a list of torch.Tensor, or a dictionary with torch.Tensor as values

Methods

__init__(*[, threshold, normalize, device]) Initialize a metric object and its internal states.
compute() Return the confusion matrix.
load_state_dict(state_dict[, strict]) Loads metric state variables from state_dict.
merge_state(metrics) Implement this method to update the current metric's state variables to be the merged states of the current metric and input metrics.
normalized([normalize]) Return the normalized confusion matrix
reset() Reset the metric state variables to their default value.
state_dict() Save metric state variables in state_dict.
to(device, *args, **kwargs) Move tensors in metric state variables to device.
update(input, target) Update the confusion matrix :param input: Tensor of label predictions with shape of (n_sample,). torch.where(input < threshold, 0, 1) will be applied to the input. :type input: Tensor :param target: Tensor of ground truth labels with shape of (n_sample,). :type target: Tensor.

Attributes

device The last input device of Metric.to().

Docs

Access comprehensive developer documentation for PyTorch

View Docs

Tutorials

Get in-depth tutorials for beginners and advanced developers

View Tutorials

Resources

Find development resources and get your questions answered

View Resources