├── .gitignore ├── .gitignore~ ├── Animation ├── .floydexpt ├── .floydignore └── c-dcgan.ipynb ├── Emoji └── c-dcgan.ipynb ├── README.md └── assets ├── loss.png ├── man.png ├── output_17_5.png ├── output_22_1.png ├── sampled.png ├── train_100.gif └── woman.png /.gitignore: -------------------------------------------------------------------------------- 1 | /Emoji/data 2 | /Animation/data 3 | .ipynb_checkpoints 4 | /Emoji/*.pt 5 | /Animation/*.pt 6 | -------------------------------------------------------------------------------- /.gitignore~: -------------------------------------------------------------------------------- 1 | /data 2 | .ipynb_checkpoints 3 | *.pt 4 | -------------------------------------------------------------------------------- /Animation/.floydexpt: -------------------------------------------------------------------------------- 1 | {"family_id": "ZcZ7fYUjxV5X4bA3dhEa5E", "namespace": "ista2k16", "name": "cdcgan"} -------------------------------------------------------------------------------- /Animation/.floydignore: -------------------------------------------------------------------------------- 1 | 2 | # Directories and files to ignore when uploading code to floyd 3 | 4 | .git 5 | .eggs 6 | eggs 7 | lib 8 | lib64 9 | parts 10 | sdist 11 | var 12 | *.pyc 13 | *.swp 14 | .DS_Store 15 | -------------------------------------------------------------------------------- /Emoji/c-dcgan.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": { 7 | "collapsed": true 8 | }, 9 | "outputs": [], 10 | "source": [ 11 | "import torch\n", 12 | "from torchvision import transforms, datasets\n", 13 | "import matplotlib.pyplot as plt\n", 14 | "import numpy as np" 15 | ] 16 | }, 17 | { 18 | "cell_type": "code", 19 | "execution_count": 2, 20 | "metadata": { 21 | "collapsed": true 22 | }, 23 | "outputs": [], 24 | "source": [ 25 | "data_transform = transforms.Compose([transforms.ToTensor()])" 26 | ] 27 | }, 28 | { 29 | "cell_type": "code", 30 | "execution_count": 3, 31 | "metadata": { 32 | "collapsed": true 33 | }, 34 | "outputs": [], 35 | "source": [ 36 | "train_dataset = datasets.ImageFolder(root='./data/train/', transform=data_transform)" 37 | ] 38 | }, 39 | { 40 | "cell_type": "code", 41 | "execution_count": 4, 42 | "metadata": { 43 | "collapsed": true 44 | }, 45 | "outputs": [], 46 | "source": [ 47 | "dataset_loader = torch.utils.data.DataLoader(train_dataset, batch_size=16, shuffle=True, num_workers=4)" 48 | ] 49 | }, 50 | { 51 | "cell_type": "code", 52 | "execution_count": 28, 53 | "metadata": {}, 54 | "outputs": [ 55 | { 56 | "data": { 57 | "image/png": "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\n", 58 | "text/plain": [ 59 | "" 60 | ] 61 | }, 62 | "metadata": {}, 63 | "output_type": "display_data" 64 | } 65 | ], 66 | "source": [ 67 | "%matplotlib inline\n", 68 | "first_batch, _ = next(iter(dataset_loader)) # retrieve the first batch\n", 69 | "fig = plt.figure(figsize=(12, 6))\n", 70 | "for row in range(1, 4): # show 3 rows\n", 71 | " for col in range(1, 4): # show 3 columns\n", 72 | " index = 6 * (row - 1) + col\n", 73 | " image = first_batch[index - 1, 0, :] # retrieve images as (28, 28) tensors\n", 74 | " #print image.shape\n", 75 | " fig.add_subplot(3, 6, index)\n", 76 | " #index = torch.LongTensor([1,2,0])\n", 77 | " #image[index]=image\n", 78 | " plt.imshow(image)\n", 79 | "\n", 80 | " plt.axis('off')\n", 81 | "plt.show()" 82 | ] 83 | }, 84 | { 85 | "cell_type": "code", 86 | "execution_count": 37, 87 | "metadata": { 88 | "collapsed": true 89 | }, 90 | "outputs": [], 91 | "source": [ 92 | "from torchsummary import summary\n", 93 | "import torch \n", 94 | "import torch.nn as nn\n", 95 | "from torch.autograd import Variable\n", 96 | "import torch.nn.functional as F" 97 | ] 98 | }, 99 | { 100 | "cell_type": "code", 101 | "execution_count": 10, 102 | "metadata": {}, 103 | "outputs": [ 104 | { 105 | "name": "stdout", 106 | "output_type": "stream", 107 | "text": [ 108 | "Collecting torchsummary\n", 109 | " Downloading https://files.pythonhosted.org/packages/aa/aa/0677e1fe3ea8b4503dc7bcf40cfd4fa41e54df620e5db98b56497c2efbd4/torchsummary-1.1-py3-none-any.whl\n", 110 | "Installing collected packages: torchsummary\n", 111 | "Successfully installed torchsummary-1.1\n", 112 | "\u001b[33mYou are using pip version 9.0.1, however version 10.0.1 is available.\n", 113 | "You should consider upgrading via the 'pip install --upgrade pip' command.\u001b[0m\n" 114 | ] 115 | } 116 | ], 117 | "source": [ 118 | "!pip install torchsummary" 119 | ] 120 | }, 121 | { 122 | "cell_type": "code", 123 | "execution_count": 76, 124 | "metadata": { 125 | "collapsed": true 126 | }, 127 | "outputs": [], 128 | "source": [ 129 | "class Generator(nn.Module):\n", 130 | " \n", 131 | " def __init__(self):\n", 132 | " super(Generator,self).__init__()\n", 133 | " self.DCV1_data = nn.ConvTranspose2d(in_channels=100, out_channels=256, kernel_size=4, stride=1, padding=0)\n", 134 | " self.BN1_data = nn.BatchNorm2d(256)\n", 135 | " self.DCV1_label = nn.ConvTranspose2d(in_channels=2, out_channels=256, kernel_size=4, stride=1, padding=0)\n", 136 | " self.BN1_label = nn.BatchNorm2d(256)\n", 137 | " self.DCV2 = nn.ConvTranspose2d(512, 256, 4, 2, 1)\n", 138 | " self.BN2 = nn.BatchNorm2d(256)\n", 139 | " self.DCV3 = nn.ConvTranspose2d(256, 128, 4, 2, 1)\n", 140 | " self.BN3 = nn.BatchNorm2d(128)\n", 141 | " self.DCV4 = nn.ConvTranspose2d(128, 64, 4, 2, 1)\n", 142 | " self.BN4 = nn.BatchNorm2d(64)\n", 143 | " self.DCV5 = nn.ConvTranspose2d(64, 3, 4, 2, 1)\n", 144 | " \n", 145 | " def forward(self, inputs, labels):\n", 146 | " '''\n", 147 | " input size: (batch_size, 100, 1, 1)\n", 148 | " outputs size: (batch_size, 1, 32, 32)\n", 149 | " ''' \n", 150 | " # Deconv 1 for data\n", 151 | " x = self.DCV1_data(inputs)\n", 152 | " x = self.BN1_data(x)\n", 153 | " x = F.leaky_relu(x, negative_slope=0.2)\n", 154 | "\n", 155 | " # Deconv 1 for label\n", 156 | " y = self.DCV1_label(labels)\n", 157 | " y = self.BN1_label(y)\n", 158 | " y = F.leaky_relu(y, negative_slope=0.2)\n", 159 | "\n", 160 | " #concat data and label\n", 161 | " x = torch.cat((x, y), dim=1)\n", 162 | " \n", 163 | " # Deconv 2\n", 164 | " x = self.DCV2(x)\n", 165 | " x = self.BN2(x)\n", 166 | " x = F.leaky_relu(x, 0.2)\n", 167 | " \"\"\"intm=x[0][0].data.numpy()\n", 168 | " print ('conv 2: ',intm.shape)\n", 169 | " imgplot = plt.imshow(intm)\n", 170 | " plt.imshow(intm, cmap=plt.get_cmap('gray'))\n", 171 | " plt.show(),\"\"\"\n", 172 | " \n", 173 | " # Deconv 3\n", 174 | " x = self.DCV3(x)\n", 175 | " x = self.BN3(x)\n", 176 | " x = F.leaky_relu(x, 0.2)\n", 177 | " \"\"\"intm=x[0][0].data.numpy()\n", 178 | " print ('conv 2: ',intm.shape)\n", 179 | " imgplot = plt.imshow(intm)\n", 180 | " plt.imshow(intm, cmap=plt.get_cmap('gray'))\n", 181 | " plt.show(),\"\"\"\n", 182 | " \n", 183 | " # Deconv 4\n", 184 | " x = self.DCV4(x)\n", 185 | " x = self.BN4(x)\n", 186 | " x = F.leaky_relu(x, 0.2)\n", 187 | " \"\"\"intm=x[0][0].data.numpy()\n", 188 | " print ('Gen conv 4: ',intm.shape)\n", 189 | " imgplot = plt.imshow(intm)\n", 190 | " plt.imshow(intm, cmap=plt.get_cmap('gray'))\n", 191 | " plt.show(),\"\"\"\n", 192 | " \n", 193 | " # Deconv 5 + output\n", 194 | " x = self.DCV5(x)\n", 195 | " outputs = F.tanh(x)\n", 196 | " return outputs" 197 | ] 198 | }, 199 | { 200 | "cell_type": "code", 201 | "execution_count": 91, 202 | "metadata": { 203 | "collapsed": true 204 | }, 205 | "outputs": [], 206 | "source": [ 207 | "class Discriminator(nn.Module):\n", 208 | " \n", 209 | " def __init__(self):\n", 210 | " super(Discriminator,self).__init__()\n", 211 | " self.CV1_data = nn.Conv2d(in_channels=3, out_channels=64, kernel_size=4, stride=2, padding=1)\n", 212 | " self.CV1_label = nn.Conv2d(in_channels=2, out_channels=64, kernel_size=4, stride=2, padding=1)\n", 213 | " self.CV2 = nn.Conv2d(128, 256, 4, 2, 1)\n", 214 | " self.BN2 = nn.BatchNorm2d(256)\n", 215 | " self.CV3 = nn.Conv2d(256, 512, 4, 2, 1)\n", 216 | " self.BN3 = nn.BatchNorm2d(512)\n", 217 | " self.CV4 = nn.Conv2d(512, 1, 4)\n", 218 | "\n", 219 | " def forward(self, inputs, labels):\n", 220 | " '''\n", 221 | " input size: (batch_size, 3, 64, 64)\n", 222 | " outputs size: (batch_size, 1)\n", 223 | " '''\n", 224 | " \n", 225 | " # Conv 1_data\n", 226 | " x = self.CV1_data(inputs)\n", 227 | " x = F.leaky_relu(x, negative_slope=0.2)\n", 228 | " \"\"\"intm=x[0][0].data.numpy()\n", 229 | " print ('conv 2: ',intm.shape)\n", 230 | " imgplot = plt.imshow(intm)\n", 231 | " plt.imshow(intm, cmap=plt.get_cmap('gray'))\n", 232 | " plt.show(),\"\"\"\n", 233 | " \n", 234 | " # Conv 1_label\n", 235 | " y = self.CV1_label(labels)\n", 236 | " y = F.leaky_relu(y, negative_slope=0.2)\n", 237 | " \n", 238 | " # concat conv1_data and Conv1_label\n", 239 | " x = torch.cat((x, y), dim=1) \n", 240 | " \n", 241 | " \n", 242 | " # Conv 2\n", 243 | " x = self.CV2(x)\n", 244 | " x = self.BN2(x)\n", 245 | " x = F.leaky_relu(x, 0.2)\n", 246 | " \"\"\"intm=x[0][0].data.numpy()\n", 247 | " print ('conv 2: ',intm.shape)\n", 248 | " imgplot = plt.imshow(intm)\n", 249 | " plt.imshow(intm, cmap=plt.get_cmap('gray'))\n", 250 | " plt.show(),\"\"\"\n", 251 | " \n", 252 | " #Concat output of conv1 and conv2\n", 253 | " \n", 254 | " \n", 255 | " # Conv 3\n", 256 | " x = self.CV3(x)\n", 257 | " x = self.BN3(x)\n", 258 | " x = F.leaky_relu(x, 0.2)\n", 259 | " \"\"\"intm=x[0][0].data.numpy()\n", 260 | " print ('conv 2: ',intm.shape)\n", 261 | " imgplot = plt.imshow(intm)\n", 262 | " plt.imshow(intm, cmap=plt.get_cmap('gray'))\n", 263 | " plt.show(),\"\"\"\n", 264 | " \n", 265 | " # Conv 4 + output\n", 266 | " x = self.CV4(x)\n", 267 | " outputs = F.sigmoid(x) # at this point outputs has size (batch_size, 1, 1, 1) need to resize!\n", 268 | " outputs = outputs.view(-1, 1) # resize to (batch_size, 1)\n", 269 | " return outputs" 270 | ] 271 | }, 272 | { 273 | "cell_type": "code", 274 | "execution_count": 92, 275 | "metadata": { 276 | "collapsed": true 277 | }, 278 | "outputs": [], 279 | "source": [ 280 | "# def model\n", 281 | "G = Generator()#.cuda()\n", 282 | "D = Discriminator()#.cuda()\n", 283 | "\n", 284 | "# this is efficient and reduces some time\n", 285 | "#G = nn.DataParallel(G)\n", 286 | "#D = nn.DataParallel(D)\n", 287 | "\n", 288 | "# def Adam optimizer\n", 289 | "G_optimizer = torch.optim.Adam(G.parameters(), lr=0.0002, betas=(0.5, 0.999)) #betas is widely used for adamoptim\n", 290 | "D_optimizer = torch.optim.Adam(D.parameters(), lr=0.0002, betas=(0.5, 0.999))\n", 291 | "\n", 292 | "# loss\n", 293 | "criterion = nn.BCELoss()" 294 | ] 295 | }, 296 | { 297 | "cell_type": "code", 298 | "execution_count": 93, 299 | "metadata": { 300 | "scrolled": false 301 | }, 302 | "outputs": [ 303 | { 304 | "name": "stdout", 305 | "output_type": "stream", 306 | "text": [ 307 | "Discriminator(\n", 308 | " (CV1_data): Conv2d(3, 64, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1))\n", 309 | " (CV1_label): Conv2d(2, 64, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1))\n", 310 | " (CV2): Conv2d(128, 256, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1))\n", 311 | " (BN2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True)\n", 312 | " (CV3): Conv2d(256, 512, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1))\n", 313 | " (BN3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True)\n", 314 | " (CV4): Conv2d(512, 1, kernel_size=(4, 4), stride=(1, 1))\n", 315 | ")\n" 316 | ] 317 | } 318 | ], 319 | "source": [ 320 | "print D\n", 321 | "#paramss=[(3,4]\n", 322 | "#print summary(D,(3,64,64))" 323 | ] 324 | }, 325 | { 326 | "cell_type": "code", 327 | "execution_count": 94, 328 | "metadata": { 329 | "scrolled": true 330 | }, 331 | "outputs": [ 332 | { 333 | "name": "stdout", 334 | "output_type": "stream", 335 | "text": [ 336 | "Generator(\n", 337 | " (DCV1_data): ConvTranspose2d(100, 256, kernel_size=(4, 4), stride=(1, 1))\n", 338 | " (BN1_data): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True)\n", 339 | " (DCV1_label): ConvTranspose2d(2, 256, kernel_size=(4, 4), stride=(1, 1))\n", 340 | " (BN1_label): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True)\n", 341 | " (DCV2): ConvTranspose2d(512, 256, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1))\n", 342 | " (BN2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True)\n", 343 | " (DCV3): ConvTranspose2d(256, 128, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1))\n", 344 | " (BN3): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True)\n", 345 | " (DCV4): ConvTranspose2d(128, 64, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1))\n", 346 | " (BN4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True)\n", 347 | " (DCV5): ConvTranspose2d(64, 3, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1))\n", 348 | ")\n" 349 | ] 350 | } 351 | ], 352 | "source": [ 353 | "print G\n", 354 | "#print(summary(G, (100, 1, 1)))" 355 | ] 356 | }, 357 | { 358 | "cell_type": "code", 359 | "execution_count": 109, 360 | "metadata": { 361 | "scrolled": true 362 | }, 363 | "outputs": [], 364 | "source": [ 365 | "batch_size = 16\n", 366 | "\n", 367 | "one_hot = torch.zeros((2, 2))\n", 368 | "one_hot = one_hot.scatter_(1, torch.LongTensor(range(2)).view(2, 1), 1).view(2, 2, 1, 1)\n", 369 | "\n", 370 | "fill = torch.zeros((2, 2, 64, 64))\n", 371 | "for i in range(2):\n", 372 | " fill[i, i, :, :] = 1\n", 373 | "#print one_hot,fill\n" 374 | ] 375 | }, 376 | { 377 | "cell_type": "code", 378 | "execution_count": 113, 379 | "metadata": { 380 | "collapsed": true 381 | }, 382 | "outputs": [], 383 | "source": [ 384 | "def train_D(real_images, real_labels):\n", 385 | " # sample real images from dataset, wrap in Variable\n", 386 | " real_images = Variable(real_images)\n", 387 | " real_labels_fill=Variable(fill[real_labels])\n", 388 | "\n", 389 | " print real_labels.shape\n", 390 | " # sample fake images from generator\n", 391 | " noise = Variable(torch.randn(real_images.size()[0], 100, 1, 1))\n", 392 | " fake_labels = (torch.rand((real_labels.size()[0])) * 2).type(torch.LongTensor)\n", 393 | " fake_labels_one_hot = Variable(one_hot[fake_labels])\n", 394 | " fake_labels_fill = Variable(fill[fake_labels])\n", 395 | " \n", 396 | " fake_images = G.forward(noise,fake_labels_one_hot)\n", 397 | " fake_labels = Variable(fake_labels)\n", 398 | " # D optimizer grad\n", 399 | " D_optimizer.zero_grad() \n", 400 | "\n", 401 | " # forward prop\n", 402 | " real_outputs = D.forward(real_images,real_labels_fill)\n", 403 | " fake_outputs = D.forward(fake_images,fake_labels_fill)\n", 404 | " \n", 405 | " # target labes for GAN \n", 406 | " y_ones = Variable(torch.ones((real_labels.size()[0], 1)))\n", 407 | " y_zeros = Variable(torch.zeros((real_labels.size()[0], 1)))\n", 408 | " \n", 409 | " print fake_images.shape\n", 410 | " print fake_outputs.shape\n", 411 | " # loss formula , backprop and update params\n", 412 | " D_loss = criterion(real_outputs, y_ones) + criterion(fake_outputs, y_zeros)\n", 413 | " # backprop\n", 414 | " D_loss.backward()\n", 415 | " # update params\n", 416 | " D_optimizer.step()\n", 417 | " \n", 418 | " return D_loss.data[0] # return the loss of this minibatch" 419 | ] 420 | }, 421 | { 422 | "cell_type": "code", 423 | "execution_count": 97, 424 | "metadata": { 425 | "collapsed": true 426 | }, 427 | "outputs": [], 428 | "source": [ 429 | "def train_G(real_labels):\n", 430 | " # sample fake images\n", 431 | " noise = Variable(torch.randn(real_labels.size()[0], 100, 1, 1))\n", 432 | " fake_labels = (torch.rand((real_labels.size()[0])) * 2).type(torch.LongTensor)\n", 433 | " fake_labels_one_hot = Variable(one_hot[fake_labels])\n", 434 | " fake_labels_fill = Variable(fill[fake_labels]) \n", 435 | " \n", 436 | " fake_images = G.forward(noise,fake_labels_one_hot)\n", 437 | "\n", 438 | " # G optimizer grad\n", 439 | " G_optimizer.zero_grad()\n", 440 | " \n", 441 | " # foward prop\n", 442 | " fake_outputs = D.forward(fake_images,fake_labels_fill)\n", 443 | " \n", 444 | " # Gan target\n", 445 | " y_ones = Variable(torch.ones((real_labels.size()[0], 1)))\n", 446 | " \n", 447 | " # loss formaula\n", 448 | " G_loss = criterion(fake_outputs, y_ones)\n", 449 | " # backprop \n", 450 | " G_loss.backward()\n", 451 | " # update params\n", 452 | " G_optimizer.step()\n", 453 | " \n", 454 | " return G_loss.data[0]" 455 | ] 456 | }, 457 | { 458 | "cell_type": "code", 459 | "execution_count": 98, 460 | "metadata": { 461 | "collapsed": true 462 | }, 463 | "outputs": [], 464 | "source": [ 465 | "def plot_fake_images(noise):\n", 466 | " '''\n", 467 | " Plot 2 images of man and woman in a row with given noise.\n", 468 | " Inputs:\n", 469 | " z -- FloatTensor (10, 100, 1, 1), noise tensor;\n", 470 | " '''\n", 471 | " \n", 472 | " # forward prop\n", 473 | " y = torch.LongTensor(range(2))\n", 474 | " y_one_hot = Variable(one_hot[y])\n", 475 | " x = G.forward(noise, y_one_hot)\n", 476 | " #print y.shape,x.shape\n", 477 | " \n", 478 | " # plot images\n", 479 | " fig = plt.figure(figsize=(12, 1.5))\n", 480 | " for col in range(1, 2):\n", 481 | " img = x[col - 1, 0, :, :] # retrieve images as (32, 32) Tensors\n", 482 | " fig.add_subplot(1, 2, col)\n", 483 | " #ind= [1,2,0]\n", 484 | " #img[index]=img\n", 485 | " plt.imshow(img.data)\n", 486 | " plt.axis('off')\n", 487 | " \n", 488 | " plt.show()\n", 489 | " return" 490 | ] 491 | }, 492 | { 493 | "cell_type": "code", 494 | "execution_count": 111, 495 | "metadata": { 496 | "collapsed": true 497 | }, 498 | "outputs": [], 499 | "source": [ 500 | "epoch_max=1\n", 501 | "def train(epoch_max, batch_size):\n", 502 | " # logger recording the average batch loss per each epoch\n", 503 | " G_log = []\n", 504 | " D_log = []\n", 505 | " \n", 506 | " # fixed noise to check the working \n", 507 | " fixed_noise = Variable(torch.randn((2, 100, 1, 1)))\n", 508 | " \n", 509 | " for epoch in range(epoch_max):\n", 510 | " # logger recording the losses for each minibatch in this epoch\n", 511 | " G_batch_loss = []\n", 512 | " D_batch_loss = []\n", 513 | " \n", 514 | " for batch, (real_images, real_labels) in enumerate(dataset_loader): # enumerate through minibatches\n", 515 | " \n", 516 | " #print('mini-batch : ' + str(batch))\n", 517 | " # generate labels to min-batch_size\n", 518 | " print real_labels.shape\n", 519 | " print real_images.shape\n", 520 | " #break\n", 521 | " #real_labels = Variable(torch.ones(real_images.size()[0], 1))\n", 522 | " #fake_labels = Variable(torch.zeros(real_images.size()[0], 1))\n", 523 | " \n", 524 | " # train discriminator\n", 525 | " D_loss = train_D(real_images, real_labels)\n", 526 | " \n", 527 | " # train generator\n", 528 | " G_loss = train_G(real_labels)\n", 529 | " \n", 530 | " # add batch losses to logger\n", 531 | " D_batch_loss.append(D_loss)\n", 532 | " G_batch_loss.append(G_loss)\n", 533 | " \n", 534 | " #compute average loss of this epoch\n", 535 | " G_log.append(sum(G_batch_loss) / len(G_batch_loss))\n", 536 | " D_log.append(sum(D_batch_loss) / len(D_batch_loss))\n", 537 | " \n", 538 | " # for selected epochs, show 5 generated images\n", 539 | " epoch_list = [0, 2, 5, 8, 9]#, 15, 25, 40, 75, 100, 125, 150, 165, 180, 190, 196, 198, 199]\n", 540 | " if epoch in epoch_list:\n", 541 | " print('Epoch %d, G_loss: %.3f, D_loss = %.3f' % \\\n", 542 | " (epoch , G_log[epoch], D_log[epoch]))\n", 543 | " plot_fake_images(fixed_noise)\n", 544 | "\n", 545 | " return G_log, D_log" 546 | ] 547 | }, 548 | { 549 | "cell_type": "code", 550 | "execution_count": 114, 551 | "metadata": { 552 | "scrolled": false 553 | }, 554 | "outputs": [ 555 | { 556 | "name": "stdout", 557 | "output_type": "stream", 558 | "text": [ 559 | "torch.Size([16])\n", 560 | "torch.Size([16, 3, 64, 64])\n", 561 | "torch.Size([16])\n", 562 | "torch.Size([16, 3, 64, 64])\n", 563 | "torch.Size([400, 1])\n" 564 | ] 565 | }, 566 | { 567 | "ename": "ValueError", 568 | "evalue": "Target and input must have the same number of elements. target nelement (16) != input nelement (400)", 569 | "output_type": "error", 570 | "traceback": [ 571 | "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", 572 | "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", 573 | "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mtime\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mtime\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mstart_time\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtime\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0mG_log\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mD_log\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtrain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mepoch_max\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbatch_size\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 5\u001b[0m \u001b[0melapsed_time\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtime\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0mstart_time\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;32mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Total time used: %d seconds'\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0melapsed_time\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 574 | "\u001b[0;32m\u001b[0m in \u001b[0;36mtrain\u001b[0;34m(epoch_max, batch_size)\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 25\u001b[0m \u001b[0;31m# train discriminator\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 26\u001b[0;31m \u001b[0mD_loss\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtrain_D\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreal_images\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreal_labels\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 27\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 28\u001b[0m \u001b[0;31m# train generator\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 575 | "\u001b[0;32m\u001b[0m in \u001b[0;36mtrain_D\u001b[0;34m(real_images, real_labels)\u001b[0m\n\u001b[1;32m 27\u001b[0m \u001b[0;32mprint\u001b[0m \u001b[0mfake_outputs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 28\u001b[0m \u001b[0;31m# loss formula , backprop and update params\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 29\u001b[0;31m \u001b[0mD_loss\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcriterion\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreal_outputs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_ones\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mcriterion\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfake_outputs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_zeros\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 30\u001b[0m \u001b[0;31m# backprop\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 31\u001b[0m \u001b[0mD_loss\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbackward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 576 | "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/torch/nn/modules/module.pyc\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *input, **kwargs)\u001b[0m\n\u001b[1;32m 355\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_slow_forward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0minput\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 356\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 357\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mforward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0minput\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 358\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhook\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_forward_hooks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalues\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 359\u001b[0m \u001b[0mhook_result\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhook\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minput\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 577 | "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/torch/nn/modules/loss.pyc\u001b[0m in \u001b[0;36mforward\u001b[0;34m(self, input, target)\u001b[0m\n\u001b[1;32m 428\u001b[0m \u001b[0m_assert_no_grad\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtarget\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 429\u001b[0m return F.binary_cross_entropy(input, target, weight=self.weight,\n\u001b[0;32m--> 430\u001b[0;31m size_average=self.size_average)\n\u001b[0m\u001b[1;32m 431\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 432\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", 578 | "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/torch/nn/functional.pyc\u001b[0m in \u001b[0;36mbinary_cross_entropy\u001b[0;34m(input, target, weight, size_average)\u001b[0m\n\u001b[1;32m 1190\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0minput\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnelement\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mtarget\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnelement\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1191\u001b[0m raise ValueError(\"Target and input must have the same number of elements. target nelement ({}) \"\n\u001b[0;32m-> 1192\u001b[0;31m \"!= input nelement ({})\".format(target.nelement(), input.nelement()))\n\u001b[0m\u001b[1;32m 1193\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1194\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mweight\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 579 | "\u001b[0;31mValueError\u001b[0m: Target and input must have the same number of elements. target nelement (16) != input nelement (400)" 580 | ] 581 | } 582 | ], 583 | "source": [ 584 | "# record time used\n", 585 | "from time import time\n", 586 | "start_time = time()\n", 587 | "G_log, D_log = train(epoch_max, batch_size)\n", 588 | "elapsed_time = time() - start_time\n", 589 | "print('Total time used: %d seconds' % elapsed_time)" 590 | ] 591 | }, 592 | { 593 | "cell_type": "code", 594 | "execution_count": 339, 595 | "metadata": { 596 | "collapsed": true 597 | }, 598 | "outputs": [], 599 | "source": [ 600 | "def plot_learning_curve(G_log, D_log):\n", 601 | " plt.figure(figsize=(10, 6))\n", 602 | " plt.plot(G_log, color='green', linewidth=2.5, linestyle='-', label='G loss')\n", 603 | " plt.plot(D_log, color='yellow', linewidth=2.5, linestyle='-', label='D loss')\n", 604 | " plt.legend(loc='upper right',frameon=True)\n", 605 | " return" 606 | ] 607 | }, 608 | { 609 | "cell_type": "code", 610 | "execution_count": 340, 611 | "metadata": {}, 612 | "outputs": [ 613 | { 614 | "name": "stdout", 615 | "output_type": "stream", 616 | "text": [ 617 | "[0.9073349420840924, 0.9008534550666809, 0.8908735467837408, 0.8713003144814417, 0.8254345105244563, 0.8807521279041584, 0.7839072598860815, 0.8542148012381333, 0.8455734207079961, 0.7861877450576196] [1.3443844134990985, 1.3774415071193988, 1.3157486365391657, 1.455425134071937, 1.4007978897828322, 1.4109169244766235, 1.361207549388592, 1.3831690549850464, 1.3855594579990094, 1.398268039409931]\n" 618 | ] 619 | }, 620 | { 621 | "data": { 622 | "image/png": "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\nWEmSJGXk/wPwZtDiaz/PWAAAAABJRU5ErkJggg==\n", 623 | "text/plain": [ 624 | "" 625 | ] 626 | }, 627 | "metadata": {}, 628 | "output_type": "display_data" 629 | } 630 | ], 631 | "source": [ 632 | "plot_learning_curve(G_log, D_log)\n", 633 | "print G_log,D_log" 634 | ] 635 | }, 636 | { 637 | "cell_type": "code", 638 | "execution_count": 341, 639 | "metadata": { 640 | "collapsed": true 641 | }, 642 | "outputs": [], 643 | "source": [ 644 | "torch.save(G.state_dict(), 'G_chk_emoj_10.pt')\n", 645 | "torch.save(D.state_dict(), 'D_chk_emoj_10.pt')" 646 | ] 647 | }, 648 | { 649 | "cell_type": "code", 650 | "execution_count": 342, 651 | "metadata": { 652 | "collapsed": true 653 | }, 654 | "outputs": [], 655 | "source": [ 656 | "G_net = Generator()\n", 657 | "D_net = Discriminator()\n", 658 | "D_net.load_state_dict(torch.load('D_chk_emoj_5.pt'))\n", 659 | "G_net.load_state_dict(torch.load('G_chk_emoj_5.pt'))" 660 | ] 661 | }, 662 | { 663 | "cell_type": "code", 664 | "execution_count": 343, 665 | "metadata": {}, 666 | "outputs": [ 667 | { 668 | "name": "stdout", 669 | "output_type": "stream", 670 | "text": [ 671 | "torch.Size([4, 4, 1, 1])\n", 672 | "torch.Size([4, 32, 32])\n" 673 | ] 674 | }, 675 | { 676 | "data": { 677 | "image/png": "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\nYII=\n", 678 | "text/plain": [ 679 | "" 680 | ] 681 | }, 682 | "metadata": {}, 683 | "output_type": "display_data" 684 | }, 685 | { 686 | "data": { 687 | "image/png": "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\n", 688 | "text/plain": [ 689 | "" 690 | ] 691 | }, 692 | "metadata": {}, 693 | "output_type": "display_data" 694 | }, 695 | { 696 | "data": { 697 | "image/png": "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\n", 698 | "text/plain": [ 699 | "" 700 | ] 701 | }, 702 | "metadata": {}, 703 | "output_type": "display_data" 704 | } 705 | ], 706 | "source": [ 707 | "\n", 708 | "from torchvision.utils import make_grid\n", 709 | "noise = torch.randn(4,100, 1, 1)\n", 710 | "noise = Variable(noise)\n", 711 | "y = torch.LongTensor(range(4))\n", 712 | "y_one_hot = Variable(one_hot[y])\n", 713 | "print y_one_hot.shape\n", 714 | "print real_labels_fill.shape\n", 715 | "fake_u=G_net(noise,y_one_hot)\n", 716 | "imgs = make_grid(fake_u.data*0.5+0.5)# CHW\n", 717 | "plt.figure(figsize=(5,5))\n", 718 | "plt.imshow(imgs.permute(1,2,0).numpy()) # HWC\n", 719 | "plt.show()\n", 720 | "for i in range(2):\n", 721 | " z = Variable(torch.randn((4, 100, 1, 1)))\n", 722 | " plot_fake_images(z)" 723 | ] 724 | }, 725 | { 726 | "cell_type": "code", 727 | "execution_count": 107, 728 | "metadata": {}, 729 | "outputs": [ 730 | { 731 | "name": "stdout", 732 | "output_type": "stream", 733 | "text": [ 734 | "Variable containing:\n", 735 | "( 0 , 0 ,.,.) = \n", 736 | " -1.4872\n", 737 | "\n", 738 | "( 0 , 1 ,.,.) = \n", 739 | " -0.3518\n", 740 | "\n", 741 | "( 0 , 2 ,.,.) = \n", 742 | " 0.1762\n", 743 | "\n", 744 | "( 0 , 3 ,.,.) = \n", 745 | " 0.5975\n", 746 | "\n", 747 | "( 0 , 4 ,.,.) = \n", 748 | " -0.8909\n", 749 | "\n", 750 | "( 0 , 5 ,.,.) = \n", 751 | " -0.5079\n", 752 | "\n", 753 | "( 0 , 6 ,.,.) = \n", 754 | " 0.0575\n", 755 | "\n", 756 | "( 0 , 7 ,.,.) = \n", 757 | " -0.1206\n", 758 | "\n", 759 | "( 0 , 8 ,.,.) = \n", 760 | " 0.8131\n", 761 | "\n", 762 | "( 0 , 9 ,.,.) = \n", 763 | " 0.6655\n", 764 | "\n", 765 | "( 0 ,10 ,.,.) = \n", 766 | " 0.0929\n", 767 | "\n", 768 | "( 0 ,11 ,.,.) = \n", 769 | " -0.4683\n", 770 | "\n", 771 | "( 0 ,12 ,.,.) = \n", 772 | " -0.0655\n", 773 | "\n", 774 | "( 0 ,13 ,.,.) = \n", 775 | " 0.2758\n", 776 | "\n", 777 | "( 0 ,14 ,.,.) = \n", 778 | " 0.4528\n", 779 | "\n", 780 | "( 0 ,15 ,.,.) = \n", 781 | " -0.4263\n", 782 | "\n", 783 | "( 0 ,16 ,.,.) = \n", 784 | " 0.9691\n", 785 | "\n", 786 | "( 0 ,17 ,.,.) = \n", 787 | " -1.2543\n", 788 | "\n", 789 | "( 0 ,18 ,.,.) = \n", 790 | " 2.3658\n", 791 | "\n", 792 | "( 0 ,19 ,.,.) = \n", 793 | " 0.1703\n", 794 | "\n", 795 | "( 0 ,20 ,.,.) = \n", 796 | " -1.9067\n", 797 | "\n", 798 | "( 0 ,21 ,.,.) = \n", 799 | " 0.9438\n", 800 | "\n", 801 | "( 0 ,22 ,.,.) = \n", 802 | " -0.9552\n", 803 | "\n", 804 | "( 0 ,23 ,.,.) = \n", 805 | " -1.1555\n", 806 | "\n", 807 | "( 0 ,24 ,.,.) = \n", 808 | " -0.7660\n", 809 | "\n", 810 | "( 0 ,25 ,.,.) = \n", 811 | " 1.6011\n", 812 | "\n", 813 | "( 0 ,26 ,.,.) = \n", 814 | " 0.2306\n", 815 | "\n", 816 | "( 0 ,27 ,.,.) = \n", 817 | " 0.9565\n", 818 | "\n", 819 | "( 0 ,28 ,.,.) = \n", 820 | " -0.6556\n", 821 | "\n", 822 | "( 0 ,29 ,.,.) = \n", 823 | " -1.6960\n", 824 | "\n", 825 | "( 0 ,30 ,.,.) = \n", 826 | " -0.1142\n", 827 | "\n", 828 | "( 0 ,31 ,.,.) = \n", 829 | " -0.2813\n", 830 | "\n", 831 | "( 0 ,32 ,.,.) = \n", 832 | " 0.6753\n", 833 | "\n", 834 | "( 0 ,33 ,.,.) = \n", 835 | " 0.9826\n", 836 | "\n", 837 | "( 0 ,34 ,.,.) = \n", 838 | " -0.9760\n", 839 | "\n", 840 | "( 0 ,35 ,.,.) = \n", 841 | " -1.1549\n", 842 | "\n", 843 | "( 0 ,36 ,.,.) = \n", 844 | " 0.6146\n", 845 | "\n", 846 | "( 0 ,37 ,.,.) = \n", 847 | " -1.2474\n", 848 | "\n", 849 | "( 0 ,38 ,.,.) = \n", 850 | " 1.1405\n", 851 | "\n", 852 | "( 0 ,39 ,.,.) = \n", 853 | " -1.2924\n", 854 | "\n", 855 | "( 0 ,40 ,.,.) = \n", 856 | " 1.3640\n", 857 | "\n", 858 | "( 0 ,41 ,.,.) = \n", 859 | " -0.7042\n", 860 | "\n", 861 | "( 0 ,42 ,.,.) = \n", 862 | " -0.1184\n", 863 | "\n", 864 | "( 0 ,43 ,.,.) = \n", 865 | " -0.1771\n", 866 | "\n", 867 | "( 0 ,44 ,.,.) = \n", 868 | " 0.6695\n", 869 | "\n", 870 | "( 0 ,45 ,.,.) = \n", 871 | " 1.4047\n", 872 | "\n", 873 | "( 0 ,46 ,.,.) = \n", 874 | " 0.1061\n", 875 | "\n", 876 | "( 0 ,47 ,.,.) = \n", 877 | " 0.1714\n", 878 | "\n", 879 | "( 0 ,48 ,.,.) = \n", 880 | " 1.2683\n", 881 | "\n", 882 | "( 0 ,49 ,.,.) = \n", 883 | " 1.9271\n", 884 | "\n", 885 | "( 0 ,50 ,.,.) = \n", 886 | " 0.5334\n", 887 | "\n", 888 | "( 0 ,51 ,.,.) = \n", 889 | " -1.4420\n", 890 | "\n", 891 | "( 0 ,52 ,.,.) = \n", 892 | " 0.8151\n", 893 | "\n", 894 | "( 0 ,53 ,.,.) = \n", 895 | " 1.9609\n", 896 | "\n", 897 | "( 0 ,54 ,.,.) = \n", 898 | " 0.8972\n", 899 | "\n", 900 | "( 0 ,55 ,.,.) = \n", 901 | " 0.2402\n", 902 | "\n", 903 | "( 0 ,56 ,.,.) = \n", 904 | " -0.9323\n", 905 | "\n", 906 | "( 0 ,57 ,.,.) = \n", 907 | " -2.3971\n", 908 | "\n", 909 | "( 0 ,58 ,.,.) = \n", 910 | " -0.3457\n", 911 | "\n", 912 | "( 0 ,59 ,.,.) = \n", 913 | " 0.0807\n", 914 | "\n", 915 | "( 0 ,60 ,.,.) = \n", 916 | " -0.9969\n", 917 | "\n", 918 | "( 0 ,61 ,.,.) = \n", 919 | " -0.3546\n", 920 | "\n", 921 | "( 0 ,62 ,.,.) = \n", 922 | " 0.2609\n", 923 | "\n", 924 | "( 0 ,63 ,.,.) = \n", 925 | " -0.0359\n", 926 | "\n", 927 | "( 0 ,64 ,.,.) = \n", 928 | " 1.1141\n", 929 | "\n", 930 | "( 0 ,65 ,.,.) = \n", 931 | " -0.1728\n", 932 | "\n", 933 | "( 0 ,66 ,.,.) = \n", 934 | " -0.3276\n", 935 | "\n", 936 | "( 0 ,67 ,.,.) = \n", 937 | " -2.2246\n", 938 | "\n", 939 | "( 0 ,68 ,.,.) = \n", 940 | " 1.0567\n", 941 | "\n", 942 | "( 0 ,69 ,.,.) = \n", 943 | " 0.1149\n", 944 | "\n", 945 | "( 0 ,70 ,.,.) = \n", 946 | " 0.3247\n", 947 | "\n", 948 | "( 0 ,71 ,.,.) = \n", 949 | " -0.3100\n", 950 | "\n", 951 | "( 0 ,72 ,.,.) = \n", 952 | " 2.0584\n", 953 | "\n", 954 | "( 0 ,73 ,.,.) = \n", 955 | " 1.1825\n", 956 | "\n", 957 | "( 0 ,74 ,.,.) = \n", 958 | " -0.8062\n", 959 | "\n", 960 | "( 0 ,75 ,.,.) = \n", 961 | " -0.0639\n", 962 | "\n", 963 | "( 0 ,76 ,.,.) = \n", 964 | " 0.6006\n", 965 | "\n", 966 | "( 0 ,77 ,.,.) = \n", 967 | " -0.6002\n", 968 | "\n", 969 | "( 0 ,78 ,.,.) = \n", 970 | " 0.2009\n", 971 | "\n", 972 | "( 0 ,79 ,.,.) = \n", 973 | " -1.6665\n", 974 | "\n", 975 | "( 0 ,80 ,.,.) = \n", 976 | " -1.1666\n", 977 | "\n", 978 | "( 0 ,81 ,.,.) = \n", 979 | " 0.8082\n", 980 | "\n", 981 | "( 0 ,82 ,.,.) = \n", 982 | " -0.5988\n", 983 | "\n", 984 | "( 0 ,83 ,.,.) = \n", 985 | " 0.3051\n", 986 | "\n", 987 | "( 0 ,84 ,.,.) = \n", 988 | " 0.0027\n", 989 | "\n", 990 | "( 0 ,85 ,.,.) = \n", 991 | " -0.0591\n", 992 | "\n", 993 | "( 0 ,86 ,.,.) = \n", 994 | " -0.1065\n", 995 | "\n", 996 | "( 0 ,87 ,.,.) = \n", 997 | " -1.6120\n", 998 | "\n", 999 | "( 0 ,88 ,.,.) = \n", 1000 | " 0.9785\n", 1001 | "\n", 1002 | "( 0 ,89 ,.,.) = \n", 1003 | " -0.6694\n", 1004 | "\n", 1005 | "( 0 ,90 ,.,.) = \n", 1006 | " 0.4659\n", 1007 | "\n", 1008 | "( 0 ,91 ,.,.) = \n", 1009 | " 0.2134\n", 1010 | "\n", 1011 | "( 0 ,92 ,.,.) = \n", 1012 | " 0.1047\n", 1013 | "\n", 1014 | "( 0 ,93 ,.,.) = \n", 1015 | " 0.2804\n", 1016 | "\n", 1017 | "( 0 ,94 ,.,.) = \n", 1018 | " 0.4630\n", 1019 | "\n", 1020 | "( 0 ,95 ,.,.) = \n", 1021 | " 1.7810\n", 1022 | "\n", 1023 | "( 0 ,96 ,.,.) = \n", 1024 | " 0.4608\n", 1025 | "\n", 1026 | "( 0 ,97 ,.,.) = \n", 1027 | " 3.2309\n", 1028 | "\n", 1029 | "( 0 ,98 ,.,.) = \n", 1030 | " -0.9803\n", 1031 | "\n", 1032 | "( 0 ,99 ,.,.) = \n", 1033 | " 0.9052\n", 1034 | "\n", 1035 | "( 1 , 0 ,.,.) = \n", 1036 | " 0.0449\n", 1037 | "\n", 1038 | "( 1 , 1 ,.,.) = \n", 1039 | " -0.2898\n", 1040 | "\n", 1041 | "( 1 , 2 ,.,.) = \n", 1042 | " -0.0791\n", 1043 | "\n", 1044 | "( 1 , 3 ,.,.) = \n", 1045 | " -2.2126\n", 1046 | "\n", 1047 | "( 1 , 4 ,.,.) = \n", 1048 | " 0.6318\n", 1049 | "\n", 1050 | "( 1 , 5 ,.,.) = \n", 1051 | " -1.1064\n", 1052 | "\n", 1053 | "( 1 , 6 ,.,.) = \n", 1054 | " 1.6622\n", 1055 | "\n", 1056 | "( 1 , 7 ,.,.) = \n", 1057 | " -0.9611\n", 1058 | "\n", 1059 | "( 1 , 8 ,.,.) = \n", 1060 | " 0.0463\n", 1061 | "\n", 1062 | "( 1 , 9 ,.,.) = \n", 1063 | " -0.5081\n", 1064 | "\n", 1065 | "( 1 ,10 ,.,.) = \n", 1066 | " 2.0450\n", 1067 | "\n", 1068 | "( 1 ,11 ,.,.) = \n", 1069 | " 3.1363\n", 1070 | "\n", 1071 | "( 1 ,12 ,.,.) = \n", 1072 | " -0.3748\n", 1073 | "\n", 1074 | "( 1 ,13 ,.,.) = \n", 1075 | " -0.7339\n", 1076 | "\n", 1077 | "( 1 ,14 ,.,.) = \n", 1078 | " 0.9618\n", 1079 | "\n", 1080 | "( 1 ,15 ,.,.) = \n", 1081 | " -1.1629\n", 1082 | "\n", 1083 | "( 1 ,16 ,.,.) = \n", 1084 | " -1.2777\n", 1085 | "\n", 1086 | "( 1 ,17 ,.,.) = \n", 1087 | " 0.5440\n", 1088 | "\n", 1089 | "( 1 ,18 ,.,.) = \n", 1090 | " 1.4057\n", 1091 | "\n", 1092 | "( 1 ,19 ,.,.) = \n", 1093 | " -1.3521\n", 1094 | "\n", 1095 | "( 1 ,20 ,.,.) = \n", 1096 | " 0.8126\n", 1097 | "\n", 1098 | "( 1 ,21 ,.,.) = \n", 1099 | " 0.7669\n", 1100 | "\n", 1101 | "( 1 ,22 ,.,.) = \n", 1102 | " -1.4915\n", 1103 | "\n", 1104 | "( 1 ,23 ,.,.) = \n", 1105 | " -1.3507\n", 1106 | "\n", 1107 | "( 1 ,24 ,.,.) = \n", 1108 | " 0.4762\n", 1109 | "\n", 1110 | "( 1 ,25 ,.,.) = \n", 1111 | " -0.3495\n", 1112 | "\n", 1113 | "( 1 ,26 ,.,.) = \n", 1114 | " -0.0824\n", 1115 | "\n", 1116 | "( 1 ,27 ,.,.) = \n", 1117 | " 0.1938\n", 1118 | "\n", 1119 | "( 1 ,28 ,.,.) = \n", 1120 | " 0.7088\n", 1121 | "\n", 1122 | "( 1 ,29 ,.,.) = \n", 1123 | " -0.8793\n", 1124 | "\n", 1125 | "( 1 ,30 ,.,.) = \n", 1126 | " -0.7713\n", 1127 | "\n", 1128 | "( 1 ,31 ,.,.) = \n", 1129 | " -0.9410\n", 1130 | "\n", 1131 | "( 1 ,32 ,.,.) = \n", 1132 | " -0.3445\n", 1133 | "\n", 1134 | "( 1 ,33 ,.,.) = \n", 1135 | " 0.2974\n", 1136 | "\n", 1137 | "( 1 ,34 ,.,.) = \n", 1138 | " -0.7886\n", 1139 | "\n", 1140 | "( 1 ,35 ,.,.) = \n", 1141 | " -1.3900\n", 1142 | "\n", 1143 | "( 1 ,36 ,.,.) = \n", 1144 | " -1.3375\n", 1145 | "\n", 1146 | "( 1 ,37 ,.,.) = \n", 1147 | " 0.7672\n", 1148 | "\n", 1149 | "( 1 ,38 ,.,.) = \n", 1150 | " -0.2893\n", 1151 | "\n", 1152 | "( 1 ,39 ,.,.) = \n", 1153 | " 0.5905\n", 1154 | "\n", 1155 | "( 1 ,40 ,.,.) = \n", 1156 | " -0.5110\n", 1157 | "\n", 1158 | "( 1 ,41 ,.,.) = \n", 1159 | " 1.8646\n", 1160 | "\n", 1161 | "( 1 ,42 ,.,.) = \n", 1162 | " 0.6765\n", 1163 | "\n", 1164 | "( 1 ,43 ,.,.) = \n", 1165 | " 0.7488\n", 1166 | "\n", 1167 | "( 1 ,44 ,.,.) = \n", 1168 | " -0.0605\n", 1169 | "\n", 1170 | "( 1 ,45 ,.,.) = \n", 1171 | " 1.5426\n", 1172 | "\n", 1173 | "( 1 ,46 ,.,.) = \n", 1174 | " 0.7298\n", 1175 | "\n", 1176 | "( 1 ,47 ,.,.) = \n", 1177 | " 0.1526\n", 1178 | "\n", 1179 | "( 1 ,48 ,.,.) = \n", 1180 | " -1.9960\n", 1181 | "\n", 1182 | "( 1 ,49 ,.,.) = \n", 1183 | " 2.5891\n", 1184 | "\n", 1185 | "( 1 ,50 ,.,.) = \n", 1186 | " -0.6604\n", 1187 | "\n", 1188 | "( 1 ,51 ,.,.) = \n", 1189 | " -0.8486\n", 1190 | "\n", 1191 | "( 1 ,52 ,.,.) = \n", 1192 | " -1.2579\n", 1193 | "\n", 1194 | "( 1 ,53 ,.,.) = \n", 1195 | " 0.8587\n", 1196 | "\n", 1197 | "( 1 ,54 ,.,.) = \n", 1198 | " -0.5397\n", 1199 | "\n", 1200 | "( 1 ,55 ,.,.) = \n", 1201 | " -0.8088\n", 1202 | "\n", 1203 | "( 1 ,56 ,.,.) = \n", 1204 | " -0.4865\n", 1205 | "\n", 1206 | "( 1 ,57 ,.,.) = \n", 1207 | " -1.4077\n", 1208 | "\n", 1209 | "( 1 ,58 ,.,.) = \n", 1210 | " 2.5246\n", 1211 | "\n", 1212 | "( 1 ,59 ,.,.) = \n", 1213 | " 0.2888\n", 1214 | "\n", 1215 | "( 1 ,60 ,.,.) = \n", 1216 | " -0.1949\n", 1217 | "\n", 1218 | "( 1 ,61 ,.,.) = \n", 1219 | " 0.4194\n", 1220 | "\n", 1221 | "( 1 ,62 ,.,.) = \n", 1222 | " 2.2755\n", 1223 | "\n", 1224 | "( 1 ,63 ,.,.) = \n", 1225 | " 0.2587\n", 1226 | "\n", 1227 | "( 1 ,64 ,.,.) = \n", 1228 | " 0.6144\n", 1229 | "\n", 1230 | "( 1 ,65 ,.,.) = \n", 1231 | " -0.5025\n", 1232 | "\n", 1233 | "( 1 ,66 ,.,.) = \n", 1234 | " 2.0704\n", 1235 | "\n", 1236 | "( 1 ,67 ,.,.) = \n", 1237 | " -0.3972\n", 1238 | "\n", 1239 | "( 1 ,68 ,.,.) = \n", 1240 | " -0.3028\n", 1241 | "\n", 1242 | "( 1 ,69 ,.,.) = \n", 1243 | " -2.0888\n", 1244 | "\n", 1245 | "( 1 ,70 ,.,.) = \n", 1246 | " -0.6706\n", 1247 | "\n", 1248 | "( 1 ,71 ,.,.) = \n", 1249 | " 0.4738\n", 1250 | "\n", 1251 | "( 1 ,72 ,.,.) = \n", 1252 | " 0.4724\n", 1253 | "\n", 1254 | "( 1 ,73 ,.,.) = \n", 1255 | " -0.4997\n", 1256 | "\n", 1257 | "( 1 ,74 ,.,.) = \n", 1258 | " 0.2884\n", 1259 | "\n", 1260 | "( 1 ,75 ,.,.) = \n", 1261 | " 0.7704\n", 1262 | "\n", 1263 | "( 1 ,76 ,.,.) = \n", 1264 | " 0.8612\n", 1265 | "\n", 1266 | "( 1 ,77 ,.,.) = \n", 1267 | " -0.1302\n", 1268 | "\n", 1269 | "( 1 ,78 ,.,.) = \n", 1270 | " -0.0167\n", 1271 | "\n", 1272 | "( 1 ,79 ,.,.) = \n", 1273 | " -0.7529\n", 1274 | "\n", 1275 | "( 1 ,80 ,.,.) = \n", 1276 | " -0.4140\n", 1277 | "\n", 1278 | "( 1 ,81 ,.,.) = \n", 1279 | " -1.5784\n", 1280 | "\n", 1281 | "( 1 ,82 ,.,.) = \n", 1282 | " -0.0421\n", 1283 | "\n", 1284 | "( 1 ,83 ,.,.) = \n", 1285 | " -1.6618\n", 1286 | "\n", 1287 | "( 1 ,84 ,.,.) = \n", 1288 | " 0.6542\n", 1289 | "\n", 1290 | "( 1 ,85 ,.,.) = \n", 1291 | " -0.5360\n", 1292 | "\n", 1293 | "( 1 ,86 ,.,.) = \n", 1294 | " -0.7421\n", 1295 | "\n", 1296 | "( 1 ,87 ,.,.) = \n", 1297 | " 0.5508\n", 1298 | "\n", 1299 | "( 1 ,88 ,.,.) = \n", 1300 | " 0.3779\n", 1301 | "\n", 1302 | "( 1 ,89 ,.,.) = \n", 1303 | " 0.5081\n", 1304 | "\n", 1305 | "( 1 ,90 ,.,.) = \n", 1306 | " -0.6334\n", 1307 | "\n", 1308 | "( 1 ,91 ,.,.) = \n", 1309 | " 0.7114\n", 1310 | "\n", 1311 | "( 1 ,92 ,.,.) = \n", 1312 | " -1.2745\n", 1313 | "\n", 1314 | "( 1 ,93 ,.,.) = \n", 1315 | " -0.1800\n", 1316 | "\n", 1317 | "( 1 ,94 ,.,.) = \n", 1318 | " 0.1073\n", 1319 | "\n", 1320 | "( 1 ,95 ,.,.) = \n", 1321 | " -0.5540\n", 1322 | "\n", 1323 | "( 1 ,96 ,.,.) = \n", 1324 | " -0.4092\n", 1325 | "\n", 1326 | "( 1 ,97 ,.,.) = \n", 1327 | " -0.6959\n", 1328 | "\n", 1329 | "( 1 ,98 ,.,.) = \n", 1330 | " -1.4376\n", 1331 | "\n", 1332 | "( 1 ,99 ,.,.) = \n", 1333 | " 1.0285\n", 1334 | "[torch.FloatTensor of size 2x100x1x1]\n", 1335 | "\n" 1336 | ] 1337 | } 1338 | ], 1339 | "source": [ 1340 | "noise = torch.randn(2,100, 1, 1)\n", 1341 | "noise = Variable(noise)\n", 1342 | "print noise" 1343 | ] 1344 | } 1345 | ], 1346 | "metadata": { 1347 | "kernelspec": { 1348 | "display_name": "Python 2", 1349 | "language": "python", 1350 | "name": "python2" 1351 | }, 1352 | "language_info": { 1353 | "codemirror_mode": { 1354 | "name": "ipython", 1355 | "version": 2 1356 | }, 1357 | "file_extension": ".py", 1358 | "mimetype": "text/x-python", 1359 | "name": "python", 1360 | "nbconvert_exporter": "python", 1361 | "pygments_lexer": "ipython2", 1362 | "version": "2.7.6" 1363 | } 1364 | }, 1365 | "nbformat": 4, 1366 | "nbformat_minor": 2 1367 | } 1368 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Conditional-DCGAN using Pytorch 2 | We use the c-Deep Convolutional Generative Adverserial Network model to generate animated faces :couple: and emojis :smiley: from a random noise fed as input. 3 | 4 | Refrence:[Pytorch](https://pytorch.org/) 5 | [REF paper](https://arxiv.org/abs/1702.01983) 6 | 7 | ## Requirements 8 | 9 | 1. Pytorch 10 | 11 | ## Usage 12 | 13 | ### Prepare Training Dataset 14 | Create folder named ``data`` . Then create folders according to your class-label names(n folders for n classes).Then place all images into the corresponding folder(class-label). 15 | 16 | ###### Folder structure 17 | 18 | ``` 19 | Root 20 | │ 21 | ├── data 22 | │ └── train 23 | │ ├── ONE 24 | │ │ ├── ONE_0.png 25 | │ │ ├── ONE_1.png 26 | │ │ └── ... 27 | │ ├── TWO 28 | │ │ │ 29 | │ │ ├── TWO_0.png 30 | │ │ └── TWO_1.png 31 | │ ├── . 32 | │ └── . 33 | │ 34 | │ 35 | │ 36 | ├── c-dcgan.ipynb 37 | ├── G_chk.pt 38 | └── D_chk.pt 39 | ``` 40 | 41 | > Larger the number and variation in images, larger the accuracy of classification. 42 | 43 | ### c-DCGAN Architecture 44 | 45 | #### Generator Neural Network 46 | 47 | ```javascript 48 | 49 | Generator ( 50 | (DCV1_data): ConvTranspose2d(100, 256, kernel_size=(4, 4), stride=(1, 1)) 51 | (BN1_data): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True) 52 | (DCV1_label): ConvTranspose2d(2, 256, kernel_size=(4, 4), stride=(1, 1)) 53 | (BN1_label): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True) 54 | (DCV2): ConvTranspose2d(512, 256, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1)) 55 | (BN2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True) 56 | (DCV3): ConvTranspose2d(256, 128, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1)) 57 | (BN3): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True) 58 | (DCV4): ConvTranspose2d(128, 64, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1)) 59 | (BN4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True) 60 | (DCV5): ConvTranspose2d(64, 3, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1)) 61 | ) 62 | ``` 63 | #### Discriminator Neural Network 64 | 65 | ```javascript 66 | 67 | Discriminator ( 68 | (CV1_data): Conv2d(3, 64, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1)) 69 | (CV1_label): Conv2d(2, 64, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1)) 70 | (CV2): Conv2d(128, 256, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1)) 71 | (BN2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True) 72 | (CV3): Conv2d(256, 512, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1)) 73 | (BN3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True) 74 | (CV4): Conv2d(512, 1024, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1)) 75 | (BN4): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True) 76 | (CV5): Conv2d(1024, 1, kernel_size=(4, 4), stride=(1, 1)) 77 | ) 78 | 79 | ``` 80 | 81 | ### Training 82 | 83 | Run the ``c-dcgan.ipynb`` jupyter notebook to start the Training. 84 | 85 | Once the training is completed the result is stored the main folder as ``D_chk_100.pt`` and ``G_chk_100.pt`` 86 | 87 | ###### Input-data 88 | ![Screenshot](./assets/man.png "man image") 89 | ![Screenshot](./assets/woman.png "woman image") 90 | 91 | ###### Sampled mini-batch images 92 | ![Screenshot](./assets/sampled.png "Loss image") 93 | 94 | ###### Training through Epochs 95 | ![Screenshot](./assets/train_100.gif "epochs") 96 | 97 | ###### Final Generated Images 98 | ![Screenshot](./assets/output_17_5.png "anima output") 99 |
100 | ![Screenshot](./assets/output_22_1.png "emoji output") 101 | 102 | 103 | ###### Loss 104 | ![Screenshot](./assets/loss.png "loss") 105 | 106 | #### ToDo 107 | - [x] Train. 108 | - [x] Save/Load checkpoint. 109 | - [x] Generate. 110 | - [ ] UI for input, output and to download checkpoint. 111 | 112 | ##### Credits 113 | ```javascript 114 | @inproceedings{aneja2016modeling, 115 | title={Modeling Stylized Character Expressions via Deep Learning}, 116 | author={Aneja, Deepali and Colburn, Alex and Faigin, Gary and Shapiro, Linda and Mones, Barbara}, 117 | booktitle={Asian Conference on Computer Vision}, 118 | pages={136--153}, 119 | year={2016}, 120 | organization={Springer} 121 | } 122 | ``` 123 | 124 | 125 | -------------------------------------------------------------------------------- /assets/loss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manishankarbalu/c-DCGAN/05733ea3f867dde4b3d5cbac4bacec2a3f5e687f/assets/loss.png -------------------------------------------------------------------------------- /assets/man.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manishankarbalu/c-DCGAN/05733ea3f867dde4b3d5cbac4bacec2a3f5e687f/assets/man.png -------------------------------------------------------------------------------- /assets/output_17_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manishankarbalu/c-DCGAN/05733ea3f867dde4b3d5cbac4bacec2a3f5e687f/assets/output_17_5.png -------------------------------------------------------------------------------- /assets/output_22_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manishankarbalu/c-DCGAN/05733ea3f867dde4b3d5cbac4bacec2a3f5e687f/assets/output_22_1.png -------------------------------------------------------------------------------- /assets/sampled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manishankarbalu/c-DCGAN/05733ea3f867dde4b3d5cbac4bacec2a3f5e687f/assets/sampled.png -------------------------------------------------------------------------------- /assets/train_100.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manishankarbalu/c-DCGAN/05733ea3f867dde4b3d5cbac4bacec2a3f5e687f/assets/train_100.gif -------------------------------------------------------------------------------- /assets/woman.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manishankarbalu/c-DCGAN/05733ea3f867dde4b3d5cbac4bacec2a3f5e687f/assets/woman.png --------------------------------------------------------------------------------