fv_weighted_inner#

t3toolbox.backend.fv_operations.fv_weighted_inner(variations_A, variations_B, weights, n_stack)#
def fv_weighted_inner(
        variations_A: typ.Tuple[typ.Sequence[NDArray], typ.Sequence[NDArray]],  # (V, H) of A
        variations_B: typ.Tuple[typ.Sequence[NDArray], typ.Sequence[NDArray]],  # (V, H) of B
        weights:      typ.Tuple[typ.Sequence[NDArray], typ.Sequence[NDArray],
                                typ.Sequence[NDArray], typ.Sequence[NDArray]],   # one metric (up, down, left, right)
        n_stack:      int,                                                       # leading K+C stack axes kept
) -> NDArray:                                                                    # weighted inner, shape=stack

Weighted coordinate inner product <absorb(W,A), absorb(W,B)> w.r.t. one metric weights – the corewise stack-dot of the two weight-absorbed variations. The caller checks same-frame. Backend twin of T3Tangent.weighted_inner.

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

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

  • n_stack (int)

Return type:

NDArray