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
MulticlassConfusionMatrixParameters: - 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.Tensoras 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
deviceThe last input device of Metric.to().- input (Tensor) – Tensor of label predictions with shape of (n_sample,).