{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# CNTK 206: Part B - Deep Convolutional GAN with MNIST data\n", "\n", "**Prerequisites**: We assume that you have successfully downloaded the MNIST data by completing the tutorial titled CNTK_103A_MNIST_DataLoader.ipynb.\n", "\n", "## Introduction\n", "\n", "[Generative models](https://en.wikipedia.org/wiki/Generative_model) have gained a [lot of attention](https://openai.com/blog/generative-models/) in deep learning community which has traditionally leveraged [discriminative models](https://en.wikipedia.org/wiki/Discriminative_model) for (semi-supervised) and unsupervised learning. \n", "\n", "## Overview\n", "In the previous tutorial we introduce the original GAN implementation by [Goodfellow et al](https://arxiv.org/pdf/1406.2661v1.pdf) at NIPS 2014. This pioneering work has since then been extended and many techniques have been published amongst which the Deep Convolutional Generative Adversarial Network a.k.a. DCGAN has become the recommended launch pad in the community.\n", "\n", "In this tutorial, we introduce an implementation of the DCGAN with some well tested architectural constraints that improve stability in the GAN training: \n", "\n", "- We use [strided convolutions](https://en.wikipedia.org/wiki/Convolutional_neural_network) in the (discriminator) and [fractional-strided convolutions](https://arxiv.org/pdf/1603.07285v1.pdf) in the generator.\n", "- We have used batch normalization in both the generator and the discriminator\n", "- We have removed fully connected hidden layers for deeper architectures.\n", "- We use ReLU activation in generator for all layers except for the output, which uses Tanh.\n", "- We use LeakyReLU activation in the discriminator for all layers.\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import matplotlib as mpl\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import os\n", "\n", "import cntk as C\n", "import cntk.tests.test_utils\n", "cntk.tests.test_utils.set_device_from_pytest_env() # (only needed for our build system)\n", "C.cntk_py.set_fixed_random_seed(1) # fix a random seed for CNTK components\n", "\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are two run modes:\n", "- *Fast mode*: `isFast` is set to `True`. This is the default mode for the notebooks, which means we train for fewer iterations or train / test on limited data. This ensures functional correctness of the notebook though the models produced are far from what a completed training would produce.\n", "\n", "- *Slow mode*: We recommend the user to set this flag to `False` once the user has gained familiarity with the notebook content and wants to gain insight from running the notebooks for a longer period with different parameters for training. \n", "\n", "**Note**\n", "If the `isFlag` is set to `False` the notebook will take a few hours on a GPU enabled machine. You can try fewer iterations by setting the `num_minibatches` to a smaller number say `20,000` which comes at the expense of quality of the generated images." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "isFast = True" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data Reading\n", "The input to the GAN will be a vector of random numbers. At the end of the traning, the GAN \"learns\" to generate images of hand written digits drawn from the [MNIST database](https://en.wikipedia.org/wiki/MNIST_database). We will be using the same MNIST data generated in tutorial 103A. A more in-depth discussion of the data format and reading methods can be seen in previous tutorials. For our purposes, just know that the following function returns an object that will be used to generate images from the MNIST dataset. Since we are building an unsupervised model, we only need to read in `features` and ignore the `labels`." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Data directory is ..\\Examples\\Image\\DataSets\\MNIST\n" ] } ], "source": [ "# Ensure the training data is generated and available for this tutorial\n", "# We search in two locations in the toolkit for the cached MNIST data set.\n", "\n", "data_found = False\n", "for data_dir in [os.path.join(\"..\", \"Examples\", \"Image\", \"DataSets\", \"MNIST\"),\n", " os.path.join(\"data\", \"MNIST\")]:\n", " train_file = os.path.join(data_dir, \"Train-28x28_cntk_text.txt\")\n", " if os.path.isfile(train_file):\n", " data_found = True\n", " break\n", " \n", "if not data_found:\n", " raise ValueError(\"Please generate the data by completing CNTK 103 Part A\")\n", " \n", "print(\"Data directory is {0}\".format(data_dir))" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def create_reader(path, is_training, input_dim, label_dim):\n", " deserializer = C.io.CTFDeserializer(\n", " filename = path,\n", " streams = C.io.StreamDefs(\n", " labels_unused = C.io.StreamDef(field = 'labels', shape = label_dim, is_sparse = False),\n", " features = C.io.StreamDef(field = 'features', shape = input_dim, is_sparse = False\n", " )\n", " )\n", " )\n", " return C.io.MinibatchSource(\n", " deserializers = deserializer,\n", " randomize = is_training,\n", " max_sweeps = C.io.INFINITELY_REPEAT if is_training else 1\n", " )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The random noise we will use to train the GAN is provided by the `noise_sample` function to generate random noise samples from a uniform distribution within the interval [-1, 1]." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "np.random.seed(123)\n", "def noise_sample(num_samples):\n", " return np.random.uniform(\n", " low = -1.0,\n", " high = 1.0,\n", " size = [num_samples, g_input_dim]\n", " ).astype(np.float32)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Model Creation\n", "\n", "First we provide a brief recap of the basics of GAN. You may skip this block if you are familiar with CNTK 206A. \n", "\n", "A GAN network is composed of two sub-networks, one called the Generator ($G$) and the other Discriminator ($D$). \n", "- The **Generator** takes random noise vector ($z$) as input and strives to output synthetic (fake) image ($x^*$) that is indistinguishable from the real image ($x$) from the MNIST dataset. \n", "- The **Discriminator** strives to differentiate between the real image ($x$) and the fake ($x^*$) image.\n", "\n", "![](https://www.cntk.ai/jup/GAN_basic_flow.png)\n", "\n", "In each training iteration, the Generator produces more realistic fake images (in other words *minimizes* the difference between the real and generated counterpart) and the Discriminator *maximizes* the probability of assigning the correct label (real vs. fake) to both real examples (from training set) and the generated fake ones. The two conflicting objectives between the sub-networks ($G$ and $D$) leads to the GAN network (when trained) converge to an equilibrium, where the Generator produces realistic looking fake MNIST images and the Discriminator can at best randomly guess whether images are real or fake. The resulting Generator model once trained produces realistic MNIST image with the input being a random number. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Model config\n", "\n", "First, we establish some of the architectural and training hyper-parameters for our model. \n", "\n", "- The generator network is fractional strided convolutional network. The input is a 100-dimensional random vector and the output of the generator is a flattened version of a 28 x 28 fake image. The discriminator is strided-convolution network. It takes as input the 784 dimensional output of the generator or a real MNIST image, reshapes into a 28 x 28 image format and outputs a single scalar - the estimated probability that the input image is a real MNIST image." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Model components\n", "We build a computational graph for our model, one each for the generator and the discriminator. First, we establish some of the architectural parameters of our model. " ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# architectural parameters\n", "img_h, img_w = 28, 28\n", "kernel_h, kernel_w = 5, 5 \n", "stride_h, stride_w = 2, 2\n", "\n", "# Input / Output parameter of Generator and Discriminator\n", "g_input_dim = 100\n", "g_output_dim = d_input_dim = img_h * img_w\n", "\n", "# We expect the kernel shapes to be square in this tutorial and\n", "# the strides to be of the same length along each data dimension\n", "if kernel_h == kernel_w:\n", " gkernel = dkernel = kernel_h\n", "else:\n", " raise ValueError('This tutorial needs square shaped kernel') \n", " \n", "if stride_h == stride_w:\n", " gstride = dstride = stride_h\n", "else:\n", " raise ValueError('This tutorial needs same stride in all dims')" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Helper functions\n", "def bn_with_relu(x, activation=C.relu):\n", " h = C.layers.BatchNormalization(map_rank=1)(x)\n", " return C.relu(h)\n", "\n", "# We use param-relu function to use a leak=0.2 since CNTK implementation \n", "# of Leaky ReLU is fixed to 0.01\n", "def bn_with_leaky_relu(x, leak=0.2):\n", " h = C.layers.BatchNormalization(map_rank=1)(x)\n", " r = C.param_relu(C.constant((np.ones(h.shape)*leak).astype(np.float32)), h)\n", " return r" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Generator**\n", "\n", "The generator takes a 100-dimensional random vector (for starters) as input ($z$) and the outputs a 784 dimensional vector, corresponding to a flattened version of a 28 x 28 fake (synthetic) image ($x^*$). In this tutorial, we use fractionally strided convolutions (a.k.a ConvolutionTranspose) with ReLU activations except for the last layer. We use a tanh activation on the last layer to make sure that the output of the generator function is confined to the interval [-1, 1]. The use of ReLU and tanh activation functions are key in addition to using the fractionally strided convolutions." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def convolutional_generator(z):\n", " with C.layers.default_options(init=C.normal(scale=0.02)):\n", " print('Generator input shape: ', z.shape)\n", "\n", " s_h2, s_w2 = img_h//2, img_w//2 #Input shape (14,14)\n", " s_h4, s_w4 = img_h//4, img_w//4 # Input shape (7,7)\n", " gfc_dim = 1024\n", " gf_dim = 64\n", "\n", " h0 = C.layers.Dense(gfc_dim, activation=None)(z)\n", " h0 = bn_with_relu(h0)\n", " print('h0 shape', h0.shape)\n", "\n", " h1 = C.layers.Dense([gf_dim * 2, s_h4, s_w4], activation=None)(h0)\n", " h1 = bn_with_relu(h1)\n", " print('h1 shape', h1.shape)\n", "\n", " h2 = C.layers.ConvolutionTranspose2D(gkernel,\n", " num_filters=gf_dim*2,\n", " strides=gstride,\n", " pad=True,\n", " output_shape=(s_h2, s_w2),\n", " activation=None)(h1)\n", " h2 = bn_with_relu(h2)\n", " print('h2 shape', h2.shape)\n", "\n", " h3 = C.layers.ConvolutionTranspose2D(gkernel,\n", " num_filters=1,\n", " strides=gstride,\n", " pad=True,\n", " output_shape=(img_h, img_w),\n", " activation=C.sigmoid)(h2)\n", " print('h3 shape :', h3.shape)\n", "\n", " return C.reshape(h3, img_h * img_w)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Discriminator**\n", "\n", "The discriminator takes as input ($x^*$) the 784 dimensional output of the generator or a real MNIST image, re-shapes the input to a 28 x 28 image and outputs the estimated probability that the input image is a real MNIST image. The network is modeled using strided convolution with Leaky ReLU activation except for the last layer. We use a sigmoid activation on the last layer to ensure the discriminator output lies in the inteval of [0,1]." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def convolutional_discriminator(x):\n", " with C.layers.default_options(init=C.normal(scale=0.02)):\n", "\n", " dfc_dim = 1024\n", " df_dim = 64\n", "\n", " print('Discriminator convolution input shape', x.shape)\n", " x = C.reshape(x, (1, img_h, img_w))\n", "\n", " h0 = C.layers.Convolution2D(dkernel, 1, strides=dstride)(x)\n", " h0 = bn_with_leaky_relu(h0, leak=0.2)\n", " print('h0 shape :', h0.shape)\n", "\n", " h1 = C.layers.Convolution2D(dkernel, df_dim, strides=dstride)(h0)\n", " h1 = bn_with_leaky_relu(h1, leak=0.2)\n", " print('h1 shape :', h1.shape)\n", "\n", " h2 = C.layers.Dense(dfc_dim, activation=None)(h1)\n", " h2 = bn_with_leaky_relu(h2, leak=0.2)\n", " print('h2 shape :', h2.shape)\n", "\n", " h3 = C.layers.Dense(1, activation=C.sigmoid)(h2)\n", " print('h3 shape :', h3.shape)\n", "\n", " return h3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We use a minibatch size of 128 and a fixed learning rate of 0.0002 for training. In the fast mode (`isFast = True`) we verify only functional correctness with 5000 iterations. \n", "\n", "**Note**: In the slow mode, the results look a lot better but it requires in the order of 10 minutes depending on your hardware. In general, the more number of minibatches one trains, the better is the fidelity of the generated images." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# training config\n", "minibatch_size = 128\n", "num_minibatches = 5000 if isFast else 10000\n", "lr = 0.0002\n", "momentum = 0.5 #equivalent to beta1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Build the graph\n", "\n", "The rest of the computational graph is mostly responsible for coordinating the training algorithms and parameter updates, which is particularly tricky with GANs for couple reasons. The GANs are sensitive to the choice of learner and the parameters. Many of the parameters chosen here are based on many hard learnt lessons from the community. You may directly go to the code if you have read the basic GAN tutorial. \n", "\n", "- First, the discriminator must be used on both the real MNIST images and fake images generated by the generator function. One way to represent this in the computational graph is to create a clone of the output of the discriminator function, but with substituted inputs. Setting `method=share` in the `clone` function ensures that both paths through the discriminator model use the same set of parameters.\n", "\n", "\n", "- Second, we need to update the parameters for the generator and discriminator model separately using the gradients from different loss functions. We can get the parameters for a `Function` in the graph with the `parameters` attribute. However, when updating the model parameters, update only the parameters of the respective models while keeping the other parameters unchanged. In other words, when updating the generator we will update only the parameters of the $G$ function while keeping the parameters of the $D$ function fixed and vice versa.\n", "\n", "### Training the Model\n", "The code for training the GAN very closely follows the algorithm as presented in the [original NIPS 2014 paper](https://arxiv.org/pdf/1406.2661v1.pdf). In this implementation, we train $D$ to maximize the probability of assigning the correct label (fake vs. real) to both training examples and the samples from $G$. In other words, $D$ and $G$ play the following two-player minimax game with the value function $V(G,D)$:\n", "\n", "$$\n", " \\min_G \\max_D V(D,G)= \\mathbb{E}_{x}[ log D(x) ] + \\mathbb{E}_{z}[ log(1 - D(G(z))) ]\n", "$$\n", "\n", "At the optimal point of this game the generator will produce realistic looking data while the discriminator will predict that the generated image is indeed fake with a probability of 0.5. The [algorithm referred below](https://arxiv.org/pdf/1406.2661v1.pdf) is implemented in this tutorial.\n", "\n", "![](https://www.cntk.ai/jup/GAN_goodfellow_NIPS2014.png)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def build_graph(noise_shape, image_shape, generator, discriminator):\n", " input_dynamic_axes = [C.Axis.default_batch_axis()]\n", " Z = C.input_variable(noise_shape, dynamic_axes=input_dynamic_axes)\n", " X_real = C.input_variable(image_shape, dynamic_axes=input_dynamic_axes)\n", " X_real_scaled = X_real / 255.0\n", "\n", " # Create the model function for the generator and discriminator models\n", " X_fake = generator(Z)\n", " D_real = discriminator(X_real_scaled)\n", " D_fake = D_real.clone(\n", " method = 'share',\n", " substitutions = {X_real_scaled.output: X_fake.output}\n", " )\n", "\n", " # Create loss functions and configure optimazation algorithms\n", " G_loss = 1.0 - C.log(D_fake)\n", " D_loss = -(C.log(D_real) + C.log(1.0 - D_fake))\n", "\n", " G_learner = C.adam(\n", " parameters = X_fake.parameters,\n", " lr = C.learning_parameter_schedule_per_sample(lr),\n", " momentum = C.momentum_schedule(momentum)\n", " )\n", " D_learner = C.adam(\n", " parameters = D_real.parameters,\n", " lr = C.learning_parameter_schedule_per_sample(lr),\n", " momentum = C.momentum_schedule(momentum)\n", " )\n", "\n", " # Instantiate the trainers\n", " G_trainer = C.Trainer(X_fake,\n", " (G_loss, None),\n", " G_learner)\n", " D_trainer = C.Trainer(D_real,\n", " (D_loss, None),\n", " D_learner)\n", "\n", " return X_real, X_fake, Z, G_trainer, D_trainer" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "With the value functions defined we proceed to iteratively train the GAN model. The training of the model can take significantly long depending on the hardware especially if `isFast` flag is turned off." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def train(reader_train, generator, discriminator):\n", " X_real, X_fake, Z, G_trainer, D_trainer = \\\n", " build_graph(g_input_dim, d_input_dim, generator, discriminator)\n", "\n", " # print out loss for each model for upto 25 times\n", " print_frequency_mbsize = num_minibatches // 25\n", " \n", " print(\"First row is Generator loss, second row is Discriminator loss\")\n", " pp_G = C.logging.ProgressPrinter(print_frequency_mbsize)\n", " pp_D = C.logging.ProgressPrinter(print_frequency_mbsize)\n", "\n", " k = 2\n", "\n", " input_map = {X_real: reader_train.streams.features}\n", " for train_step in range(num_minibatches):\n", "\n", " # train the discriminator model for k steps\n", " for gen_train_step in range(k):\n", " Z_data = noise_sample(minibatch_size)\n", " X_data = reader_train.next_minibatch(minibatch_size, input_map)\n", " if X_data[X_real].num_samples == Z_data.shape[0]:\n", " batch_inputs = {X_real: X_data[X_real].data, Z: Z_data}\n", " D_trainer.train_minibatch(batch_inputs)\n", "\n", " # train the generator model for a single step\n", " Z_data = noise_sample(minibatch_size)\n", " batch_inputs = {Z: Z_data}\n", "\n", " G_trainer.train_minibatch(batch_inputs)\n", " G_trainer.train_minibatch(batch_inputs)\n", "\n", " pp_G.update_with_trainer(G_trainer)\n", " pp_D.update_with_trainer(D_trainer)\n", "\n", " G_trainer_loss = G_trainer.previous_minibatch_loss_average\n", "\n", " return Z, X_fake, G_trainer_loss" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Generator input shape: (100,)\n", "h0 shape (1024,)\n", "h1 shape (128, 7, 7)\n", "h2 shape (128, 14, 14)\n", "h3 shape : (1, 28, 28)\n", "Discriminator convolution input shape (784,)\n", "h0 shape : (1, 12, 12)\n", "h1 shape : (64, 4, 4)\n", "h2 shape : (1024,)\n", "h3 shape : (1,)\n", "First row is Generator loss, second row is Discriminator loss\n", " Minibatch[ 1- 200]: loss = 1.724305 * 25600;\n", " Minibatch[ 1- 200]: loss = 1.164579 * 25600;\n", " Minibatch[ 201- 400]: loss = 1.738649 * 25600;\n", " Minibatch[ 201- 400]: loss = 1.190806 * 25600;\n", " Minibatch[ 401- 600]: loss = 1.743701 * 25600;\n", " Minibatch[ 401- 600]: loss = 1.178363 * 25600;\n", " Minibatch[ 601- 800]: loss = 1.752785 * 25600;\n", " Minibatch[ 601- 800]: loss = 1.173294 * 25600;\n", " Minibatch[ 801-1000]: loss = 1.750716 * 25600;\n", " Minibatch[ 801-1000]: loss = 1.159751 * 25600;\n", " Minibatch[1001-1200]: loss = 1.752001 * 25600;\n", " Minibatch[1001-1200]: loss = 1.162093 * 25600;\n", " Minibatch[1201-1400]: loss = 1.755410 * 25600;\n", " Minibatch[1201-1400]: loss = 1.162755 * 25600;\n", " Minibatch[1401-1600]: loss = 1.757578 * 25600;\n", " Minibatch[1401-1600]: loss = 1.157969 * 25600;\n", " Minibatch[1601-1800]: loss = 1.760176 * 25600;\n", " Minibatch[1601-1800]: loss = 1.169943 * 25600;\n", " Minibatch[1801-2000]: loss = 1.752263 * 25600;\n", " Minibatch[1801-2000]: loss = 1.174252 * 25600;\n", " Minibatch[2001-2200]: loss = 1.754073 * 25600;\n", " Minibatch[2001-2200]: loss = 1.182062 * 25600;\n", " Minibatch[2201-2400]: loss = 1.753659 * 25600;\n", " Minibatch[2201-2400]: loss = 1.191013 * 25600;\n", " Minibatch[2401-2600]: loss = 1.744683 * 25600;\n", " Minibatch[2401-2600]: loss = 1.204642 * 25600;\n", " Minibatch[2601-2800]: loss = 1.739423 * 25600;\n", " Minibatch[2601-2800]: loss = 1.210787 * 25600;\n", " Minibatch[2801-3000]: loss = 1.741835 * 25600;\n", " Minibatch[2801-3000]: loss = 1.211336 * 25600;\n", " Minibatch[3001-3200]: loss = 1.738885 * 25600;\n", " Minibatch[3001-3200]: loss = 1.214446 * 25600;\n", " Minibatch[3201-3400]: loss = 1.737622 * 25600;\n", " Minibatch[3201-3400]: loss = 1.219743 * 25600;\n", " Minibatch[3401-3600]: loss = 1.738669 * 25600;\n", " Minibatch[3401-3600]: loss = 1.209985 * 25600;\n", " Minibatch[3601-3800]: loss = 1.746416 * 25600;\n", " Minibatch[3601-3800]: loss = 1.203059 * 25600;\n", " Minibatch[3801-4000]: loss = 1.745153 * 25600;\n", " Minibatch[3801-4000]: loss = 1.232357 * 25600;\n", " Minibatch[4001-4200]: loss = 1.725411 * 25600;\n", " Minibatch[4001-4200]: loss = 1.251152 * 25600;\n", " Minibatch[4201-4400]: loss = 1.731132 * 25600;\n", " Minibatch[4201-4400]: loss = 1.241505 * 25600;\n", " Minibatch[4401-4600]: loss = 1.737252 * 25600;\n", " Minibatch[4401-4600]: loss = 1.232204 * 25600;\n", " Minibatch[4601-4800]: loss = 1.735165 * 25600;\n", " Minibatch[4601-4800]: loss = 1.233294 * 25600;\n", " Minibatch[4801-5000]: loss = 1.732835 * 25600;\n", " Minibatch[4801-5000]: loss = 1.228176 * 25600;\n" ] } ], "source": [ "reader_train = create_reader(train_file, True, d_input_dim, label_dim=10)\n", "\n", "# G_input, G_output, G_trainer_loss = train(reader_train, dense_generator, dense_discriminator)\n", "G_input, G_output, G_trainer_loss = train(reader_train,\n", " convolutional_generator,\n", " convolutional_discriminator)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Training loss of the generator is: 1.77\n" ] } ], "source": [ "# Print the generator loss \n", "print(\"Training loss of the generator is: {0:.2f}\".format(G_trainer_loss))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Generating Fake (Synthetic) Images\n", "\n", "Now that we have trained the model, we can create fake images simply by feeding random noise into the generator and displaying the outputs. Below are a few images generated from random samples. To get a new set of samples, you can re-run the last cell." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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\ngUBQQPwLDqIRXWawpCQAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def plot_images(images, subplot_shape):\n", " plt.style.use('ggplot')\n", " fig, axes = plt.subplots(*subplot_shape)\n", " for image, ax in zip(images, axes.flatten()):\n", " ax.imshow(image.reshape(28, 28), vmin=0, vmax=1.0, cmap='gray')\n", " ax.axis('off')\n", " plt.show()\n", "\n", "\n", "noise = noise_sample(36)\n", "images = G_output.eval({G_input: noise})\n", "plot_images(images, subplot_shape=[6, 6])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Larger number of iterations should generate more realistic looking MNIST images. A sampling of such generated images are shown below.\n", "\n", "![](http://www.cntk.ai/jup/cntk206B_dcgan_result.jpg)\n", "\n", "**Note**: It takes a large number of iterations to capture a representation of the real world signal. Even simple dense networks can be quite effective in modelling data albeit MNIST is a relatively simple dataset as well." ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "**Suggested Task**\n", "\n", "- Please refer to several hacks presented in this [article](https://github.com/soumith/ganhacks) by Soumith Chintala, Facebook Research. While some of the hacks have been incorporated in this notebook, there are several others I would suggest that you try out.\n", "\n", "- Performance is a key aspect to deep neural networks training. Study how the changing the minibatch sizes impact the performance both with regards to quality of the generated images and the time it takes to train a model.\n", "\n", "- Try generating fake images using the CIFAR-10 data set as the training data. How does the network above performs? There are other variation in GAN, such as [conditional GAN](https://arxiv.org/pdf/1411.1784.pdf) where the network is additionally conditioned on the input label. Try implementing the labels.\n" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.4" } }, "nbformat": 4, "nbformat_minor": 1 }