t3toolbox.tucker_tensor_train.compute_minimal_t3_ranks ====================================================== .. py:function:: 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. .. rubric:: 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))