ut3_unstack#

t3toolbox.backend.ut3_operations.ut3_unstack(x)#
def ut3_unstack(
        x: typ.Tuple[
            NDArray,                          # tucker_supercore
            NDArray,                          # tt_supercore
            typ.Tuple[int, ...],              # shape
            typ.Tuple[NDArray, NDArray],      # (tucker_edge_mask, tt_edge_mask)
        ],
):  # -> nested tuple (shaped like stack_shape) of unstacked uniform-T3 .data leaves

Unstack a uniform Tucker tensor train into an array-like tree of unstacked ones.

The stack lives at axes 1 .. len(stack_shape) (axis 0 is the mode index d). The supercores and the rank masks unstack along it; shape is shared and replicated onto every leaf (the ndarray-only (tk, tt, tkm, ttm) go through the tree machinery; shape is woven in after).

Parameters:

x (t3toolbox.backend.common.typ.Tuple[NDArray, NDArray, t3toolbox.backend.common.typ.Tuple[int, Ellipsis], t3toolbox.backend.common.typ.Tuple[NDArray, NDArray]])