fv_share_tucker_variations_corewise#

t3toolbox.backend.sharing.fv_share_tucker_variations_corewise(variations_data, groups)#
def fv_share_tucker_variations_corewise(
        variations_data: typ.Tuple[
            typ.Sequence[NDArray],  # tucker_variations. len=d, elm_shape=(K+C)+(ni, Ni)
            typ.Sequence[NDArray],  # tt_variations.     len=d, elm_shape=(K+C)+(rLi, ni, rRi)
        ],
        groups:         typ.Tuple[typ.Tuple[int, ...], ...],  # static; canonical (validate_sharing)
) -> typ.Tuple[
    typ.Tuple[NDArray, ...],  # tucker_variations; ONE mean array per group
    typ.Tuple[NDArray, ...],  # tt_variations, untouched
]:

The tied post-pass of the shared COREWISE geometry: orthogonally project raw core perturbations onto the tied subspace {dU_i all equal within each group}.

On the corewise geometry the coordinates are raw factor copies and the metric is Euclidean on the core entries, so the projection is the per-group arithmetic mean, assigned as ONE array per group (the additive corewise retraction then preserves tying exactly). Computed in the drift form (ref + mean of differences) so an exactly-tied group is a bitwise fixed point. TT variations untouched. This is NOT the manifold geometry’s post-pass – the two geometries tie by orthogonal projection in their OWN metrics on their OWN coordinates, and the formulas differ (see fv_share_tucker_variations()).

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

  • groups (t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.typ.Tuple[int, ...], ...])

Return type:

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