{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# CNN GAN for MNIST (PyTorch)\n", "Sam Greydanus. 23 April 2017. MIT License." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "% matplotlib inline\n", "import torch\n", "import torch.nn as nn\n", "import torch.nn.functional as F\n", "from torch.autograd import Variable\n", "\n", "from torchvision import datasets, models, transforms, utils\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import os" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Hyperparameters" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "batch_size = 64\n", "G_lr = D_lr = 1e-3\n", "global_step = 0\n", "print_every = 1000\n", "total_steps = 10000\n", "cost_func = nn.BCELoss()\n", "\n", "D_ent = 100\n", "D_side = 28\n", "D_img = D_side**2\n", "D_hidden = 128" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Dataloader" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "modes = ['train', 'val']\n", "trans = transforms.Compose([transforms.ToTensor(),]) # transforms.Normalize((0.1307,), (0.3081,))\n", "dsets = {k: datasets.MNIST('./data', train=k=='train', download=True, transform=trans) for k in modes}\n", "loaders = {k: torch.utils.data.DataLoader(dsets[k], batch_size=batch_size, shuffle=True) for k in modes}\n", "\n", "def entropy():\n", " return Variable(torch.randn(batch_size, D_ent))\n", "\n", "def mnist():\n", " data = next(iter(loaders['train']))[0]\n", " return Variable(data).resize(batch_size, D_img)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Inspect data" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def imshow(inp, c, save=False, title=None):\n", " \"\"\"Imshow for Tensor.\"\"\"\n", " fig = plt.figure(figsize=(5, 5))\n", " inp = inp.numpy().transpose((1, 2, 0))\n", " plt.imshow(inp)\n", " \n", " plt.title(title) if title is not None else plt.title(str(c).zfill(3))\n", " if save:\n", " if not os.path.exists('cnn-out/'):\n", " os.makedirs('cnn-out/')\n", " plt.savefig('cnn-out/{}.png'.format(str(c).zfill(3)), bbox_inches='tight')\n", " plt.close(fig)\n", "\n", "inputs = mnist().data.resize_(batch_size,1,D_side,D_side)\n", "out = utils.make_grid(inputs)\n", "imshow(out, c=0, save=False, title=\"Real MNIST digits\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Build the discriminator (D) and generator (G) models" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# a generic CNN for MNIST, see github.com/pytorch/examples/blob/master/mnist/main.py\n", "class SimpleCNN(nn.Module):\n", " def __init__(self):\n", " super(SimpleCNN, self).__init__()\n", " self.conv1 = nn.Conv2d(1, 10, kernel_size=5)\n", " self.conv2 = nn.Conv2d(10, 20, kernel_size=5)\n", " self.conv2_drop = nn.Dropout2d()\n", " self.fc1 = nn.Linear(320, 50)\n", " self.fc2 = nn.Linear(50, 1)\n", "\n", " def forward(self, x):\n", " x = x.resize(batch_size,1,D_side,D_side)\n", " x = F.relu(F.max_pool2d(self.conv1(x), 2))\n", " x = F.relu(F.max_pool2d(self.conv2_drop(self.conv2(x)), 2))\n", " x = x.view(-1, 320)\n", " x = F.relu(self.fc1(x))\n", " x = F.dropout(x, training=self.training)\n", " x = self.fc2(x)\n", " return F.sigmoid(x)\n", " \n", "# a vanilla neural network with one hidden layer\n", "class SimpleNN(torch.nn.Module):\n", " def __init__(self, batch_size, input_dim, h_dim, output_dim):\n", " super(SimpleNN, self).__init__()\n", " self.W1 = nn.Parameter(torch.randn(input_dim, h_dim)*0.075)\n", " self.b1 = nn.Parameter(torch.randn(h_dim)*0.075)\n", " self.W2 = nn.Parameter(torch.randn(h_dim, output_dim)*0.075)\n", " self.b2 = nn.Parameter(torch.randn(output_dim)*0.075)\n", "\n", " def forward(self, X):\n", " h = F.relu(X.mm(self.W1) + self.b1.repeat(X.size(0), 1))\n", " return F.sigmoid(h.mm(self.W2) + self.b2.repeat(X.size(0), 1))\n", " \n", "D = SimpleCNN()\n", "G = SimpleNN(batch_size, D_ent, D_hidden, D_img)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Train adversarially\n", "Takes ~30 min to train on my MacBook" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "step 0: D loss: 1.3656; G loss: 0.7058\n", "step 1000: D loss: 0.0275; G loss: 6.5377\n", "step 2000: D loss: 0.3350; G loss: 3.9516\n", "step 3000: D loss: 0.1815; G loss: 4.3599\n", "step 4000: D loss: 0.0937; G loss: 5.0155\n", "step 5000: D loss: 0.2620; G loss: 3.6297\n", "step 6000: D loss: 0.3114; G loss: 3.4611\n", "step 7000: D loss: 0.2136; G loss: 3.4059\n", "step 8000: D loss: 0.1648; G loss: 2.8709\n", "step 9000: D loss: 0.2104; G loss: 2.9422\n" ] } ], "source": [ "optimizers = {'D': torch.optim.Adam(D.parameters(), lr=D_lr),\n", " 'G': torch.optim.Adam(G.parameters(), lr=G_lr)}\n", "ones_label = Variable(torch.ones(batch_size))\n", "zeros_label = Variable(torch.zeros(batch_size))\n", "\n", "# generic train loop\n", "for global_step in range(global_step, total_steps+global_step):\n", " \n", " # ======== DISCRIMINATOR STEP ======== #\n", " # forward\n", " z = entropy() ; X = mnist()\n", " G_sample = G(z)\n", " D_real = D(X)\n", " D_fake = D(G_sample)\n", "\n", " # backward\n", " D_loss_real = cost_func(D_real, ones_label)\n", " D_loss_fake = cost_func(D_fake, zeros_label)\n", " D_loss = D_loss_real + D_loss_fake\n", " D_loss.backward()\n", " optimizers['D'].step()\n", " [o.zero_grad() for o in optimizers.values()]\n", " \n", " # ======== GENERATOR STEP ======== #\n", " # forward\n", " z = entropy()\n", " G_sample = G(z)\n", " D_fake = D(G_sample)\n", " \n", " # backward\n", " G_loss = cost_func(D_fake, ones_label)\n", " G_loss.backward()\n", " optimizers['G'].step()\n", " [o.zero_grad() for o in optimizers.values()]\n", "\n", " # ======== DISPLAY PROGRESS ======== #\n", " if global_step % print_every == 0:\n", " print('step {}: D loss: {:.4f}; G loss: {:.4f}'\n", " .format(global_step, D_loss.data.numpy()[0], G_loss.data.numpy()[0]))\n", " \n", " samples = G(entropy()).data.resize_(batch_size,1,D_side,D_side)\n", " samples = utils.make_grid(samples)\n", " imshow(samples, c = global_step // print_every, save=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Inspect results\n", "Something's fishy here. They are all 1's! Converging to a subspace of possible solutions is not uncommon for GANs. It's probably worth reading https://arxiv.org/abs/1701.00160 in more detail..." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nprEzMTHpEPx/dVhQK6qbdnQAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "samples = G(entropy()).data.resize_(batch_size,1,D_side,D_side)\n", "samples = utils.make_grid(samples)\n", "imshow(samples, c = global_step // print_every, save=False,\n", " title=\"Fake MNIST digits ({} train steps)\".format(global_step))" ] } ], "metadata": { "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.6.1" } }, "nbformat": 4, "nbformat_minor": 2 }