ut3_weighted_inner#

t3toolbox.backend.ut3_linalg.ut3_weighted_inner(x_A, weights_A, x_B, weights_B, use_orthogonalization=True)#
def ut3_weighted_inner(
        x_A:       UT3Data,                        # (tucker_supercore, tt_supercore, shape, masks) of A
        weights_A: ut3_operations.UT3WeightsData,  # weights of A
        x_B:       UT3Data,                        # (tucker_supercore, tt_supercore, shape, masks) of B
        weights_B: ut3_operations.UT3WeightsData,  # weights of B
        use_orthogonalization: bool = True,        # for numerical stability
) -> NDArray:                                      # weighted HS inner, shape=stack_shape

Weighted Hilbert-Schmidt inner product <absorb(A, weights_A), absorb(B, weights_B)> of two weighted uniform Tucker tensor trains. Uniform twin of t3_weighted_inner.

A and B must share physical shape (the same ambient space); their ranks, masks and weights may differ from each other. Each operand’s weights must match its own object’s masks (ut3_weights_consistent()); the frontend enforces it.

Parameters:
  • x_A (UT3Data)

  • weights_A (t3toolbox.backend.ut3_operations.UT3WeightsData)

  • x_B (UT3Data)

  • weights_B (t3toolbox.backend.ut3_operations.UT3WeightsData)

  • use_orthogonalization (bool)

Return type:

NDArray