spd_learn.functional.transport_riemann#

spd_learn.functional.transport_riemann(X, A, B)[source]#

Parallel transport for affine-invariant Riemannian metric.

The parallel transport of matrices \(\mathbf{X}\) in tangent space from an initial SPD/HPD matrix \(\mathbf{A}\) to a final SPD/HPD matrix \(\mathbf{B}\) according to the Levi-Civita connection along the geodesic under the affine-invariant Riemannian metric is given by Eq.(3.4) of [1]:

\[\mathbf{X}_\text{new} = \mathbf{E} \mathbf{X} \mathbf{E}^H\]

where \(\mathbf{E} = (\mathbf{B} \mathbf{A}^{-1})^{1/2}\).

Warning: this function must be applied to matrices \(\mathbf{X}\) already projected in tangent space with a logarithmic map at \(\mathbf{A}\), not to SPD/HPD matrices in manifold.

Parameters:
  • X (ndarray, shape (..., n, n)) – Symmetric/Hermitian matrices in tangent space at A.

  • A (ndarray, shape (n, n)) – Initial SPD/HPD matrix.

  • B (ndarray, shape (n, n)) – Final SPD/HPD matrix.

Returns:

X_new – Matrices in tangent space transported from A to B.

Return type:

ndarray, shape (…, n, n)

Notes

Changed in version 0.8: Change input arguments and calculation of the function.

Changed in version 0.10: Rename function and add to API.

Changed in version 0.12: Add support for NumPy and PyTorch.

See also

transport

References

[1]

Conic geometric optimisation on the manifold of positive definite matrices S. Sra and R. Hosseini. SIAM Journal on Optimization, 2015.