Generative Adversarial Network (GAN) on MNIST
Implement and train a simple Generative Adversarial Network (GAN). The network consists of a generator and a discriminator. The generator takes a random noise vector and tries to generate a realistic image, while the discriminator tries to distinguish between real images and the ones generated by the generator. Train the two networks in an adversarial loop on a dataset like MNIST.
Verification: After training, sample random noise vectors and pass them through the generator. The resulting images should be plausible, albeit sometimes blurry, representations of digits. Visualize the generated images to assess the quality of the generator.