Code repo of paper "Learning Generalized Hamiltonian Dynamics with Stability from Noisy Trajectory Data".
This repository provides a flexible, YAML‑driven framework for:
- Generating physics datasets (e.g. pendulum trajectories)
- Training a variety of models (SSGP, HNN, etc.) with different trainers (GDA, Equal, No‑Reg)
- Validating and visualizing results
- Benchmarking multiple methods over multiple systems
- Sweeping hyperparameters in parallel on HPC clusters
Everything is configured via YAML files.
- Python 3.8+
- Clone the repo:
git clone <repo_url> cd <repo>
- (Optional) Create a virtual environment:
python -m venv .venv source .venv/bin/activate
- Install dependencies:
pip install numpy torch torchdiffeq matplotlib tensorboard PyYAML torchjd
- configs/default.yaml selects one variant from each subgroup:
dataset: windy_pendulum.yaml model: ssgp.yaml optimizer: adam.yaml trainer: gda.yaml data_root: "data/" mode: train # or "visualize" save_dir: "checkpoints/{trainer}/{dataset}"
- Subgroup YAMLs define module, class, and
args:
for each component. - Support some CLI overrides let you tweak any field without editing files:
python main.py --config configs/default.yaml -O optimizer.args.lr=0.0005 -O trainer.args.epochs=200 -O save_dir="checkpoints/gda/custom_run"
python main.py --config configs/default.yaml
Dataset are listed in data/
folder, one can verify and regenerate it via scripts/generate_all_datasets.py
- Define
experiments.csv
with columns:dataset, lr, optimizer, model, trainer, epochs, save_dir
- Run:
sbatch scrips/run_experiment_array.slurm
python main.py --config configs/default.yaml -O mode=visualize -O checkpoint="checkpoints/gda/windy_pendulum_ssgp_adam.pth.tar"
We also provide some standalone visualization scripts (for phase space) in scripts/visualize
and visualize_results.py
.
TensorBoard logs are by default written to runs/checkpoints/
. To inspect:
tensorboard --logdir runs/checkpoints