This repository is an implementation of the GOKU paper: Generative ODE Modeling with Known Unknowns.
To create the datasets used in the paper run:
- Friction-less pendulum:
python3 create_data.py --model pendulum
- Friction pendulum:
python3 create_data.py --model pendulum --friction
- Double-pendulum experiment:
python3 create_data.py --model double_pendulum
- Cardiovascular system:
python3 create_data.py --model cvs
The data would be created using default arguments. To view / modify them check the file config.py
, and create_data.py
.
To train the GOKU model run: python3 goku_train.py --model <pendulum/pendulum_friction/double_pendulum/cvs>
To train baselines:
- Latent-ODE:
python3 latent_ode_train.py --model <pendulum/pendulum_friction/double_pendulum/cvs>
. - LSTM:
python3 lstm_train.py --model <pendulum/pendulum_friction/double_pendulum/cvs>
. - Direct-Identification (DI) has 3 different files for the different datasets (it cannot run the friction pendulum, since it needs the entire ODE functional form):
- Pendulum:
python3 di_baseline_pendulum.py
- Double Pendulum:
python3 di_baseline_double_pendulum.py
- CVS:
python3 di_baseline_cvs.py
- Pendulum:
- python 3
- pytorch
- numpy
- gym (for the pendulum and double pendulum experiments)