UniformTuckerTensorTrain.t3svd#

t3toolbox.uniform_tucker_tensor_train.UniformTuckerTensorTrain.t3svd(max_tt_ranks=None, max_tucker_ranks=None, assume_orthogonal=False, sharing=None)#
def t3svd(self, max_tt_ranks=None, max_tucker_ranks=None, assume_orthogonal=False,
          sharing: typ.Sequence = None):

Mask-truncated T3-SVD – the basic algorithm, matching ragged TuckerTensorTrain.t3svd() on real parts. Always left-orthogonal; under truncation not necessarily minimal (use rank_adjustment_sweep() to minimize). assume_orthogonal=True skips the orthogonalization, asserting the input is already right-orthogonal (verify with is_right_orthogonal() – not checked). Uniform truncates by max rank only – unlike ragged t3svd there is no rtol/atol (a tolerance would make the output shape data-dependent, which the uniform layer forbids; see docs/uniform_ranks_and_varieties.md). Per-stack-element max_*_ranks arrays are allowed. Returns (new UT3, Tucker svals, TT svals).

sharing (one hashable group label per mode) is the grouped SF-T3 truncation, matching the ragged t3svd(sharing=) on real parts: one shared basis per group (one rank mask at every group mode), the group spectrum s_g reported at every group mode. The factors must already be tied within groups (safe mode checks; see has_shared_tucker_factors()).

Parameters:

sharing (Sequence)