Hi, everyone,
I would like to classify different points on manifold, for example, a manifold of symmetric positive definite matrices. Because I want to use machine learning methods in Euclid space, so the points on manifold need to be projected to the tangent space. I think there are two approaches to solve this problem:
1. Project a set of symmetric positive definite matrices (all the matrices) in one tangent space according to the given reference point (for example, the mean of matrices is a good candidate for reference point )
2. By using Parallel translation, move all tangent vector in different tangent space to a common tangent space.
When the data distribute on manifold in a small scale, the first approach is appropriate since the manifold is isomorphism to a Euclid space locally. However, when the data are “too far apart”, this definition is not satisfactory. So I think the second approach is more accurate. Parallel transport provides a way to compare a vector in one tangent plane to a vector in another, by moving the vector along a curve without changing it.
My question is how to carry out the Parallel transport in Manopt. I have found a function in sympositivedefinitefactory() as:
function
zeta = parallel_transport(X, Y, eta)
E
= sqrtm((Y/X));
zeta
= E*eta*E';
end
But I did not understand how to use it, for example, I would like to move a tangent vector eta in a tangent space rooted X (a point on manifold) to the tangent space rooted by Y. In particular, what is eta when I want to move the eta correspond to X, namely, move the tangent vector of X. Is eta a zero vector in this case? If eta is a zero vector, the return value of the function parallel_transport is always zero matrix. So I'm puzzled about this situation.
Any help about my question?
Thanks in advance.
Best regards
Jiancheng