spd_learn.functional.check_spd_eigenvalues#
- spd_learn.functional.check_spd_eigenvalues(eigenvalues: Tensor, name: Literal['eigval_clamp', 'eigval_log', 'eigval_sqrt', 'eigval_inv_sqrt', 'eigval_power', 'loewner_equal', 'batchnorm_var', 'dropout', 'trace_norm', 'stiefel_init', 'division_safe'] = 'eigval_clamp', *, config: NumericalConfig | None = None, raise_on_failure: bool = False) tuple[source]#
Check if eigenvalues satisfy SPD requirements.
- Parameters:
eigenvalues (torch.Tensor) – The eigenvalues to check.
name (ThresholdName, default="eigval_clamp") – The threshold to use for the positivity check.
config (NumericalConfig, optional) – Configuration to use. If None, uses the global
numerical_config.raise_on_failure (bool, default=False) – If True, raise an error when eigenvalues fail the check.
- Returns:
A tuple of (is_valid, min_eigenvalue, num_below_threshold).
- Return type:
- Raises:
ValueError – If
raise_on_failure=Trueand eigenvalues are not valid.
Examples
>>> import torch >>> from spd_learn.functional.numerical import check_spd_eigenvalues >>> eigvals = torch.tensor([1e-10, 0.1, 1.0]) >>> is_valid, min_val, num_bad = check_spd_eigenvalues(eigvals) >>> print(f"Valid: {is_valid}, Min: {min_val:.2e}, Bad count: {num_bad}") Valid: False, Min: 1.00e-10, Bad count: 1