Manifolds.jl: An Extensible Julia Framework for Data Analysis on Manifolds
arXiv:2106.08777 · doi:10.1145/3618296
Abstract
We present the Julia package Manifoldsjl, providing a fast and easy-to-use library of Riemannian manifolds and Lie groups. This package enables working with data defined on a Riemannian manifold, such as the circle, the sphere, symmetric positive definite matrices, or one of the models for hyperbolic spaces. We introduce a common interface, available in ManifoldsBasejl, with which new manifolds, applications, and algorithms can be implemented. We demonstrate the utility of Manifoldsjl using Bézier splines, an optimization task on manifolds, and principal component analysis on nonlinear data. In a benchmark, Manifoldsjl outperforms all comparable packages for low-dimensional manifolds in speed; over Python and Matlab packages, the improvement is often several orders of magnitude, while over C/C++ packages, the improvement is two-fold. For high-dimensional manifolds, it outperforms all packages except for Tensorflow-Riemopt, which is specifically tailored for high-dimensional manifolds.
References in corpus (10)
- Manopt, a Matlab toolbox for optimization on manifolds
- Non-Euclidean statistics for covariance matrices, with applications to diffusion tensor imaging
- Pymanopt: A Python Toolbox for Optimization on Manifolds using Automatic Differentiation
- Geomstats: A Python Package for Riemannian Geometry in Machine Learning
- A Second Order Non-Smooth Variational Model for Restoring Manifold-Valued Images
- Geoopt: Riemannian Optimization in PyTorch
- A Parallel Douglas Rachford Algorithm for Minimizing ROF-like Functionals on Images with Values in Symmetric Hadamard Manifolds
- Priors with Coupled First and Second Order Differences for Manifold-Valued Image Processing
- McTorch, a manifold optimization library for deep learning
- A variational model for data fitting on manifolds by minimizing the acceleration of a Bézier curve