MatrixScaler#
- class torch_uncertainty.post_processing.MatrixScaler(num_classes, model=None, init_weight_temperature=1, init_bias_temperature=None, lr=0.1, max_iter=200, eps=1e-08, device=None)[source]#
Matrix scaling post-processing for calibrated probabilities.
- Parameters:
num_classes (int) – Number of classes.
model (nn.Module | None) – Model to calibrate. Defaults to
None.init_weight_temperature (float | Tensor , optional) – Initial value for the weights. Defaults to
1.init_bias_temperature (float | Tensor | None, optional) – Initial value for the bias. The inverse bias will be set to the
0vector if set toNone. Defaults toNone.lr (float, optional) – Learning rate for the optimizer. Defaults to
0.1.max_iter (int, optional) – Maximum number of iterations for the optimizer. Defaults to
100.eps (float) – Small value for stability. Defaults to
1e-8.device (Optional[Literal["cpu", "cuda"]], optional) – Device to use for optimization. Defaults to
None.
References
[1] On calibration of modern neural networks. In ICML 2017.
Warning
If the model is binary, we will by default apply the sigmoid before transposing the prediction to the 2-class case.
- fit(dataloader, save_logits=False, progress=True)#
Fit the temperature parameters to the calibration data.
- Parameters:
dataloader (DataLoader) – Dataloader with the logits and target of the calibration data.
save_logits (bool, optional) – Whether to save the logits and labels in memory. Defaults to
False.progress (bool, optional) – Whether to show a progress bar. Defaults to
True.
Warning
Please provide logits and not probabilities/likelihoods within the dataloader, otherwise the Scaler might converge to negative temperatures.