A Python toolbox for optimization on Riemannian manifolds with support for automatic differentiation

Riemannian optimization is a powerful framework to tackle smooth nonlinear optimization problems with structural constraints. By encoding structural properties of a problem in the manifold geometry, Riemannian optimization allows for elegant and convenient enforcement of properties such as orthonormality, low-rankness or positivity of solutions which is typically difficult to achieve via classical methods.

Pymanopt and its companion projects Manopt (MATLAB) and Manopt.jl (Julia) offer a wide variety of manifolds, optimization algorithms and tools to efficiently solve nonlinear problems involving manifold constraints.