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
References
[1]Conic geometric optimisation on the manifold of positive definite matrices S. Sra and R. Hosseini. SIAM Journal on Optimization, 2015.