tv_project_t3_onto_tangent_space#

t3toolbox.backend.tv_operations.tv_project_t3_onto_tangent_space(frame, x, shared_data=None)#
def tv_project_t3_onto_tangent_space(
        frame:      typ.Tuple[
            typ.Sequence[NDArray],  # up_tucker_cores
            typ.Sequence[NDArray],  # down_tt_cores
            typ.Sequence[NDArray],  # left_tt_cores
            typ.Sequence[NDArray],  # right_tt_cores
        ],
        x:          typ.Tuple[
            typ.Sequence[NDArray],  # tucker_cores
            typ.Sequence[NDArray],  # tt_cores
        ],
        shared_data: typ.Optional['sharing_module.SharedFrameData'] = None,  # tied post-pass (SF-T3)
) -> typ.Tuple[
    typ.Tuple[NDArray, ...],  # gauged tucker_variations
    typ.Tuple[NDArray, ...],  # gauged tt_variations
]:

Orthogonal projection of a Tucker tensor train onto the tangent space at an orthogonal frame.

Returns gauged variations representing the orthogonal projection of x directly onto the tangent space (a linear subspace); it does not subtract the base point. The frame must be an orthogonal representation (minimal rank is not required). Stack-aware. Uniform twin: utv_project_ut3_onto_tangent_space().

Parameters:
  • frame (t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.typ.Sequence[NDArray], t3toolbox.backend.common.typ.Sequence[NDArray], t3toolbox.backend.common.typ.Sequence[NDArray], t3toolbox.backend.common.typ.Sequence[NDArray]])

  • x (t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.typ.Sequence[NDArray], t3toolbox.backend.common.typ.Sequence[NDArray]])

  • shared_data (t3toolbox.backend.common.typ.Optional[SharedFrameData])

Return type:

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