Building a ProGAN
We have now learned about the three features of ProGANs – pixel normalization, minibatch standard deviation statistics, and the equalized learning rate. Now, we are going to delve into the network architecture and look at how to grow the network progressively. ProGAN grows an image by growing the layers, starting from a resolution of 4x4, then doubling it to 8x8, 16x16, and so on to 1024x1024. Thus, we will first write the code to build the layer block at each scale. The building blocks of the generator and discriminator are trivially simple, as we will see.
Building the generator blocks
We will start by building the 4x4 generator block, which forms the base of the generator and takes in the latent code as input. The input is normalized by PixelNorm
before going to Dense
. A lower gain is used for the equalized learning rate for that layer. Leaky ReLU and pixel normalization are used throughout all the generator blocks. We build the generator as follows...