t3toolbox.tucker_tensor_train.compute_minimal_t3_ranks#
- t3toolbox.tucker_tensor_train.compute_minimal_t3_ranks(shape: t3toolbox.backend.common.typ.Sequence[int], tucker_ranks: t3toolbox.backend.common.typ.Sequence[int], tt_ranks: t3toolbox.backend.common.typ.Sequence[int]) t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.typ.Tuple[int, Ellipsis], t3toolbox.backend.common.typ.Tuple[int, Ellipsis]]#
Find minimal ranks for a generic Tucker tensor train with a given structure.
- Minimal ranks satisfy:
Left TT backend unfoldings are full rank: r(i+1) <= (ri*ni)
Right TT backend unfoldings are full rank: ri <= (ni*r(i+1))
Outer TT backend unfoldings are full rank: ni <= (ri*r(i+1))
Basis matrices have full row rank: ni <= Ni
In this function, minimal ranks are defined with respect to a generic Tucker tensor train of the given form based on its structure. We do not account for possible additional rank deficiency due to the numerical values within the cores.
- Minimal ranks always exist and are unique.
Minimal TT ranks are equal to the ranks of (N*…*Ni) x (N(i+1)*…*N(d-1)) matrix unfoldings.
Minimal Tucker ranks are equal to the ranks of Ni x (N1*…*N(i-1)*N(i+1)*…*N(d-1)) matricizations.
Examples
>>> import t3toolbox.tucker_tensor_train as t3 >>> print(t3.compute_minimal_t3_ranks((10,11,12,13), (14,15,16,17), (98,99,100,101,102))) ((10, 11, 12, 13), (1, 10, 100, 13, 1))