T3Frame.has_numerically_minimal_ranks#
- t3toolbox.frame_variations_format.T3Frame.has_numerically_minimal_ranks(atol=1e-09)#
def has_numerically_minimal_ranks(self, atol: float = 1e-9) -> NDArray: # bool array, shape = stack_shape
True (per stack element) if the frame is numerically minimal – certified without an SVD.
An orthonormal frame’s cores are full-rank, so an orthogonal + structurally-minimal frame is automatically numerically minimal (no
t3svd– and a frame is not a tensor to SVD anyway). So this returnsis_orthogonal(atol) and has_minimal_ranks. A non-orthogonal frame returnsFalse: the SVD certification path for non-orthogonal frames is intentionally not implemented (frames that need numerical minimality are expected to be orthonormal). Distinct from the structuralhas_minimal_ranks; for tensors seeTuckerTensorTrain.has_numerically_minimal_ranks()(the SVD version).Examples
>>> import numpy as np >>> import t3toolbox.tucker_tensor_train as t3 >>> import t3toolbox.frame_variations_format as bvf >>> np.random.seed(0) >>> frame, _ = bvf.t3_orthogonal_representations( ... t3.TuckerTensorTrain.randn((6, 7, 5), (2, 2, 2), (1, 2, 2, 1))) # orthogonal + minimal >>> print(frame.has_numerically_minimal_ranks()) True >>> nb, _ = bvf.t3_orthogonal_representations( ... t3.TuckerTensorTrain.randn((10, 11, 12), (4, 5, 4), (1, 2, 3, 1))) # orthogonal, NON-minimal >>> print(nb.is_orthogonal(), nb.has_minimal_ranks, nb.has_numerically_minimal_ranks()) True False False
- Parameters:
atol (float)
- Return type: