In this chapter, we'll be investigating Generative Adversarial Networks (GANs) [1], the first of three artificial intelligence algorithms that we'll be looking at. GANs belong to the family of generative models. However, unlike autoencoders, generative models are able to create new and meaningful outputs given arbitrary encodings.
In this chapter, the working principles of GANs will be discussed. We'll also review the implementations of several early GANs within Keras. While later on the chapter, we'll be demonstrating the techniques needed to achieve stable training. The scope of this chapter covers two popular examples of GAN implementations, Deep Convolutional GAN (DCGAN) [2] and Conditional GAN (CGAN) [3].
In summary, the goal of this chapter is to:
Introduce the principles of GANs
How to implement GANs such as DCGAN and CGAN in Keras