T3Frame.random_orthogonal#
- static t3toolbox.frame_variations_format.T3Frame.random_orthogonal(shape, tucker_ranks, tt_ranks, stack_shape=(), use_jax=False)#
def random_orthogonal( shape: typ.Sequence[int], # (N0,...,N(d-1)) tucker_ranks: typ.Sequence[int], # (n0,...,n(d-1)) tt_ranks: typ.Sequence[int], # (1,r1,...,r(d-1),1) stack_shape: typ.Tuple[int, ...] = (), # C (frame/core stack) use_jax: bool = False, ) -> 'T3Frame':
Orthogonal representation of a random T3 – a genuine random base point (orthogonal, consistent), not iid-random cores. Equals
from_t3(TuckerTensorTrain.randn(...)).Requesting a rank above what the rest of the network can support is allowed and does not raise: an orthonormal core cannot carry more rank than its own shape admits, so the excess is carried as slack between the frame’s four rank stores rather than in any one core. Asking for
tucker_ranks=(4,4,4)withtt_ranks=(1,2,2,1)returnsup_ranks=(4,4,4)butdown_ranks=(2,4,2); asking fortt_ranks=(1,9,9,1)returns differentleft_ranksandright_ranks. The frame is exactly orthogonal either way and every tangent operation on it is exact – onlyhas_minimal_ranksreportsFalse(a diagnostic, never a precondition; seedocs/frame_variations.md).- Parameters:
shape (t3toolbox.backend.common.typ.Sequence[int])
tucker_ranks (t3toolbox.backend.common.typ.Sequence[int])
tt_ranks (t3toolbox.backend.common.typ.Sequence[int])
stack_shape (t3toolbox.backend.common.typ.Tuple[int, ...])
use_jax (bool)
- Return type: