fv_absorb_weights#

t3toolbox.backend.fv_operations.fv_absorb_weights(variations, weights)#
def fv_absorb_weights(
        variations: typ.Tuple[typ.Sequence[NDArray], typ.Sequence[NDArray]],  # (tucker_variations V, tt_variations H)
        weights:    typ.Tuple[typ.Sequence[NDArray], typ.Sequence[NDArray],
                              typ.Sequence[NDArray], typ.Sequence[NDArray]],   # (up, down, left, right), each len=d
) -> typ.Tuple[
    typ.Tuple[NDArray, ...],  # weighted tucker_variations, elm_shape=stack+(nDi, Ni)
    typ.Tuple[NDArray, ...],  # weighted tt_variations,     elm_shape=stack+(rLi, nUi, rRi)
]:

Absorb the four-family metric weights into the VARIATION cores (the tangent metric on coordinates, Approach-1 / metric-on-variations): down -> V’s nD leg; up/left/right -> H’s nU/rL/rR legs. The frame is left orthonormal and untouched. corewise_stack_norm of the result is the weighted (Grasedyck-Kramer) tangent norm. All families are len=d (one per variation core); single leading '...' – the weights share the variations’ K+C stack.

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

  • weights (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]])

Return type:

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