Skip to content

Neural Ordinary Differential Equation - Recurrent Equilibrium Networks (NODE-RENs)

Notifications You must be signed in to change notification settings

DecodEPFL/NodeREN

Repository files navigation

NodeREN

NodeRENs

PyTorch implementation of NodeRENs as presented in "Unconstrained Parametrization of Dissipative and Contracting Neural Ordinary Differential Equations".

NodeRENs are at the intersection of Neural Ordinary Differential Equations (Neural ODEs) with Recurrent Equilibrium Networks (RENs).

Technical report

The Technical Report can be found in the docs folder.

Installation

git clone https://github.com/DecodEPFL/NodeREN.git

cd NodeREN

python setup.py install

System identification with NodeRENs

In the context of system identification, we use NodeRENs for learning the dynamics of a Pendulum.

For the Pendulum system, run the following script:

python ./Pendulum_Identification.py [--nx NX] [--nq NQ] [--n_steps N_STEPS] [--t_end T_END] [--sigma SIGMA]    [--method METHOD] [--seed SEED] [--epochs EPOCHS] [--batch_size BATCH_SIZE] [--alpha ALPHA] [--device DEVICE] [--n_cuda N_CUDA] [--learning_rate LEARNING_RATE] [--n_exp N_EXP] [--verbose VERBOSE] [--rtol RTOL] [--atol ATOL] [--steps_integration STEPS_INTEGRATION] [--experiment EXPERIMENT] [--t_stop_training T_STOP_TRAINING] [--GNODEREN GNODEREN] 

The main options are summarized in the following Table.

Command Description
nx Number of states of the NodeREN model
nq Number of nonlinearities of the NodeREN model
t_end End time for the training simulation window: [0, t_end]
method Integration method tu use for simulating the NodeREN
epochs (Max) no. of epochs to be used
steps_integration Number of integration steps used in fixed-steps integration methods
atol Absolute tolerance error for adaptive-step integration methods such as 'dopri5'
rtol Relative tolerance error for adaptive-step integration methods such as 'dopri5'

More details about the remaining arguments can be obtained running the following instruction:

python ./Pendulum_Identification.py --help

Binary classification with NodeRENs

In order to test NodeRENs in benchmark binary classification problems, run the following script:

./Binary_Classification.py --dataset [DATASET]

where available values for DATASET are double_moons, double_circles, double_moons, checker_board, and letters.

License

This work is licensed under a Creative Commons Attribution 4.0 International License.

CC BY 4.0

References

[1] Daniele Martinelli, Clara Galimberti, Ian R. Manchester, Luca Furieri, Giancarlo Ferrari-Trecate. "Unconstrained Parametrization of Dissipative and Contracting Neural Ordinary Differential Equations," 2023.

About

Neural Ordinary Differential Equation - Recurrent Equilibrium Networks (NODE-RENs)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages