How greydanus/hamiltonian-nn works
This repository is a research implementation of Hamiltonian Neural Networks (HNNs), with training and analysis workflows across six physical-system tasks. Task-specific data modules generate or acquire states and derivatives; training scripts fit either an HNN or baseline, and save model weights and metrics. The shared HNN computes structured vector fields, while the pixel task additionally learns an autoencoder representation. Analysis notebooks examine task results. The README documents these capabilities; some task-specific source was not sampled, so links below show only documented or directly supported wiring.
Main entry points: hnn.py HNN dynamics · experiment-pixels/train.py Pixel trainer · experiment-spring/train.py Spring trainer · experiment-pend/train.py Pendulum trainer
Components 19
Task data
- Spring data
experiment-spring/data.py - Pendulum data
experiment-pend/data.py - Real pendulum data
experiment-real - Two-body data
experiment-2body/data.py - Three-body data
experiment-3body/data.py - Pixel data
experiment-pixels/data.py
Training
- Spring trainer
experiment-spring/train.py - Pendulum trainer
experiment-pend/train.py - Real trainer
experiment-real/train.py - Two-body trainer
experiment-2body/train.py - Three-body trainer
experiment-3body/train.py - Pixel trainer
experiment-pixels/train.py - Saved weights
Model runtime
- HNN dynamics
hnn.py - Neural networks
nn_models.py - Integration utilities
utils.py - Pixel HNN
hnn.py
Results analysis
- Task analyses
Other components
- Researcher
Connections 30
- Researcher → Spring trainer: starts training
- Researcher → Pendulum trainer: starts training
- Researcher → Real trainer: starts training
- Researcher → Two-body trainer: starts training
- Researcher → Three-body trainer: starts training
- Researcher → Pixel trainer: starts training
- Spring trainer → Spring data: loads data
- Pendulum trainer → Pendulum data: loads data
- Real trainer → Real pendulum data: loads data
- Two-body trainer → Two-body data: loads data
- Three-body trainer → Three-body data: loads data
- Pixel trainer → Pixel data: loads data
- Spring trainer → HNN dynamics: trains model
- Pendulum trainer → HNN dynamics: trains model
- Real trainer → HNN dynamics: trains model
- Two-body trainer → HNN dynamics: trains model
- Three-body trainer → HNN dynamics: trains model
- HNN dynamics → Neural networks: uses network
- HNN dynamics → Integration utilities: integrates with
- Pixel trainer → Pixel HNN: trains model
- Pixel HNN → HNN dynamics: delegates dynamics
- Pixel HNN → Neural networks: uses network
- Spring trainer → Saved weights: saves weights
- Pendulum trainer → Saved weights: saves weights
- Real trainer → Saved weights: saves weights
- Two-body trainer → Saved weights: saves weights
- Three-body trainer → Saved weights: saves weights
- Pixel trainer → Saved weights: saves weights
- Researcher → Task analyses: inspects results
- Pixel data → Pixel trainer: samples Gym