fast calculation of sparse gradients and Jacobian matrices in Python
Project description
sparsegrad automatically and efficiently calculates analytical sparse Jacobian of arbitrary numpy vector valued functions. It is designed to be useful for solving large systems of non-linear equations. sparsegrad is memory efficient because it does not use the graph of computation. Arbitrary computations are supported through indexing, matrix multiplication, branching, and custom functions.
Taking Jacobian with respect to variable x is done by replacing numerical value of x with sparsegrad seed
>>> import numpy as np
>>> import sparsegrad.forward as ad
>>> def f(x):
... return x-x[::-1]
>>> x=np.linspace(0,1,3)
>>> print(f(ad.seed(x)).dvalue)
(0, 0) 1.0
(0, 2) -1.0
(2, 0) -1.0
(2, 2) 1.0
sparsegrad is written in pure Python. For easy installation and best portability, it does not contain extension modules. In realistic problems, it can provide similar or better performance than ADOL-C best case of repeated calculation. This is possible thanks to algorithmic optimizations and optimizations to avoid slow parts of scipy.sparse.
sparsegrad relies on numpy and scipy for computations. It is compatible with both Python 2.7 and 3.x.
Installation
pip install sparsegrad
It is recommended to run test suite after installing
python -c "import sparsegrad; sparsegrad.test()"
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file sparsegrad-0.0.15.tar.gz
.
File metadata
- Download URL: sparsegrad-0.0.15.tar.gz
- Upload date:
- Size: 95.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.9.1 tqdm/4.28.1 CPython/3.7.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ab202f2bb8561b774b8d0a8b9142d65a07acff82f8bc2ed84d734621c4096ac4 |
|
MD5 | 077eb7e302d3000c9260119faafe7406 |
|
BLAKE2b-256 | fbe9e7f507dc7d6bd0c1f61742d695227853a48797e81dd7628af5bfbab578fd |