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 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: 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 eithertorch.Tensor
, a list oftorch.Tensor
, or a dictionary withtorch.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()
.- input (Tensor) – Tensor of label predictions with shape of (n_sample,).