An implementation of a Convolutional Generative Adversrial Network with Wasserstein loss, that successfully learns to generate realistic hand-written digits as seen in the MNSIT data set. Implementation is based on basic Keras layers with tensorflow backend, in python 3.7. This project was inspired by https://arxiv.org/pdf/1905.02417.pdf and this blog post.
The network was trained on an AWS p3.2xlarge
GPU instance, taking about 15 minutes to run for 10 epochs on the whole MNIST dataset (60K images).
The network was trained with batch size of 64, resulting in ~9300 training steps. While the final network generates good images, decent ones are generated as soon as step 3000.
The Wasserstein-loss values of the generator and the discriminator (or critic, as this is a Wasserstein architecture) are recorded throughout the training process (discriminator loss is split to its loss on the real images and on the “fake” ones):
At start of training:
After 1000 training steps:
After 3000 training steps:
After 5000 training steps:
After 9000 training steps:
Trained generator model can be found here. The model was dumped to file every 1000 steps.
see requirements.txt
file