Skip to content

v0.8.0 — Universal Bottleneck phase boundary, controlled CIFAR-100 sweep, public release

Choose a tag to compare

@suchanek suchanek released this 25 May 17:27
· 43 commits to main since this release

First public release on the new GitHub home, and the first that's citable: a CITATION.cff ships in this tag and the Zenodo integration is now live.

Highlights

Universal Bottleneck — formula-derived architectures beat ResNet at fewer params.
On Fashion-MNIST (60 epochs, 4 trials), the UB+Dropout architecture at the predicted width w* = d* + C − 1 hits 88.38% ± 0.32% versus ResNet-32's 82.85% ± 2.25% — +5.5 pp with 38% fewer parameters. On MNIST, UB matches ResNet (98.98% vs 99.27%) at 38% fewer parameters. The theorem's width prediction holds without a hyperparameter search.

CIFAR-100 controlled comparison. Re-ran all seven architectures with uniform early stopping (patience=10) so every model peaks against the same stopping criterion. Result: Intrinsic-Dim (PCA → 100D) hits 25.60% ± 0.12% versus Standard MLP at 21.31% ± 0.28% — +4.29 pp at 184× fewer parameters. The standard model converges fast (stopped ep18); the manifold-informed model converges slowly (stopped ep65) but wins decisively.

CIFAR-100 τ/d sweep → a design rule. A 9-point sweep over PCA compression d establishes that optimal d sits between intrinsic d* and class count C, empirically d ≈ 0.75 × n_classes. Optimal at d=75 for CIFAR-100 (not 100), with a clean crossover from PCA+MLP to Intrinsic-Dim winning at d ≈ 50. Geometric τ-values (d=13–21) are insufficient for 100-class discrimination — a useful boundary condition for the theory.

CIFAR-10 refresh at 60 epochs. d*=34 (truck class drives the ceiling), PCA+MLP at 5,076 parameters reaches 95.1% of standard-model accuracy (49.12% vs 51.67%) — a 724× parameter reduction. The 43pp train–test gap on the Standard MLP is now called out as memorization, and ManifoldAdam's regression on overparameterized architectures is traced to cold-init projection layers.

What's new for users running the benchmarks

  • --plot-only on every canonical benchmark script — regenerate figures from saved JSON without re-running training. Fast figure-tweak cycles after long runs.
  • --tau-sweep mode on cifar100_manifold_architecture.py — Phase 4 sweep over τ-derived and fixed d-values, saves to cifar100_tau_sweep_results.json.
  • --patience / early-stopping uniformly applied across all CIFAR-100 architectures, with EpochHeartbeat progress callback. best_val_acc, best_val_epoch, stopped_epoch now persisted in the results JSON.
  • benchmarks/tf_setup.py — CPU is now the default device (Metal is opt-in via --metal/--gpu), per the M-series finding that Metal serializes per-op on small MLPs.
  • Plot layout — taller figures, 45° rotated tick labels, more bottom-row gridspec room. Stops accuracy/param bar charts from overlapping their labels.

Citation

CITATION.cff is included and the README now has a Citation section with prose + BibTeX. The Zenodo DOI fields are stubbed with TODO markers in this release and will be filled in a 0.8.1 patch once Zenodo mints the DOI for this tag.

Reproducing

All benchmark JSONs are seed-locked (seeds 42–51, 3–10 trials) and committed alongside their scripts. The numbers cited in this release and in the papers (papers/manifold_classification/DATA.md, docs/waverider/waverider.md) come from those committed JSONs.


Full changelog: CHANGELOG.md · Release notes file: release-notes.md