This repository contains a collection of robust neural network architectures developed at the Australian Centre For Robotics (ACFR). All networks are implemented in Python with PyTorch and/or JAX.
Implemented network architectures currently include:
-
Lipschitz-bounded Sandwich MLPs from Wang & Manchester (ICML 2023). Tutorial:
-
Recurrent Equilibrium Network (REN) from Revay, Wang, & Manchester (TAC 2023).
-
Monotone, Bi-Lipschitz (BiLipNet), and Polyak-Lojasiewicz networks (PLNet) from Wang, Dvijotham, & Manchester (ICML 2024).
-
Robust Recurrent Deep Network (R2DN) from Barbara, Wang, & Manchester (CDC 2026).
This repository and README are a work-in-progress. More network architectures, tutorials, and documentation will be added as we go along.
All dependencies are managed with uv. To install uv, run the following (Mac/Linux, use WSL2 for Windows).
curl -LsSf https://astral.sh/uv/install.sh | shThen, to install the package and all of its dependencies, open a terminal in the root directory of this repository and enter the following command.
./install.shThis will create a Python virtual environment at ./.venv, install the pinned Python version, and install all dependencies. The script checks whether CUDA is available on your machine and installs the corresponding JAX/PyTorch version accordingly. To check your installation, run the test suite:
./run_tests.shDependencies are declared in pyproject.toml and are split into two sets:
- Core dependencies: required by the
robustnnpackage itself. - Extra dependencies for
examples: all additional dependencies needed to run the demos inexamples/and the scripts intest/.
By default, the install.sh script installs both the core and extra dependencies, and checks for CUDA to install the correct versions of jax and torch. If you would rather just install the robustnn package itself, do not run the install.sh script, and instead run one of the following.
uv sync --extra cpu # CPU only
uv sync --extra cuda13 # GPU with CUDA 13Once you have installed the package as above, use uv run to run any of the scripts in the examples/ folder. For example, from the root directory of the project, run:
uv run python examples/sandwich_mnist.pyPlease raise an issue if you have any questions, and we'll do our best to get back to you as soon as we can!