compute_orthogonal_representation_ranks#

t3toolbox.backend.ranks.compute_orthogonal_representation_ranks(shape, tucker_ranks, tt_ranks, use_jax=False)#
def compute_orthogonal_representation_ranks(
        shape: typ.Sequence[int], # (N0, ..., N(d-1))
        tucker_ranks: typ.Union[
            typ.Sequence[int], # (n0,...,n(d-1))
            NDArray, # dtype=int, shape=(d,) + stack_shape
        ],
        tt_ranks: typ.Union[
            typ.Sequence[int], # (r0,...,rd)
            NDArray, # dtype=int, shape=(d+1,) + stack_shape
        ],
        use_jax: bool = False,
) -> typ.Tuple[
    typ.Union[
        typ.Tuple[int,...],  # (nU0,...,nU(d-1))
        NDArray,  # dtype=int, shape=(d,) + stack_shape
    ], # up_tucker_ranks
    typ.Union[
        typ.Tuple[int, ...],  # (nD0',...,nD(d-1)')
        NDArray,  # dtype=int, shape=(d,) + stack_shape
    ],  # down_tucker_ranks
    typ.Union[
        typ.Tuple[int,...],  # (rL0',...,rLd')
        NDArray,  # dtype=int, shape=(d+1,) + stack_shape
    ], # left_tt_ranks
    typ.Union[
        typ.Tuple[int, ...],  # (rR0',...,rRd')
        NDArray,  # dtype=int, shape=(d+1,) + stack_shape
    ],  # right_tt_ranks
]:

Find ranks that would be produced by sweeping orthogonalization, except without actually doing it.

Parameters:
  • shape (t3toolbox.backend.common.typ.Sequence[int])

  • tucker_ranks (t3toolbox.backend.common.typ.Union[t3toolbox.backend.common.typ.Sequence[int], NDArray])

  • tt_ranks (t3toolbox.backend.common.typ.Union[t3toolbox.backend.common.typ.Sequence[int], NDArray])

  • use_jax (bool)

Return type:

t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.typ.Union[t3toolbox.backend.common.typ.Tuple[int, Ellipsis], NDArray], t3toolbox.backend.common.typ.Union[t3toolbox.backend.common.typ.Tuple[int, Ellipsis], NDArray], t3toolbox.backend.common.typ.Union[t3toolbox.backend.common.typ.Tuple[int, Ellipsis], NDArray], t3toolbox.backend.common.typ.Union[t3toolbox.backend.common.typ.Tuple[int, Ellipsis], NDArray]]