infogan icon indicating copy to clipboard operation
infogan copied to clipboard

An unofficial Torch implementation of InfoGAN

InfoGAN for Torch

This is an unofficial Torch implementation of the InfoGAN neural network architecture proposed by Chen et al in their paper "InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets". The original TensorFlow implementation can be found at https://github.com/openai/InfoGAN.

Generated MNIST digits varying c_1

Generated MNIST digits varying c_2

Features

  • [x] Implement the InfoGAN network architecture
  • [x] Use variational mutual information maximization for the error calculations (as per the paper)
  • [x] CLI options for tweaking noise inputs and salient variables
  • [x] Deterministic training

Requirements

Running

Begin by cloning this repository.

git clone https://github.com/anibali/infogan
cd infogan

NOTE: If you are using a Pascal architecture GPU (CUDA 8.0), you will need to modify the Dockerfile to build from a CUDA 8.0 base image. Refer to https://github.com/anibali/infogan/issues/5 for more details. Please make this change before proceeding.

Build the Docker image which contains Torch and all other required dependencies.

nvidia-docker build -t infogan-torch .

Download the MNIST dataset.

nvidia-docker run -it --rm --volume=$PWD:/app infogan-torch sh download_mnist.sh

Finally, run the training script.

nvidia-docker run -it --rm --volume=$PWD:/app infogan-torch th bin/train_infogan.lua

Output artifacts will appear in the out/ directory during training, including examples of fake images generated by the generator network and serialized copies of the generator and discriminator networks.