Skip to main content

PyPI GitHub Workflow Status (branch) PyPI - License PyPI - Downloads

This package implements utilities for computing gradient metrics for measuring uncertainties in neural networks based on the paper "Classification Uncertainty of Deep Neural Networks Based on Gradient Information, Oberdiek et al., 2018".
An application of this can also be found in "On the Importance of Gradients for Detecting Distributional Shifts in the Wild, Huang et al., 2021"

Documentation and examples can be found on GitHub pages.

Table of Contents

Installation

pip install gradient-metrics

Usage

Example of computing the maximum, minimum, mean and standard deviation of gradient entries as in Classification Uncertainty of Deep Neural Networks Based on Gradient Information:

from gradient_metrics import GradientMetricCollector
from gradient_metrics.metrics import Max, Min, MeanStd
import torch.nn.functional as tfunc

# Initialize a network
mynet = MyNeuralNetwork()

# Initialize the GradientMetricCollector
mcollector = GradientMetricCollector(
    [
        Max(mynet),
        Min(mynet),
        MeanStd(mynet),
    ]
)

# Predict your data
out = mynet(x)

# Construct pseudo labels
y_pred = out.argmax(1).clone().detach()

# Construct the sample wise loss for backpropagation
sample_loss = tfunc.cross_entropy(out, y_pred, reduction="none")

# Compute the gradient metrics
metrics = mcollector(sample_loss)

Example of computing the L1-Norm from On the Importance of Gradients for Detecting Distributional Shifts in the Wild:

from gradient_metrics import GradientMetricCollector
from gradient_metrics.metrics import PNorm
import torch
import torch.nn.functional as tfunc

# Initialize a network
mynet = MyNeuralNetwork()

# Initialize the GradientMetricCollector
mcollector = GradientMetricCollector(PNorm(mynet))

# Predict your data
out = mynet(x)

# Construct the sample wise loss for backpropagation
sample_loss = torch.log(tfunc.softmax(out, dim=1)).mean(1).neg()

# Compute the gradient metrics
metrics = mcollector(sample_loss)

Contributing

Requirements:

Contributions in the form of PRs or issues are welcome. To install the development environment run

make setup

Before you open your pull-request, make sure that all tests are passing in your local copy by running make test.

Citing

@inproceedings{OberdiekRG18,  
  author    = {Philipp Oberdiek and  
               Matthias Rottmann and  
               Hanno Gottschalk},  
  editor    = {Luca Pancioni and  
               Friedhelm Schwenker and  
               Edmondo Trentin},  
  title     = {Classification Uncertainty of Deep Neural Networks Based on Gradient  
               Information},  
  booktitle = {Artificial Neural Networks in Pattern Recognition - 8th {IAPR} {TC3}  
               Workshop, {ANNPR} 2018, Siena, Italy, September 19-21, 2018, Proceedings},  
  series    = {Lecture Notes in Computer Science},  
  volume    = {11081},  
  pages     = {113--125},  
  publisher = {Springer},  
  year      = {2018},  
  url       = { https://doi.org/10.1007/978-3-319-99978-4_9 },  
  doi       = { 10.1007/978-3-319-99978-4\_9 },  
}

Release files for gradient_metrics 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gradient_metrics 0.5.0
File Size Uploaded
gradient_metrics-0.5.0.tar.gz 9.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gradient_metrics 0.5.0
File Interpreter ABI Platform
gradient_metrics-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 17.6 kB

Release files / gradient_metrics-0.5.0.tar.gz

Download URL gradient_metrics-0.5.0.tar.gz
Size 9.2 kB
Tags Source
SHA-256 checksum
How to use checksums
346b5e68b9e533547d6d2406a03d8197ab55788a0e416bf3f89e6eaa651ca18d
BLAKE2b-256 checksum
How to use checksums
0d541504280ee02192824b20bdd2a8e39fa62c8519f6ad4b77bdc58cd33e58dd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.7.1 CPython/3.11.7 Linux/6.2.0-1019-azure

Release files / gradient_metrics-0.5.0-py3-none-any.whl

Download URL gradient_metrics-0.5.0-py3-none-any.whl
Size 8.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c353d3fb2e5479a8ac9abe1d4e03cd8e28f4f631f28ed56bf35f632f39b516de
BLAKE2b-256 checksum
How to use checksums
e80d1614fab694fb094e4cd49c97f61835a906ed9688949de8a46bccd29ce690
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.7.1 CPython/3.11.7 Linux/6.2.0-1019-azure

Release history Release notifications | RSS feed

This release

0.5.0 This release

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page