tt_left_orthogonalize#

t3toolbox.backend.tt_orthogonalization.tt_left_orthogonalize(tt_cores, return_variation_cores=False, pad_masks=None)#
def tt_left_orthogonalize(
        tt_cores: typ.Union[
            typ.Sequence[NDArray], # ragged. len=d, elm_shape=stack_shape+(ri,ni,r(i+1))
            NDArray, # uniform. shape=(d,)+stack_shape+(r,n,r)
        ],
        return_variation_cores: bool = False,

        pad_masks: typ.Optional[typ.Tuple[NDArray, NDArray, NDArray]] = None,
                   # uniform only. Per-step HOST masks (rows, cols, outs), each stacked (d-1,)+stack+(...),
                   # from ut3_orthogonalization._tt_left_sweep_pad_masks -> the sweep SVDs are pad-safe.
) -> typ.Union[
    typ.Tuple[NDArray,...], # left_tt_cores
    typ.Tuple[typ.Tuple[NDArray,...], typ.Tuple[NDArray,...]], # left_tt_cores, var_tt_cores
]:

Left-orthogonalize a Tensor train (no Tucker).

pad_masks (uniform only): run each step’s SVD through pad_safe_svd() with the given per-step masks, so sigma~0 completion columns stay off the padded slots (review S1b) and the output chain is bitwise-clean.

Parameters:
  • tt_cores (t3toolbox.backend.common.typ.Union[t3toolbox.backend.common.typ.Sequence[NDArray], NDArray])

  • return_variation_cores (bool)

  • pad_masks (t3toolbox.backend.common.typ.Optional[t3toolbox.backend.common.typ.Tuple[NDArray, NDArray, NDArray]])

Return type:

t3toolbox.backend.common.typ.Union[t3toolbox.backend.common.typ.Tuple[NDArray, …], t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.typ.Tuple[NDArray, …], t3toolbox.backend.common.typ.Tuple[NDArray, …]]]