/DeepGenerativeModels

Variational Auto Encoders (VAEs), Generative Adversarial Networks (GANs) and Generative Normalizing Flows (NFs) and are the most famous and powerful deep generative models.

Primary LanguagePythonMIT LicenseMIT

Deep Generative Models

License

Description

Variational Auto Encoders (VAEs), Generative Adversarial Networks (GANs) and Generative Normalizing Flows (NFs) and are the most famous and powerful deep generative models. With this reposetory, I attempt to gather many deep generative model architectures, within a clean structured code enviroment. Lastly, I also attempt to analyzed both from theoretical and practical spectrum, with mathematical formulas and annimated pictures.

A VAE is a latent variable model that leverages the flexibility of Neural Networks (NN) in order to learn/specify a latent variable model.

Vanilla VAE

Auto-Encoding Variational Bayes

Conditional VAE

Learning Structured Output Representation using Deep Conditional Generative Models

Generative Adversarial Networks (GAN) are a type of deep generative models. Similar to VAEs, GANs can generate images that mimick images from the dataset by sampling an encoding from a noise distribution. In constract to VAEs, in vanilla GANs there is no inference mechanism to determine an encoding or latent vector that corresponds to a given data point (or image).

Vanilla GANs

Generative Adversarial Networks

Results

From left to right; Vanilla VAE on 2-dimentional space, Conditional VAE on 20-dimentional space.

Vanilla GAN training progress.

Logging

All the results can be found the folder vae/logs (or gan/logs) with tensorboard:

tensorboard --logdir=vae/logs

Running

python vae/main.py --model="cvae"

Dependencies

  • Python 3.x: PyTorch, NumPy, Tensorboard

Copyright

Copyright © 2019 Ioannis Gatopoulos.