cdopt


Namecdopt JSON
Version 0.5.5 PyPI version JSON
download
home_pagehttps://cdopt.github.io/
SummaryA Python package for optimization on closed Riemannian manifolds
upload_time2024-01-25 04:31:39
maintainer
docs_urlNone
authorNachuan Xiao, Xiaoyin Hu, Xin Liu, Kim-Chuan Toh
requires_python>=3.6
license
keywords optimization riemannian optimization
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Welcome to CDOpt

**A Python toolbox for optimization on closed Riemannian manifolds with support for automatic differentiation**



Riemannian optimization is a powerful framework to tackle nonlinear optimization problems with structural equality constraints. By transforming these Riemannian optimization problems into the minimization of constraint dissolving functions, CDOpt allows for elegant and direct implementation various unconstrained optimization approaches for Riemannian optimization problems. CDOpt also provides user-friendly frameworks for training manifold constrained neural networks by PyTorch and Flax.



The constraint dissolving approaches have the following advantages:

* **Direct optimization & high efficiency:** CDOpt is developed from the *[constraint dissolving approaches](https://arxiv.org/abs/2203.10319)*, which transforms Riemannian optimization problems to unconstrained ones. Therefore, we can utilize various highly efficient solvers for unconstrained optimization, and directly apply them to solve Riemannian optimization problems. Benefited from the rich expertise gained over the decades for unconstrained optimization, CDOpt is very efficient and naturally avoids the difficulties in developing specialized solvers for Riemannian optimization.
* **Plug-in neural layers:** CDOpt provides various plug-in neural layers for PyTorch and \Pkg{Flax} packages. With only minor changes in the original codes, users can easily build and train the neural network while constrain the weights over various manifolds.
* **High efficiency:** CDOpt has high compatibility with various numerical backends, including NumPy, SciPy, PyTorch, JAX, Flax, etc . Users can directly apply the advanced features of these packages to accelerate optimization, including the automatic differentiation, GPU/TPU supports, distributed optimization frameworks, just-in-time (JIT) compilation, etc.
* **Customized constraints:** The manifold classes in CDOpt can be constructed only from the expressions of constraints. Users can easily and directly describe Riemannian optimization problems in CDOpt without any geometrical materials of the Riemannian manifold (e.g., retractions and their inverse, vector-transports, etc.).



```{tableofcontents}
```

            

Raw data

            {
    "_id": null,
    "home_page": "https://cdopt.github.io/",
    "name": "cdopt",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": "",
    "keywords": "Optimization,Riemannian optimization",
    "author": "Nachuan Xiao, Xiaoyin Hu, Xin Liu, Kim-Chuan Toh",
    "author_email": "xnc@lsec.cc.ac.cn",
    "download_url": "https://files.pythonhosted.org/packages/d7/ac/430882763efc808494644cdffb2bfcac844a319cbd25cc5bd581d97c9de4/cdopt-0.5.5.tar.gz",
    "platform": null,
    "description": "# Welcome to CDOpt\n\n**A Python toolbox for optimization on closed Riemannian manifolds with support for automatic differentiation**\n\n\n\nRiemannian optimization is a powerful framework to tackle nonlinear optimization problems with structural equality constraints. By transforming these Riemannian optimization problems into the minimization of constraint dissolving functions, CDOpt allows for elegant and direct implementation various unconstrained optimization approaches for Riemannian optimization problems. CDOpt also provides user-friendly frameworks for training manifold constrained neural networks by PyTorch and Flax.\n\n\n\nThe constraint dissolving approaches have the following advantages:\n\n* **Direct optimization & high efficiency:** CDOpt is developed from the *[constraint dissolving approaches](https://arxiv.org/abs/2203.10319)*, which transforms Riemannian optimization problems to unconstrained ones. Therefore, we can utilize various highly efficient solvers for unconstrained optimization, and directly apply them to solve Riemannian optimization problems. Benefited from the rich expertise gained over the decades for unconstrained optimization, CDOpt is very efficient and naturally avoids the difficulties in developing specialized solvers for Riemannian optimization.\n* **Plug-in neural layers:** CDOpt provides various plug-in neural layers for PyTorch and \\Pkg{Flax} packages. With only minor changes in the original codes, users can easily build and train the neural network while constrain the weights over various manifolds.\n* **High efficiency:** CDOpt has high compatibility with various numerical backends, including NumPy, SciPy, PyTorch, JAX, Flax, etc . Users can directly apply the advanced features of these packages to accelerate optimization, including the automatic differentiation, GPU/TPU supports, distributed optimization frameworks, just-in-time (JIT) compilation, etc.\n* **Customized constraints:** The manifold classes in CDOpt can be constructed only from the expressions of constraints. Users can easily and directly describe Riemannian optimization problems in CDOpt without any geometrical materials of the Riemannian manifold (e.g., retractions and their inverse, vector-transports, etc.).\n\n\n\n```{tableofcontents}\n```\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "A Python package for optimization on closed Riemannian manifolds",
    "version": "0.5.5",
    "project_urls": {
        "Homepage": "https://cdopt.github.io/"
    },
    "split_keywords": [
        "optimization",
        "riemannian optimization"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "bd130d4a36f5a7f481899fb36c38583c380b7fe416246983a765afe124d7dc1b",
                "md5": "cd2c4968541c46b640e591632b81e9ec",
                "sha256": "6410ed04ce215c2d0463693a165ea5ac833210987ad3a92f604634f482e80061"
            },
            "downloads": -1,
            "filename": "cdopt-0.5.5-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "cd2c4968541c46b640e591632b81e9ec",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.6",
            "size": 140466,
            "upload_time": "2024-01-25T04:31:36",
            "upload_time_iso_8601": "2024-01-25T04:31:36.986617Z",
            "url": "https://files.pythonhosted.org/packages/bd/13/0d4a36f5a7f481899fb36c38583c380b7fe416246983a765afe124d7dc1b/cdopt-0.5.5-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d7ac430882763efc808494644cdffb2bfcac844a319cbd25cc5bd581d97c9de4",
                "md5": "83e2f6f058f463f44de0f4804c61c096",
                "sha256": "77fa646482405c16b300d96fee1e2d0e1851181e377c092ae00c2990c97e8e33"
            },
            "downloads": -1,
            "filename": "cdopt-0.5.5.tar.gz",
            "has_sig": false,
            "md5_digest": "83e2f6f058f463f44de0f4804c61c096",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 74729,
            "upload_time": "2024-01-25T04:31:39",
            "upload_time_iso_8601": "2024-01-25T04:31:39.774310Z",
            "url": "https://files.pythonhosted.org/packages/d7/ac/430882763efc808494644cdffb2bfcac844a319cbd25cc5bd581d97c9de4/cdopt-0.5.5.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-01-25 04:31:39",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "cdopt"
}
        
Elapsed time: 0.25610s