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 theinput.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 eithertorch.Tensor, a list oftorch.Tensor, a dictionary withtorch.Tensoras values, or a deque oftorch.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
deviceThe last input device of
Metric.to().