A GAN that autoencodes its way to equilibrium
Reference implementation of BEGAN, the 2017 paper that replaced the discriminator with an autoencoder and a balancing act.

What it does
Implements BEGAN (Boundary Equilibrium GAN), a TensorFlow 1.3-era project that trains generative models on the CelebA face dataset. You can swap in your own image folder, run python main.py, and get 64×64 or 128×128 generated outputs plus interpolation grids.
The interesting bit
Instead of a standard discriminator, BEGAN uses an autoencoder and balances generator and discriminator losses via a dynamic equilibrium parameter. The README shows this visually: generated faces, interpolations between them, and—unusually—interpolations in the discriminator’s latent space of real images.
Key highlights
- Supports custom datasets by dropping images into a folder (no preprocessing ritual required)
- Includes download helper for CelebA with
p7zipdependency - Generates both 64×64 and 128×128 outputs with shown step counts (300k and 200k respectively)
- Demonstrates latent-space interpolation for both generator and discriminator autoencoder
- Part of a larger GAN replication series by the same author (DCGAN, DiscoGAN, SimGAN)
Caveats
- Locked to TensorFlow 1.3.0; expect friction on modern environments
- Python 2.7 listed as primary requirement, with 3.x as secondary—dating the project to the 2-to-3 transition era
- No training curves, hyperparameter notes, or convergence guidance beyond the paper reference
Verdict
Worth a look if you’re studying GAN history or need a clean, minimal BEGAN baseline to compare against. Skip it if you want production-ready generation; the dependencies alone are a time capsule.