Interactive, research-grade visualization of first-order optimizers on a shared non-convex 2D loss landscape. Compare trajectories, momentum dynamics, and adaptive step sizes side-by-side in real time.
- Non-convex procedural landscape with a global basin, local minima, and saddles
- Canvas heatmap rendering with optional contour lines
- Parallel optimizer instances with independent state and trails
- Live plots: loss vs step, gradient norm vs step, step size vs step
- Per-instance hyperparameter controls with typed numeric input
- Custom comparison panel for cross-optimizer and same-optimizer variants
- Live stats for position, loss, gradients, and optimizer-specific state
npm install
npm run devOpen the local URL printed by Vite (usually http://localhost:5173).
npm run build
npm run preview- Use Playback to play/pause, step, reset, or regenerate the landscape.
- Add or remove optimizer instances in Custom Optimizer Comparison.
- Tune instance hyperparameters in Hyperparameter Controls.
- Watch trajectories on the canvas and quantitative behavior in Live Status Graphs.
src/
optimizers/ Individual optimizer implementations
landscape/ Loss surface + analytical gradients
components/ Canvas, panels, and UI layout
types/ Shared interfaces and state types
utils/ Color, noise, and formatting helpers
- Gradient Descent (batch)
- Stochastic GD
- Mini-batch GD
- Momentum
- Nesterov (NAG)
- AdaGrad
- RMSprop
- Adam
- AdamW
- Nadam
- Implement the
Optimizerinterface insrc/optimizers/. - Export it in
src/optimizers/index.ts. - Add an entry in
src/optimizers/catalog.tswith defaults and controls.
The UI and visualization will automatically pick up the new optimizer type.