CDOpt: A Python Package for a Class of Riemannian Optimization

12/06/2022
by   Nachuan Xiao, et al.
0

Optimization over the embedded submanifold defined by constraints c(x) = 0 has attracted much interest over the past few decades due to its wide applications in various areas. Plenty of related optimization packages have been developed based on Riemannian optimization approaches, which rely on some basic geometrical materials of Riemannian manifolds, including retractions, vector transports, etc. These geometrical materials can be challenging to determine in general. Existing packages only accommodate a few well-known manifolds whose geometrical materials are easily accessible. For other manifolds which are not contained in these packages, the users have to develop the geometric materials by themselves. In addition, it is not always tractable to adopt advanced features from various state-of-the-art unconstrained optimization solvers to Riemannian optimization approaches. We introduce CDOpt (available at https://cdopt.github.io/), a user-friendly Python package for a class Riemannian optimization. Based on constraint dissolving approaches, Riemannian optimization problems are transformed into their equivalent unconstrained counterparts in CDOpt. Therefore, solving Riemannian optimization problems through CDOpt directly benefits from various existing solvers and the rich expertise gained over decades for unconstrained optimization. Moreover, all the computations in CDOpt related to any manifold in question are conducted on its constraints expression, hence users can easily define new manifolds in CDOpt without any background on differential geometry. Furthermore, CDOpt extends the neural layers from PyTorch and Flax, thus allows users to train manifold constrained neural networks directly by the solvers for unconstrained optimization. Extensive numerical experiments demonstrate that CDOpt is highly efficient and robust in solving various classes of Riemannian optimization problems.

READ FULL TEXT
research
06/16/2021

Manifolds.jl: An Extensible Julia Framework for Data Analysis on Manifolds

We present the Julia package Manifolds.jl, providing a fast and easy-to-...
research
03/10/2016

Pymanopt: A Python Toolbox for Optimization on Manifolds using Automatic Differentiation

Optimization on manifolds is a class of methods for optimization of an o...
research
10/10/2022

Rieoptax: Riemannian Optimization in JAX

We present Rieoptax, an open source Python library for Riemannian optimi...
research
05/06/2020

Geoopt: Riemannian Optimization in PyTorch

Geoopt is a research-oriented modular open-source package for Riemannian...
research
05/21/2018

geomstats: a Python Package for Riemannian Geometry in Machine Learning

We introduce geomstats, a python package that performs computations on m...
research
12/28/2018

Vilin: Unconstrained Numerical Optimization Application

We introduce an application for executing and testing different unconstr...
research
01/22/2019

Fast and Robust Shortest Paths on Manifolds Learned from Data

We propose a fast, simple and robust algorithm for computing shortest pa...

Please sign up or login with your details

Forgot password? Click here to reset