Git Product home page Git Product logo

rieoptax's Introduction

Rieoptax

Project is in Beta stage with active development and API is subject to change.

CI status

Introduction

Rieoptax is library for Riemannian Optimization in JAX. The proposed library is mainly driven by the needs of efficient implementation of manifold-valued operations, optimization solvers and neural network layers readily compatible with GPU and even TPU processors.

Blitz Intro to Riemannian Optimization

Riemannian optimization considers the following problem

$$\min_{w \in \mathcal{M}} f(w)$$ where $f : \mathcal{M} \rightarrow \mathbb{R}$, and $\mathcal{M}$ denotes a Riemannian manifold. Instead of considering as a constrained problem, Riemannian optimization views it as an unconstrained problem on the manifold space. Riemannian (stochastic) gradient descent generalizes the Euclidean gradient descent with intrinsic updates on manifold, i.e., $w_{t+1} = {\rm Exp}_{w_t}(- \eta_t {\rm grad} f(w_t))$, where ${\rm grad} f(w_t)$ is the Riemannian (stochastic) gradient, ${\rm Exp}_w(\cdot)$ is the Riemannian exponential map at $w$ and $\eta_t$ is the step size.

Quick start

Two main differences between Euclidean Optimization and Riemannian Optimization is Riemannian Gradient $\text{grad} f(w)$ and Riemannian Exponential map $\text{Exp}$. Main design goal of Rieoptax is to handle above two things behind scenes and make it similar to standard optimization in Optax

image

For a complete example, see notebooks folder

Overview

It consists of three module

  1. geometry : Implements several Riemannian manifolds of interest along with useful operations like Riemanian Exponential, Logarithmic and Euclidean gradient to Riemannian gradeint conversion rules

  2. mechanism : Noise calibration for differentially private mechanism with manifold valued outputs

  3. optimizers : Riemannian Optimization algorithms

Installation

Currently installaion is done directly through github and it will soon be available through PyPI.

pip install git+https://github.com/SaitejaUtpala/rieoptax.git

Citing Rieoptax

Preprint availabe at https://arxiv.org/pdf/2210.04840.pdf

rieoptax's People

Contributors

andyjm3 avatar saitejautpala avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

rieoptax's Issues

jax versions

I cannot run Poincare embeddings notebook because of jax version conflicts. What versions did you use to run rieoptax?

Stiefel manifold optimization

Thanks for making this awesome library!

We are interested in optimization over the Stiefel manifold (simple gradient descent). Is this supported? If not, what is the minimal set of methods that have to implemented?

combining rieoptax and optax

hello is it possible to combine rieoptaxx and optax - so apply rieoptax only to some parameters and optax to other?

No module named 'rieoptax.core'

I am just getting started with rieoptax. I followed the install instructions, and the package is installed in my computer. But when I want to follow any of the tutorials where rieoptax.core is imported, I get the error ModuleNotFoundError: No module named 'rieoptax.core'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.