m-niemeyer / generative-adversarial-networks-tutorial

A tutorial about generative adversarial networks with the example of generating handwritten digits

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

A Tutorial on Generative Adversarial Networks

This is an introduction to Generative Adversarial Networks (GANs) and how they can be used to generate photos of handwritten digits. In particular, we will use an architecture that is is similar to the DCGAN proposed by Radford et al.

Final Results

Generated images of random numbers

The core idea of GANs is to combine two neural networks with distinct tasks: a generator and a descriminator. The first tries to produce realistic images from random noise, while the latter tries to distinguish the generated images from the real images. The following analogy is taken from Goodfellow et al.'s original paper on GANs:

The generative model can be thought of as analogous to a team of counterfeiters, trying to produce fake currency and use it without detection, while the discriminative model is analogous to the police, trying to detect the counterfeit currency. Competition in this game drives both teams to improve their methods until the counterfeits are indistiguishable from the genuine articles.

In this notebook, I present a simple and straightforward implementation of GANs and how they can be used in practice. If you have any question, suggestions, etc., feel free to contact me!

If you want to learn more about GANs, I would recommend to start with:

  1. Goodfellow et al.'s original GAN paper
  2. Ian Goodfellow's Tutorial

About

A tutorial about generative adversarial networks with the example of generating handwritten digits


Languages

Language:Jupyter Notebook 100.0%