Skip to main content

Explore the polyhedral complexes of ReLU neural networks.

Project description

Usable Latest Release

Relucent

Explore the polyhedral complexes of ReLU neural networks

This package differs from existing software (for example, check out the amazing SplineCam by Ahmed Imtiaz Humayun) because it avoids computing vertices of the complex. This tradeoff changes which computations are efficient, in particular speeding up local search of the complex in higher dimensions.

If you run into any problems or have any feature requests, please create an issue on the project's Github.

Environment Setup

  1. Install Python 3.13
  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:

from relucent import Complex, get_mlp_model

network = get_mlp_model(widths=[2, 10, 5, 1])
cplx = Complex(network)
cplx.bfs()
fig = cplx.plot(bound=10000)
fig.show()

The "NN" object returned by get_mlp_model inherits from torch.nn.Module, so you can train and manipulate it just like you're used to :)

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

import numpy as np

input_point = np.random.random(network.input_shape)
p = cplx.point2poly(input_point)
print(p.halfspaces[p.shis, :])

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 as a NetworkX Graph 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

Without a license, 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:

  1. Install the Gurobi Python library, for example using pip install gurobipy
  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

Bibliography

This package was made possible by the following works:

  • 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.4.0.tar.gz (36.1 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.4.0-py3-none-any.whl (39.9 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for relucent-0.4.0.tar.gz
Algorithm Hash digest
SHA256 6cfebfa5fb93e005b8a32cded80945b799b7d7d4de31b1844b3faac3a7202d4f
MD5 b6842c2050da96f5121acdc81d7f3cba
BLAKE2b-256 92c8204c0661812071f8d897e9d30127d842d67d5d49da7f7dcbaf67e23c70f2

See more details on using hashes here.

Provenance

The following attestation bundles were made for relucent-0.4.0.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.4.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for relucent-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 120c9a46e297e1393994928fcb011fae270e9671a85e916b36b40acdda26810a
MD5 bb8d5added389f95a696d77d96438473
BLAKE2b-256 606db8213e18e416d0e8bcc26c9d1cb34eb6e2254875699ffbb0d7e537098a7c

See more details on using hashes here.

Provenance

The following attestation bundles were made for relucent-0.4.0-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