Shortcuts

torcheval.metrics.BinaryConfusionMatrix

class torcheval.metrics.BinaryConfusionMatrix(*, threshold: float = 0.5, normalize: str | None = None, device: device | None = None)

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

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: str | None = None, device: device | None = None) None

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, a dictionary with torch.Tensor as values, or a deque of torch.Tensor.

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