Skip to main content

scipy Linear operators for curvature matrices in PyTorch

Project description

Logo Linear Operators for Curvature Matrices in PyTorch

Python 3.10+ tests Coveralls

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. curvlinops supports 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 curvlinops linear operator to a SciPy LinearOperator with .to_scipy(). This allows plugging it into scipy, while carrying out the heavy lifting (matrix-vector multiplies) in PyTorch on GPU. My favorite example is scipy.sparse.linalg.eigsh that lets you compute a subset of eigen-pairs (example).

  • Randomized estimation algorithms. curvlinops offers 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

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

Logo mage credits

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

curvlinops_for_pytorch-3.0.1.tar.gz (2.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

curvlinops_for_pytorch-3.0.1-py3-none-any.whl (89.6 kB view details)

Uploaded Python 3

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

Hashes for curvlinops_for_pytorch-3.0.1.tar.gz
Algorithm Hash digest
SHA256 916dd1f1a145d2fed062fcbbcc860561164bbe28b3e02174f8c7d78a006f54a7
MD5 732573ae6a795c928ad3bd9cf7e69b35
BLAKE2b-256 89bfd6af0f519f0918c3b8b3558a1987bc401a02fcfc2599a1b2b602f89c8b90

See more details on using hashes here.

File details

Details for the file curvlinops_for_pytorch-3.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for curvlinops_for_pytorch-3.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4b9adcc31fb65614bf3ba95afdf353a18fa14e150927721b9526a4f626d87d8e
MD5 87d419c16cef605a65f3eb68926b9c84
BLAKE2b-256 e46a53874c03fd9a5aa2aa2b73d9f67aaa17e3571f62bddc26565d8b6c89d2ce

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page