Optimization Algorithm on Riemannian Manifolds.
For a function
Find the minimizer x on ℳ, i.e. the (or a) point where f attains its minimum.
Manopt.jl
provides
- A framework to implement arbitrary optimization algorithms on Riemannian Manifolds
- A library of optimization algorithms on Riemannian manifolds
- an easy-to-use interface for (debug) output and recording values during an algorithm run.
- several tools to investigate the algorithms, gradients, and optimality criteria
In Julia you can get started by just typing
using Pkg; Pkg.add("Manopt");
and then checkout the Get Started: Optimize! tutorial.
Manopt.jl is based on ManifoldsBase.jl
,
hence the algorithms can be used with any manifold defined e.g. within Manifolds.jl
.
Manopt.jl
belongs to the Manopt family:
- manopt.org – The Matlab version of Manopt, see also their GitHub repository
- pymanopt.org – The Python version of Manopt – providing also several AD backends, see also their GitHub repository
but there are also more packages providing tools on manifolds:
- Jax Geometry (Python/Jax) for differential geometry and stochastic dynamics with deep learning
- Geomstats (Python with several backends) focusing on statistics and machine learning GitHub repository
- Geoopt (Python & PyTorch) – Riemannian ADAM & SGD. GitHub repository
- McTorch (Python & PyToch) – Riemannian SGD, Adagrad, ASA & CG.
- ROPTLIB (C++) a Riemannian OPTimization LIBrary GitHub repository
- TF Riemopt (Python & TensorFlow) Riemannian optimization using TensorFlow
If you use Manopt.jl
in your work, please cite the following
@article{Bergmann2022,
Author = {Ronny Bergmann},
Doi = {10.21105/joss.03866},
Journal = {Journal of Open Source Software},
Number = {70},
Pages = {3866},
Publisher = {The Open Journal},
Title = {Manopt.jl: Optimization on Manifolds in {J}ulia},
Volume = {7},
Year = {2022},
}
To refer to a certain version or the source code in general we recommend to cite for example
@software{manoptjl-zenodo-mostrecent,
Author = {Ronny Bergmann},
Copyright = {MIT License},
Doi = {10.5281/zenodo.4290905},
Publisher = {Zenodo},
Title = {Manopt.jl},
Year = {2022},
}
for the most recent version or a corresponding version specific DOI, see the list of all versions. Note that both citations are in BibLaTeX format.