Chapter 4. Deep Convolutional GAN

 

This chapter covers

  • Understanding key concepts behind convolutional neural networks
  • Using batch normalization
  • Implementing Deep Convolutional GAN, an advanced GAN architecture

In the previous chapter, we implemented a GAN whose Generator and Discriminator were simple feed-forward neural networks with a single hidden layer. Despite this simplicity, many of the images of handwritten digits that the GAN’s Generator produced after being fully trained were remarkably convincing. Even the ones that were not recognizable as human-written numerals had many of the hallmarks of handwritten symbols, such as discernible line edges and shapes—especially when compared to the random noise used as the Generator’s raw input.

Imagine what we could accomplish with more powerful network architecture. In this chapter, we will do just that: instead of simple two-layer feed-forward networks, both our Generator and Discriminator will be implemented as convolutional neural networks (CNNs, or ConvNets). The resulting GAN architecture is known as Deep Convolutional GAN, or DCGAN for short.

Before delving into the nitty-gritty of the DCGAN implementation, we will review the key concepts underlying ConvNets, review the history behind the discovery of the DCGAN, and cover one of the key breakthroughs that made complex architectures like DCGAN possible in practice: batch normalization.

4.1. Convolutional neural networks

4.1.1. Convolutional filters

4.1.2. Parameter sharing

4.1.3. ConvNets visualized

4.2. Brief history of the DCGAN

4.3. Batch normalization

4.3.1. Understanding normalization

4.3.2. Computing batch normalization

4.4. Tutorial: Generating handwritten digits with DCGAN

4.4.1. Importing modules and specifying model input dimensions

4.4.2. Implementing the Generator

4.4.3. Implementing the Discriminator

4.4.4. Building and running the DCGAN

4.4.5. Model output

4.5. Conclusion

Summary

sitemap