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.Tensor
as 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
device
The last input device of
Metric.to()
.