Implementation of a Variational Autoencoder model applied to several datasets.
The model is implemented in TensorFlow 2 using its Keras API tf.keras.
The primary goal of this project was not to find the most performant ANN
architecture for a general VAE or even to find very well-tuned hyperparameters.
The primary goal wast to have a small, maintanable, reliable & well-tested code
which is easy to extend, and present some simple results to demonstrate that
the model is quite able to create new images instead of just reconstructing
training instances.
Below you find results for some of the most well-known datasets.
The following animation shows how the decoder of the VAE model creates images for a set of 16 points randomly sampled in the latent space held fixed over all epochs.
| Generated | Training set |
|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
The following animation shows how the decoder of the VAE model creates images for a set of 16 points randomly sampled in the latent space held fixed over all epochs.
| Generated | Training set |
|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
The points from the 100 dimensional latent space have been projected into the plane using PCA.
The points from the 100 dimensional latent space have been projected into the plane using PCA.
The following animation shows how the decoder of the VAE model creates images for a set of 16 points randomly sampled in the latent space held fixed over all epochs.
| Generated | Training set |
|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
The points from the 100 dimensional latent space have been projected into the plane using PCA.
The points from the 100 dimensional latent space have been projected into the plane using PCA.






































































































