Skip to main content

Explore the polyhedral complexes of ReLU neural networks.

Reason this release was yanked:

yoink

Project description

Relucent

Usable Latest Release

Relucent is a Python package for computing the polyhedra of ReLU networks! Its main features include:

  • Distributed calculation of the activation regions of ReLU networks via local search
  • Visualization of ReLU complexes in two or three dimensions with Plotly
  • Automatic compatibility with existing PyTorch networks
  • Computation of the complex's dual as a NetworkX Graph
  • Various calculations for individual activation regions, decision boundaries, and affine splines

Environment Setup

  1. Install Python >= 3.11
  2. Install PyTorch
  3. Run pip install relucent

Getting Started

To see if the installation has been successful, try plotting the complex of a randomly initialized network in 2 dimensions like this:

import numpy as np
import torch.nn as nn
import relucent

if __name__ == '__main__':
    # Create Model
    network = nn.Sequential(
        nn.Linear(2, 10),
        nn.ReLU(),
        nn.Linear(10, 5),
        nn.ReLU(),
        nn.Linear(5, 1),
    )  ## or conveniently, relucent.get_mlp_model(widths=[2, 10, 5, 1])

    ## Initialize a Complex to track calculations
    cplx = relucent.Complex(network)

    ## Calculate the activation regions via local search
    cplx.bfs()

    ## Plotting functions return Plotly figures
    fig = cplx.plot_cells()
    fig.show()

Given some input point, you could get a minimal H-representation of the polyhedral region containing it like this:

input_point = np.random.random((1, 2))
p = cplx.point2poly(input_point)
print(p.halfspaces[p.shis])

Attributes like p.halfspaces (halfspaces of the form Ax + b <= 0, in format [A; b], induced by each neuron), p.shis (the indices of the non-redundant halfspaces), and p.center (the Chebyshev Center) are computed lazily.

You could also check the average number of faces of all polyhedrons with:

sum(len(p.shis) for p in cplx) / len(cplx)

Or, get the adjacency graph of top-dimensional cells in the complex with:

print(cplx.get_dual_graph())

You can view the full documentation for this library at https://bl-ake.github.io/relucent/

Obtaining a Gurobi License

This package will work for most applications without a license. However, without one, Gurobi will only work with a limited feature set. This includes a limit on the number of decision variables in the models it can solve, which limits the size of the networks this code is able to analyze. There are multiple ways to install the software, but we recommend the following steps to those eligible for an academic license: 0. Create a fresh Python environment using a distribution of Anaconda.

  1. Install the Gurobi Python library using conda install -c gurobi gurobi.
  2. Obtain a Gurobi license (Note: a WLS license will limit the number of concurrent sessions across multiple devices, which can result in slowdowns when using this library on different machines simultaneously.)
  3. In your Conda environment, run grbgetkey followed by your license key
  4. Complete the remaining steps in Getting Started

Citing this Package

If you run into any problems or have any feature requests, please create an issue on the project's Github. If you want to credit its use in your research, please cite our paper.

@inproceedings{
  gaines2026characterizing,
  title={Characterizing the Discrete Geometry of Re{LU} Networks},
  author={Blake B. Gaines and Jinbo Bi},
  booktitle={The Fourteenth International Conference on Learning Representations},
  year={2026},
  url={https://openreview.net/forum?id=TgLW2DiRDG}
}

Related Software:

Please check out the amazing software created by others working in this area. Depending on your goal, some of these could be even better!

Bibliography

This package was made possible by the following work:

  • Fukuda, K. (2004, August 26). Frequently Asked Questions in Polyhedral Computation. https://people.inf.ethz.ch/~fukudak/polyfaq/
  • Grigsby, J. E., & Lindsey, K. (2022). On Transversality of Bent Hyperplane Arrangements and the Topological Expressiveness of ReLU Neural Networks. SIAM Journal on Applied Algebra and Geometry, 6(2), 216–242. https://doi.org/10.1137/20M1368902
  • Liu, Y., Caglar, T., Peterson, C., & Kirby, M. (2023). Integrating geometries of ReLU feedforward neural networks. Frontiers in Big Data, 6, 1274831. https://doi.org/10.3389/fdata.2023.1274831
  • Masden, M. (2025). Algorithmic Determination of the Combinatorial Structure of the Linear Regions of ReLU Neural Networks. SIAM Journal on Applied Algebra and Geometry, 9(2), 374–404. https://doi.org/10.1137/24M1646996
  • Xu, S., Vaughan, J., Chen, J., Zhang, A., & Sudjianto, A. (2022). Traversing the Local Polytopes of ReLU Neural Networks. The AAAI-22 Workshop on Adversarial Machine Learning and Beyond. https://openreview.net/forum?id=EQjwT2-Vaba
  • Yajing Liu, Christina M Cole, Chris Peterson, & Michael Kirby. (2023). ReLU Neural Networks, Polyhedral Decompositions, and Persistent Homolog. TAG-ML.
  • Zhang, X., & Wu, D. (2019, September 25). Empirical Studies on the Properties of Linear Regions in Deep Neural Networks. International Conference on Learning Representations. https://openreview.net/forum?id=SkeFl1HKwr

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

relucent-0.7.2.tar.gz (59.6 kB view details)

Uploaded Source

Built Distribution

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

relucent-0.7.2-py3-none-any.whl (65.5 kB view details)

Uploaded Python 3

File details

Details for the file relucent-0.7.2.tar.gz.

File metadata

  • Download URL: relucent-0.7.2.tar.gz
  • Upload date:
  • Size: 59.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for relucent-0.7.2.tar.gz
Algorithm Hash digest
SHA256 75d0c18825b17bb3a75642f3139d2340d5fbbb8e25656d7928eb4c76d2b64eae
MD5 048696ae702097415fd5af79c2a9a3b5
BLAKE2b-256 e9b3e28dc00a06e703fac048f2fc035467235f269f85bba849c211115ec07fc1

See more details on using hashes here.

Provenance

The following attestation bundles were made for relucent-0.7.2.tar.gz:

Publisher: publish.yml on bl-ake/relucent

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file relucent-0.7.2-py3-none-any.whl.

File metadata

  • Download URL: relucent-0.7.2-py3-none-any.whl
  • Upload date:
  • Size: 65.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for relucent-0.7.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b388040fa08cac2023c381b64701f4927a601fd5d03f54c301e60feb6b208f88
MD5 f1de8e1bad2c610c9eeffc14c2f96536
BLAKE2b-256 d0591ed03395fe3a0f2de3fe8487f8ff62425c8ddc8f8f9d9d9aab9fc7ec5626

See more details on using hashes here.

Provenance

The following attestation bundles were made for relucent-0.7.2-py3-none-any.whl:

Publisher: publish.yml on bl-ake/relucent

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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