vae-playground 2025

research

View on GitHub

vae-playground demo
A VAE's latent space organizes data into clusters; sampling a point z and decoding it generates a new image.

A modular playground for experimenting with different Variational Autoencoder families in PyTorch, paired with interactive marimo notebooks. A VAE encodes each input into a distribution over a latent space, samples a code z from it, and decodes that code back to an image so the latent space becomes smooth and generative (shown in the animation above).

The variants

Model Key idea
Vanilla VAE the standard ELBO (reconstruction + KL)
β-VAE disentangled latents by weighting the KL term (β > 1)
Conditional VAE class-conditioned generation
VQ-VAE discrete latent codes with a learned codebook
WAE-MMD a Wasserstein objective with an MMD penalty

What each notebook covers

Every variant has its own marimo notebook with the theory (with LaTeX), interactive hyperparameter controls, live training, original-vs-reconstructed views, a 2D latent-space visualization colored by class, sampling from the prior, and saving. A final comparison notebook loads the saved checkpoints and shows side-by-side reconstructions, latent spaces, loss curves, samples, and an MSE table.

Datasets & hardware

MNIST, Fashion-MNIST, and CIFAR-10, downloaded automatically via torchvision. The trainer auto-detects the best device (Apple Silicon MPS, CUDA, or CPU).