The original GAN was able to generate meaningful outputs, but the downside was that it couldn't be controlled. For example, if we trained a GAN to learn the distribution of celebrity faces, the generator would produce new images of celebrity-looking people. However, there is no way to influence the generator on the specific attributes of the face that we want. For example, we're unable to ask the generator for a face of a female celebrity with long black hair, a fair complexion, brown eyes, and whose smiling. The fundamental reason for this is because the 100-dim noise code that we use entangles all of the salient attributes of the generator outputs. We can recall that in Keras, the 100-dim code was generated by random sampling of uniform noise distribution:
# generate 64 fake images from 64 x 100-dim uniform noise noise = np.random.uniform(-1.0, 1.0, size=[64, 100]) fake_images = generator.predict(noise)
If we are able to modify the original GAN, such that we...