autograd_lib
By Yaroslav Bulatov, Kazuki Osawa
Library to simplify gradient computations in PyTorch.
example 1: per-example gradient norms
Example of using it to compute per-example gradient norms for linear layers, using trick from https://arxiv.org/abs/1510.01799
See example_norms.py for a runnable example. The important parts:
!pip install autograd-lib
from autograd_lib import autograd_lib
loss_fn = ...
data = ...
model = ...
autograd_lib.register(model)
activations = {}
def save_activations(layer, A, _):
activations[layer] = A
with autograd_lib.module_hook(save_activations):
output = model(data)
loss = loss_fn(output)
norms = [torch.zeros(n)]
def per_example_norms(layer, _, B):
A = activations[layer]
norms[0]+=(A*A).sum(dim=1)*(B*B).sum(dim=1)
with autograd_lib.module_hook(per_example_norms):
loss.backward()
print('per-example gradient norms squared:', norms[0])
Example 2: Hessian quantities
To compute exact Hessian, Hessian diagonal and KFAC approximation for all linear layers of a ReLU network in a single pass.
See example_hessian.py for a self-contained example. The important parts:
!pip install autograd-lib
autograd_lib.register(model)
hess = defaultdict(float)
hess_diag = defaultdict(float)
hess_kfac = defaultdict(lambda: AttrDefault(float))
activations = {}
def save_activations(layer, A, _):
activations[layer] = A
# KFAC left factor
hess_kfac[layer].AA += torch.einsum("ni,nj->ij", A, A)
with autograd_lib.module_hook(save_activations):
output = model(data)
loss = loss_fn(output, targets)
def compute_hess(layer, _, B):
A = activations[layer]
BA = torch.einsum("nl,ni->nli", B, A)
# full Hessian
hess[layer] += torch.einsum('nli,nkj->likj', BA, BA)
# Hessian diagonal
hess_diag[layer] += torch.einsum("ni,nj->ij", B * B, A * A)
# KFAC right factor
hess_kfac[layer].BB += torch.einsum("ni,nj->ij", B, B)
with autograd_lib.module_hook(compute_hess):
autograd_lib.backward_hessian(output, loss='CrossEntropy')
Variations:
autograd_lib.backward_hessianfor Hessianautograd_lib.backward_jacobianfor Jacobian squaredloss.backward()for empirical Fisher Information Matrix
See autograd_lib_test.py for correctness checks against PyTorch autograd.
Metadata
Release files for autograd-lib 0.0.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| autograd-lib-0.0.7.tar.gz | 8.5 kB | Without provenance | Details for autograd-lib-0.0.7.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| autograd_lib-0.0.7-py3-none-any.whl | Python 3 | none | any | Details for autograd_lib-0.0.7-py3-none-any.whl |
Total release size: 17.7 kB
Release files / autograd-lib-0.0.7.tar.gz
| Download URL | autograd-lib-0.0.7.tar.gz |
|---|---|
| Size | 8.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c0b63666f245f907647380e7de2cc9c4c9c3de2edc30e0d57674c6f350a00d78
|
|
BLAKE2b-256 checksum How to use checksums |
0a65b300be8ecd994f7a4a40c8f9ee0febad5e6239cfedb2e25823446dcf1d98
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.40.2 CPython/3.6.8
|
Release files / autograd_lib-0.0.7-py3-none-any.whl
| Download URL | autograd_lib-0.0.7-py3-none-any.whl |
|---|---|
| Size | 9.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
13a72b678fbba22ae47058cc26c8ce170b35e9e5a4690568158aeea68626ec84
|
|
BLAKE2b-256 checksum How to use checksums |
b9aca3927e1e2a886a12b914bce86965bec3b925ad14ffb696b2f84d9f8ee949
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.40.2 CPython/3.6.8
|
Security for autograd-lib 0.0.7
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.