scipy Linear operators for curvature matrices in PyTorch
Project description
Linear Operators for Curvature Matrices in PyTorch
This library provides linear operators---a unified interface for matrix-free computation---for deep learning curvature matrices in PyTorch.
curvlinops is inspired by SciPy's sparse.linalg.LinearOperator interface and implements a PyTorch version.
You can read our position paper to know more about why combining linear operators with curvature matrices might be a good idea.
Main features:
-
Broad support of curvature matrices.
curvlinopssupports many common curvature matrices and approximations thereof, such as the Hessian, Fisher, generalized Gauss-Newton, and K-FAC (overview, visual tour). -
Unified interface. All linear operators share the same interface, making it easy to switch between curvature matrices.
-
Purely PyTorch. All computations can run on a GPU.
-
SciPy export. You can export a
curvlinopslinear operator to a SciPyLinearOperatorwith.to_scipy(). This allows plugging it intoscipy, while carrying out the heavy lifting (matrix-vector multiplies) in PyTorch on GPU. My favorite example isscipy.sparse.linalg.eigshthat lets you compute a subset of eigen-pairs (example). -
Randomized estimation algorithms.
curvlinopsoffers functionality to estimate properties the matrix represented by a linear operators, like its spectral density (example), inverse (example), trace & diagonal (example).
Installation
pip install curvlinops-for-pytorch
Useful Links
-
Documentation: https://curvlinops.readthedocs.io/en/latest/
-
Bug reports & feature requests: https://github.com/f-dangel/curvlinops/issues
Citation
If you find curvlinops useful for your work, consider citing our position paper
@article{dangel2025position,
title = {Position: Curvature Matrices Should Be Democratized via Linear
Operators},
author = {Dangel, Felix and Eschenhagen, Runa and Ormaniec, Weronika and
Fernandez, Andres and Tatzel, Lukas and Kristiadi, Agustinus},
journal = {arXiv 2501.19183},
year = 2025,
}
Future ideas
-
Refactor the back-end for curvature-matrix multiplication into pure functions to improve recycle-ability and ease the use of
torch.compile. -
Multi-GPU support.
-
Include more curvature matrices
- E.g. the GGN's hierarchical decomposition
Logo mage credits
- PyTorch logo: https://github.com/soumith, CC BY-SA 4.0, via Wikimedia Commons
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file curvlinops_for_pytorch-3.0.1.tar.gz.
File metadata
- Download URL: curvlinops_for_pytorch-3.0.1.tar.gz
- Upload date:
- Size: 2.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
916dd1f1a145d2fed062fcbbcc860561164bbe28b3e02174f8c7d78a006f54a7
|
|
| MD5 |
732573ae6a795c928ad3bd9cf7e69b35
|
|
| BLAKE2b-256 |
89bfd6af0f519f0918c3b8b3558a1987bc401a02fcfc2599a1b2b602f89c8b90
|
File details
Details for the file curvlinops_for_pytorch-3.0.1-py3-none-any.whl.
File metadata
- Download URL: curvlinops_for_pytorch-3.0.1-py3-none-any.whl
- Upload date:
- Size: 89.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4b9adcc31fb65614bf3ba95afdf353a18fa14e150927721b9526a4f626d87d8e
|
|
| MD5 |
87d419c16cef605a65f3eb68926b9c84
|
|
| BLAKE2b-256 |
e46a53874c03fd9a5aa2aa2b73d9f67aaa17e3571f62bddc26565d8b6c89d2ce
|