├── figure.png ├── newnotebook.png ├── README.md └── MNIST in Keras.ipynb /figure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wxs/keras-mnist-tutorial/HEAD/figure.png -------------------------------------------------------------------------------- /newnotebook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wxs/keras-mnist-tutorial/HEAD/newnotebook.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Just a little notebook based on the Keras MNIST example for a tutorial I'm giving. If you're looking at this on Github you can view a [static version of the notebook](MNIST in Keras.ipynb) in your browser. 2 | -------------------------------------------------------------------------------- /MNIST in Keras.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": { 7 | "collapsed": true 8 | }, 9 | "outputs": [], 10 | "source": [ 11 | "%matplotlib inline" 12 | ] 13 | }, 14 | { 15 | "cell_type": "markdown", 16 | "metadata": {}, 17 | "source": [ 18 | "# Building a simple neural-network with Keras\n", 19 | "\n", 20 | "**Author: Xavier Snelgrove**\n", 21 | "\n", 22 | "This is a simple quick-start in performing digit recognition in a neural network in Keras, for a short tutorial at the University of Toronto. It is largely based on the `mnist_mlp.py` example from the Keras source.\n" 23 | ] 24 | }, 25 | { 26 | "cell_type": "markdown", 27 | "metadata": {}, 28 | "source": [ 29 | "## Install prerequisites\n", 30 | "First steps (instructions for Mac or Linux). You need to install a recent version of Python, plus the packages `keras`, `numpy`, `matplotlib` and `jupyter`.\n", 31 | "\n", 32 | "### Install a recent Python\n", 33 | "\n", 34 | "If you haven't installed a recent Python I recommend installing via Homebrew on a Mac from http://brew.sh and then installing Python via `brew install python`.\n", 35 | "\n", 36 | "\n", 37 | "### Configure a virtual environment\n", 38 | "\n", 39 | "You can install the packages globally, but I suggest installing them in a `virtualenv` virtual environment that basically encapsulates a full isolated Python environment. First you'll need to install a Python package manager called `pip` thus:\n", 40 | "\n", 41 | " easy_install pip\n", 42 | " \n", 43 | "(If you get a permissions error, try adding a `sudo` to the beginning, so `sudo easy_install pip`)\n", 44 | "\n", 45 | "Now install virtualenv thus:\n", 46 | "\n", 47 | " pip install virtualenv\n", 48 | "\n", 49 | "Navigate to your home directory `cd ~` and create a virtual environment. We'll call it `kerasenv`\n", 50 | "\n", 51 | " virtualenv kerasenv\n", 52 | "\n", 53 | "Now, to switch your shell environment to be within the env:\n", 54 | "\n", 55 | " source kerasenv/bin/activate\n", 56 | " \n", 57 | "Great: now you can install the other prerequisites into this environment.\n", 58 | "\n", 59 | " pip install numpy jupyter keras matplotlib\n", 60 | " \n", 61 | "\n", 62 | "## Open a new notebook\n", 63 | "\n", 64 | "Now that everything's installed, you can open one of these web-based Python environments with the following command:\n", 65 | "\n", 66 | " ipython notebook\n", 67 | " \n", 68 | "Create a new Python notebook from the \"New\" menu at the top-right:\n", 69 | "\n", 70 | "\n", 71 | "\n", 72 | "You should now be able to run Python in your browser!" 73 | ] 74 | }, 75 | { 76 | "cell_type": "markdown", 77 | "metadata": {}, 78 | "source": [ 79 | "## Time to build a neural network!\n", 80 | "First let's import some prerequisites" 81 | ] 82 | }, 83 | { 84 | "cell_type": "code", 85 | "execution_count": 2, 86 | "metadata": { 87 | "collapsed": false 88 | }, 89 | "outputs": [ 90 | { 91 | "name": "stderr", 92 | "output_type": "stream", 93 | "text": [ 94 | "Using Theano backend.\n" 95 | ] 96 | } 97 | ], 98 | "source": [ 99 | "import numpy as np\n", 100 | "import matplotlib.pyplot as plt\n", 101 | "plt.rcParams['figure.figsize'] = (7,7) # Make the figures a bit bigger\n", 102 | "\n", 103 | "from keras.datasets import mnist\n", 104 | "from keras.models import Sequential\n", 105 | "from keras.layers.core import Dense, Dropout, Activation\n", 106 | "from keras.utils import np_utils" 107 | ] 108 | }, 109 | { 110 | "cell_type": "markdown", 111 | "metadata": {}, 112 | "source": [ 113 | "## Load training data" 114 | ] 115 | }, 116 | { 117 | "cell_type": "code", 118 | "execution_count": 3, 119 | "metadata": { 120 | "collapsed": false 121 | }, 122 | "outputs": [ 123 | { 124 | "name": "stdout", 125 | "output_type": "stream", 126 | "text": [ 127 | "X_train original shape (60000, 28, 28)\n", 128 | "y_train original shape (60000,)\n" 129 | ] 130 | } 131 | ], 132 | "source": [ 133 | "nb_classes = 10\n", 134 | "\n", 135 | "# the data, shuffled and split between tran and test sets\n", 136 | "(X_train, y_train), (X_test, y_test) = mnist.load_data()\n", 137 | "print(\"X_train original shape\", X_train.shape)\n", 138 | "print(\"y_train original shape\", y_train.shape)" 139 | ] 140 | }, 141 | { 142 | "cell_type": "markdown", 143 | "metadata": {}, 144 | "source": [ 145 | "Let's look at some examples of the training data" 146 | ] 147 | }, 148 | { 149 | "cell_type": "code", 150 | "execution_count": 4, 151 | "metadata": { 152 | "collapsed": false 153 | }, 154 | "outputs": [ 155 | { 156 | "data": { 157 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaQAAAGyCAYAAACrw7CzAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XmYFNXZNvD7FlEEBSQSQD8V3KJiFDQxxg2jaHBDfU1U\n3NAk6vW6r1GjERI1krhEjcubGFEkxsRoxC0qGPe4RAwoCqgYEREYXFhdEPD5/qga7XNmpqu6u2r6\ndPf9u66+6Ke6u/pMz82crjpVdWhmEBERqbZVqt0AERERQB2SiIgEQh2SiIgEQR2SiIgEQR2SiIgE\nQR2SiIgEQR2Sh+RIkmOr3Q4JlzIiaSgnpWvIDonk4SQnklxCcg7Jf5DcKX64XU/MIjmT5CdxW5aQ\nfLg9319aF1hG+pJ8nOTHJKeR3KM931/aFlJOCto0iOQXJC+uxvtXouE6JJJnAvgtgEsAfB3A+gCu\nB7B/81PauUkGYD8zWyu+DWnn9xdPgBm5A8BLAHoAuADAXSTXaec2iCfAnIBkRwDXAHgeVeoQK9FQ\nHRLJbgB+AeBEMxtnZp+a2Uoze9DMzmvjNX8jOZfkQpJPktyy4LF9SL5GcjHJ2STPipevQ/IBkgtI\nfkjyKZLFwtnuwZXWhZYRkpsBGAhghJktM7O/A3gFwMF5/PySTmg5KXAWgIcBvI4a/LvSUB0SgO8C\n6ATgnhJe8yCATQD0BPAfALcXPHYzgOPNrCuA/gAei5efBeBdAOsg+uZ0vhW/RtPtJOeTfITk1iW0\nTbIXWkb6A/ivmX1csOzleLlUT2g5AckNARwL4GLUYGcENF6H9DUAH5jZF2lfYGa3mtnHZrYc0Tei\nbUiuFT/8OYD+JLua2SIzm1SwvA+AvvG3pn8VeYvDAWwY3x4H8Ej87UuqI7SMrAlgkbdsMYC1Wnmu\ntJ/QcgIA1wK4MP7yYtAuu+B9CGAdkql+bpIdSI4iOYPkIgBvI/olN++/PxjAPgBmknyC5A7x8ssB\nzAAwnuRbJM9t6z3M7Ll4V8ynZjYKwEIAu5T340kGQsvIUgBdvWXdEXVKUj1B5YTk/gDWNLO/NS9C\nLW4lmVnD3AB0Q/Qf/OAizxkJYGx8/ygAUwFsGNfdAXwBYCPvNR0AnA5gVivr6w+gCcDuKds4FdFB\nDlX/vBrxFlpGAGwG4FNEf2yalz2NaPdO1T+vRr0FmJPfItqSnhvfPgGwBMA91f6sSrk11BaSmS0C\ncBGA60keQLIzyY4k9yb561ZesiaAZQA+ItkFwK+aH4hfdwTJbma2EtEvf2X82H4kN4kHHxfHy1f6\nKye5PsmdSK5GshPJcxDtCii2WS45Ci0jZvYGgMkARsQZ+R8AWwG4O9MfXEoSWk4A/BzApgC2ATAA\nwH0A/oBoTKlmNFSHBABmdhWAMwFcCGA+gFkATsRXg5OF+15vA/AOgPcAvArgObj7ZY8E8Ha8CX48\ngCPi5ZsAmIAoWM8CuN7MnmylOWsBuAHARwBmA9gLwN5mtqDiH1TKFlhGAOAwAN9ClJNLEX0r/7Cy\nn1IqFVJOzGypmc2Pb02Itqo/NrOFGf247YLx5p6IiEhVNdwWkoiIhKnsDonkEJLTSb5Z7CgyaWzK\niaShnAhQ5i47kh0QnQk8GNE+0RcBDDOzadk2T2qZciJpKCfSrNwtpO0BzDCzmRad5PUXAAdk1yyp\nE8qJpKGcCABg1TJftx6iy1k0mw3gO4VPIKmjJeqImZVzkp1y0mCUE0mjrZyUu4WkcEgayomkoZwI\ngPI7pPcQXWq92fqIvtWIFFJOJA3lRACU3yFNBLApo4nDVgNwKKIzg0UKKSeShnIiAMocQzKzFSRP\nBvAIomsv3awjYsSnnEgayok0y+1KDRqErC9lDlYnUk7qi3IiaWR9UIOIiEim1CGJiEgQ1CGJiEgQ\n1CGJiEgQ1CGJiEgQ1CGJiEgQ1CGJiEgQ1CGJiEgQ1CGJiEgQ1CGJiEgQ1CGJiEgQyp2gT0QqsN12\n2zn1ySef7NRHHXWUU992221Ofd111zn1f/7znwxbJ1IdFXVIJGcCWAxgJYDlZrZ9Fo2S+qKcSBJl\nRIDKt5AMwG5m9lEWjZG6pZxIEmVEMhlDyuVy81J3lBNJoow0uIrmQyL5XwCLEG1m/97Mbip4rC7m\nL+nQoYNTd+vWraTX+2MDnTt3durNNtus6PMB4IorrnDqww47zKk/++wzpx41apRT//KXv0zX2CIq\nmeemEXKSZODAgU796KOPOnWpuVqwYIFT9+zZs7yGZazcnBTLSPx4Q+Qkb3vssYdTjx071qm/973v\ntXjN66+/nnk72spJpbvsdjKzuSR7AphAcrqZPV3hOqX+KCeSRBmRynbZmdnc+N/3AdwDQAOR0oJy\nIkmUEQEq6JBIdia5Vny/C4C9AEzJqmFSH5QTSaKMSLNKdtn1AnAPyeb13G5m4zNpVUY22GADp15t\ntdWcescdd2zxmp122smp1157baf+n//5n5LaEH8+X/LH7N577z2nvvbaa1us46CDDnLqpUuXOvXL\nL7/s1E899VRJbcxZ8DnJw/bbu1/w77rrLqfu3r27U/u5WLJkiVN//vnnTt2jRw+n3mGHHZy6tfOS\n/HUEpF0ysuuuuzq1/xmOGzcu67cMzre//W2nfumll6rUktaV3SGZ2dsABmTYFqlDyokkUUakmS4d\nJCIiQVCHJCIiQaira9llca6HP+aTtS+++MKpL7zwQqf2x4cA4M9//rNTz50716k/+sg9uT2P8wbk\nK/65ZACw7bbbOrV/fse6665b0nu8+eabTn355Zc79R133OHUzzzzjFP7uQJanp/WaHbbbTen3mST\nTZy6HseQ/PMo+/Xr59T+OHvef/+SaAtJRESCoA5JRESCoA5JRESCUFdjSLNmzXJqf2zFP/cjCy+8\n8IJTL1q0yKn9/dbLli1zan+sQcLj71f//e9/3+I5/vUFK90X74+HdunSxamffPJJp/ZztvXWW1f0\n/rWutc/fn2Pqueeea6/mVE2fPn2c+ic/+YlT33777U49ffr03NtUjLaQREQkCOqQREQkCOqQREQk\nCHU1hvThhx869U9/+lOn3nfffZ168uTJLdZxzTXXFH2PSZMmOfVee+3l1B9//LFT9+/f36lPPfXU\nouuX8Gy33XZO7ecIAFZZpfh3O3/M54EHHnBq/zyjOXPmOLWfu4ULFzr17rvv7tTVPp8kRP45OfXI\n/73fdNNNbTwz4p/vVm2JW0gkR5NsIjmlYFkPkhNIvkFyPMnsjxaQmqGMSBrKiSRJs8vuFgBDvGXn\nAZhgZpsB+GdcS+NSRiQN5USKSuyQ4lkbF3iLhwIYE98fA+DAjNslNUQZkTSUE0lS7hhSLzNriu83\nIZrPJDj33HOPUz/22GNO7c85AwDbbLONUx977LFOfeWVVzp1a9eeK/Tqq6869QknnFD0+XWkJjLS\nGv8coEceecSpu3bt2uI1/nxGDz30kFMffvjhTu3PzeNfe+7mm2926vnz5zv1K6+84tT+NRJbG+fy\nr7fX2pxJVZBLTlo7D6tXr5qJYGaSrt85YcKEdmpJOhUfZWfR/0RLfKI0LGVE0lBOpNwOqYlkbwAg\n2QfA/ITnS+NRRiQN5US+VG6HdB+A4fH94QDq77rtUillRNJQTuRLiWNIJO8AMAjAOiTfBXARgFEA\n7iT5YwAzARySZyOz4l9nrrVzNZKe418L6q9//atT+/vyff5YQz2o9YxsttlmTn322Wc7tX8NxA8+\n+KDFOvw5qsaMGePU/njlgw8+WLSuVGtzNp155plOfeSRR2b6nknaMyd77713i2VrrLFGFqsOmj9O\n5s9/5HvvvffybE7JEjskMxvWxkODM26L1ChlRNJQTiSJLh0kIiJBUIckIiJBqKtr2ZWqtfGckSNH\nOrV/7sagQYOceo899nDq0I7rl5Y6derk1FdccYVT77PPPk69ePFipz766KNbrPOll14q+h4h2GCD\nDardhNz4Y73f+MY3WjzH//8+derUXNvUHvyf278moj+m9Prrrzt1a+diVpO2kEREJAjqkEREJAjq\nkEREJAjqkEREJAgNfVBDa/yLpR5//PFO7Q9e+xNgPf744049ceJEp77hhhucuh5PlA2df/FU/yAG\n/3dy4IHuBaj9yfakNr344ovVbkIi/0K+Q4a4s3f4Jzf7E4b6Wb7kkkuc2p/osdq0hSQiIkFQhyQi\nIkFQhyQiIkHQGFKCGTNmOLU/Yd/o0aOd2j9p8qijjnLqLl26OPXYsWOd2r9Ip1TOP3nQn2TRf/yp\np55y6loYM1plFfe7ZdJFfgXo0aNHRa/3J/P0czR4sHuJvvXWW6/FOlZffXWn9idy9H+vn376qVP/\n+9//duply5Y5dYcOHZzaHwMPTeIWEsnRJJtITilYNpLkbJKT4tuQYuuQ+qecSBJlRJKk2WV3CwA/\nJAbgKjMbGN8ezr5pUmOUE0mijEhRiR2SmT0NYEErD7WcTEgalnIiSZQRSVLJGNIpJI8GMBHAWWYW\n1gHtOfn73//u1G+++aZTX3XVVU69++67O/WvfvUrp95www2LPg6EN4lWiaqek3333depBwwY4NT+\neMt9992Xe5uy5v8MrZ3f9vLLL7dXc0qVeUb8sZbW3HjjjU59/vnnl/QeW2+9tVP7Y0grVqxw6k8+\n+aTFOqZNm+bUt9xyi1P75zH645vz57szvs+aNcup/Yv8Tp8+vUUbQlLuUXY3AugHYACAuQCuLP50\naVDKiSRRRuRLZXVIZjbfYgD+CGD7bJsl9UA5kSTKiBQqq0Mi2aegPAjAlLaeK41LOZEkyogUShxD\nInkHgEEA1iH5LoARAHYjOQDRETJvAzgh11YGbMoU9//PIYcc4tT777+/U/vnLZ1wgvvRbbrppi3e\nw78+VYhCzknnzp2derXVVnPqpqYmp/7rX/+ae5tK5Z+v4k8k6XvsscdaLCt1jCRreWbEHzM76aST\nWjzHH1/57ne/W85bfendd9916nHjxjm1P17z/PPPl/we/s/lj1Mdd9xxTt2zZ0+nfuutt0p+z2pK\n7JDMbFgri0e3skwamHIiSZQRSaJLB4mISBDUIYmISBB0LbuMLVjgnvfnX6vOnz9p1VXdX8Guu+7a\nYp277babUz/xxBPlN1Ba8K//FcL1BP0xowsvvNCpzz77bKeePXu2U/vX6wNazvVVz1o7D2vUqFFO\n7Y/H5PGeedtjjz2KPu6fNxk6bSGJiEgQ1CGJiEgQ1CGJiEgQNIZUIf96Vj/4wQ+c+tvf/rZT+2NG\nvqlTp7ZY5l+/SrJ1//33V7sJLa6vd8455zi1f36bf709P3fVGM+oNfX4Gfk/0z333FOllpRHW0gi\nIhIEdUgiIhIEdUgiIhIEjSEl+MY3vuHUJ598slMfdNBBTt2nTx+UYuXKlU7d2jkw/lw3Uhr/fBO/\nPuCAA5z6tNNOy71NZ5xxhlP75xl169bNqf/85z879fDhw526HsdDpPEU3UIiuT7Jx0m+RvJVkqfG\ny3uQnEDyDZLjSXZvn+ZKiJQTSUM5kSRJu+yWAzjDzPoD2AHASSS3AHAegAlmthmAf8a1NC7lRNJQ\nTqSooh2Smc0zs8nx/aUApgFYD8BQAGPip40BcGCejZSwKSeShnIiSVKPIZHsC2AggBcA9DKz5klk\nmgD0yrxl7aB3794tlg0b5l4h359XpV+/fhW958SJE5360ksvdeoQzompRIg58cdX/Nof97vmmmuc\n+pZbbnHqDz/8sMV77LDDDk595JFHOvU222zj1P/v//0/p/bn1hk/frxT33DDDU5d62NGIeakHvjj\no/78auXMydSeUh1lR3JNAHcDOM3MlhQ+Fk89XNv/OyQTyomkoZxIWxI7JJIdEYVnrJk1T4nYRLJ3\n/HgfAPPza6LUAuVE0lBOpJiko+wI4GYAU83s6oKH7gPQfNzpcADj/NdK41BOJA3lRJIkjSHtBOBI\nAK+QnBQvOx/AKAB3kvwxgJkADmn95dXVq5e7K3rLLbd06t/97nctXrP55ps7dalzprzwwgtOffnl\nlzu1fw0y/zykGlXTOenQoYNTn3jiiU598MEHO/XixYtbrMPfV5+Um+eee86pH3/8caceMWKEU9f6\nmFGspnNSC/yc+NkOXdEOycyeQdtbUYOzb47UIuVE0lBOJIkuHSQiIkFQhyQiIkGo6WvZfe1rX3Pq\n//u//3Nq/9yPjTbayKlLHR8CgGeffdapr7zySqf2zx/55JNPSn4PyZY/XvPiiy86tT9nlZ8L/zyl\n1s5f8/nnKv3lL39x6tNPP73o6+tkzEjamZ9d//y4W2+9tR1bUzptIYmISBDUIYmISBDUIYmISBDU\nIYmISBCCPqjhO9/5jlOfc845Tu0PRvsXrCyHfxDCtdde69SXXXaZUy9durTi95R8+Rcu9U90PeGE\nE5z6ggsuKPk9/Auy+gfYzJgxw6l10ILkoZwDtUKiLSQREQmCOiQREQmCOiQREQlCUGNI/v7Pgw46\nqGidZOrUqU79wAMPOPWKFStavOaqq65y6oULFzq19v3Xvjlz5jj1yJEji9blUE4kD36uHn74Yaf+\n4Q9/2J7NyVzS9BPrk3yc5GskXyV5arx8JMnZJCfFtyHt01wJkXIiaSgnkiRpC2k5gDPMbHI8y+NL\nJCcgmtHxKjO7qvjLpUEoJ5KGciJFJU0/MQ/AvPj+UpLTAKwXP1zbxxdKZpQTSUM5kSRMu6+bZF8A\nTwLoD+AsAMcCWARgIoCzzGyh9/yKd6JX45h67ftvnZml+mVUIycSDuWkupL+Zoby962tnKQ6yi7e\nvL4LwGlmthTAjQD6ARgAYC6AK4u8XBqEciJpKCfSlsQtJJIdATwA4CEzu7qVx/sCuN/Mvukt1xZS\nHUn65lvNnEg4lJPqqustJEY/3c0AphaGh2ThBDEHAZiSRSOlNiknkoZyIkmKbiGR3BnAUwBeQXQk\nDAD8DMAwRJvXBuBtACeYWZP32jC6YslEsW++yok0U04kjbZykvqghlIpQPUl7WB1qZST+qKcSBoV\nHdQgIiKSN3VIIiISBHVIIiISBHVIIiISBHVIIiISBHVIIiISBHVIIiIShNzOQxIRESmFtpBERCQI\n6pBERCQIuXZIJIeQnE7yTZLnZrTOmSRfiac6/ncZrx9NsonklIJlPUhOIPkGyfEku2ewzrKnZS4y\n1XPZ7Qx5+mjlJIychJyRuB2Z5qTSjMTryDQnWWckfn3t5MTMcrkB6ABgBoC+ADoCmAxgiwzW+zaA\nHhW8fhcAAwFMKVj2GwA/je+fC2BUBuscAeDMMtvYG8CA+P6aAF4HsEUl7SyyzrLbqZzUV05CzUhe\nOak0I3nkJOuM1FpO8txC2h7ADDObaWbLAfwFwAEZrbvsCzia2dMAFniLhwIYE98fA+DADNYJlNlO\nM5tnZpPj+0sBNE/1XHY7i6yz7HZmRDkJJCcBZwTILycV/VxZ5yTrjMTrrJmc5NkhrQfg3YJ6Nr5q\ndCUMwKMkJ5I8LoP1AUAv++py900AemW03lNIvkzy5lJ37zRjNGHZQAAvIKN2Fqzz+azaWQHlJMCc\nBJYRIJ+c5JERIJ+cZPL5h56TPDukvI4n38nMBgLYG8BJJHfJeP0jAHTOYD0VT8vMaKrnuxFN9byk\n8DGLtpdL/owZ3vTRNZcTkiMB3IZs2h5cTgLMCJBPTnL9W5JhTjL5/GshJ3l2SO8BWL+gXh/Rt5qK\nmNnc+N/3AdyDaFO+VEMBbExyCck5ADqS3D9+rAuAzzJo53yLAfhjW+0keTHJKSSXkxxRsLwjovCM\nNbNx8eImkr3jx/sAmF9KmwrW+afmdaZtZ46CzAnJwwHcB2BLknNI/gPA4vjzNwBroMTPv412Jn7+\nJHck+W+Si+NvnzsVPJZpTgLNCJBDTrL4W9IeOUmZkZ4k7yD5HsmFJJ8huX3B4zWRkzw7pIkANiXZ\nl+RqAA5F9IsrG8nOJNeK73cBsBdKnO6Y5JkAfg7gfQBfRxTshwGcGT9lINxdA+W2Ne20zG8COAfA\ng4i/oZCtT/WM6PMbHt8fDmAcUmprnSW0My/B5STOyG8BXIdo//j6AK5H9K1vOKL95BuhhM+/yHsV\n/fxJ9gBwP4BfA+iGaCD6fpLds85JwBkBMs5Jhn9Lcs9Jys9/TUS74bYFsDaiMaEHSXapqZxUckRE\n0g3RpvDriI6OOT+D9fVDdHTNZACvlrpORP+hlwP4CMDniDqeYwH0APAogDcAvAXgLwWv+RuigC0E\n8CSALQse2wfAa/E6VwJYEa/zVETf3lbEtw8Q7a8t1raxAEbE93cG8EX8c06Kb0O8do4H0L2En721\nde6NaJfCKwBeRhTIou2s95zEGVkC4GkAc9rIyYfxY91LyMhiAJ8AWBSv8734M18WZ2Rpa58/gP0A\nvOYtex3Aj7LOScgZyTonlWQk55xU/LekYJ2LEH3BrpmctHuoqnmLfwnLAaxS5DkjEW3WNtfHINqN\n1xHRt6FJBY/NRbQfujmgA+P7lyHan9ohvu2Uom1fdki6KSMFr2+tQ3oTwJXV/qwa+RZaTlp57wEA\nPgWwVrU/q1JujXalhq8B+MDMvkj7AjO71cw+tuhQ018A2KZ5Ux/Rt6L+JLua2SIzm1SwvA+Avma2\n0sz+leUPIbkKLSPPAehD8lCSHUkOR7QbKIsDb6R8oeXkSyS7IvqCO9K8gxdC12gd0ocA1iGZ6ucm\n2YHkKJIzSC5CdCKdAVgnfsrBiDa1Z5J8guQO8fLLEe1WGE/yLWZ09QFpF0FlxMw+RHR+yFkA5gH4\nPqLdLBUf+CEVCSonBe+zBqIxx2fN7Nel/1hVVu1NtPa8IdoUXgrg4CLPGYl4MxvAUQCmAtgwrrsj\n2ne6kfeaDgBOBzCrlfX1R3SM/+4JbRsL4KJqf0aNfgs5I/FzVwXwDoA9q/1ZNfItxJwAWB3AIyjY\nTVhrt4baQjKzRQAuAnA9yQPiI206ktybZGvfJtZENOj8UXwkzq+aH4hfdwTJbma2EtEA58r4sf1I\nbhIfjbI4Xr6ytTaRXJVkJ0RB7EiyU9pvXZK9QDMyMF5XVwBXIPpjNSHDH1tKFFpO4sOw70J04Mwx\nmf6w7anaPWI1bgAOB/Aiom84cxFt4u4QPzYCwG3x/S6IjhZZjGgT+yhEYdgI0cDkQ4iO2FuE6JDL\nHePXnR4/fymiI2UuKNKWWxF9Uyq8HV3tz6jRb4Fl5M+IjsxaCOAOAOtU+/PRLaycABgU/+1YiqhD\na76lOggilJsm6BMRkSBo15CIiASh7A6JOcxhI/VHOZE0lBMBUN4uO5IdEJ0xPRjRGecvAhhmZtOy\nbZ7UMuVE0lBOpFm5W0h5zmEj9UM5kTSUEwEQndNQjtbmJvlO4RNI6miJOmJm5Uy8pZw0GOVE0mgr\nJ+VuISkckoZyImkoJwKg/A4plzlspO4oJ5KGciIAyu+QMp/DRuqSciJpKCcCoMwxJDNbQfJkRNdN\n6gDgZh0RIz7lRNJQTqRZbldq0CBkfSlzsDqRclJflBNJI+uDGkRERDKlDklERIKgDklERIKgDklE\nRIKgDklERIKgDklERIKgDklERIKgDklERIKgDklERIKgDklERIKgDklERIKgDklERIJQ7oyxAACS\nMwEsBrASwHIz2z6LRkl9UU4kiTIiQIUdEqKZHnczs4+yaIzULeVEkigjkskuu1wuNy91RzmRJMpI\ng6toPiSS/wWwCNFm9u/N7KaCxzR/SQoXXnihU48cObLFc0j3/+nuu+/u1E8++WTm7fJVMs+NctI4\nys1JsYzEjzdkTtZaay2nXnPNNZ163333dep11lnHqX/729869bJlyzJsXfnaykmlu+x2MrO5JHsC\nmEByupk9XeE6pf4oJ5JEGZHKdtmZ2dz43/cB3ANAA5HSgnIiSZQRASrokEh2JrlWfL8LgL0ATMmq\nYVIflBNJooxIs0p22fUCcE88vrEqgNvNbHwmrapjxxxzjFOfe+65Tp1mTK+Scb8qUE4kScNmpG/f\nvk7t/z3YYYcdnHqrrbYqaf19+vRx6tNOO62k17e3sjskM3sbwIAM2yJ1SDmRJMqINNOVGkREJAjq\nkEREJAiVHvYtJdpwww2dulOnTlVqiWTpO9/5jlMfeeSRTr3rrrs6df/+/Z3aHxc855xznHru3LlO\nvdNOOzn17bff7tQvvPBCQoslb5tvvrlTn3766S2ec/jhhzt1586dndo/B/Hdd9916iVLljj1Flts\n4dSHHHKIU994441OPX369BZtqiZtIYmISBDUIYmISBDUIYmISBA0hpSzwYMHO/Upp5xS9PnTpk1r\nsWzo0KFOPW/evMobJmU79NBDWyy7+uqrnbpnz55O7Y8FPPHEE0Wff/nllxdtg78+//XDhg0r+nqp\nXLdu3Zz617/+tVP74zddu3Yt+T3eeOMNp957772derXVVnPqqVOnOrV/bTu/Do22kEREJAjqkERE\nJAjqkEREJAgaQ8rYzjvv7NSjR492an+/s3/+yRVXXNFinTNnzsymcZLKqqu6/y2+/e1vO/Uf/vCH\nFq/p0qWLUz/11FNOfckllzj1M88849Srr766U995551OveeeexZpMfDSSy8VfVyyd9BBBzn1T37y\nk4rXOWPGDKf+/ve/79SzZs1y6k033bTi9wxJ4hYSydEkm0hOKVjWg+QEkm+QHE+ye77NlJApI5KG\nciJJ0uyyuwXAEG/ZeQAmmNlmAP4Z19K4lBFJQzmRohI7pHjWxgXe4qEAxsT3xwA4MON2SQ1RRiQN\n5USSlDuG1MvMmuL7TYjmM2lI/vkgw4cPd+r11luv6Ov981Fuu+22TNoVgJrNiH8duptuusmp/d85\nAEyYMMGpDzvsMKdetGhR0ff0z1lJGjOaPXu2U48ZM6aNZwavZnLi/95/+MMflvT61saCX3zxRac+\n7zx3A9EfM/L5166rdRUfZWfRqHxNzRgn7UsZkTSUEym3Q2oi2RsASPYBMD+7JkmdUEYkDeVEvlRu\nh3QfgOZ9U8MBjMumOVJHlBFJQzmRLyWOIZG8A8AgAOuQfBfARQBGAbiT5I8BzARwSNtrqG/+taF+\n9KMfOfVj/6YCAAAgAElEQVQXX3zh1AsWuGO6/vkptajWMuKPBfzyl7906vPPP7/o62+44YYWy37+\n8587ddKYkd+GCy64oOjz/fPVTjvtNKd+//33i74+BLWWE5//Ozj++OOd+rjjjnNqf1zRP8cIAObP\ndzcI/fdI0qtXsENuZUnskMysras0Dm5juTQYZUTSUE4kiS4dJCIiQVCHJCIiQdC17ErUr18/p/7b\n3/5W0uuvu+46p3788ccrbpOUxh/v+dnPfubUn3/+uVM/8sgjTu2fKwIAn3zySdH37NSpk1Pvtdde\nTr3BBhs4tT/GdOmllzr1vffeW/T9JH/vvfeeU//iF79w6lLHg9Lwc7HDDjtk/h7VpC0kEREJgjok\nEREJgjokEREJgsaQSuTPT7LNNtsUff4///lPp77mmmsyb5MUt/baazv1iSee6NT+vn5/zMif9ybN\n2IA/T83YsWOdervttnNqf2zgrrvucurf/OY3ie8p1VXOmNGpp57q1P68Wkm++c1vFn382Wefdern\nnnuupPW3N20hiYhIENQhiYhIENQhiYhIEJjHsfIAQLIuLiN/4IHufGG33nqrU/v7fP19toceeqhT\nz5s3L7vGtSMzazkJUAbaIyf+9b7880f8/wObbLKJU3/66adOfeyxx7Z4j/3339+pt9pqK6dea621\nir6nf83Dgw8+2Knvv//+Fu8ZolrOSaU6d+7s1FtuuaVTjxgxosVr9t5776LrXGUVd5vBz4k/9uhn\n+3vf+55Tv/XWW0Xfr720lRNtIYmISBASOySSo0k2kZxSsGwkydkkJ8W3Ifk2U0KnnEgSZUSSpNlC\nugWAHxIDcJWZDYxvD2ffNKkxyokkUUakqMQOycyeBrCglYdy2VcstUk5kSTKiCSp5MTYU0geDWAi\ngLPMbGFGbaoq/+Kp/gmK/iCi77///a9T1+pBDBmqek78i6X6k9n17NnTqf2B3zQH/vi5mDNnjlMv\nWbLEqfv06ePUH3zwgVPXykEMGal6RtLo2LGjUw8cONCp/b8V/u/4s88+a7HOuXPnOvXzzz/v1P6J\n+P6BE342/Tb6J3Vfe+21Tu3/36i2cg9quBFAPwADAMwFcGVmLZJ6opxIEmVEvlRWh2Rm8y0G4I8A\nts+2WVIPlBNJooxIobI6JJKF26IHAZjS1nOlcSknkkQZkUKJY0gk7wAwCMA6JN8FMALAbiQHIDpC\n5m0AJ+Taypy0Nh7005/+1Kn9fbRJ9ahRozJqXW0JOScLFrjj6P5+dX+8pkePHk7tjym1NjnemDFj\nnPqjjz5y6jvuuMOp/fGFv/71ry3WWW9CzkhrVlttNaceMsQ9QPDuu+8u+vpf/vKXTv3YY4+1eI5/\nIr2fPf/izP4J1z5/PPSyyy5z6lmzZjm1n+Vly5YVXX/eEjskMxvWyuLRObRFaphyIkmUEUmiKzWI\niEgQ1CGJiEgQGnqCvtYm19trr71KWsd9993n1K+//npFbZL8+ed6fP3rX694nf5Y4qBBg4rWK1eu\ndGr//DVpf/45PL/4xS+c+uyzz3Zqfwz6oYcecurf/e53Tr1wYcvTq/zsPfDAA07tT8Dnnzd0+eWX\nO7U/xjR06FCnvv3225360UcfderWJoL0x2B9kydPLvp4KbSFJCIiQVCHJCIiQVCHJCIiQWioCfr8\nfb6tXWfOPw/A548/7LPPPk7tX7OsXjTyxGvl8M9ZefDBB53an2ht3XXXdWr/enu1opZysuqq7hD6\nJZdc4tT+mNHHH3/s1Oedd55T++eS+eeifetb32rRhuuuu67oc2bMmOHU//u//+vUTzzxhFN37drV\nqXfccUenPuKII5zan1jSv1Zea/xzmTbeeOPE1/g0QZ+IiARNHZKIiARBHZKIiAShoceQVqxY0eI5\n/r59//MZPny4U/vXKKtXtTQ2EIKkrGkMqTR55MQfj/HPG/LHjE44wb3M3oQJE5x6++3dC5Ufe+yx\nTu2PKwLAGmus4dQXX3yxU996661O7Y/flMrP5bBhw4rWrTnzzDOd+s033yy5HWWNIZFcn+TjJF8j\n+SrJU+PlPUhOIPkGyfEku5fcIqkbyomkoZxIkqRddssBnGFm/QHsAOAkklsAOA/ABDPbDMA/41oa\nl3IiaSgnUlTRDsnM5pnZ5Pj+UgDTAKwHYCiA5uvtjwFwYJ6NlLApJ5KGciJJUo8hkewL4EkAWwGY\nZWZrx8sJ4KPmuuD5VR8b8PeXjh7tXun+mGOOafGapDEk/5j7d955p4IW1o60YwO1mJM8fP/733fq\nf/zjH07d6GNI1ciJ//dgzpw5Tu3PJeTPDTR9+nSn9s/Z2WSTTYq+X2t/a/3r5fnzF/nXPMxba3PE\n+bI47qCi85BIrgngbgCnmZlz5mc89XBd/lGR0ignkoZyIm1J7JBIdkQUnrFmNi5e3ESyd/x4HwDz\n82ui1ALlRNJQTqSYpKPsCOBmAFPN7OqCh+4D0Hz883AA4/zXSuNQTiQN5USSJM2HtBOAIwG8QnJS\nvOx8AKMA3EnyxwBmAjgktxZWYMCAAU49ePBgp/b34wMt5xu5/vrrnbqpqSmj1tWVms5JHjbaaKNq\nNyFEQeXEv5alP4a0+uqrO3Vr86cV8scJn3rqKae+9957W7zm7bffdur2HjPy5XVealpFOyQzewZt\nb0UNbmO5NBjlRNJQTiSJLh0kIiJBUIckIiJBSBpDqmndu7tXIOndu3fia2bPnu3U55xzjlNXex+r\n1IZnnnnGqVdZxf3upxy1P/8zHzRokFMfeKB7Pu7AgQOdev589+C/W265xakXLFjg1P55TJJMW0gi\nIhIEdUgiIhIEdUgiIhKEuh5DyoL29Us5Xn31Vaf254zp16+fU/vXSKzVa9nVksWLFzv1bbfd5tRj\nx451av0tyJ+2kEREJAjqkEREJAjqkEREJAjqkEREJAh1fVCDP6HWs88+69Q777xzezZHGog/AO5P\nvHbTTTc59SWXXOLUp556qlNPnTo1w9ZJGjqIof0lTT+xPsnHSb5G8lWSp8bLR5KcTXJSfBvSPs2V\nECknkoZyIkmStpCWAzjDzCbHszy+RHICohkdrzKzq3JvodQC5UTSUE6kqKTpJ+YBmBffX0pyGoD1\n4oeTJ1+XhqCcSBrKiSRh2v2kJPsCeBJAfwBnATgWwCIAEwGcZWYLvecHtwM2mrCyNNqPHDGzVB9e\nPeQkD926dXPqO++806l33313p/773//u1D/60Y+c+uOPP86wddlRTiSNtnKS6ii7ePP6LgCnmdlS\nADcC6AdgAIC5AK7MqJ1Sw5QTSUM5kbYkdkgkOwK4G8CfzGwcAJjZfIsB+COA7fNtpoROOZE0lBMp\nJukoOwK4GcBUM7u6YHmfgqcdBGBKPs2TWqCcSBrKiSQpOoZEcmcATwF4BdGRMADwMwDDEG1eG4C3\nAZxgZk3ea7XPt44UGxtQTkrnjyldeumlTn3CCSc49TbbbOPUoZ6XpJxIGm3lJOkou2fQ+lbUQ1k0\nSuqDciJpKCeSRJcOEhGRIKhDEhGRIKQ+D6nkFWufb11Je35JqZSTSNI5crVyPpxyImlUdB6SiIhI\n3tQhiYhIEHKdfqJr164AgM8++wydOnXKbL1Zry+PddZTGxcvXpzZe7ama9eudfV5lbPOrHbZVfNz\nVE7yWV8e6ww1JxpDklQ0NiBpKCeSRls5ya1DEhERKYXGkEREJAjqkEREJAi5dkgkh5CcTvJNkudm\ntM6ZJF+Jpzr+dxmvH02yieSUgmU9SE4g+QbJ8SS7Z7DOsqdlLjLVc9ntDHn6aOUkjJyEnJG4HZnm\npNKMxOvINCdZZyR+fe3kxMxyuQHoAGAGgL4AOgKYDGCLDNb7NoAeFbx+FwADAUwpWPYbAD+N758L\nYFQG6xwB4Mwy29gbwID4/poAXgewRSXtLLLOstupnNRXTkLNSF45qTQjeeQk64zUWk7y3ELaHsAM\nM5tpZssB/AXAARmtu+wjeczsaQALvMVDAYyJ748BcGAG6wTKbKeZzTOzyfH9pQCap3ouu51F1ll2\nOzOinASSk4AzAuSXk4p+rqxzknVG4nXWTE7y7JDWA/BuQT0bXzW6EgbgUZITSR6XwfoAoJd9dbn7\nJgC9MlrvKSRfJnlzqbt3mjGa6nkggBeQUTsL1vl8Vu2sgHISYE4CywiQT07yyAiQT04y+fxDz0me\nHVJex5PvZGYDAewN4CSSu2S8/hEAOmewnoqnZWY01fPdiKZ6XlL4mEXbyyV/xgxv+uiaywnJkQBu\nQzZtDy4nAWYEyCcnuf4tyTAnmXz+tZCTPDuk9wCsX1Cvj+hbTUXMbG787/sA7kF50x0PBbAxySUk\n5wDoSHL/+LEuAD7LoJ2ppmUmeTHJKSSXkxxRsLx5quexFk/1DKCJZO/48T4A5pfSJoY5fXSQOSF5\nOID7AGxJcg7JfwBYHH/+BmANlPj5t9HOxM8/HkCeT3IxyWmF3+azzkmgGQFyyEkWf0vaIyeV/i2J\nH6uJnOTZIU0EsCnJviRXA3Aool9c2Uh2JrlWfL8LgL1Q4nTHJM8E8HMA7wP4OqJgPwzgzPgpA+Hu\nGii3rWmnZX4TwDkAHkT8DYVsfapnRJ/f8Pj+cADjkFJb6yyhnXkJLidxRn4L4DpE+8fXB3A9om99\nwxHtJ98IJXz+Rd4rzed/KoD1zKxr/P6/I/mNrHMScEaAjHOS4d+S3HNSyd+S+PW1k5NKjohIuiHa\nFH4d0dEx52ewvn6Ijq6ZDODVUtcJoBuA5QA+AvA5oo7nWAA9ADwK4A0AbwH4S8Fr/oYoYAsBPAlg\ny4LH9gHwWrzOlQBWxOs8FdG3txXx7QNE+2uLtW0sgBHx/Z0BfBH/nJPi2xCvneMBdC/hZ29tnXsj\n2qXwCoCXEQWyaDvrPSdxRpYAeBrAnDZy8mH8WPcSMrIYwCcAFsXrfC/+zJfFGVma5vNH9K3zAwB9\nss5JyBnJOieVZCTnnGT6t6TI7zXInLR7qKp5i38JywGsUuQ5IxFt1jbXxyDajdcR0behSQWPzUW0\nH7o5oAPj+5ch2p/aIb7tlKJtToh0U0a893wAwKeIOrWh1f6cGv0Wak7i19Ts35JGu1LD1wB8YGZf\npH2Bmd1qZh9bdKjpLwBs07ypj+hbUX+SXc1skZlNKljeB0BfM1tpZv/K8oeQXAWZETPbD9E5H0cD\nuJXkBiX+XJKtIHNS6xqtQ/oQwDokU/3cJDuQHEVyBslFiE6kMwDrxE85GNGm9kyST5DcIV5+OaLd\nCuNJvsWMrj4g7SLYjMR/kO5CdMjuQaX9WJKxYHNSyxqtQ3oO0T77tP+ZD0d0RN4eZtYN0X5nxjeY\n2UQzOxBAT0T7TO+Mly81s7PNbOP49WeS3D3F++V1CLSkF3pGgGiXz8cpnyv5CD0nNfm3pKE6JDNb\nBOAiANeTPCA+0qYjyb1J/rqVl6yJKHQfxUfi/Kr5gfh1R5DsZmYrEQ1wrowf24/kJvHRKIvj5Stb\naxPJVUl2QrR/uCPJTmm/dUn2QstIfDTd3iTXiNd3JIBvIRqElioJLSfxc2v/b0m1B7GqcUP0beVF\nREc2zQVwP4Ad4sdGALgtvt8F0beVxYg2sY9CFIaNEH1LfQjREXuLEO1G2TF+3enx85ciOlLmgiJt\nuRXRESuFt6Or/Rk1+i2UjADYHNFZ8IsR7SZ6AikGtnVrrJzEz635vyWaoE9ERIJQW5tzIiJSt8ru\nkJjDHDZSf5QTSUM5EQDl7bIj2QHRGdODEZ1x/iKAYWY2LdvmSS1TTiQN5USalbuFlOccNlI/lBNJ\nQzkRAMCqZb6utblJvlP4BJI6WqKOmFk5E28pJw1GOZE02spJuVtICoekoZxIGsqJACi/Q8plDhup\nO8qJpKGcCIDyO6TM57CRuqScSBrKiQAocwzJzFaQPBnAI4guU3GzjogRn3IiaSgn0iy3KzVoELK+\nlDlYnUg5qS/KiaSR9UENIiIimVKHJCIiQVCHJCIiQVCHJCIiQVCHJCIiQVCHJCIiQVCHJCIiQVCH\nJCIiQVCHJCIiQVCHJCIiQSh3PqS6RbpXtLj66qud+pRTTnHqKVOmOPXQoUOd+p133smwdSIi9aui\nDonkTACLAawEsNzMts+iUVJflBNJoowIUPkWkgHYzcw+yqIxUreUE0mijEgmY0i5XN1X6o5yIkmU\nkQaXxRbSoyRXAvi9md2UQZuqqm/fvk595JFHOrU/XceWW27p1JtvvrlTawwJQJ3lZLPNNmuxrGPH\njk696667OvX111/v1F988UWmbbr33nudetiwYS2e8/nnn2f6nhmrq4y0xs8IAOy4445Ofckllzj1\nLrvskmubQlNph7STmc0l2RPABJLTzezpLBomdUU5kSTKiFS2y87M5sb/vg/gHgAaiJQWlBNJoowI\nUEGHRLIzybXi+10A7AVgSvFXSaNRTiSJMiLNKtll1wvAPfF5O6sCuN3MxmfSKqknyokkUUYEAEB/\nkD6zFZP5rDhna665plP/6U9/cur999/fqf3B6f3228+pH3nkkQxbVz1mlssRUCHmpH///k59zDHH\nOPUPfvCDFq9ZZRV3Z8O6665b9PGs/9/567vttttaPOeMM85w6sWLF2fahrgdDZOTUvXs2bPFsnnz\n5hWtt9tuu6KP16q2cqJLB4mISBDUIYmISBDUIYmISBB0cVXPxx9/7NQ6sbX++RfUveyyy5x6n332\nac/mlMX/GY4++ugWzxk9erRT/+tf/8q1TZLM/7317t27aF0vY0ht0RaSiIgEQR2SiIgEQR2SiIgE\nQWNInu7duzv11ltvXaWWSHvxz+F59NFHnTrNGNL8+fOd+uabb3Zq/zwk//w1fyzhu9/9rlMPGjQo\nsQ1S+/wcNBptIYmISBDUIYmISBDUIYmISBA0huTp3LmzU2+wwQZFn+/v8/3Wt77l1NOnT3dqndcU\nvhtvvNGpx40bl/ia5cuXO3Wl54t069bNqV955RWn9q+V5/Mn7AOAiRMnVtQmyZ8/ntmpU6cqtaQ6\nEreQSI4m2URySsGyHiQnkHyD5HiS3YutQ+qbMiJpKCeSJM0uu1sADPGWnQdggpltBuCfcS2NSxmR\nNJQTKSqxQ4qnEV7gLR4KYEx8fwyAAzNul9QQZUTSUE4kSbljSL3MrCm+34Rogq26MGfOHKceM2aM\nU48YMaLo60eOHOnUCxcudOrrr7++/MbVlprNiD8eNGvWrHZvw5577unUa6+9dkmvnz17dotly5Yt\nq6hNOanZnLQHfz6k559/vkotaR8VH2Vn0ShczU+eJflRRiQN5UTK7ZCaSPYGAJJ9AMxPeL40HmVE\n0lBO5Evldkj3ARge3x8OIPm4WGk0yoikoZzIlxLHkEjeAWAQgHVIvgvgIgCjANxJ8scAZgI4JM9G\ntif/PICLL77YqZPGkHyNcG2qRstIHg477DCnPu6445x6jTXWKPp6P7cXXXRRNg3LUKPnZMWKFS2W\nLVq0yKn988823njjXNsUmsQOycyGtfHQ4IzbIjVKGZE0lBNJoksHiYhIENQhiYhIEHQtuxIlzWsj\n0pojjjjCqc8991yn3mSTTZx6tdVWK2n9kydPdmr/XCqpPv+cRAB45plnnHrfffdtr+YESVtIIiIS\nBHVIIiISBHVIIiISBI0hlcgfM/LP//BrqT19+/Z16qOOOsqp99hjj5LXufPOO1fSJCxevNipzzvP\nvSj2Qw895NSffvppRe8n7UN/L1zaQhIRkSCoQxIRkSCoQxIRkSBoDEka3je/+U2nHjfOvb7nhhtu\nWPF7+Nc0LHXs4Omnn3bqP/zhDxW3ScL3ta99rdpNaFfaQhIRkSAkdkgkR5NsIjmlYNlIkrNJTopv\nQ/JtpoROOZEkyogkSbOFdAsAPyQG4CozGxjfHs6+aVJjlBNJooxIUWmmn3iaZN9WHqr/iX4ktXrK\niX+9wizmtKr0Goj+Nc6GDHH/rj/8cPh/x+spI+1l6NCh1W5Cu6pkDOkUki+TvJlk98xaJPVGOZEk\nyogAKL9DuhFAPwADAMwFcGVmLZJ6opxIEmVEvlRWh2Rm8y0G4I8Ats+2WVIPlBNJooxIobI6JJJ9\nCsqDAExp67nSuJQTSaKMSKHEgxpI3gFgEIB1SL4LYASA3UgOQHSEzNsATsi1lQFJGpz2B8B32WUX\np77uuuvyaViV1XJOpkxx/wZ+73vfc2p/cr3x48e3WMdnn31WURt+/OMfO/XJJ5/s1P6JtFkcaNHe\najkjWWjtZOgnnnjCqffbb792ak2Y0hxlN6yVxaNzaIvUMOVEkigjkkRXahARkSCoQxIRkSAwrwmi\nSNbFzFP+vvoVK1Y4ddLn5z++zTbbOPXUqVMraF37MbNcBi3qJSeV6t7dPf3mgw8+cGo/R/4Jk/4E\nfdWinJTmBz/4gVPfeeedTv3JJ584df/+/Z36nXfeyadhOWsrJ9pCEhGRIKhDEhGRIKhDEhGRIGiC\nvhL9/ve/d+rjjz++6PP9MajjjjvOqc8444xsGiY1ba+99qp2E6QK/DFpn//3Y/XVV8+zOVWnLSQR\nEQmCOiQREQmCOiQREQmCxpAS+Od/TJ8+vUotkXJ17NjRqffcc0+nfvzxx536008/zb1Nxx57rFNf\nffXVub+nhOfee+91av/vy+abb+7Up512mlOfdNJJ+TSsSopuIZFcn+TjJF8j+SrJU+PlPUhOIPkG\nyfGaVKuxKSeShnIiSZJ22S0HcIaZ9QewA4CTSG4B4DwAE8xsMwD/jGtpXMqJpKGcSFFFOyQzm2dm\nk+P7SwFMA7AegKEAxsRPGwPgwDwbKWFTTiQN5USSpL6WHcm+AJ4EsBWAWWa2drycAD5qrgueX5fX\nnvLPC3j99dedeuONNy7p9ZtuuqlTv/XWWxW0Lj9pr1EWQk523nlnp77ggguceo899nBq/3f27rvv\nVtyGHj16OPU+++zj1Ndee61Td+3atej6/GuaHXDAAU7tj4NVSy3lJAT+3wN/LHH48OFO3adPH6du\nj/HOPFR0LTuSawK4G8BpZrbEW7EhmlxLGpxyImkoJ9KWxA6JZEdE4RlrZuPixU0ke8eP9wEwP78m\nSi1QTiQN5USKSTrKjgBuBjDVzAq3Je8D0LwtORzAOP+10jiUE0lDOZEkSech7QTgSACvkJwULzsf\nwCgAd5L8MYCZAA7JrYWBe+2115x6o402Kvr8vOafqrKq5sTfD3/dddc59VZbbVX09eecc45TL1my\npI1npm/D4MGDnXrbbbctaX1PPPGEU994441OHcqYUYn09ySB//fBr5ctW9aezWl3RTskM3sGbW9F\nDW5juTQY5UTSUE4kiS4dJCIiQVCHJCIiQdC17Erk79O96aabnHr//fdvz+ZIBk488cTc38MfY2pq\nanLq+++/36lPP/10p67V802kMv75aUOHDnXqcePq6/gPbSGJiEgQ1CGJiEgQ1CGJiEgQNIZUoalT\npzr1tGnTnHqLLbZoz+Y0JH9cz59r6JRTTnHqo48+OvM2+Ncg9K899/TTTzu1P/b46quvOnWdnq8m\nCQ45xD0Fyz/vqN7nY9MWkoiIBEEdkoiIBEEdkoiIBCH1fEglr7hO5y9J4p9vkqRWxgrSznNTqvbI\nSadOnZz6mGOOceqLL77Yqdde25mKp8W5HhMmTGjxHvfdd59Tz5s3r2ibauX3Xqpazkk1+H8v7rjj\nDqfefPPNndqfB+udd97Jp2E5q2g+JBERkbwlTT+xPsnHSb5G8lWSp8bLR5KcTXJSfBvSPs2VECkn\nkoZyIkmSDvteDuAMM5scz/L4EskJiGZ0vMrMrsq9hVILlBNJQzmRokoaQyI5DsB1iOY1WWpmVxZ5\nbl3u821UpYwN1FpO6nXcrxrqOSftISmL9ZK9iseQSPYFMBDA8/GiU0i+TPJmkt0rbqHUBeVE0lBO\npDWpOqR48/ouAKeZ2VIANwLoB2AAgLkA2vxmI41DOZE0lBNpS+IuO5IdATwA4CEzu7qVx/sCuN/M\nvuktr49tSwGQvCumlnOiXXbZqeectAftsiuC0adzM4CpheEh2afgaQcBmJJFI6U2KSeShnIiSYpu\nIZHcGcBTAF5BdCQMAPwMwDBEm9cG4G0AJ5hZk/fa+ujKBUDxb77KiTRTTiSNtnKiKzVIKjoDX9JQ\nTiQNXalBRESCpg5JRESCoA5JRESCoA5JRESCoA5JRESCkHRx1Ypsu+22AIA5c+Zg3XXXzWy9Wa8v\nj3XWUxv/85//ZPaerdl2223r6vOq5jqr2UblJJ/15bHOUHOiw74lFR3OK2koJ5JGu5+HJCIiUgqN\nIYmISBDUIYmISBBy7ZBIDiE5neSbJM/NaJ0zSb4ST3X87zJeP5pkE8kpBct6kJxA8g2S40udj6WN\ndZY9LXORqZ7LbmfI00crJ2HkJOSMxO3INCeVZiReR6Y5yToj8etrJydmlssNQAcAMwD0BdARwGQA\nW2Sw3rcB9Kjg9bsgmhhsSsGy3wD4aXz/XACjMljnCABnltnG3gAGxPfXBPA6gC0qaWeRdZbdTuWk\nvnISakbyykmlGckjJ1lnpNZykucW0vYAZpjZTDNbDuAvAA7IaN1lH8ljZk8DWOAtHgpgTHx/DIAD\nM1gnUGY7zWyemU2O7y8FMA3AepW0s8g6y25nRpSTQHIScEaA/HJS0c+VdU6yzki8zprJSZ4d0noA\n3i2oZ+OrRlfCADxKciLJ4zJYHwD0sq8ud98EoFdG6614WmZ+NdXzC8ionQXrDGH6aOUkwJwElhEg\nn5zkkREgn5xk8vmHnpM8O6S8jiffycwGAtgbwEkkd8ly5RZth2bR9oqnZWY01fPdiKZ6XpJFOxne\n9NHKSWA5CTAjQD45yTUjQGY5yeTzr4Wc5NkhvQdg/YJ6fUTfaipiZnPjf98HcA+iTflKNZHsDXw5\ne+X8SldoZvMtBuCPKLGdjKZ6vhvAWDMbl0U7C9b5p+Z1VtrODCgnAeUk0IwAOeQkp4wAGecki8+/\nVj0nVL4AAAEBSURBVHKSZ4c0EcCmJPuSXA3AoQDuq2SFJDuTXCu+3wXAXshmuuP7AAyP7w8HMK7I\nc1NhBdMyk61P9VxJO9taZyXtzIhy8pWq5iTgjAAZ5yTHjAAZ56TSz7+mclLKERCl3hBtCr+O6OiY\n8zNYXz9ER9dMBvBqOesEcAeAOQA+R7RP+lgAPQA8CuANAOMBdK9wnT8CcBuiqZpfRvSL7lXC+nYG\n8EX8c06Kb0MqaWcb69y7knYqJ/WVk5AzknVOsshIHjnJOiO1lhNdOkhERIKgKzWIiEgQ1CGJiEgQ\n1CGJiEgQ1CGJiEgQ1CGJiEgQ1CGJiEgQ1CGJiEgQ1CGJiEgQ/j/pUqsGWPUFXgAAAABJRU5ErkJg\ngg==\n", 158 | "text/plain": [ 159 | "" 160 | ] 161 | }, 162 | "metadata": {}, 163 | "output_type": "display_data" 164 | } 165 | ], 166 | "source": [ 167 | "for i in range(9):\n", 168 | " plt.subplot(3,3,i+1)\n", 169 | " plt.imshow(X_train[i], cmap='gray', interpolation='none')\n", 170 | " plt.title(\"Class {}\".format(y_train[i]))" 171 | ] 172 | }, 173 | { 174 | "cell_type": "markdown", 175 | "metadata": {}, 176 | "source": [ 177 | "## Format the data for training\n", 178 | "Our neural-network is going to take a single vector for each training example, so we need to reshape the input so that each 28x28 image becomes a single 784 dimensional vector. We'll also scale the inputs to be in the range [0-1] rather than [0-255]" 179 | ] 180 | }, 181 | { 182 | "cell_type": "code", 183 | "execution_count": 5, 184 | "metadata": { 185 | "collapsed": false 186 | }, 187 | "outputs": [ 188 | { 189 | "name": "stdout", 190 | "output_type": "stream", 191 | "text": [ 192 | "Training matrix shape (60000, 784)\n", 193 | "Testing matrix shape (10000, 784)\n" 194 | ] 195 | } 196 | ], 197 | "source": [ 198 | "X_train = X_train.reshape(60000, 784)\n", 199 | "X_test = X_test.reshape(10000, 784)\n", 200 | "X_train = X_train.astype('float32')\n", 201 | "X_test = X_test.astype('float32')\n", 202 | "X_train /= 255\n", 203 | "X_test /= 255\n", 204 | "print(\"Training matrix shape\", X_train.shape)\n", 205 | "print(\"Testing matrix shape\", X_test.shape)" 206 | ] 207 | }, 208 | { 209 | "cell_type": "markdown", 210 | "metadata": {}, 211 | "source": [ 212 | "Modify the target matrices to be in the one-hot format, i.e.\n", 213 | "\n", 214 | "```\n", 215 | "0 -> [1, 0, 0, 0, 0, 0, 0, 0, 0]\n", 216 | "1 -> [0, 1, 0, 0, 0, 0, 0, 0, 0]\n", 217 | "2 -> [0, 0, 1, 0, 0, 0, 0, 0, 0]\n", 218 | "etc.\n", 219 | "```" 220 | ] 221 | }, 222 | { 223 | "cell_type": "code", 224 | "execution_count": 6, 225 | "metadata": { 226 | "collapsed": false 227 | }, 228 | "outputs": [], 229 | "source": [ 230 | "Y_train = np_utils.to_categorical(y_train, nb_classes)\n", 231 | "Y_test = np_utils.to_categorical(y_test, nb_classes)" 232 | ] 233 | }, 234 | { 235 | "cell_type": "markdown", 236 | "metadata": {}, 237 | "source": [ 238 | "# Build the neural network\n", 239 | "Build the neural-network. Here we'll do a simple 3 layer fully connected network.\n", 240 | "" 241 | ] 242 | }, 243 | { 244 | "cell_type": "code", 245 | "execution_count": 7, 246 | "metadata": { 247 | "collapsed": true 248 | }, 249 | "outputs": [], 250 | "source": [ 251 | "model = Sequential()\n", 252 | "model.add(Dense(512, input_shape=(784,)))\n", 253 | "model.add(Activation('relu')) # An \"activation\" is just a non-linear function applied to the output\n", 254 | " # of the layer above. Here, with a \"rectified linear unit\",\n", 255 | " # we clamp all values below 0 to 0.\n", 256 | " \n", 257 | "model.add(Dropout(0.2)) # Dropout helps protect the model from memorizing or \"overfitting\" the training data\n", 258 | "model.add(Dense(512))\n", 259 | "model.add(Activation('relu'))\n", 260 | "model.add(Dropout(0.2))\n", 261 | "model.add(Dense(10))\n", 262 | "model.add(Activation('softmax')) # This special \"softmax\" activation among other things,\n", 263 | " # ensures the output is a valid probaility distribution, that is\n", 264 | " # that its values are all non-negative and sum to 1." 265 | ] 266 | }, 267 | { 268 | "cell_type": "markdown", 269 | "metadata": {}, 270 | "source": [ 271 | "## Compile the model\n", 272 | "Keras is built on top of Theano (and now TensorFlow as well), both packages that allow you to define a *computation graph* in Python, which they then compile and run efficiently on the CPU or GPU without the overhead of the Python interpreter.\n", 273 | "\n", 274 | "When compiing a model, Keras asks you to specify your **loss function** and your **optimizer**. The loss function we'll use here is called *categorical crossentropy*, and is a loss function well-suited to comparing two probability distributions.\n", 275 | "\n", 276 | "Here our predictions are probability distributions across the ten different digits (e.g. \"we're 80% confident this image is a 3, 10% sure it's an 8, 5% it's a 2, etc.\"), and the target is a probability distribution with 100% for the correct category, and 0 for everything else. The cross-entropy is a measure of how different your predicted distribution is from the target distribution. [More detail at Wikipedia](https://en.wikipedia.org/wiki/Cross_entropy)\n", 277 | "\n", 278 | "The optimizer helps determine how quickly the model learns, how resistent it is to getting \"stuck\" or \"blowing up\". We won't discuss this in too much detail, but \"adam\" is often a good choice (developed here at U of T)." 279 | ] 280 | }, 281 | { 282 | "cell_type": "code", 283 | "execution_count": 8, 284 | "metadata": { 285 | "collapsed": true 286 | }, 287 | "outputs": [], 288 | "source": [ 289 | "model.compile(loss='categorical_crossentropy', optimizer='adam')" 290 | ] 291 | }, 292 | { 293 | "cell_type": "markdown", 294 | "metadata": {}, 295 | "source": [ 296 | "## Train the model!\n", 297 | "This is the fun part: you can feed the training data loaded in earlier into this model and it will learn to classify digits" 298 | ] 299 | }, 300 | { 301 | "cell_type": "code", 302 | "execution_count": 9, 303 | "metadata": { 304 | "collapsed": false 305 | }, 306 | "outputs": [ 307 | { 308 | "name": "stdout", 309 | "output_type": "stream", 310 | "text": [ 311 | "Train on 60000 samples, validate on 10000 samples\n", 312 | "Epoch 1/4\n", 313 | "60000/60000 [==============================] - 10s - loss: 0.2521 - acc: 0.9245 - val_loss: 0.1131 - val_acc: 0.9651\n", 314 | "Epoch 2/4\n", 315 | "60000/60000 [==============================] - 10s - loss: 0.1016 - acc: 0.9687 - val_loss: 0.0827 - val_acc: 0.9746\n", 316 | "Epoch 3/4\n", 317 | "60000/60000 [==============================] - 11s - loss: 0.0711 - acc: 0.9779 - val_loss: 0.0668 - val_acc: 0.9791\n", 318 | "Epoch 4/4\n", 319 | "60000/60000 [==============================] - 11s - loss: 0.0557 - acc: 0.9816 - val_loss: 0.0642 - val_acc: 0.9805\n" 320 | ] 321 | }, 322 | { 323 | "data": { 324 | "text/plain": [ 325 | "" 326 | ] 327 | }, 328 | "execution_count": 9, 329 | "metadata": {}, 330 | "output_type": "execute_result" 331 | } 332 | ], 333 | "source": [ 334 | "model.fit(X_train, Y_train,\n", 335 | " batch_size=128, nb_epoch=4,\n", 336 | " show_accuracy=True, verbose=1,\n", 337 | " validation_data=(X_test, Y_test))" 338 | ] 339 | }, 340 | { 341 | "cell_type": "markdown", 342 | "metadata": {}, 343 | "source": [ 344 | "## Finally, evaluate its performance" 345 | ] 346 | }, 347 | { 348 | "cell_type": "code", 349 | "execution_count": 10, 350 | "metadata": { 351 | "collapsed": false 352 | }, 353 | "outputs": [ 354 | { 355 | "name": "stdout", 356 | "output_type": "stream", 357 | "text": [ 358 | "Test score: 0.0642029843267\n", 359 | "Test accuracy: 0.9805\n" 360 | ] 361 | } 362 | ], 363 | "source": [ 364 | "score = model.evaluate(X_test, Y_test,\n", 365 | " show_accuracy=True, verbose=0)\n", 366 | "print('Test score:', score[0])\n", 367 | "print('Test accuracy:', score[1])" 368 | ] 369 | }, 370 | { 371 | "cell_type": "markdown", 372 | "metadata": {}, 373 | "source": [ 374 | "### Inspecting the output\n", 375 | "\n", 376 | "It's always a good idea to inspect the output and make sure everything looks sane. Here we'll look at some examples it gets right, and some examples it gets wrong." 377 | ] 378 | }, 379 | { 380 | "cell_type": "code", 381 | "execution_count": 11, 382 | "metadata": { 383 | "collapsed": false 384 | }, 385 | "outputs": [ 386 | { 387 | "name": "stdout", 388 | "output_type": "stream", 389 | "text": [ 390 | "10000/10000 [==============================] - 0s \n" 391 | ] 392 | } 393 | ], 394 | "source": [ 395 | "# The predict_classes function outputs the highest probability class\n", 396 | "# according to the trained classifier for each input example.\n", 397 | "predicted_classes = model.predict_classes(X_test)\n", 398 | "\n", 399 | "# Check which items we got right / wrong\n", 400 | "correct_indices = np.nonzero(predicted_classes == y_test)[0]\n", 401 | "incorrect_indices = np.nonzero(predicted_classes != y_test)[0]" 402 | ] 403 | }, 404 | { 405 | "cell_type": "code", 406 | "execution_count": 12, 407 | "metadata": { 408 | "collapsed": false 409 | }, 410 | "outputs": [ 411 | { 412 | "data": { 413 | "image/png": "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\nmlwVWBqOciKlKCNS3a0rzOw14D2STe4/OOeuL5iWu0vN9+rVK6j/8pe/tJjnySefDOrrr78+qGfM\nmJF5u8q1+uqrB/XgwYOD+uGHHw7qxYsXV73Oam5JUG85kcpVmpNiGfHTO2VO9t9//6AePnx4UO++\n++5Bvckmm5S1/Hh8qG/fvi3m6dq1a1DHfUaXLl3KWqdfRps5qXb33SDn3FtmtjYw1symOufGVblM\naTzKiZSijAhQ5e4759xb/t+3gXsBDU5KC8qJlKKMSLOKOyUzW9nMVvWPVwH2BSZm1TBpDMqJlKKM\nSKFqdt/1Au41s+bl/Nk5NyaTVkkjUU6kFGVEPlfVgQ5FF5yDgcmePXsG9dSpU4M6PmAA4N577w3q\n73znO9k3rEw9evQI6meffTao11577aDefvvtg3ratGlVt6GaAx2KyUNOyrXaaqu1eO4Xv/hFUG+9\n9dZBvc8++wR1Fgef5JFy0rZ+/fq1eO74448P6h/+8IdBvdJKKwX1cst1/EV44j5jhRXK37YplpOO\nf4ciIiKeOiUREckNdUoiIpIbDXVB1nhsJT45ds011wzqa665psUyTjrppOwbVgY/2Bs499xzg3qj\njTYK6mOPPTaosxhDki8cfvjhQX3xxRe3mCe+EGa83z0eh5o/f35GrZN60adPnxbPnXzyye3ahnhc\nPb7Yah5oS0lERHJDnZKIiOSGOiUREcmNhjpP6etf/3pQP/jgg0Edv9fevXu3WMbbb7+dfcPKsM02\n27R4Lr6J1n333RfUI0eODOoPPvgg83Z1pvNP4n3/L7zwQlDHY5PQMluxeHzzxBNPDOp3322MOzY0\nck7WWmutoI7Hn//9738HdXxh5J133rnFMv/2t78F9YcffhjUq6yySlCPGROeUzxp0qSgfuaZZ4J6\n/PjxQf3xxx8XXV8lKulDdJ6SiIjUBXVKIiKSG+qUREQkN+r6PKV11lknqA8++OCgjvd1xteV6ujx\nI2g5hhTvM25NfH2+WowhdSbxuWGnn356UMfXUKxEfA3FIUOGBPUll1wS1L/73e+C+rPPPqu6DVKe\n7t27B3U8RrTtttsGdfz7J/af//ynxXNf+cpXgjq+iWh8/tucOXOCeunSpUXXWY9KbimZ2Y1m1mRm\nEwue62lmY83sFTMbY2Y9ii1DGpsyImkoJ5JGmt13NwFDoufOAsY65zYDHvW1dF7KiKShnEhJJTsl\n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\nTkSuQmCC\n", 414 | "text/plain": [ 415 | "" 416 | ] 417 | }, 418 | "metadata": {}, 419 | "output_type": "display_data" 420 | }, 421 | { 422 | "data": { 423 | "image/png": "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\n", 424 | "text/plain": [ 425 | "" 426 | ] 427 | }, 428 | "metadata": {}, 429 | "output_type": "display_data" 430 | } 431 | ], 432 | "source": [ 433 | "plt.figure()\n", 434 | "for i, correct in enumerate(correct_indices[:9]):\n", 435 | " plt.subplot(3,3,i+1)\n", 436 | " plt.imshow(X_test[correct].reshape(28,28), cmap='gray', interpolation='none')\n", 437 | " plt.title(\"Predicted {}, Class {}\".format(predicted_classes[correct], y_test[correct]))\n", 438 | " \n", 439 | "plt.figure()\n", 440 | "for i, incorrect in enumerate(incorrect_indices[:9]):\n", 441 | " plt.subplot(3,3,i+1)\n", 442 | " plt.imshow(X_test[incorrect].reshape(28,28), cmap='gray', interpolation='none')\n", 443 | " plt.title(\"Predicted {}, Class {}\".format(predicted_classes[incorrect], y_test[incorrect]))" 444 | ] 445 | }, 446 | { 447 | "cell_type": "markdown", 448 | "metadata": {}, 449 | "source": [ 450 | "# That's all!" 451 | ] 452 | }, 453 | { 454 | "cell_type": "markdown", 455 | "metadata": {}, 456 | "source": [ 457 | "There are lots of other great examples at the Keras homepage at http://keras.io and in the source code at https://github.com/fchollet/keras" 458 | ] 459 | } 460 | ], 461 | "metadata": { 462 | "kernelspec": { 463 | "display_name": "Python 3", 464 | "language": "python", 465 | "name": "python3" 466 | }, 467 | "language_info": { 468 | "codemirror_mode": { 469 | "name": "ipython", 470 | "version": 3 471 | }, 472 | "file_extension": ".py", 473 | "mimetype": "text/x-python", 474 | "name": "python", 475 | "nbconvert_exporter": "python", 476 | "pygments_lexer": "ipython3", 477 | "version": "3.5.1" 478 | } 479 | }, 480 | "nbformat": 4, 481 | "nbformat_minor": 0 482 | } 483 | --------------------------------------------------------------------------------