{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# simple generative adversarial network\n", "# this version uses simple images, the MNIST dataset" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# conventional PyTorch imports\n", "import torch\n", "import torch.nn as nn\n", "#import torch.nn.functional as F\n", "from torch.utils.data import Dataset, DataLoader" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "import random\n", "import pandas" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "import numpy\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# dataset class\n", "\n", "class MnistDataset(torch.utils.data.Dataset):\n", " \n", " def __init__(self, csv_file):\n", " self.data_df = pandas.read_csv(csv_file, header=None)\n", " pass\n", " \n", " def __len__(self):\n", " return len(self.data_df)\n", " \n", " def __getitem__(self, index):\n", " # image target (label)\n", " label = self.data_df.iloc[index,0]\n", " image_target = torch.zeros((10))\n", " image_target[label] = 1.0\n", " \n", " # image data, normalised from 0-255 to 0-1\n", " image_values = torch.FloatTensor(self.data_df.iloc[index,1:].values) / 255.0\n", " \n", " # return label, image data tensor and target tensor\n", " return label, image_values, image_target\n", " \n", " def plot_image(self, index):\n", " arr = self.data_df.iloc[index,1:].values.reshape(28,28)\n", " plt.title(\"label = \" + str(self.data_df.iloc[index,0]))\n", " plt.imshow(arr, interpolation='none', cmap='Blues')\n", " pass\n", " \n", " pass\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# subclass PyTorch dataset class, loads actual data, parses it into targets and pizel data\n", "mnist_dataset = MnistDataset('mnist_data/mnist_train.csv')\n", "\n", "# iterator for mnist_dataset\n", "mnist_dataloader = DataLoader(mnist_dataset, batch_size=1, shuffle=False, num_workers=1)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "mnist_dataset.plot_image(0)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "# from https://github.com/pytorch/vision/issues/720\n", "\n", "class View(nn.Module):\n", " def __init__(self, shape):\n", " super().__init__()\n", " self.shape = shape\n", "\n", " def forward(self, x):\n", " return x.view(*self.shape)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "# classifier class\n", "\n", "class Classifier(nn.Module):\n", " \n", " def __init__(self):\n", " # initialise parent pytorch class\n", " super().__init__()\n", " \n", " # define neural network layers\n", " self.model = nn.Sequential(\n", " nn.Conv2d(1, 10, kernel_size=5),\n", " nn.MaxPool2d(kernel_size=2),\n", " nn.BatchNorm2d(10),\n", " nn.LeakyReLU(),\n", " \n", " \n", " nn.Conv2d(10, 10, kernel_size=3),\n", " nn.MaxPool2d(kernel_size=2),\n", " nn.BatchNorm2d(10),\n", " nn.LeakyReLU(),\n", " \n", " View((1,250)),\n", " nn.Linear(250, 10),\n", " nn.Sigmoid()\n", " )\n", " \n", " # create error function\n", " self.error_function = torch.nn.BCELoss()\n", "\n", " # create optimiser, using Adam for better gradient descent\n", " self.optimiser = torch.optim.Adam(self.parameters())\n", " \n", " # counter and accumulator for progress\n", " self.counter = 0;\n", " self.progress = []\n", " pass\n", " \n", " \n", " def forward(self, inputs):\n", " # simply run model\n", " return self.model(inputs.view(1, 1, 28, 28))\n", " \n", " \n", " def train(self, inputs, targets):\n", " # calculate the output of the network\n", " outputs = self.forward(inputs.view(1, 1, 28, 28))\n", " \n", " # calculate error\n", " loss = self.error_function(outputs.view(10), targets.view(10))\n", " \n", " # increase counter and accumulate error every 10\n", " self.counter += 1;\n", " if (self.counter % 10 == 0):\n", " self.progress.append(loss.item())\n", " pass\n", " if (self.counter % 10000 == 0):\n", " print(\"counter = \", self.counter)\n", " pass\n", " \n", "\n", " # zero gradients, perform a backward pass, and update the weights.\n", " self.optimiser.zero_grad()\n", " loss.backward()\n", " self.optimiser.step()\n", "\n", " pass\n", " \n", " \n", " def save(self, path):\n", " torch.save(self.state_dict(), path)\n", " pass\n", " \n", " \n", " def load(self, path):\n", " self.load_state_dict(torch.load(path))\n", " #self.eval()\n", " pass\n", " \n", " \n", " def plot_progress(self):\n", " df = pandas.DataFrame(self.progress, columns=['loss'])\n", " df.plot(ylim=(0, 1.0), figsize=(16,8), alpha=0.1, marker='.', grid=True, yticks=(0, 0.25, 0.5))\n", " pass\n", " \n", " pass" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "torch.Size([1, 10])" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# scratch\n", "C = Classifier()\n", "record = 0\n", "image_data = mnist_dataset[record][1]\n", "z = C.forward(image_data)\n", "z.shape" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "training epoch 1 of 1\n", "counter = 10000\n", "counter = 20000\n", "counter = 30000\n", "counter = 40000\n", "counter = 50000\n", "counter = 60000\n" ] } ], "source": [ "# train classifier\n", "\n", "C = Classifier()\n", "\n", "epochs = 1\n", "\n", "for i in range(epochs):\n", " print('training epoch', i+1, \"of\", epochs)\n", " for label, image_data_tensor, target_tensor in mnist_dataloader:\n", " C.train(image_data_tensor, target_tensor)\n", " pass\n", " pass" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "# saving and loading neural network state so you don't have to keep training\n", "\n", "#C.save(\"mnist1.pt\")\n", "\n", "#C = Classifier()\n", "#C.load(\"mnist1.pt\")" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# plot classifier error\n", "\n", "C.plot_progress()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAP8AAAEICAYAAACQ6CLfAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAEH9JREFUeJzt3X+wVOV9x/H3R0CNSBTmXhCJgho0ajJFvCEYTUJrkkGTDlqjlTaGNKaQqhNtk7TGTkfbmRhjq9H+iA5GJmiNhmlCpUajxklGrZV6UaJY8GcuQkS4t/gDqIDAt3/cJV7x7rPL7tkfd57Pa2bn7p7vefZ8We7nnt09e/ZRRGBm+dmn1Q2YWWs4/GaZcvjNMuXwm2XK4TfLlMNvlimHfwiS1CPpk1WuG5LeX+N2ah5r7c/ht6aRtJ+kmyWtlrRJ0hOSTmt1X7ly+K2ZhgNrgE8ABwF/AyySNKmFPWXL4R/iJE2T9F+SXpO0TtI/S9p3j9VOl/SipD5Jfy9pnwHjvyRppaRXJd0raWKjeo2ILRFxRUT0RMSuiLgL+DVwYqO2aeU5/EPfTuDPgQ7gJOBU4II91jkT6AKmArOALwFIOgO4DPgDoBN4CLi9mo1K+l7pD85glyervI9xwNHA09Wsb8WSP9s/9EjqAb4cET8fpHYJ8ImIOLN0O4DTIuJnpdsXAGdFxKmS7gH+LSJuLtX2ATYDx0bE6tLYyRHxfAP+DSOAe4AXImJe0fdvlXnPP8RJOlrSXZJekfQGcCX9zwIGWjPg+mrg0NL1icD1u/fYwEZAwIQG97wPcCuwHbiokduy8hz+oe8GYBX9e+j30v80Xnusc9iA64cDL5eurwHmRcTBAy7viYhHKm1U0o2SNpe5lH0aL0nAzcA4+p+BvFX9P9WK5PAPfaOAN4DNkj4A/Nkg63xD0mhJhwEXAz8qLb8R+Kak4wEkHSTp7Go2GhFfiYgDy1yOTwy9ATgW+P2IeLPKf6M1gMM/9H0d+CNgE3ATbwd7oDuBZcBy4Kf073mJiMXAd4A7Si8ZVgANO+5eOpIwD5gCvDLgmcIfN2qbVp7f8DPLlPf8Zply+M0y5fCbZcrhN8vU8GZurKOjIyZOnNTMTZplZfXqHvr6+vb8nMeg6gq/pJnA9cAw4PsRcVVq/YkTJ/GfS7vr2aSZJZz8ka6q1635ab+kYcC/0H9c+DhgtqTjar0/M2uuel7zTwOej4gXI2I7cAf9Z4yZ2RBQT/gn8M4TRtYyyAkhkuZK6pbU3dvXW8fmzKxI9YR/sDcV3vVxwYiYHxFdEdHV2dFZx+bMrEj1hH8t7zxb7H28fbaYmbW5esL/GDBZ0hGlr406F1hSTFtm1mg1H+qLiB2SLgLupf9Q34KI8NcxmQ0RdR3nj4i7gbsL6sXMmsgf7zXLlMNvlimH3yxTDr9Zphx+s0w5/GaZcvjNMuXwm2XK4TfLlMNvlimH3yxTDr9Zphx+s0w5/GaZcvjNMuXwm2XK4TfLlMNvlimH3yxTDr9Zphx+s0w5/GaZcvjNMuXwm2XK4TfLlMNvlimH3yxTDr9Zphx+s0zVNUuvtYdFy9eUrX3/wdXJsSuWv5Ssv7lqWU097Tb2pBlla8u+dVpy7IH7+9ezkep6dCX1AJuAncCOiOgqoikza7wi/rT+bkT0FXA/ZtZEfs1vlql6wx/AfZKWSZo72AqS5krqltTd29db5+bMrCj1hv/kiJgKnAZcKOnje64QEfMjoisiujo7OuvcnJkVpa7wR8TLpZ8bgMXAtCKaMrPGqzn8kkZKGrX7OvBpYEVRjZlZY9Xzbv84YLGk3ffzw4j4WSFdZea1LduT9dOuezhZX7XkzvLFgw9Jjn3/Rz+crDMxfSz++V8+mKxveOi+8tue93py7CsLP5+sW31qDn9EvAj8ToG9mFkT+VCfWaYcfrNMOfxmmXL4zTLl8JtlyudMtoEpX1+SrL/+6xeS9dnf+HLZ2rdP/0By7EEHjEjWK+m54KRk/YQ/vLpsbdsz3cmxf3nXicn61Z89Nlm3NO/5zTLl8JtlyuE3y5TDb5Yph98sUw6/WaYcfrNM+Th/Ezz6wv8m668//lCyPvXcs5L1733uQ3vdU1EmdY5M1ud89ZyytYVX3pgce9MtjyTrPs5fH+/5zTLl8JtlyuE3y5TDb5Yph98sUw6/WaYcfrNM+Th/E2zfuStZHz55arJ+6cxjimynqS6aPrFsbWGlwW9uSpa3bN2RrI/0FN9J3vObZcrhN8uUw2+WKYffLFMOv1mmHH6zTDn8ZpnygdAm+MgRY5L1NQvSU1Hvv++wIttpqhHD69i/rE/PV/CvT6xJ1ueddETt285Axf8ZSQskbZC0YsCyMZLul/Rc6efoxrZpZkWr5s/yD4CZeyy7FHggIiYDD5Rum9kQUjH8EfEgsHGPxbN4+9OZC4EzCu7LzBqs1hdk4yJiHUDp59hyK0qaK6lbUndvX2+NmzOzojX83f6ImB8RXRHR1dnR2ejNmVmVag3/eknjAUo/NxTXkpk1Q63hXwLMKV2fA9xZTDtm1iwVj/NLuh2YAXRIWgtcDlwFLJJ0PvAScHYjmxzq9hsxdI/T12vC6P3L1vY/fnpy7NanH03Wl/a8nqzPOylZzl7F8EfE7DKlUwvuxcyayB/vNcuUw2+WKYffLFMOv1mmHH6zTPmUXmuo4cPK71+Gj/CvXyt5z2+WKYffLFMOv1mmHH6zTDn8Zply+M0y5fCbZcoHWq2htu8oPz359q3b67rv0SP3rWt87rznN8uUw2+WKYffLFMOv1mmHH6zTDn8Zply+M0y5eP81lDrXttatrZ91X/Xdd9/csKEusanvLYl/RmEZ9dvTtYXr0rPY/OVaYeXrU3sOCA5tije85tlyuE3y5TDb5Yph98sUw6/WaYcfrNMOfxmmfJxfktKnY8PsOGNbcn6gz29RbbzDjP/7p5kfWrXpLK1J5atTo7dvDE9/TcvPZWuj+pIln911qfK1u6+4KPp+y5IxT2/pAWSNkhaMWDZFZJ+I2l56XJ6Y9s0s6JV87T/B8DMQZZ/NyKmlC53F9uWmTVaxfBHxIPAxib0YmZNVM8bfhdJerL0smB0uZUkzZXULam7t69xr//MbO/UGv4bgKOAKcA64JpyK0bE/Ijoioiuzo7OGjdnZkWrKfwRsT4idkbELuAmYFqxbZlZo9UUfknjB9w8E1hRbl0za08Vj/NLuh2YAXRIWgtcDsyQNAUIoAeY18Aeh7ytb+1M1l/d8lay/quXX03WF68o/17Kvb98Njm2km1vpo/jb3360bruvx5bVqS/D+Ch17fUfN/nz/lYuj713GT9oANGJOuHjn7PXvdUtIrhj4jZgyy+uQG9mFkT+eO9Zply+M0y5fCbZcrhN8uUw2+WKZ/SW6XU4bqLFz+dHHvnT59M1retXFpTT4V479h0/cAx6frwCtNk76h9Gu4Zf/r5ZP2qzxyXrB9z6Kiat50D7/nNMuXwm2XK4TfLlMNvlimH3yxTDr9Zphx+s0z5OH+Vpv/tz8vWVt93V3rwfiOT5cmfnZWsHz2p7LekAfDVU44ov+lh6b/v4w/eP1kfe1CF+nm3JOtvPfNY2do+R01Njr3tCycm6wfs51/fenjPb5Yph98sUw6/WaYcfrNMOfxmmXL4zTLl8JtlygdKq7T63v8oXzzyhOTYpdedk6wfPb51553v2JmegnveovR3Eby1psJXg489smzpkWs+lxzq4/iN5T2/WaYcfrNMOfxmmXL4zTLl8JtlyuE3y5TDb5apaqboPgy4BTgE2AXMj4jrJY0BfgRMon+a7nMiIj2X9FAmlS2NOjh9nP7Isenz+RtpW4XpwT/27V8k68/ddWd6AxW+q+CBf/pi2Zq/V7+1qtnz7wC+FhHHAtOBCyUdB1wKPBARk4EHSrfNbIioGP6IWBcRj5eubwJWAhOAWcDC0moLgTMa1aSZFW+vXvNLmgScACwFxkXEOuj/AwFUmPfJzNpJ1eGXdCDwY+CSiHhjL8bNldQtqbu3r7eWHs2sAaoKv6QR9Af/toj4SWnxeknjS/XxwIbBxkbE/Ijoioiuzo7OIno2swJUDL8kATcDKyPi2gGlJcCc0vU5QIW3hc2snVRzzuTJwHnAU5KWl5ZdBlwFLJJ0PvAScHZjWmwPI475cNnapiceSo4946bDkvW+vv9L1qd/8JBkfdrhB5at/cU/pnvbtqo7WR8z/feS9Xu++clkvZWnK1taxfBHxMNAuYPcpxbbjpk1iz/hZ5Yph98sUw6/WaYcfrNMOfxmmXL4zTLl70au0oZbv1C2dvHi9FTSt1x7a/rOd6VPu33mnvTwhYnah2Z9Jjn2yr+emayfMrkjvXEbsrznN8uUw2+WKYffLFMOv1mmHH6zTDn8Zply+M0y5eP8Bbj+zOMr1K9qUidm1fOe3yxTDr9Zphx+s0w5/GaZcvjNMuXwm2XK4TfLlMNvlimH3yxTDr9Zphx+s0w5/GaZcvjNMuXwm2XK4TfLVMXwSzpM0i8krZT0tKSLS8uvkPQbSctLl9Mb366ZFaWaL/PYAXwtIh6XNApYJun+Uu27EfEPjWvPzBqlYvgjYh2wrnR9k6SVwIRGN2ZmjbVXr/klTQJOAJaWFl0k6UlJCySNLjNmrqRuSd29fb11NWtmxak6/JIOBH4MXBIRbwA3AEcBU+h/ZnDNYOMiYn5EdEVEV2dHZwEtm1kRqgq/pBH0B/+2iPgJQESsj4idEbELuAmY1rg2zaxo1bzbL+BmYGVEXDtg+fgBq50JrCi+PTNrlGre7T8ZOA94StLy0rLLgNmSpgAB9ADzGtKhmTVENe/2PwxokNLdxbdjZs3iT/iZZcrhN8uUw2+WKYffLFMOv1mmHH6zTDn8Zply+M0y5fCbZcrhN8uUw2+WKYffLFMOv1mmHH6zTCkimrcxqRdYPWBRB9DXtAb2Trv21q59gXurVZG9TYyIqr4vr6nhf9fGpe6I6GpZAwnt2lu79gXurVat6s1P+80y5fCbZarV4Z/f4u2ntGtv7doXuLdataS3lr7mN7PWafWe38xaxOE3y1RLwi9ppqRnJD0v6dJW9FCOpB5JT5WmHe9ucS8LJG2QtGLAsjGS7pf0XOnnoHMktqi3tpi2PTGtfEsfu3ab7r7pr/klDQOeBT4FrAUeA2ZHxP80tZEyJPUAXRHR8g+ESPo4sBm4JSI+WFp2NbAxIq4q/eEcHRF/1Sa9XQFsbvW07aXZpMYPnFYeOAP4Ii187BJ9nUMLHrdW7PmnAc9HxIsRsR24A5jVgj7aXkQ8CGzcY/EsYGHp+kL6f3markxvbSEi1kXE46Xrm4Dd08q39LFL9NUSrQj/BGDNgNtraeEDMIgA7pO0TNLcVjcziHERsQ76f5mAsS3uZ08Vp21vpj2mlW+bx66W6e6L1orwDzb1Vzsdbzw5IqYCpwEXlp7eWnWqmra9WQaZVr4t1DrdfdFaEf61wGEDbr8PeLkFfQwqIl4u/dwALKb9ph5fv3uG5NLPDS3u57faadr2waaVpw0eu3aa7r4V4X8MmCzpCEn7AucCS1rQx7tIGll6IwZJI4FP035Tjy8B5pSuzwHubGEv79Au07aXm1aeFj927TbdfUs+4Vc6lHEdMAxYEBHfanoTg5B0JP17e+ifwfiHrexN0u3ADPpP+VwPXA78O7AIOBx4CTg7Ipr+xluZ3mbQ/9T1t9O2736N3eTeTgEeAp4CdpUWX0b/6+uWPXaJvmbTgsfNH+81y5Q/4WeWKYffLFMOv1mmHH6zTDn8Zply+M0y5fCbZer/ASjdrJlHLjCVAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# test classifier\n", "\n", "# pick a record\n", "record = 16\n", "\n", "# see the image and what the correct label should be\n", "mnist_dataset.plot_image(record)\n", "\n", "# visualise the answer given by the neural network\n", "image_data = mnist_dataset[record][1]\n", "pandas.DataFrame(C.forward(image_data).view(10,1).detach().numpy()).plot(kind='bar', legend=False)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "9824 10000 0.9824\n" ] } ], "source": [ "# test trained neural network on training data\n", "\n", "# subclass PyTorch dataset class, loads actual data, parses it into targets and pizel data\n", "mnist_test_dataset = MnistDataset('mnist_data/mnist_test.csv')\n", "\n", "# iterator for mnist_dataset\n", "mnist_test_dataloader = DataLoader(mnist_test_dataset, batch_size=1, shuffle=False, num_workers=1)\n", "\n", "score = 0;\n", "items = 0;\n", "\n", "for label, image_data_tensor, target_tensor in mnist_test_dataloader:\n", " answer = C.forward(image_data_tensor).view(10,1).detach().numpy()\n", " if (answer.argmax() == label):\n", " score += 1;\n", " pass\n", " items += 1;\n", " \n", " pass\n", "\n", "print(score, items, score/items)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "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.7.3" } }, "nbformat": 4, "nbformat_minor": 2 }