All Projects → matthieumeo → pycsou

matthieumeo / pycsou

Licence: MIT license
Pycsou is a Python 3 package for solving linear inverse problems with state-of-the-art proximal algorithms. The software implements in a highly modular way the main building blocks -cost functionals, penalty terms and linear operators- of generic penalised convex optimisation problems.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to pycsou

cr-sparse
Functional models and algorithms for sparse signal processing
Stars: ✭ 38 (+2.7%)
Mutual labels:  convex-optimization, linear-operators
pydata-london-2018
Slides and notebooks for my tutorial at PyData London 2018
Stars: ✭ 22 (-40.54%)
Mutual labels:  convex-optimization
MMD-GAN
Improving MMD-GAN training with repulsive loss function
Stars: ✭ 82 (+121.62%)
Mutual labels:  loss-functions
GurobiLink
Wolfram Language interface to the Gurobi numerical optimization library
Stars: ✭ 16 (-56.76%)
Mutual labels:  convex-optimization
triplet-loss-pytorch
Highly efficient PyTorch version of the Semi-hard Triplet loss ⚡️
Stars: ✭ 79 (+113.51%)
Mutual labels:  loss-functions
SphereFace
🍑 TensorFlow Code for CVPR 2017 paper "SphereFace: Deep Hypersphere Embedding for Face Recognition"
Stars: ✭ 110 (+197.3%)
Mutual labels:  loss-functions
score sde pytorch
PyTorch implementation for Score-Based Generative Modeling through Stochastic Differential Equations (ICLR 2021, Oral)
Stars: ✭ 755 (+1940.54%)
Mutual labels:  inverse-problems
exadg
ExaDG - High-Order Discontinuous Galerkin for the Exa-Scale
Stars: ✭ 62 (+67.57%)
Mutual labels:  matrix-free
consistency
Implementation of models in our EMNLP 2019 paper: A Logic-Driven Framework for Consistency of Neural Models
Stars: ✭ 26 (-29.73%)
Mutual labels:  loss-functions
ChaosMagPy
ChaosMagPy is a simple python package for evaluating the CHAOS geomagnetic field model.
Stars: ✭ 14 (-62.16%)
Mutual labels:  inverse-problems
cocp
Source code for the examples accompanying the paper "Learning convex optimization control policies."
Stars: ✭ 61 (+64.86%)
Mutual labels:  convex-optimization
convex-optimization-class
APPM 5630 at CU Boulder
Stars: ✭ 30 (-18.92%)
Mutual labels:  convex-optimization
GeDML
Generalized Deep Metric Learning.
Stars: ✭ 30 (-18.92%)
Mutual labels:  loss-functions
MIRT.jl
MIRT: Michigan Image Reconstruction Toolbox (Julia version)
Stars: ✭ 80 (+116.22%)
Mutual labels:  inverse-problems
MIPT-Opt
A course on Optimization Methods
Stars: ✭ 128 (+245.95%)
Mutual labels:  convex-optimization
Addressing-Class-Imbalance-FL
This is the code for Addressing Class Imbalance in Federated Learning (AAAI-2021).
Stars: ✭ 62 (+67.57%)
Mutual labels:  loss-functions
benchopt
Making your benchmark of optimization algorithms simple and open
Stars: ✭ 89 (+140.54%)
Mutual labels:  convex-optimization
introduction-to-machine-learning
A document covering machine learning basics. 🤖📊
Stars: ✭ 17 (-54.05%)
Mutual labels:  loss-functions
info-retrieval
Information Retrieval in High Dimensional Data (class deliverables)
Stars: ✭ 33 (-10.81%)
Mutual labels:  convex-optimization
stylegan-encoder
StyleGAN Encoder - converts real images to latent space
Stars: ✭ 694 (+1775.68%)
Mutual labels:  loss-functions
https://matthieumeo.github.io/pycsou/html/_images/pycsou.png

Pycsou is a Python 3 package for solving linear inverse problems with state-of-the-art proximal algorithms. The software implements in a highly modular way the main building blocks -cost functionals, penalty terms and linear operators- of generic penalised convex optimisation problems.

Pycsou's documentation is available at https://matthieumeo.github.io/pycsou/html/index

This Python library is inspired by the MATLAB GlobalBioIm project. The LinearOperator interface is based on scipy.sparse and Pylops.

Functionalities

Pycsou makes it very easy to construct and solve penalised optimisation problems:

  1. It offers a rich collection of linear operators, loss functionals and penalty functionals commonly used in practice.
  2. It implements arithmetic operations for linear operators, loss functionals and penalty functionals, hence allowing to add, substract, scale, compose, exponentiate or stack those various objects with one another and hence quickly design custom complex optimisation problems.
  3. It implements a rich collection of state-of-the-art iterative proximal algorithms, including efficient primal-dual splitting methods which involve only gradient steps, proximal steps and simple linear evaluations.
  4. It supports matrix-free linear operators, making it easy to work with large scale linear operators that may not necessarily fit in memory. Matrix-free linear operators can be implemented from scratch by subclassing the asbtract class LinearOperator, or built from Scipy sparse matrices, distributed Dask arrays or Pylops matrix-free operators (which now support GPU computations).
  5. It implements automatic differentiation/proximation rules, allowing to automatically compute the derivative/proximal operators of functionals constructed from arithmetic operations on common functionals shipped with Pycsou.
  6. It leverages powerful rule-of-thumbs for setting automatically the hyper-parameters of the provided proximal algorithms.
  7. Pycsou is designed to easily interface with the packages scipy.sparse and Pylops. This allows to use the sparse linear algebra routines from scipy.sparse on Pycsou LinearOperator, and benefit from the large catalogue of linear operators and solvers from Pylops.

Installation

Pycsou requires Python 3.6 or greater.It is developed and tested on x86_64 systems running MacOS and Linux.

Dependencies

The package dependencies are listed in the files requirements.txt and requirements-conda.txt. It is recommended to install dependencies using Miniconda or Anaconda. This is not just a pure stylistic choice but comes with some hidden advantages, such as the linking to Intel MKL library (a highly optimized BLAS library created by Intel).

To do so we create an environment named pycsou (you can change that if you wish) and equip it with the necessary requirements:

>> conda create -n pycsou python=3.6
>> conda install -n pycsou --channel=conda-forge --file=requirements-conda.txt
>> conda activate pycsou

Quick Install

Pycsou is available on Pypi. You can hence install it very simply via the command:

>> pip install pycsou

If you have previously activated your conda environment pip will install Pycsou in said environment. Otherwise it will install it in your base environment together with the various dependencies obtained from the file requirements.txt.

Developper Install

It is also possible to install Pycsou from the source for developpers:

>> git clone https://github.com/matthieumeo/pycsou
>> cd <repository_dir>/
>> pip install -e .

The package documentation can be generated with:

>> conda install -n pycsou sphinx=='2.1.*'            \
                 sphinx_rtd_theme=='0.4.*'
>> conda activate pycsou
>> python3 setup.py build_sphinx

You can verify that the installation was successful by running the package doctests:

>> conda activate pycsou
>> python3 test.py

Cite

For citing this package, please see: http://doi.org/10.5281/zenodo.4486431

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].