From 6f551c26ac5868cec44d849c8a582b4b62392e17 Mon Sep 17 00:00:00 2001 From: Colin Bernet Date: Mon, 11 Feb 2019 14:30:59 +0100 Subject: [PATCH] correct url for figures --- hwd_deeplearning_google/hwd_dl_google.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hwd_deeplearning_google/hwd_dl_google.ipynb b/hwd_deeplearning_google/hwd_dl_google.ipynb index b29116d..f4692c6 100644 --- a/hwd_deeplearning_google/hwd_dl_google.ipynb +++ b/hwd_deeplearning_google/hwd_dl_google.ipynb @@ -1 +1 @@ -{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"hwd_dl_google.ipynb","version":"0.3.2","provenance":[{"file_id":"https://github.com/cbernet/maldives/blob/master/hwd_deeplearning_google/hwd_dl_google.ipynb","timestamp":1549729378561}],"collapsed_sections":[]},"kernelspec":{"name":"python2","display_name":"Python 2"},"accelerator":"GPU"},"cells":[{"metadata":{"id":"SRvDywmJtVds","colab_type":"text"},"cell_type":"markdown","source":["## About this tutorial \n","\n","To do deep learning in practice, you need a Graphics Processing Unit (GPU). Or the time needed to train your deep neural nets on the CPU of your machine will be prohibitive.\n","\n","We have seen how to [install TensorFlow on Windows](https://thedatafrog.com/install-tensorflow-windows/) and [on Linux](https://thedatafrog.com/install-tensorflow-ubuntu/), which is useful if you have an nvidia graphics card in your PC. \n","\n","But what if you don't? \n","\n","If you just want to learn deep learning, there is a very easy solution that requires **no specific hardware or software**, the Colaboratory platform from Google.\n","\n","Let's try and use it for the first time. \n","\n","In this tutorial, you will learn: \n","\n","* What is the google colaboratory platform and how to use it. \n","* How to set up a first convolutional neural network to recognize handwritten digits with very high accuracy \n","\n","**Prerequisites**\n","\n","* Please have a look at [my first tutorial on handwritten digits](https://thedatafrog.com/handwritten-digit-recognition-scikit-learn/). This will show you which kind of performance we can get without deep learning, and will teach you the basics of numpy, matplotlib, and neural networks. \n","* You should know a bit of [Keras](https://thedatafrog.com/first-neural-network-keras/)\n","\n","\n","## The Google Colaboratory Platorm\n","\n","Google has recently set up the [Colaboratory Platform](https://colab.research.google.com/notebooks/welcome.ipynb) to promote the use of TensorFlow for deep learning, and it's awesome! \n","\n","It provides: \n","\n","* python environments with all the necessary software, and you can install more if needed\n","* access to GPUs\n","* excellent tutorials\n","* the possibility to run your own code (and my stuff!)\n","\n","In particular, the author of Keras and google engineer François Chollet set up extremely useful tutorials in which Keras is used as an interface to TensorFlow. For example, you can check out [this one](https://colab.research.google.com/github/tensorflow/tpu/blob/master/tools/colab/fashion_mnist.ipynb) where we learn how to classify clothing items (trousers, shoes, and whatnot). \n","\n","I do encourage you to dig into the google colab tutorials on your own! I would only advise you to stick to the keras-based tutorials which are much easier. \n","\n","On my side, I intend to use this tool to provide you with original content, as well as more details about the subjects already covered by google. \n","\n","💡 **To run your jupyter notebook on google colab, you can either:**\n","\n","* **commit it to github, and to provide a specific url to direct google colab to the notebook.**\n","* **put it in your google drive, and use Chrome to open it with Colab.**\n","\n","The url of this tutorial on github is https://github.com/cbernet/maldives/blob/master/hwd_deeplearning_google/hwd_dl_google.ipynb\n","\n","The url to run it on google colab is https://colab.research.google.com/github/cbernet/maldives/blob/master/hwd_deeplearning_google/hwd_dl_google.ipynb\n","\n","Just follow this link now. Then:\n","\n","* head to the Runtime (or Exécution) menu, and change the runtime to GPU\n","* click \"CONNECT\" on the top right.\n"]},{"metadata":{"id":"9mw3fUDitVdy","colab_type":"text"},"cell_type":"markdown","source":["## The Dataset\n","\n","In [my first tutorial on handwritten digits](https://thedatafrog.com/handwritten-digit-recognition-scikit-learn/), we have used the simplified digits dataset provided with scikit-learn because we didn't have the resources to process the [real MNIST handrwitten digits dataset](http://yann.lecun.com/exdb/mnist/) at that time. \n","\n","Here, we have access to the GPUs from Google, and to keras which provides an easy way to load this dataset:"]},{"metadata":{"id":"jFKEynAytVd2","colab_type":"code","colab":{}},"cell_type":"code","source":["import tensorflow as tf\n","(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()"],"execution_count":0,"outputs":[]},{"metadata":{"id":"gQLSCxxYtVeC","colab_type":"text"},"cell_type":"markdown","source":["Let's have a look our dataset."]},{"metadata":{"id":"311Pzt80tVeG","colab_type":"code","outputId":"115ad5cb-6fc7-4e6c-bd90-12a1d64fd697","executionInfo":{"status":"ok","timestamp":1549887917098,"user_tz":-60,"elapsed":405,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":34}},"cell_type":"code","source":["print x_train.shape, y_train.shape, x_test.shape, y_test.shape"],"execution_count":2,"outputs":[{"output_type":"stream","text":["(60000, 28, 28) (60000,) (10000, 28, 28) (10000,)\n"],"name":"stdout"}]},{"metadata":{"id":"cxrNL8agtVeR","colab_type":"text"},"cell_type":"markdown","source":["so: \n","\n","* 60,000 training samples and 10,000 test samples\n","* images are 28x28 = 784 pixels, while they are 8x8=64 pixels in the simplified digits dataset of scikit-learn. We have images with much better resolution, but need networks with many more neurons to process them"]},{"metadata":{"id":"FWCU17B1tVeU","colab_type":"text"},"cell_type":"markdown","source":["Now let's plot some of these images. "]},{"metadata":{"id":"umgVXlOetVeX","colab_type":"code","colab":{}},"cell_type":"code","source":["import matplotlib.pyplot as plt\n","def plot_img(i):\n"," # plot the image and the target for sample i\n"," plt.imshow(x_train[i])\n"," plt.title(y_train[i])\n"," plt.axis('off')"],"execution_count":0,"outputs":[]},{"metadata":{"id":"lf9qi83jtVed","colab_type":"code","outputId":"b98d5c5c-f088-42f1-f953-2276d5bea9ab","executionInfo":{"status":"ok","timestamp":1549889416861,"user_tz":-60,"elapsed":419,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":362}},"cell_type":"code","source":["plot_img(2)"],"execution_count":3,"outputs":[{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[]}}]},{"metadata":{"id":"rOzBtEWxtVem","colab_type":"text"},"cell_type":"markdown","source":["Please have a look at other images by repeating the plot above for different samples"]},{"metadata":{"id":"wN7sUkhFtVeq","colab_type":"text"},"cell_type":"markdown","source":["Now we should check the actual data for a given image. Let's put the values in the pixels of the first image in an histogram: "]},{"metadata":{"id":"JUBPdg6NtVeu","colab_type":"code","outputId":"5e2c39c9-03f2-45eb-f375-be9d65f2501a","executionInfo":{"status":"ok","timestamp":1549889418983,"user_tz":-60,"elapsed":1151,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":874}},"cell_type":"code","source":["plt.hist(x_train[0])"],"execution_count":4,"outputs":[{"output_type":"execute_result","data":{"text/plain":["([array([28., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),\n"," array([28., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),\n"," array([28., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),\n"," array([28., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),\n"," array([26., 0., 1., 0., 0., 1., 0., 0., 0., 0.]),\n"," array([26., 0., 0., 0., 0., 0., 1., 0., 0., 1.]),\n"," array([26., 0., 0., 0., 0., 0., 0., 0., 1., 1.]),\n"," array([24., 1., 0., 0., 0., 0., 1., 0., 0., 2.]),\n"," array([21., 1., 0., 1., 0., 0., 0., 0., 3., 2.]),\n"," array([20., 1., 1., 0., 0., 1., 1., 0., 0., 4.]),\n"," array([20., 0., 0., 1., 1., 1., 0., 0., 1., 4.]),\n"," array([18., 0., 0., 0., 1., 1., 2., 0., 0., 6.]),\n"," array([15., 2., 0., 0., 0., 1., 1., 1., 1., 7.]),\n"," array([15., 0., 0., 2., 0., 1., 0., 2., 1., 7.]),\n"," array([16., 2., 1., 1., 0., 0., 0., 1., 2., 5.]),\n"," array([18., 0., 0., 0., 0., 1., 1., 3., 0., 5.]),\n"," array([15., 1., 0., 2., 2., 0., 0., 1., 0., 7.]),\n"," array([16., 0., 0., 0., 1., 1., 1., 1., 0., 8.]),\n"," array([19., 0., 0., 2., 0., 1., 1., 0., 1., 4.]),\n"," array([20., 2., 0., 1., 0., 0., 1., 2., 1., 1.]),\n"," array([24., 0., 1., 1., 0., 0., 1., 0., 0., 1.]),\n"," array([25., 0., 1., 0., 0., 0., 0., 0., 0., 2.]),\n"," array([25., 1., 0., 0., 0., 0., 0., 1., 0., 1.]),\n"," array([26., 0., 1., 0., 1., 0., 0., 0., 0., 0.]),\n"," array([28., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),\n"," array([28., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),\n"," array([28., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),\n"," array([28., 0., 0., 0., 0., 0., 0., 0., 0., 0.])],\n"," array([ 0. , 25.5, 51. , 76.5, 102. , 127.5, 153. , 178.5, 204. ,\n"," 229.5, 255. ]),\n"," )"]},"metadata":{"tags":[]},"execution_count":4},{"output_type":"display_data","data":{"image/png":"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\nv1iD1AUgSvevAAAAAElFTkSuQmCC\n","text/plain":["
"]},"metadata":{"tags":[]}}]},{"metadata":{"id":"3IDwJz6UtVe4","colab_type":"text"},"cell_type":"markdown","source":["We see that the values in the image array are between 0 and 255 (the values are coded on 8 bits). \n","\n","This is not adequate. Indeed, for a neural network to work well, it must deal with input values close to unity. So we're going to normalize all images to values between 0 and 1: "]},{"metadata":{"id":"p1bOPi4ltVe8","colab_type":"code","outputId":"ede8bfe8-ebb1-4718-a683-57a2729935a7","executionInfo":{"status":"ok","timestamp":1549889422422,"user_tz":-60,"elapsed":1425,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":857}},"cell_type":"code","source":["import numpy as np\n","x_train = x_train/255.\n","plt.hist(x_train[0])"],"execution_count":5,"outputs":[{"output_type":"execute_result","data":{"text/plain":["([array([28., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),\n"," array([28., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),\n"," array([28., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),\n"," array([28., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),\n"," array([26., 0., 1., 0., 0., 1., 0., 0., 0., 0.]),\n"," array([26., 0., 0., 0., 0., 0., 1., 0., 0., 1.]),\n"," array([26., 0., 0., 0., 0., 0., 0., 0., 1., 1.]),\n"," array([24., 1., 0., 0., 0., 0., 1., 0., 0., 2.]),\n"," array([21., 1., 0., 1., 0., 0., 0., 0., 3., 2.]),\n"," array([20., 1., 1., 0., 0., 1., 1., 0., 0., 4.]),\n"," array([20., 0., 0., 1., 1., 1., 0., 0., 1., 4.]),\n"," array([18., 0., 0., 0., 1., 1., 2., 0., 0., 6.]),\n"," array([15., 2., 0., 0., 0., 1., 1., 1., 1., 7.]),\n"," array([15., 0., 0., 2., 0., 1., 0., 2., 1., 7.]),\n"," array([16., 2., 1., 1., 0., 0., 0., 1., 2., 5.]),\n"," array([18., 0., 0., 0., 0., 1., 1., 3., 0., 5.]),\n"," array([15., 1., 0., 2., 2., 0., 0., 1., 0., 7.]),\n"," array([16., 0., 0., 0., 1., 1., 1., 1., 0., 8.]),\n"," array([19., 0., 0., 2., 0., 1., 1., 0., 1., 4.]),\n"," array([20., 2., 0., 1., 0., 0., 1., 2., 1., 1.]),\n"," array([24., 0., 1., 1., 0., 0., 1., 0., 0., 1.]),\n"," array([25., 0., 1., 0., 0., 0., 0., 0., 0., 2.]),\n"," array([25., 1., 0., 0., 0., 0., 0., 1., 0., 1.]),\n"," array([26., 0., 1., 0., 1., 0., 0., 0., 0., 0.]),\n"," array([28., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),\n"," array([28., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),\n"," array([28., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),\n"," array([28., 0., 0., 0., 0., 0., 0., 0., 0., 0.])],\n"," array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ]),\n"," )"]},"metadata":{"tags":[]},"execution_count":5},{"output_type":"display_data","data":{"image/png":"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\nNcaPH598xoEi1y43btwYt956a1xzzTXFGG/A6GmPhw8fjo9//OOxfPnyaGxsjGeffbZYYw4IPe3y\nYx/7WDz22GMxceLEqK+vj89//vNOH+xBJpOJyy+//IL3FbI7JRXfD8v6Lai8udAu33vvvXj00Udj\n8eLF5/xFpmdn7/Jvf/tbbNy4MR588MEiTjQwnb3HbDYbhw4dihkzZkRzc3O8/vrrsX379uINN8Cc\nvcujR4/G2rVr46WXXoqtW7fGa6+9Fn/+85+LOB0XUlLx7enYyg/fd+jQoQu+TcC/5DoC9OjRo/Hd\n73435s6dG3fccUcxRhwwetrlzp074/Dhw/Htb387Hn/88di7d28sW7asWKOWtJ72WFNTEyNGjIjr\nrrsuKioqYuzYsdHZ2VmsUUteT7vct29fjBw5MoYOHRqVlZXxxS9+Mdrb24s16oBWyO6UVHx7Orby\n2muvjaNHj8bbb78dJ0+ejN/+9rdx++23F3PckpbrCNCmpqb4zne+E+PGjSvWiANGT7v8yle+Eps2\nbYpf//rXsXr16rjxxhtjwYIFxRy3ZPW0x0wmEyNHjoy//OUvZ+73VunF9bTLa665Jvbt2xcnTpyI\niIj29va4/vrrizXqgFbI7pTcCVerVq2KP/7xj2eOrXz99dejuro67r777ti1a1esWrUqIiLuueee\nePjhh4s8bWm72C7vuOOOGDNmTNxyyy1nrv36178eDQ0NRZy2tPX05/K0t99+O5566qnYsGFDESct\nbT3t8c0334z58+dHNpuNG264IZYsWRKXXlpSrw9KSk+7/NWvfhUbN26MioqKuOWWW2LevHnFHrdk\ntbe3x4oVK+LAgQORyWRi+PDhMWHChLj22msL2p2Siy8AlDv/WQkAiYkvACQmvgCQmPgCQGLiCwCJ\niS8AJCa+AJCY+AJAYv8LecSYOvKrzXUAAAAASUVORK5CYII=\n","text/plain":["
"]},"metadata":{"tags":[]}}]},{"metadata":{"id":"votCeFOGtVfI","colab_type":"text"},"cell_type":"markdown","source":["💡 **Always normalize your input data.**\n","\n","And we must do the same for the test dataset:"]},{"metadata":{"id":"QGVarm2ItVfL","colab_type":"code","colab":{}},"cell_type":"code","source":["x_test = x_test/255."],"execution_count":0,"outputs":[]},{"metadata":{"id":"n4QP_ozjtVfR","colab_type":"text"},"cell_type":"markdown","source":["We should also check our targets: "]},{"metadata":{"id":"tWDbXQCotVfT","colab_type":"code","outputId":"df63c3b6-60a6-4748-df53-59f099686724","executionInfo":{"status":"ok","timestamp":1549889435175,"user_tz":-60,"elapsed":450,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":34}},"cell_type":"code","source":["y_train[0]"],"execution_count":7,"outputs":[{"output_type":"execute_result","data":{"text/plain":["5"]},"metadata":{"tags":[]},"execution_count":7}]},{"metadata":{"id":"wzeZSdx9tVfa","colab_type":"text"},"cell_type":"markdown","source":["For the reasons explained in [our first keras tutorial](https://thedatafrog.com/first-neural-network-keras/), we're going to perform one-hot encoding on the targets: "]},{"metadata":{"id":"1oiAvEIxtVfc","colab_type":"code","outputId":"a88bd7db-4aa0-44ac-db52-cc2036f4982f","executionInfo":{"status":"ok","timestamp":1549889436861,"user_tz":-60,"elapsed":408,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":51}},"cell_type":"code","source":["from keras.utils import np_utils\n","y_train = np_utils.to_categorical(y_train, 10)\n","y_test = np_utils.to_categorical(y_test, 10)\n","print y_train[0]"],"execution_count":8,"outputs":[{"output_type":"stream","text":["[0. 0. 0. 0. 0. 1. 0. 0. 0. 0.]\n"],"name":"stdout"},{"output_type":"stream","text":["Using TensorFlow backend.\n"],"name":"stderr"}]},{"metadata":{"id":"YMUeoGyxtVfr","colab_type":"text"},"cell_type":"markdown","source":["## Convolutional Neural Networks"]},{"metadata":{"id":"zjZ6JG1LtVft","colab_type":"text"},"cell_type":"markdown","source":["Classifying handwritten digits in 10 categories is a task of image recognition. \n","\n","Since convolutional neural networks are known to provide excellent performance for image recognition, we're going to use them. \n","\n","A convolutional neural network for image classification typically features the following layers: \n","\n","* the first layers are **convolutional layers**, interleaved with **pooling layers**. The role of these layers is to extract interesting features from the image.\n","* then come **dense layers**, which interpret the features from the first stage, and provide the probability for the image to belong to each category. \n","\n","In addition to these, **dropout** layers can be added to regularize the network or in other words, to make it more stable. \n","\n","Before building the network, I'd like to explain each kind of layer in details. "]},{"metadata":{"id":"CYREa4eftVfv","colab_type":"text"},"cell_type":"markdown","source":["### Convolutional layers"]},{"metadata":{"id":"rxK8mGf0tVfx","colab_type":"text"},"cell_type":"markdown","source":["A 2D [convolutional layer](https://keras.io/layers/convolutional/) scans the input image from left to right and from top to bottom, with a small window, called the **kernel**. In the example below, we use a window of 5x5 pixel. After every step, the image moves right. Here, we use a **stride** of 1 pixel, meaning that we move the window by 1 pixel. When the right border of the window hits the right border of the image, the window is returned to the left and moved down by 1 pixel. \n","\n","![](https://github.com/cbernet/maldives/blob/master/hwd_deeplearning_google/conv_layer.png?raw=1)\n","\n","At each step, the pixels within the window are considered and a number of features are extracted. Each feature is just a value. Let's say there are **nf** features to be extracted for each position of the window (nf could be of the order of 10). \n","\n","At first these features are completely meaningless, but the network is going to be trained to extract meaningful features. For example, if you do face recognition, the features might be related to the presence of an eye or a nose. For now, just keep in mind that a fixed number of values are extracted for each window, and that these values are going to make sense to the network (and maybe not to us!).\n","\n","Now, what kind of data do we get out of the convolutional layer? \n","Let **(nx, ny)** be the shape of the picture, so nx and ny are the numbers of pixels in the image along the horizontal and vertical directions, respectively. \n","\n","For each window position, we get 10 features, and the window positions are arranged in a 2D array. So the output of the convolutional layer is a 3D array (ox, oy, nf), where **ox** and **oy** are the numbers of output pixels along the horizontal and vertical directions, and nf is the number of features for each pixel.\n","\n","The user (we) decide on the number of features to be extracted, so we know that. But what about ox and oy? \n","\n","The answer is simple. For example, the number of output pixels along the horizontal direction is **ox = nx - kernel_size + 1**. \n","\n","To convince yourself, you can use the simple case below, with an image of size 7x5 and a window of size 3x3. \n","\n","![](https://github.com/cbernet/maldives/blob/master/hwd_deeplearning_google/conv_layer_simple.png?raw=1)\n","\n","Ok... I have spent three hours in blender trying to model a convolutional layer in 3D as an illustration, and barely managed to model a cube. So I gave up on this software and, as a last resort, went back to my favorite 3D modelling hardware: \n","\n","![](https://github.com/cbernet/maldives/blob/master/hwd_deeplearning_google/crayon.png?raw=1)\n","\n","And here's the result, with shading and transparency! \n","\n","![](https://github.com/cbernet/maldives/blob/master/hwd_deeplearning_google/conv_layer_schema.png?raw=1)"]},{"metadata":{"id":"ik0k9DqUtVfz","colab_type":"text"},"cell_type":"markdown","source":["### Pooling layers\n","\n","Pooling layers are used to reduce the size of the data at a given stage to reduce the complexity of the network. In this case we will use 2D pooling layers, and in particular, the [MaxPooling2D](https://keras.io/layers/pooling/). \n","\n","The keras documentation is a bit scarce, so let's see how it works on a simple image. Here we use [seaborn](https://seaborn.pydata.org/), a high-level interface to matplotlib, to get a heat map with annotations."]},{"metadata":{"id":"cAugHvJNtVf3","colab_type":"code","outputId":"7cdab101-e402-427e-c0d9-6005dfed86c2","executionInfo":{"status":"ok","timestamp":1549889445058,"user_tz":-60,"elapsed":958,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":368}},"cell_type":"code","source":["import numpy as np\n","import seaborn as sns\n","\n","# building the image of a zero:\n","zero = np.array([[0,0,0,1,0,0,0,0],\n"," [0,1,2,3,2,1,0,0],\n"," [0,4,3,1,3,2,0,0],\n"," [1,5,2,0,0,5,1,0],\n"," [2,4,0,0,0,6,2,0],\n"," [1,3,0,0,0,4,1,0],\n"," [0,2,3,2,1,3,0,0],\n"," [0,0,3,4,3,1,0,0]])\n","sns.heatmap(zero, annot=True)"],"execution_count":9,"outputs":[{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{"tags":[]},"execution_count":9},{"output_type":"display_data","data":{"image/png":"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\nfMr/B8IrDNo8NumtAAAAAElFTkSuQmCC\n","text/plain":["
"]},"metadata":{"tags":[]}}]},{"metadata":{"id":"RIFajNK8tVgC","colab_type":"text"},"cell_type":"markdown","source":["Pooling layers are based on a pooling window that moves across the image like the kernel of the convolutional layers. For every position of the pooling window, a number is extracted, for example: \n","\n","* the maximum value in the window (max pooling)\n","* the average value over the window (average pooling)\n","\n","We're going to use [scikit-image](http://scikit-image.org/docs/dev/auto_examples/numpy_operations/plot_view_as_blocks.html) to perform each pooling operation. By the way I didn't know scikit-image, I just googled \"max pooling numpy\". Google is your friend, especially when you're trying to do something in python"]},{"metadata":{"id":"NzMgr3M1tVgF","colab_type":"code","colab":{}},"cell_type":"code","source":["from skimage.util import view_as_blocks\n","pooling_window_shape = (2,2)\n","view = view_as_blocks(zero, pooling_window_shape)\n","flatten_view = view.reshape(view.shape[0], view.shape[1], -1)\n","mean_view = np.mean(flatten_view, axis=2)\n","max_view = np.max(flatten_view, axis=2)"],"execution_count":0,"outputs":[]},{"metadata":{"id":"OOd8CPMPtVgN","colab_type":"code","outputId":"5ed3d348-c449-43b8-d7f0-4acf14af7c2d","executionInfo":{"status":"ok","timestamp":1549889447319,"user_tz":-60,"elapsed":697,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":368}},"cell_type":"code","source":["sns.heatmap(max_view, annot=True)"],"execution_count":11,"outputs":[{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{"tags":[]},"execution_count":11},{"output_type":"display_data","data":{"image/png":"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\n16nI7OxszZgxQ7fddpuCwaBmzZqliIjm5zKKDQBgRLguscXExOipp5466/VsRQIAnMLEBgAwwhfh\njXtFUmwAACM8cg9ktiIBAG5hYgMAGOGVj62h2AAARnik1yg2AIAZXpnYuMYGAHAKExsAwAiPDGxM\nbAAAtzCxAQDM8MjIRrEBAIzwyuERig0AYIRHeo1iAwCY4ZV7RXJ4BADgFIoNAOAUtiIBAEZwjQ0A\n4BRORQIAnOKRXqPYAABmeGVi4/AIAMApFBsAwClsRQIAjPDITiTFBgAwwyvX2Cg2AIAZHrm4RbEB\nAIzwysTmkX71lu6De+lfls1UfKf2tqM4Z+OnmzXx9jt180+ydNc/36eyQ4dtR3JSp6REPf/qU3p3\n3VIte2+RhgwdZDuSc9qmp6jH+BvU8x9uUrebx8jfgZ8XXkGx/Z2o6CiN+NkYBWrqbEdxTl0goGkz\nZmn2zIf09vICXX/dtZrzRJ7tWE769b8/rHVFG3XTiGzN/bcFyv7HCbYjOSUqto1SRw1TSeEG7Vn2\nro7t2acuI662HQunUGx/Z/jEkdr1X5/rROCE7SjO2fTpFqWlpuryvn0kSePH3axPNmxSbW2t5WRu\nSe7SSZcP7K3XFy+XJH26/o968J9n2w3lmMaGBpUUrteJo9WSpLpD5fInxFtOZZ/P1/qHSWdVbI2N\njd95rayszGwSD0hM76T0K3ros7c32o7ipOJ9+5SWmtr0PDY2Vgnt22tfSYnFVO7p06+XDuwv1X3T\n79aKD1/RooL56tv/MtuxnBIK1qu25L9/BrZN66JAeaXFRN7g8/la/TCpxWJbs2aNRo8ereHDh+tX\nv/qVjh8/3vRn06ZNMxrECzKnjFXhS6vUEGqwHcVJgWC9/P7o017z+/0KBIKWErmpXfu2uqxPD23Z\nuE3jxvxc7/xhjX77/BxFRkbajuakuJQkJQ7orbINW21Hse6CmNheeOEF/eEPf9Ann3yiwYMHa/Lk\nyaqpqZH0/VPchWzgjwarsqRCB/+033YUZ7VpE6P6+tO3eIPBoGLbtLGUyE3Hq2tVWVGlojUfS5KW\nL31b8e3bqWuPNMvJ3NOua6pSRg7TvtVrm7YlL2oeabYWj/tHRkYqISFBkpSVlaXExERNnjxZ+fn5\nnjnWaUrPjN5K7tlFPYb8dcumTXysbn1ikt759zdVsrPYcjo3dO/WVavWfND0vOb4cVXX1Cg9/VKL\n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\n","text/plain":["
"]},"metadata":{"tags":[]}}]},{"metadata":{"id":"_9_yO3pxtVgV","colab_type":"code","outputId":"7a45ebb9-af13-44fe-fe5b-340846888e2e","executionInfo":{"status":"ok","timestamp":1549889448430,"user_tz":-60,"elapsed":626,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":368}},"cell_type":"code","source":["sns.heatmap(mean_view, annot=True)"],"execution_count":12,"outputs":[{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{"tags":[]},"execution_count":12},{"output_type":"display_data","data":{"image/png":"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\nUBdRKgi4AAAAAElFTkSuQmCC\n","text/plain":["
"]},"metadata":{"tags":[]}}]},{"metadata":{"id":"gRi_9ACttVgg","colab_type":"text"},"cell_type":"markdown","source":["Please check that the pooled values are what you expect for both the max pooling and the average pooling operations. \n","\n","Coming back to our case, we will want to pool after a convolutional layer. The input to the pooling is a 3D array with several values (the features) for each pixel. \n","\n","In this case, the pooling layer will pool each feature separately for each position of the pooling window. \n","\n","So the pooling will reduce the dimensionality along the x and y directions, but the number of features in output will stay the same. That's good, because maxing or averaging over all features would not make any sense. "]},{"metadata":{"id":"YrjHyl0FtVgj","colab_type":"text"},"cell_type":"markdown","source":["### Dense layers\n","\n","A sub-network of dense layers is added at the end of the deep neural network. The aim of this sub-network is to make use of the features extracted by the previous layers to perform the classification.\n","\n","We know about dense layers already since the tutorial about [handwritten digits with scikit-learn](https://thedatafrog.com/handwritten-digit-recognition-scikit-learn/), so I'm not going to give details here. \n","\n","Two things to note: \n","\n","**1- Dense layers are fully connected to the previous layer.** This means that each neuron in the dense layer has a connection to all neurons in the previous layer. \n","\n","**2- The input to a dense layer is 1D.** But the output of our convolutional (or pooling) layers is 3D... So we will need to flatten the 3D data to 1D, by just serializing all numbers. To do that in keras, we will insert a [Flatten layer](https://keras.io/layers/core/) just before the dense layer. \n","\n","The last layer of our dense sub-network will have a **softmax activation**. This means that the output of neuron $k$ is set to \n","\n","$$y_k = \\frac{e^{z_k}}{\\sum_{i=1}^{N} e^{z_i}}$$,\n","\n","where the sum runs over the N neurons of the layer. \n","\n","Please note that the softmax activation is well suited to classification problems: \n","\n","* the probability for a given class is bound between 0 and 1. \n","* all probabilities sum up to 1\n","\n","### Dropout layers \n","\n","Deep convolutional neural networks are complicated and have a lot of tunable parameters. And for this reason, they can easily go wrong.\n","\n","During the training, the network can **overfit** the training data. This means that it gets very good at recognizing specific examples of the training data, but looses its ability to recognize new, unseen examples, and loses generality. This is typically due to parts of the network that evolve in a coordinated way and in the wrong direction during training. \n","\n","**Dropout regularization** is a way to reduce this effect \n","\n","To perform dropout normalization, we will insert an additional layer just before the dense sub-network, containing one neuron per output variable in the previous layer. Each neuron acts as a gate, and is turned on and off randomly during the training. When it's on, the corresponding variable flows to the following dense layer. When it's off, the variable is blocked, and the neuron outputs zero. \n","\n","In this way, some part of the network, which is always changing, is deactivated, and only the rest is trained.\n","\n","After training, for the evaluation of the unseen test samples, the dropout layer is removed, and the whole network is used. \n","\n","To learn more about dropout regularization, you can refer to the [original paper](http://jmlr.org/papers/volume15/srivastava14a.old/srivastava14a.pdf).\n","\n"]},{"metadata":{"id":"pgluyk5btVgk","colab_type":"text"},"cell_type":"markdown","source":["## Building the network \n","\n","Let's first build a simple convolutional neural network with keras. "]},{"metadata":{"id":"UlOHJrMZtVgm","colab_type":"code","colab":{}},"cell_type":"code","source":["from keras import models\n","from keras import layers"],"execution_count":0,"outputs":[]},{"metadata":{"id":"eC6AaklatVgr","colab_type":"text"},"cell_type":"markdown","source":["We start with the convolutional layer, specifying that: \n","\n","* we want to extract 10 features for each kernel\n","* the kernel size is 4x4\n","* the input images are 28x28 pixels\n","* we use a ReLU activation. We could have used a sigmoid, but the ReLU is way better for deep neural networks. If you want to know more, here is a [nice post about ReLUs](https://www.kaggle.com/dansbecker/rectified-linear-units-relu-in-deep-learning)"]},{"metadata":{"id":"pu0SWOnUtVgt","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":88},"outputId":"97c857bc-7064-4523-80af-a71230190aeb","executionInfo":{"status":"ok","timestamp":1549889453994,"user_tz":-60,"elapsed":436,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}}},"cell_type":"code","source":["model = models.Sequential()\n","model.add( layers.Conv2D(10, 4, input_shape=(28,28,1), activation='relu') )"],"execution_count":14,"outputs":[{"output_type":"stream","text":["WARNING:tensorflow:From /usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.\n","Instructions for updating:\n","Colocations handled automatically by placer.\n"],"name":"stdout"}]},{"metadata":{"id":"VEWhpXJItVg5","colab_type":"text"},"cell_type":"markdown","source":["At this stage, here is a summary of our network:"]},{"metadata":{"id":"Zv4dbI6EtVg-","colab_type":"code","outputId":"5b7d590f-6a43-4ef4-9ce8-92417c34039a","executionInfo":{"status":"ok","timestamp":1549889457760,"user_tz":-60,"elapsed":479,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":170}},"cell_type":"code","source":["model.summary()"],"execution_count":15,"outputs":[{"output_type":"stream","text":["_________________________________________________________________\n","Layer (type) Output Shape Param # \n","=================================================================\n","conv2d_1 (Conv2D) (None, 25, 25, 10) 170 \n","=================================================================\n","Total params: 170\n","Trainable params: 170\n","Non-trainable params: 0\n","_________________________________________________________________\n"],"name":"stdout"}]},{"metadata":{"id":"ThENrOldtVhD","colab_type":"text"},"cell_type":"markdown","source":["In the output shape, we should ignore the first `None`. Then come the shape of the output array. The x and y dimensions are of size 28 - 4 + 1 = 25, and the last dimension corresponds to the number of features we have required. So far so good. \n","\n","Now, we add the dense neural network, forgetting about dropout for now. As a starting point, let's try a simple dense subnetwork with a single hidden layer of 100 neurons. Before the dense sub-network, the 3D array is flattened."]},{"metadata":{"id":"rzk7CUDztVhF","colab_type":"code","colab":{}},"cell_type":"code","source":["model.add( layers.Flatten() )\n","model.add( layers.Dense(100, activation='relu') )"],"execution_count":0,"outputs":[]},{"metadata":{"id":"ssV-E3cvtVhG","colab_type":"text"},"cell_type":"markdown","source":["And finally, our final softmax layer with 10 neurons, for the 10 digit categories:"]},{"metadata":{"id":"vMUArCqutVhI","colab_type":"code","colab":{}},"cell_type":"code","source":["model.add( layers.Dense(10, activation='softmax') )"],"execution_count":0,"outputs":[]},{"metadata":{"id":"C5Q-4i2QtVhM","colab_type":"code","outputId":"5bbe286e-a613-432d-eeac-ee702ed8b76d","executionInfo":{"status":"ok","timestamp":1549889462087,"user_tz":-60,"elapsed":441,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":272}},"cell_type":"code","source":["model.summary()"],"execution_count":18,"outputs":[{"output_type":"stream","text":["_________________________________________________________________\n","Layer (type) Output Shape Param # \n","=================================================================\n","conv2d_1 (Conv2D) (None, 25, 25, 10) 170 \n","_________________________________________________________________\n","flatten_1 (Flatten) (None, 6250) 0 \n","_________________________________________________________________\n","dense_1 (Dense) (None, 100) 625100 \n","_________________________________________________________________\n","dense_2 (Dense) (None, 10) 1010 \n","=================================================================\n","Total params: 626,280\n","Trainable params: 626,280\n","Non-trainable params: 0\n","_________________________________________________________________\n"],"name":"stdout"}]},{"metadata":{"id":"PDTkzJortVhR","colab_type":"text"},"cell_type":"markdown","source":["We have more than 600k parameters to optimize! let's compile the model, and then train it."]},{"metadata":{"id":"11jVHnhetVhS","colab_type":"code","colab":{}},"cell_type":"code","source":["from keras.optimizers import RMSprop"],"execution_count":0,"outputs":[]},{"metadata":{"id":"RVC9fzwg2Glz","colab_type":"code","colab":{}},"cell_type":"code","source":["model.compile(loss='categorical_crossentropy',\n"," optimizer=RMSprop(lr=0.001),\n"," metrics=['acc'])"],"execution_count":0,"outputs":[]},{"metadata":{"id":"Pz38CbJQtVhY","colab_type":"code","colab":{}},"cell_type":"code","source":["kx_train = x_train.reshape(len(x_train),28,28,1)\n","kx_test = x_test.reshape(len(x_test),28,28,1)"],"execution_count":0,"outputs":[]},{"metadata":{"id":"TH-ETwuEtVhb","colab_type":"code","outputId":"22de3e0c-0c30-4edf-8672-e00ed049727a","executionInfo":{"status":"ok","timestamp":1549889467907,"user_tz":-60,"elapsed":430,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":34}},"cell_type":"code","source":["kx_test.shape"],"execution_count":22,"outputs":[{"output_type":"execute_result","data":{"text/plain":["(10000, 28, 28, 1)"]},"metadata":{"tags":[]},"execution_count":22}]},{"metadata":{"id":"oihTfuPBtVhd","colab_type":"code","outputId":"fea9763b-004f-4bcf-e6ce-affc1c261235","executionInfo":{"status":"ok","timestamp":1549889548411,"user_tz":-60,"elapsed":79794,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":445}},"cell_type":"code","source":["history = model.fit(kx_train, y_train, validation_data=(kx_test,y_test),\n"," batch_size=50, epochs=10)"],"execution_count":23,"outputs":[{"output_type":"stream","text":["WARNING:tensorflow:From /usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/math_ops.py:3066: to_int32 (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.\n","Instructions for updating:\n","Use tf.cast instead.\n","Train on 60000 samples, validate on 10000 samples\n","Epoch 1/10\n","60000/60000 [==============================] - 9s 153us/step - loss: 0.1713 - acc: 0.9483 - val_loss: 0.0746 - val_acc: 0.9760\n","Epoch 2/10\n","60000/60000 [==============================] - 8s 128us/step - loss: 0.0581 - acc: 0.9823 - val_loss: 0.0515 - val_acc: 0.9817\n","Epoch 3/10\n","60000/60000 [==============================] - 8s 129us/step - loss: 0.0382 - acc: 0.9886 - val_loss: 0.0475 - val_acc: 0.9847\n","Epoch 4/10\n","60000/60000 [==============================] - 8s 130us/step - loss: 0.0272 - acc: 0.9920 - val_loss: 0.0440 - val_acc: 0.9856\n","Epoch 5/10\n","60000/60000 [==============================] - 8s 129us/step - loss: 0.0197 - acc: 0.9942 - val_loss: 0.0520 - val_acc: 0.9843\n","Epoch 6/10\n","60000/60000 [==============================] - 8s 129us/step - loss: 0.0145 - acc: 0.9959 - val_loss: 0.0757 - val_acc: 0.9816\n","Epoch 7/10\n","60000/60000 [==============================] - 8s 129us/step - loss: 0.0107 - acc: 0.9969 - val_loss: 0.0578 - val_acc: 0.9844\n","Epoch 8/10\n","60000/60000 [==============================] - 8s 131us/step - loss: 0.0081 - acc: 0.9975 - val_loss: 0.0605 - val_acc: 0.9850\n","Epoch 9/10\n","60000/60000 [==============================] - 8s 130us/step - loss: 0.0060 - acc: 0.9983 - val_loss: 0.0774 - val_acc: 0.9837\n","Epoch 10/10\n","60000/60000 [==============================] - 8s 130us/step - loss: 0.0042 - acc: 0.9989 - val_loss: 0.0885 - val_acc: 0.9829\n"],"name":"stdout"}]},{"metadata":{"id":"MPta7Q6gFCD6","colab_type":"text"},"cell_type":"markdown","source":["We're getting an accuracy larger than 98% from this first try. Much better than the mere 91% we got from the simple dense neural net we set up with scikit-learn. Deep learning starts to show its power!\n","\n","And it's not the end of the story. Let's try and do even better. \n","\n","## Tuning the network \n","\n","### Dealing with overfitting\n","\n","A neural network has *parameters* (weights and biases) that are tuned during the training. The **hyperparameters** are the parameters affecting the network configuration, such as the number of layers, the number of neurons per layer, the number of features extracted by the convolutional layers, etc. \n","\n","We can try and improve the performance by tuning the hyperparameters. \n","\n","But how should we start? \n","\n","First of all: \n","\n","💡**VERY IMPORTANT: Start with a very simple network, and tune it by making it more complex.**\n","\n","If you start from a complex network, you'll have many more hyperparameters to play with, and it's easy to get lost. \n","\n","Then, we should not tune blindly, so let's start by having a more detailed look at the performance. First of all, we can plot the evolution of the accuracy as a function of the training evolution. The accuracy is computed for both the training and the test samples. \n"]},{"metadata":{"id":"KyqZxpfuuiXz","colab_type":"code","colab":{}},"cell_type":"code","source":["def plot_accuracy(history, miny=None):\n"," acc = history.history['acc']\n"," test_acc = history.history['val_acc']\n"," epochs = range(len(acc))\n"," plt.plot(epochs, acc)\n"," plt.plot(epochs, test_acc)\n"," if miny:\n"," plt.ylim(miny, 1.0)\n"," plt.title('accuracy') \n"," plt.figure()\n"],"execution_count":0,"outputs":[]},{"metadata":{"id":"2a0GtdyuH-tK","colab_type":"code","outputId":"75a16be7-5c77-43cc-fd42-66f89010b9e4","executionInfo":{"status":"ok","timestamp":1549889565931,"user_tz":-60,"elapsed":769,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":379}},"cell_type":"code","source":["plot_accuracy(history, miny=0.95)"],"execution_count":26,"outputs":[{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[]}},{"output_type":"display_data","data":{"text/plain":["
"]},"metadata":{"tags":[]}}]},{"metadata":{"id":"vM43vThyIxOH","colab_type":"text"},"cell_type":"markdown","source":["We see that the accuracy on the training sample continuously improves: the network gets better and better at recognizing the digits of this sample, because it's trained to do so. \n","\n","But the accuracy on the testing sample, which is not used for training, plateaus very early at about 98.5%. Training further will not help. \n","\n","That's a clear sign of overfitting. And the more complex the network, the easier it is for it to learn the specific examples of the training sample. \n","\n","**So our first step should not be to make the network more complex, but to solve this overfitting problem. **\n","\n","To do that, we'll create a new instance of our network, in which we will introduce a dropout layer, just before the dense sub-network:"]},{"metadata":{"id":"-RMe3RhFIBMs","colab_type":"code","outputId":"1d859b13-0a99-45f2-dd09-936269368cdb","executionInfo":{"status":"ok","timestamp":1549889626140,"user_tz":-60,"elapsed":439,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":377}},"cell_type":"code","source":["model_do = models.Sequential()\n","model_do.add( layers.Conv2D(10, 4, input_shape=(28,28,1), activation='relu') )\n","model_do.add( layers.Flatten() )\n","model_do.add( layers.Dropout(rate=0.5) )\n","model_do.add( layers.Dense(100, activation='relu') )\n","model_do.add( layers.Dense(10, activation='softmax') )\n","model_do.summary()\n"],"execution_count":27,"outputs":[{"output_type":"stream","text":["WARNING:tensorflow:From /usr/local/lib/python2.7/dist-packages/keras/backend/tensorflow_backend.py:3445: calling dropout (from tensorflow.python.ops.nn_ops) with keep_prob is deprecated and will be removed in a future version.\n","Instructions for updating:\n","Please use `rate` instead of `keep_prob`. Rate should be set to `rate = 1 - keep_prob`.\n","_________________________________________________________________\n","Layer (type) Output Shape Param # \n","=================================================================\n","conv2d_2 (Conv2D) (None, 25, 25, 10) 170 \n","_________________________________________________________________\n","flatten_2 (Flatten) (None, 6250) 0 \n","_________________________________________________________________\n","dropout_1 (Dropout) (None, 6250) 0 \n","_________________________________________________________________\n","dense_3 (Dense) (None, 100) 625100 \n","_________________________________________________________________\n","dense_4 (Dense) (None, 10) 1010 \n","=================================================================\n","Total params: 626,280\n","Trainable params: 626,280\n","Non-trainable params: 0\n","_________________________________________________________________\n"],"name":"stdout"}]},{"metadata":{"id":"m78DB4CtKw_K","colab_type":"text"},"cell_type":"markdown","source":["The dropout layer has the same output shape as the flatten layer just before. It will drop 50% of the values from flatten, chosen on a random basis.\n","\n","Let's compile, fit, and then check the performance.\n"]},{"metadata":{"id":"9jxrFBHzKloV","colab_type":"code","outputId":"70febe93-7622-4c6f-a43c-924e64a7f235","executionInfo":{"status":"ok","timestamp":1549889726010,"user_tz":-60,"elapsed":83732,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":374}},"cell_type":"code","source":["model_do.compile(loss='categorical_crossentropy',\n"," optimizer=RMSprop(lr=0.001),\n"," metrics=['acc'])\n","\n","history_do = model_do.fit(kx_train, y_train, validation_data=(kx_test,y_test),\n"," batch_size=50, epochs=10)"],"execution_count":28,"outputs":[{"output_type":"stream","text":["Train on 60000 samples, validate on 10000 samples\n","Epoch 1/10\n","60000/60000 [==============================] - 8s 140us/step - loss: 0.1954 - acc: 0.9410 - val_loss: 0.0674 - val_acc: 0.9788\n","Epoch 2/10\n","60000/60000 [==============================] - 8s 137us/step - loss: 0.0811 - acc: 0.9750 - val_loss: 0.0569 - val_acc: 0.9802\n","Epoch 3/10\n","60000/60000 [==============================] - 8s 137us/step - loss: 0.0634 - acc: 0.9811 - val_loss: 0.0498 - val_acc: 0.9837\n","Epoch 4/10\n","60000/60000 [==============================] - 8s 138us/step - loss: 0.0545 - acc: 0.9833 - val_loss: 0.0442 - val_acc: 0.9855\n","Epoch 5/10\n","60000/60000 [==============================] - 8s 138us/step - loss: 0.0496 - acc: 0.9850 - val_loss: 0.0458 - val_acc: 0.9851\n","Epoch 6/10\n","60000/60000 [==============================] - 8s 137us/step - loss: 0.0454 - acc: 0.9861 - val_loss: 0.0417 - val_acc: 0.9860\n","Epoch 7/10\n","60000/60000 [==============================] - 8s 137us/step - loss: 0.0419 - acc: 0.9875 - val_loss: 0.0429 - val_acc: 0.9866\n","Epoch 8/10\n","60000/60000 [==============================] - 8s 138us/step - loss: 0.0399 - acc: 0.9882 - val_loss: 0.0442 - val_acc: 0.9878\n","Epoch 9/10\n","60000/60000 [==============================] - 8s 138us/step - loss: 0.0379 - acc: 0.9889 - val_loss: 0.0420 - val_acc: 0.9869\n","Epoch 10/10\n","60000/60000 [==============================] - 8s 138us/step - loss: 0.0370 - acc: 0.9891 - val_loss: 0.0453 - val_acc: 0.9864\n"],"name":"stdout"}]},{"metadata":{"id":"TFsDJTK-LnIe","colab_type":"code","outputId":"323e25c7-9c39-493e-ff55-dfee9be188eb","executionInfo":{"status":"ok","timestamp":1549889729183,"user_tz":-60,"elapsed":575,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":379}},"cell_type":"code","source":["plot_accuracy(history_do, miny=0.95)"],"execution_count":29,"outputs":[{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAecAAAFZCAYAAACizedRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzt3Xt01PWdN/D3b66Z+yWZyZWEkIgo\nAsoiCwVFbSIirtt6gWjRPmvFx7Xu2l23p9tUF0/ZpdpTd9da1uWp7LbP4+E0W4Xq1guKBi8FoVtb\nblYxAwm5kGQmmcw1k7n9nj9mMkkg5ELm8svwfp3DmdtvJt/5irzzvfw+P0EURRFEREQkGbJcN4CI\niIjGYjgTERFJDMOZiIhIYhjOREREEsNwJiIikhiGMxERkcQwnImIiCSG4UxERCQxDGeiWeCXv/wl\n1q1bh5tvvhlf+9rX0NnZCVEU8YMf/AA33XQT1q5dixdffBEALvj8888/j+9973upzxz9+L777sO/\n/Mu/YN26dfjkk0/gcrnwjW98A7fccgtuuukm/Od//mfqfcePH8cdd9yBtWvXYtOmTWhvb8czzzyD\n73//+6ljPB4PlixZgv7+/mx0D1HeUeS6AUQ0sb6+Pnz/+9/HO++8g5KSEnz3u9/Fv/3bv2H58uU4\nevQo9u7di6GhIdx2221Yvnw5Tp8+Pe7zkzl+/Dhef/11yGQybN26FRUVFdi5cyfa29uxbt063HLL\nLSgtLcXf/u3f4nvf+x7WrFmDn/3sZ9i6dSsee+wxbN68GY2NjVAoFGhubsayZctgtVqz0ENE+Yfh\nTCRxhYWF+N3vfgeVSgUAWLZsGV599VWEQiGsXbsWSqUSSqUSb7zxBjQaDX7+85+P+/z7778/4c9Z\ns2YNZLLEZNoTTzyBWCwGAJgzZw5sNhs6OjoQCoXgdruxZs0aAMCmTZtwzz33QK1Ww2Aw4ODBg7ju\nuuuwb98+3HrrrRnsFaL8xnAmkrhYLIYf//jHeO+99xCLxRAIBFBdXQ232w2j0Zg6TqvVAsAFn5+M\nyWRK3T927BieffZZnD17FjKZDE6nE/F4HG63GwaDIXWcQqGAQpH4Z+S2227Dr3/9a1x77bU4fPgw\ntm3bNqPvTXQp45ozkcS98cYbeO+99/DSSy9h7969+Ou//msAgMVigdvtTh3ncrng9/sv+LxMJkM8\nHk897/F4Lvgzv/3tb2Pt2rXYu3cv3nrrLVgsltTPHBgYSH1OJBJBR0cHAGD9+vV499138e6772Lp\n0qVjfkEgoulhOBNJXF9fH8rLy2G1WuF2u/Hmm28iEAjgpptuwuuvv45wOIxgMIh7770XJ0+evODz\ndrsdJ0+eRDweR39/Pz744IMJf+ZVV10FQRCwZ88eDA4OIhgMYu7cuSgpKcHbb78NAHj55ZfxD//w\nDwCAefPmobKyEs8++yzWrVuXlb4hylec1iaSuNtuuw2vv/466uvrMWfOHHzrW9/CX/7lX+LYsWNY\nvXo1br75ZqjVatx1111YunQpRFHE559/ft7zl112GV577TXU1dVh3rx5uOWWW9DX1zfuz3zsscfw\nzW9+E2azGQ0NDdi4cSOefPJJ7Nq1C8899xy+/e1v45//+Z9hs9nwgx/8IPW+9evX47nnnsOXv/zl\nbHUPUV4SeD1nIkqXN954A3v37sVzzz2X66YQzWqc1iaitBgcHMSLL76I++67L9dNIZr1phTOJ0+e\nRF1dHV566aXzXjtw4ADuuusubNy4Edu3b089v23bNmzcuBENDQ04evRo+lpMRJLT3NyMdevW4cYb\nb8SyZcty3RyiWW/SNedgMIitW7di5cqV477+j//4j9i5cyeKi4uxadMmrF27Fv39/Whra0NTUxMc\nDgcaGxvR1NSU9sYTkTTceOONuPHGG3PdDKK8MenIWaVS4ac//Snsdvt5r7W3t8NkMqG0tBQymQxr\n1qzBwYMHcfDgQdTV1QEAampq4PF44Pf70996IiKiPDRpOCsUChQUFIz7mtPpHFOez2q1wul0wuVy\npc6LHP08ERERTS4rG8KmsiE8Go1loSVERETSN6PznO12O1wuV+pxT08P7HY7lErlmOd7e3ths9km\n/Cy3OziTppzHZjPA6fSl9TPpfOzn7GA/Zw/7OjvYz4k+uJAZjZwrKirg9/vR0dGBaDSK5uZmrFq1\nCqtWrcLevXsBACdOnIDdboder5/JjyIiIrpkTDpyPn78OJ555hl0dnZCoVBg7969uOmmm1BRUYH6\n+no89dRTePzxxwEAt956K6qrq1FdXY2FCxeioaEBgiBgy5YtGf8iRERE+UIyFcLSPb3BKZPsYD9n\nB/s5e9jX2cF+zuC0NhEREaUfw5mIiEhiGM5EREQSw3AmIiKSGIYzERGRxDCciYiIJIbhTEREJDEM\n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\nQmCC\n","text/plain":["
"]},"metadata":{"tags":[]}},{"output_type":"display_data","data":{"text/plain":["
"]},"metadata":{"tags":[]}}]},{"metadata":{"id":"O0-8a2kPPO9J","colab_type":"text"},"cell_type":"markdown","source":["The situation is improved, but the network would still be able to overtrain, given enough time (more epochs). And we might be seeing a hint for overfitting starting at epoch 8. Anyway, let's stick with this setting for now, and let's try to make our network more complex. \n","\n","One thing we can do is to play with the hyperparameters of the dense subnetwork. Let's try to add neurons to the hidden layer.\n","\n","### Tuning the dense sub-network"]},{"metadata":{"id":"M3kiFG4L5yHy","colab_type":"code","outputId":"5d6efc55-9520-4dd7-cb58-63c98578dc3e","executionInfo":{"status":"ok","timestamp":1549889856504,"user_tz":-60,"elapsed":96230,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":663}},"cell_type":"code","source":["model_do_200 = models.Sequential()\n","model_do_200.add( layers.Conv2D(10, 4, input_shape=(28,28,1), activation='relu') )\n","model_do_200.add( layers.Flatten() )\n","model_do_200.add( layers.Dropout(rate=0.5) )\n","model_do_200.add( layers.Dense(200, activation='relu') )\n","model_do_200.add( layers.Dense(10, activation='softmax') )\n","model_do_200.summary()\n","\n","model_do_200.compile(loss='categorical_crossentropy',\n"," optimizer=RMSprop(lr=0.001),\n"," metrics=['acc'])\n","\n","history_do_200 = model_do_200.fit(kx_train, y_train, validation_data=(kx_test,y_test),\n"," batch_size=50, epochs=10)"],"execution_count":30,"outputs":[{"output_type":"stream","text":["_________________________________________________________________\n","Layer (type) Output Shape Param # \n","=================================================================\n","conv2d_3 (Conv2D) (None, 25, 25, 10) 170 \n","_________________________________________________________________\n","flatten_3 (Flatten) (None, 6250) 0 \n","_________________________________________________________________\n","dropout_2 (Dropout) (None, 6250) 0 \n","_________________________________________________________________\n","dense_5 (Dense) (None, 200) 1250200 \n","_________________________________________________________________\n","dense_6 (Dense) (None, 10) 2010 \n","=================================================================\n","Total params: 1,252,380\n","Trainable params: 1,252,380\n","Non-trainable params: 0\n","_________________________________________________________________\n","Train on 60000 samples, validate on 10000 samples\n","Epoch 1/10\n","60000/60000 [==============================] - 10s 163us/step - loss: 0.1824 - acc: 0.9442 - val_loss: 0.0821 - val_acc: 0.9735\n","Epoch 2/10\n","60000/60000 [==============================] - 9s 158us/step - loss: 0.0832 - acc: 0.9748 - val_loss: 0.0617 - val_acc: 0.9801\n","Epoch 3/10\n","60000/60000 [==============================] - 10s 159us/step - loss: 0.0642 - acc: 0.9813 - val_loss: 0.0520 - val_acc: 0.9832\n","Epoch 4/10\n","60000/60000 [==============================] - 10s 159us/step - loss: 0.0546 - acc: 0.9837 - val_loss: 0.0450 - val_acc: 0.9857\n","Epoch 5/10\n","60000/60000 [==============================] - 10s 159us/step - loss: 0.0499 - acc: 0.9852 - val_loss: 0.0587 - val_acc: 0.9841\n","Epoch 6/10\n","60000/60000 [==============================] - 10s 158us/step - loss: 0.0457 - acc: 0.9865 - val_loss: 0.0405 - val_acc: 0.9866\n","Epoch 7/10\n","60000/60000 [==============================] - 9s 158us/step - loss: 0.0449 - acc: 0.9867 - val_loss: 0.0428 - val_acc: 0.9857\n","Epoch 8/10\n","60000/60000 [==============================] - 9s 158us/step - loss: 0.0398 - acc: 0.9881 - val_loss: 0.0425 - val_acc: 0.9865\n","Epoch 9/10\n","60000/60000 [==============================] - 10s 159us/step - loss: 0.0381 - acc: 0.9886 - val_loss: 0.0418 - val_acc: 0.9874\n","Epoch 10/10\n","60000/60000 [==============================] - 10s 158us/step - loss: 0.0372 - acc: 0.9891 - val_loss: 0.0511 - val_acc: 0.9855\n"],"name":"stdout"}]},{"metadata":{"id":"Q45Q4PACYr9p","colab_type":"code","outputId":"6eae1624-2b8b-4a47-9fd1-a73bc971e287","executionInfo":{"status":"ok","timestamp":1549889861915,"user_tz":-60,"elapsed":562,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":379}},"cell_type":"code","source":["plot_accuracy(history_do_200, miny=0.95)"],"execution_count":31,"outputs":[{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAecAAAFZCAYAAACizedRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzt3Xt41PWdL/D33CeZS2YmzOSeAJFA\nBYOgpqRgURtExHVXRYiK9pQKx7ae6q7bp9u0XXvKLtU+dbfWWtZW2t091qdZEaptrbEoVi0BKiCB\nAAkEkkwSSGaSuWRmMpO5/M4fkwwJJiSQufwyeb+eh4fMZC6f+aJ553v9SQRBEEBERESiIU11AURE\nRDQaw5mIiEhkGM5EREQiw3AmIiISGYYzERGRyDCciYiIRIbhTEREJDIMZyIiIpFhOBNNA6+99hrW\nrFmD22+/HQ899BA6OzshCAJ+8IMf4LbbbsPq1avx8ssvA8C497/wwgv49re/HXvNkbcffvhh/Pu/\n/zvWrFmDw4cPw26348tf/jLuuOMO3HbbbfjVr34Ve97x48dx7733YvXq1di4cSOsViueffZZfP/7\n3489xuVyYfHixejr60tG8xClHXmqCyCiy+vt7cX3v/99/OlPf0Jubi6+9a1v4Wc/+xkqKirQ0NCA\nuro6BAIB3HXXXaioqMC5c+fGvH8ix48fxx/+8AdIpVJs3boVhYWF2LFjB6xWK9asWYM77rgDeXl5\n+Id/+Ad8+9vfxsqVK/Gf//mf2Lp1K5544gls3rwZNTU1kMvl2Lt3L2688UaYTKYktBBR+mE4E4lc\ndnY2Dh06BKVSCQC48cYb8cYbb8Dv92P16tVQKBRQKBR46623kJGRgf/6r/8a8/4///nPl32flStX\nQiqNDqZ95zvfQTgcBgAUFRXBbDajo6MDfr8fDocDK1euBABs3LgRDzzwAFQqFXQ6Herr63HzzTdj\nz549uPPOOxPYKkTpjeFMJHLhcBg/+clP8N577yEcDsPr9WLOnDlwOBzQ6/Wxx2VmZgLAuPdPJCsr\nK/b1sWPH8Nxzz+H8+fOQSqWw2WyIRCJwOBzQ6XSxx8nlcsjl0R8jd911F37/+9/jpptuwsGDB7Ft\n27YpfW6imYxzzkQi99Zbb+G9997DK6+8grq6Onz9618HABiNRjgcjtjj7HY7PB7PuPdLpVJEIpHY\n/S6Xa9z3/MY3voHVq1ejrq4Ob7/9NoxGY+w9nU5n7HWCwSA6OjoAAGvXrsW7776Ld999F0uXLh31\nCwIRXRmGM5HI9fb2oqCgACaTCQ6HA3/84x/h9Xpx22234Q9/+AMGBwfh8/nw4IMPorm5edz7LRYL\nmpubEYlE0NfXhw8++OCy77lo0SJIJBLs3r0bAwMD8Pl8mD17NnJzc/HOO+8AAHbu3Il//ud/BgDM\nnTsXxcXFeO6557BmzZqktA1RuuKwNpHI3XXXXfjDH/6AVatWoaioCE8++SS+8pWv4NixY1ixYgVu\nv/12qFQqrFu3DkuXLoUgCGhqavrU/fPmzcObb76JqqoqzJ07F3fccQd6e3vHfM8nnngCX/va12Aw\nGFBdXY0NGzbgu9/9Ll599VU8//zz+MY3voF/+7d/g9lsxg9+8IPY89auXYvnn38eX/jCF5LVPERp\nScLrORNRvLz11luoq6vD888/n+pSiKY1DmsTUVwMDAzg5ZdfxsMPP5zqUoimvUmFc3NzM6qqqvDK\nK6986nv79u3DunXrsGHDBrz44oux+7dt24YNGzaguroaDQ0N8auYiERn7969WLNmDW699VbceOON\nqS6HaNqbcM7Z5/Nh69atqKysHPP7//Iv/4IdO3YgJycHGzduxOrVq9HX14e2tjbU1taipaUFNTU1\nqK2tjXvxRCQOt956K2699dZUl0GUNibsOSuVSvziF7+AxWL51PesViuysrKQl5cHqVSKlStXor6+\nHvX19aiqqgIAlJaWwuVywePxxL96IiKiNDRhOMvlcqjV6jG/Z7PZRh3PZzKZYLPZYLfbY/siR95P\nREREE0vKgrDJLAgPhcJJqISIiEj8prTP2WKxwG63x253d3fDYrFAoVCMur+npwdms/myr+Vw+KZS\nyqeYzTrYbP1xfU36NLZzcrCdk4dtnRxs52gbjGdKPefCwkJ4PB50dHQgFAph7969WL58OZYvX466\nujoAQGNjIywWC7Ra7VTeioiIaMaYsOd8/PhxPPvss+js7IRcLkddXR1uu+02FBYWYtWqVfje976H\np556CgBw5513Ys6cOZgzZw4WLlyI6upqSCQSPP300wn/IEREROlCNCeExXt4g0MmycF2Tg62c/Kw\nrZOD7ZzAYW0iIiKKP4YzERGRyDCciYiIRIbhTEREJDIMZyIiIpFhOBMREYkMw5mIiEhkGM5EREQi\nw3AmIiISGYYzERGRyDCciYiIRIbhTEREJDIMZyIiIpFhOBMREYkMw5mIiEhkGM5EREQiw3AmIiIS\nGYYzERGRyDCciYiIRIbhTEREJDIMZyIiIpFhOBMREYkMw5mIiEhkGM5EREQiw3AmIiISGYYzERGR\nyDCciYiIRIbhTEREJDIMZyIiIpFhOBMREYkMw5mIiEhkGM5EREQiw3AmIiISGYYzERGRyDCciYiI\nRIbhTEREJDIMZyIiIpFhOBMREYkMw5mIiEhkGM5EREQiw3AmIiISGYYzERGRyDCciYiIRIbhTERE\nJDIMZyIiIpFhOBMREYkMw5mIiEhkGM5EREQiw3AmIiISGYYzERGRyDCciYiIRGZS4bxt2zZs2LAB\n1dXVaGhoGPW9PXv24L777sMDDzyAV155BQAQiUTw3e9+F9XV1Xj44YfR0tIS/8qJiIjSlHyiBxw8\neBBtbW2ora1FS0sLampqUFtbCyAawlu3bsXu3bthMBiwefNmVFVV4dixY+jv78dvfvMbtLe341//\n9V/x0ksvJfzDEBERpYMJe8719fWoqqoCAJSWlsLlcsHj8QAAHA4H9Ho9TCYTpFIpli1bhn379qG1\ntRXl5eUAgOLiYnR1dSEcDifwYxAREaWPCcPZbrfDaDTGbptMJthsttjXXq8Xra2tCAaDOHDgAOx2\nO8rKyvDRRx8hHA7j7NmzsFqtcDgcifsUREREaWTCYe1LCYIQ+1oikeCZZ55BTU0NdDodCgsLAQAr\nV67E4cOH8dBDD2H+/PmYO3fuqOeNxWjMhFwuu9JyLsts1sX19WhsbOfkYDsnD9s6OdjO45swnC0W\nC+x2e+x2T08PzGZz7HZFRQVeffVVAMBzzz2HgoICAMDf//3fxx5TVVWF7Ozsy76Pw+G7ssonYDbr\nYLP1x/U16dPYzsnBdk4etnVysJ0v/8vJhMPay5cvR11dHQCgsbERFosFWq029v1HH30Uvb298Pl8\n2Lt3LyorK3Hq1Cl861vfAgB88MEHuPbaayGVctcWERHRZEzYc166dCkWLlyI6upqSCQSPP3009i1\naxd0Oh1WrVqF9evXY9OmTZBIJNiyZQtMJhMMBgMEQcC6deugUqnwox/9KBmfhYiIKC1IhIkmg5Mk\n3sMbHDJJDrZzcrCdk4dtnRxiaedwJAKfPwRfIBT9e+hrrz+IAX8I3tj3glhaZkbFZ3Li9t6XG9a+\n4gVhREREYiEIAvyD4REBGxwRsKNv+4ZvBy6GbmBw8tt8ZVJpXMP5chjORESUUsFQZIxgvbTnOjpY\nB0bcH7mCAWAJgAyVHJlqOXKMGchUyaFRK5Chlg99LUemWoHModuZw7dVcmRplYlrhEswnImIaEoi\nggB/rKd6Se90ZI92xNBxIBSB2xvAgD+EwVDkit5PKZciUy2HXqNEbnZmLEQ1qmjIasYI1mjoyqFW\nySGVSBLUEvHDcCYimuEEQcBgKDJu79Q73KMdZ+jYHwjhShYvSSUSaDIUyFDJYNSqxgzRaLgO9WBj\nvVoFMlRyKOTpv/uH4UxElAauZGHTyGAdGArjUPjK1garlTJkquXI1quQqdbGgjXac1WM6LleDNZM\ntRwZKjnUShksFr0oFoSJFcOZiGiaEAQBjv4A2ns8aO/uR3u3Bx09Hrh8g1e0sAkAZFJJbH51liHj\nUyE6alh4xO1o71UGGc+uSCiGMxGRCEUiAi70+dDeEw3h4TD2DARHPU6bobjihU0adXRoWDIN5l5n\nKoYzEVGKDQbD6LR70TYUwNbuflhtHgwGRy+UmpWlxvwiA4pztCjK0aEkRweDVsmQTUMMZyKiJPIM\nBGHt7h81NH2+1zdqO5BMKkFetgYlsRDWosiiRaZakcLKKZkYzkRECSAIAvrcgWgAx4K4H73uwKjH\nqZQyzC3Qo8SiQ1GOFiU5OuTP0qTFimRBEOAJetHnd6DP74Rj+O+AE7lZs1CoLsI8w1xolZpUlyo6\nDGcioikKRyK40DcQC+DhOWKvPzTqcXqNEovmmlBs0aF4KIjNxoxpse92LKFICM6AG31+Bxx+51AI\nRwO4LxC9LxgJjf1k28Uv8zW5KDOWYp6xFPMMc6FRZCbnA4gYw5mI6AoEgmF02DyxueG2bg86bB4E\nLzlIw2LMwGdKjCjO0Q390cKgVaWo6qszEPJfErwX/3YEnHAF3BDG2eGsVWiQq8mBSW2ESWWASW2A\nUW2ESW2AQWVASDWAv7YeQ7OjBWddrejyXsD7HX+BBBLka4fC2lCKeYY5yJyBYc1wJiIah2cgiLbu\nfliHesJt3f240OfDyNMiZVIJCsyaWG+4OEeHIosWGSpx/3iNCBG4B/svCV4nHIGLITwQ8o/5XKlE\nCoMqC6WG2TCqjMhWG2BUG6JBrDbCqDZAJbv8UZdmcz6yYcEds7+AYCSENrcVpx0t0bB2t6HTcx57\nrR9BAgkKtXmYZyxFmbEU1xjmIEOekYgmERVelYqmhO2cHGzny4sIAsJhAZGIgHAkgnBEQDgSvR0a\n+jscHn1/OPYnMvR9AcFwBE5fCKfO9aK9px99l8wPq5UyFFu0o3rD+bM0kMvENz8cDAfhCDhjoTuq\nBxxwwul3IiSMvTdaJVPGQvZiz9c49MeALJUeUsnUPvPl/psOhoNodbej2dGC086zOOdqi9UqgQRF\nuvxoWBtKUWqYgwy5ekq1pAqvSkVESeEPDmJ/eyMOdTeg098GmaCAElqoIhooBA3kEQ3kYQ3k4UxI\nQmpEIpKhsIyMCMuhP2FhKHQnDtVE9DCytEqUl2ZHe8NDveJZBnHMDw/3el0BN5wB19Biq4vB2+d3\noH/QM+7z9UodCnT5lwRvdNg5W21AhjwjpduzFDJFdP7ZWAoAGAwH0epuQ7OjBc2Os2h1t6O9vxPv\ntn8ACSQo1hUOzVnPRWnWbKinaViPxHAmoismCAJ63X502Lxo73GhyXEaXaEzCGR0QSKPLgASgkpA\n4odP7gBkY7xGRAIhqIYQUEMYzIAQzAAG1ZAEMyANaSANZUImkUMmlUAmk0AmlUCpkEVvSyWQSiWQ\nD/09fJ9MJoVUcvHx0T/S6GNkEsiGvicdul828rlDzy+bnQ29WoYsTfKuQDTSYHgQzoALzqHgHf7a\nNeI+92A/IsLYF4uQS2QwqA3IM+bG5npH9oKNqiwoZNNrS5ZSpkCZ8RqUGa8BEG2js642nHaeRbOj\nBW1uK9r6rfhT+/uQSqQXw9owF3OzZkMtn15z/QDDmYgm4PMH0WHzosPmif3daXcjoO6GzHQBMkMP\nJBnRQJaHMjErPB8L9NdikWUuMtQKhIQAPCE3+sNuuEMu9AfdcA064Rp0wTnoRL/KCQGOMd87Q6H5\nVLgM9/SMagO0Ck3ce3iJmkIY3lY0XuAO3zcQGhj3NWQSGbJUeszWFyFLlQWDSg+DKgvGEb1fnVI7\n5SFnsVPKlFhgmocFpnkAgEB4EGddrTjtGArrfita3e14p20vpBIpSnRFo3rWygnmw8WA4UxEAIBQ\nOIILvb5RIdxh81ycd5WEIc2yQ559AbJFNqik0UDWyvS4LnshKguXYE5W8TjBYB7/fSOh2NDsp1YG\nBxw47+1Ge3/nmM9VShWxFcAmtQFG1cWvTWojDKosyKRjdNvjLBgJxYaYxwpcV8AFV8A97hwvAGTI\n1chSZQ0FbzR0h8M3S6WHUWWARpGZ9sF7NVQyJT5jKsNnTGUAAH8oEA1r58WwPuduQ13be5BJZCjR\nF43qWStFOJLAcCaaYYYvnmDtiYZv51AQn+/1IRwZPXur18kwe74XQtZ59EnaERIGAQAmtRFLLNdh\nqaUcJbqiKfVe5VI5ZmVkY1ZG9rj1jjzI4tKFTX1+B7p9PWM+VwIJslT6WK8yOqx7MbxNasNl5ycF\nQcBAaADOgBuOWPB+utfrCXrHfY3hGgp0+aMCd/jrrKGvJ1rdTJOnlqtwbfZ8XJs9HwDgD/nRMqJn\nfc7VhrOuVryNdyGXyFCiL0aZsRRlxrmYoy8RxbA/V2vTlEyndg6GgzjZ1wxrfyfytLko0RXBpDZM\ni3OJr7adff4QOu1DPeGhMO6weTEQGH0whFIhRaFZi0KzBrmz1AhlduN86AxOOk8hEI4GcrbaiCWW\nciy1lKNYVyiqdguEB2OnT43cFtTnd8ARcMIZcI07R5shzxjV0xZkIXS7e2MhHIwEx3weEB1ejYat\nYVQvd2QI65U69nbHkMqfHQMhP1qc59DsbMFpRwus/V2x/dpyqRxz9MVDq8HnYnZWCRTSxPRjL7da\nm+FMUyL2dg6GgzjR14QjPcdwzH4C/vDorTE6pRaz9UUo0RVjdlYRSnSFojzwYKJ2DoUj6O7zwTrc\nEx4K4kuPipRIgBxjJgrNGhRatLFA1utkONnXjCM9DTjWexKDsUA2YamlHEss14kukK9EOBKGe7Af\nvWP0uodvD/8SAkR7u1qlZnTvVpkFg3pkz1cPtUw9bdsk1cT0s8MXHECL61x065ajBR2e87GwVkjl\nmKMvwTzjXHw29wZkZ5ji9r4MZ0oYMbbzYCyQG3DMfiL2Q3d4KHaeYS4ueHvQ6raizW2FI+Ac9XxL\n5izM1hejRF+E2foiFGjzE/ab82QNt/PwkPTIOeGOHi/O93o/PSStUaLIrEGBORrCRRYt8rIzoVRE\n52AHw4M43nsKR3oacLz3VCyQZ2VkxwK5SFswI8JnePjaEXChwJKNkEcKeYr/zdOdGH92DPMFfTjt\nPIfTzuihKJ2e8wCAa03z8bXrvxy392E4U8KIpZ0Hw0Gc6D2Fwz0NON578oqGYl0Bdyyo29xWtLqt\n8Icvnowkl8hQoMvHbH1RLLTNGdkJH6oMhSPosnvRdqEfPe4ATrc70NHjgW+MIemCWdEQLhrqCRdY\ntNBnfnoOMxAexHH7SRyxHUOj/SQGh4ZszRnZsXYq1ObPiEAej1j+m05306mdPUEvzrnakJNphiVz\n/MWNV4rhTAmTynYe7vl90nMsrkOxESGCHp99KKjb0eq2otNzHuERK20z5Bko0RVidlZxdFhcXwS9\ncvz/0SYSCkfQaYtez7f1Qj/aLrhh7fEiFL44TypB9LzmkcPRhRYtzFkZkErH/4z+UACNvSdxuOcY\nGntPxeZQLZmzsNRcjiWWchRo82Z0II/Enx3JwXbmCWGURgLhQTQO9ZBH9vziORQrlUiRq7EgV2PB\nZ/NuABCdu+7wnEeruz3Wwz7lOI1TjtOx55nUxthQ+Gx9MYp0BWOuwB0O4tYLbrRdiIZxh82DUHj0\n9XwLzBrMztWhJFeP6xfkIFMugUoxuW1B/pA/NmQdDeRobzsn0xzrIedrchnIRCLFcCbRiw3FDgVN\nKoZiFTIF5mQVY05Wcew+b9A3Yig82sM+0tOAIz0NAKKLivI0OZilyINi0ISAS4fu83J02byfCuJC\nS/TygdEw1qHQrB11Pd/J9DL8IT+ODbXTib6mEYFswVLLdVjCQCaaNhjOJErTYShWo8gctZdyMBjC\nia4uNFxoQaurHb2hC+gM96BLdiH6BAUgFMiQaTFiliIXs7OKsTjvGizIy4NCfnUHZQyE/DhmP4Ej\nPcdwoq8JoaFAztXkYKl5KJC1uXH5vESUPAxnEg1/yI/j9pM4bDuGEyIfig2GwrD2eNF2wT00R9yP\nTvvIFdNFkMtKUGjJgDk3DLWhHwFFL+zBC7jg7cZ52HHecxz1pwFdmxaz9Rfnrkt0RchUjH9JvIHQ\nAI7ZT+JwTwNO9jXHAjlPkxNrpzxNThJagYgSheFMKTUdhmIHg2FYezwjFmv1o8s+euuSQi5FydCQ\n9Oyc6N/jXUrQH/LD2t+J1qGV4W1uK47ZT+CY/UTsMTmZ5qH562hoK3WFOHD+MA73NOBUX3PsGMh8\nTW5srj2XgUyUNhjOlHRiHooNDAfxhf7Ygq0uuw8RYXQQD88Nl+TqMDtXj7zszElf01ctV4+6HB4w\n9naugxcO4+CFw9EHfHzx+QXaPCwxl2Op5TrkaCxx+dxEJC4MZ0qKgdAAGmwncMTWgJO9F3t+qRyK\nDQTDsHZ7Lq6a7u7H+UuCWKmQYm6+HiU5w0GsQ96sTMik8d3jnKXSY7F5IRabFwK4dDuXFa6wA8WZ\nxVhiKUdOHPdZEpE4MZwpYXzBARyznxDNUOxAIISjLXY0nu1D64V+dPV6MXKXv1IhxdwCfWxYenau\nDnnZmsvuIU6US7dzcU8o0czCcKa48gV9OGo/gU96GnCy73Ts4I5UDcV6/UF8ctqOQ002HD/XFzvU\nQ6WUYV5BFopzdbG9xHmmzJQEMRHRpRjONGXeoA8NtkYctjWgqe9MLJALtflYMtRDTuZQrNs7iMOn\nbTjUZMOpNkds4VahWYMb5luwZN4sFJq1DGIiEi2GM12VUCSET2zHceTEJ2joPhW7HF/RiECO5xm0\nE3H0B3C42YZDTT1osjpjw9UluTrcON+MG+ZbkGsS39WmiIjGwnCmK9I74MBHXftR3/VX9Ac9AIAi\nXQGWmstxveU6WDJnJa0Wu3MAHzfZcKi5By2d7tj91xRk4Yb5ZtxQZsYsw/j7hYmIxIrhTBOKCBGc\n6G3Ch5370dh7CgIEZMozcFvRzbj7ui9A4U9ej/RCnw+HmnrwcZMNbReiC6QkEmBBsQE3zLdgaZkZ\nRp0qafUQESUCw5nG1T/oQX3XX/FR1370+h0AgNn6YtxcsAxLLYuhlClg1ulg8yduFbEgCOi0e/Hx\nqR4carah0+YFED2PetEcE26Yb8aSeWboNZ++wAQR0XTFcKZRBEFAi6sVH3bW45OeYwgJYSilCnwu\nrwI3Fy5Dsa4wKTW0dffjUJMNHzfZ0N3nAwDIZVJcf80s3DDfjOvnzYJGrUh4LUREqcBwJgDRIyUP\nXjiCDzvr0eWNXqghN9OCmwsqUZG79LJnPcdDRBBwtsuNj0/14HCzDXaXH0B07/Hwgq7y0mxkqPif\nLBGlP/6km+E6PefxQWc9/nrhMALhQUglUiy1lOPmgkrMM8xN6JnWkYiAZqsTh4YWdTk9gwAAtVKG\nZdfm4Ib5Fiyaa5r0NYyJiNIFw3kGCkZCONLTgA879+OsqxUAYFQZcHvJrajMq0CWSpew9w6FIzjV\n7sDHp2w4ctqGfl/0UpAatRwrrsvDDfPNuHa2adS1jImIZhqG8wxiH+jFR50HUH/+r/AEvZBAgmtN\n83FzwTIszF4AmTQxPdRgKIzGcw4caurBJ2fs8PqjF7rQZypwy/X5uGGBBfOLDJO+cAQRUbpjOKe5\niBBBY+8pfNBZj5O9zRAgQKPIRFXxSqzIXwZzZnZC3jcwGMaxs734uKkHDS298A9GTw0z6lSoXJiL\nG+abMa/QwFO6iIjGwHBOU+7BfuzrOoiPOg/AEXACAOZmleDmgkosMV8HhSz+K50HAiEcPRM9x/rY\n2V4MhqKnhs3KUuOW6wtwwwIz5uTpIU3htZmJiKYDhnMaEQQBZ5xn8WHnfnxiO46wEIZSpsSK/M/i\n5oJKFOry4/6e/b5BfNRwHh839eBEax9C4ei5mXnZmUOndFlQnKNN6MIyIqJ0w3BOAwOhARw4fxgf\ndu3HBW83gOh1kj9fUImbcpciQ66O+3tGBAG7PziLtw+0j7iwhDa67WmBBQWzNHF/TyKimYLhPI1Z\n+zvxYWc9/nrhCAYjQcgkMtyYcz1uLqhEadbshPVWA8EwXv79CRxqsiHHlImby6OrrHOMvLAEEVE8\nMJynmWA4iMM9Dfiwsx7n3O0AgGy1ESvyl6Ey/ybolNqEvr/LE8BPXj+Gc+fdWFBswD9vroTfG0jo\nexIRzTQM52mix2fHR537sf/8x/CGfJBAgkXZC3BzQSWuzZ4PqSTx25A6bB48/9pR9LoDWL4oF19c\nswC6TCXDmYgozhjOIhaOhHG89yQ+7NyPk33NAACtQoPbS27FivzPIjvDlLRajp/rxfbfHsdAIIx7\nPj8Xd1WWcJEXEVGCTCqct23bhqNHj0IikaCmpgbl5eWx7+3Zswfbt2+HUqnE2rVrsXHjRni9Xnzz\nm9+Ey+VCMBjE1772Ndx8880J+xDpxhVw4y9dB/CXroNwBlwAgNKsOfh8wTIstlwHhTS5v1O9f6QT\nr7zTDKlUgsf+diEqPpOT1PcnIpppJvwpf/DgQbS1taG2thYtLS2oqalBbW0tACASiWDr1q3YvXs3\nDAYDNm/ejKqqKuzZswdz5szBU089he7ubnzxi1/E22+/nfAPM50JgoBmRws+7KzHUXsjIkIEapkK\nny+oxM0FlcjX5ia9pkhEwGvvn0HdQSu0GQp8/b5yXFOYlfQ6iIhmmgnDub6+HlVVVQCA0tJSuFwu\neDweaLVaOBwO6PV6mEzR4dVly5Zh3759MBqNaGpqAgC43W4YjcYEfoTpzx/yY0fjr3GiN9pmBdo8\n3FxQiZtyroc6AdugJiMwGMbPf9eII6ftyMvOxBP3L4bFkNgrUxERUdSE4Wy327Fw4cLYbZPJBJvN\nBq1WC5PJBK/Xi9bWVhQUFODAgQOoqKjAli1bsGvXLqxatQputxsvvfTShIUYjZmQy+N7trPZnLgL\nOMRL34ATL3zwc7Q6O3BdzgJsWPQ3mJc9J6Xzub2uATz3yiGc6XCh/JpZ+Nb/qoA2Y/wTxaZDO6cD\ntnPysK2Tg+08viuevBQEIfa1RCLBM888g5qaGuh0OhQWFgIA3njjDeTn52PHjh04deoUampqsGvX\nrsu+rsPhu9JSLsts1sFm64/SpzywAAAZZUlEQVTra8Zbl+cCfnb0l3AEnFhRsAzr5/0tZIIMdrsn\nZTVZezz48WtH4egPYEV5Hh5ZPR8DHj8GPP4xHz8d2jkdsJ2Th22dHGzny/9yMmE4WywW2O322O2e\nnh6YzebY7YqKCrz66qsAgOeeew4FBQU4ePAgVqxYAQBYsGABenp6EA6HIZPxurzDmvrO4OfH/hv+\nsB9/W7oGq4pvSfnq54aWXmx/4zgCg2Hct3Iu7lzGFdlERKkw4ebY5cuXo66uDgDQ2NgIi8UCrfbi\nQRePPvooent74fP5sHfvXlRWVqKkpARHjx4FAHR2dkKj0TCYRzhw/hBePLoDoUgQX7r2AdxecmvK\nQ/DdQx14fudRRCICvvJ3i7C2MnEnjBER0eVN2HNeunQpFi5ciOrqakgkEjz99NPYtWsXdDodVq1a\nhfXr12PTpk2QSCTYsmULTCYTNmzYgJqaGmzcuBGhUAjf+973kvBRxE8QBLzd+h5+f64OGfIM/O/r\nHsE8Y2lKa4pEBPzmvdPY83EH9JkK/J915SjN54psIqJUkggjJ5FTKN5zD2KbzwhHwvhN027sO38Q\nJrURX1u8Cbma1O4X9g+G8PM3T+CTM3bkz9LgyXXlmHWFK7LF1s7piu2cPGzr5GA7T3HOmabOH/Lj\n5eOv4GRfM4p0BfhK+SZkqVK7StHRH8DzO4+ivduDhbON+MrfLUKmOv7XeCYioivHcE4wZ8CF7Ud/\nhQ5PFxZlL8CXFj4EtVyV0prau/vx/M4GOPoDWHl9Ph5aVQa5LPFncxMR0eQwnBNo1Fap/M9ifdnf\nQSZN7cK4T87Y8dIbjRgMhrH+1muwuqKIC7+IiESG4ZwgTX1n8Ivj/42BkHi2Sv3pYyt+8+5pKGRS\nfPWeRbhhviWl9RAR0dgYzglw8MJhvHLyNUgAfOnaB3Bj7pKU1hOORPCbPWfw7uEOZGmU+Pq6cszJ\n06e0JiIiGh/DOY4EQUBd23v43VnxbJUaCITw0puNaGjpRYFZgyfXLUZ2VmrO6yYioslhOMeJGLdK\n9bn9eH5nA6w9HiyaY8JX/m4RMlT8JyciEjv+pI4Df8iPHcd/jRN9TUNbpb6ELFVqh41bL7jx/M4G\nuDyDuHVJAR5cNQ8yKVdkExFNBwznKRq5VWph9gJsEsFWqSPNNrz0u0YEgxFU33YNVt3EFdlERNMJ\nw3kKRm6VWp7/WWxI8VYpQRDwp79aUfveGSgUUjx+73VYUmae+IlERCQqDOerNGqr1Nw1WFWS2q1S\n4UgEv/7Tabx/pBNZWiWeWFeO2blckU1ENB0xnK/C8FYpAPhf1z6Am1K8VWogEML23x7H8XN9KDRr\n8eT95TDpuSKbiGi6YjhfgUu3Sm257hGUpXirlN01gOd3NqDT5kV5aTb+990LuSKbiGia40/xSRq5\nVcqoMuBr138ZeSneKnXufHRFtts7iC8sLUR11TVckU1ElAYYzpMgxq1Sh5p68IvfnUAwHMEDVfOw\n6sailNZDRETxw3CegNi2SgmCgLqDVry29wyUChn+z33luP6aWSmrh4iI4o/hfBli2yoVCkfw6z81\n48+fdMGgVeKJdYtRkpva60ITEVH8MZzH0ew4g58fi26VunvuHbi95NaUbpXy+UPY/ttjaGx1oDhH\niyfWLYZRl9rDToiIKDEYzmMQ21Ypu3MAP97ZgC67F9dfMwtb7r4WaiX/6YiI0hV/wo8Q3Sq1F787\n+zYy5Gpsue6LKd8q1dLlwgs7G+D2BVF1YyGqb5sHqZRHcRIRpTOG85BwJIza5t34S1d0q9RXF29C\nvjY3pTV9fKoHv/j9CYTCETy0qgxfuKEwpfUQEVFyMJwxtFWq8dc40duEIm0+vrJ4U0q3SgmCgLf2\nt+H1P5+FSinDE/csRnlpdsrqISKi5Jrx4ewKuLH96C9h9XTh2uz5+PLCjSndKhUKR/D/6prwYcN5\nGHUqPLGuHMU5XJFNRDSTzOhwHr1VqgIbyu5J6VYprz+In+0+jpNtDpTk6PD1deVckU1ENAPN2HAW\n21Ypu3MA//7aUZzv9WHJvFnY8jcLoVKm7hcFIiJKnRkZziO3Sn3x2mpU5C5NcUXAb947g/O9Pqyu\nKML9t1zDFdlERDPYjArnT2+VegRlxmtSXRYiEQEn2xwwG9TYcNu8VJdDREQpNmPCWYxbpYZZezwY\nCIRwQ5k51aUQEZEIzIhw9ocC2NH4Smyr1GOLvwSDKivVZcU0WZ0AgPnFhhRXQkREYpD24ewKuLG9\n4Vew9nfiWtN8fHnRQ1DL1akua5SmdgcAhjMREUWldTif93bjxU92wBFw4nN5Faien9qtUmOJCAKa\nrU5k69WYlZWR6nKIiEgE0jacG3ua8dyh7RgI+fE3c+/A6hRvlRpPl80Lrz+ExbwmMxERDUnLcG6w\nNeLlxlcAQTxbpcZzanhIu4hD2kREFJWW4fyJ7TjUMiUeXfSwKLZKXQ4XgxER0aXSMpwfWrAOhuwM\n9DsGU13KZQlD881GnQpmA+ebiYgoSprqAhJBJpWl9OIVk9XV60O/L4j5RQZRzocTEVFqpGU4TxfN\n3EJFRERjYDin0MX5ZmOKKyEiIjFhOKeIIAhoanciS6NEjpHzzUREdBHDOUW6HQNweQcxv5jzzURE\nNBrDOUW4v5mIiMbDcE6R5vbofHMZ55uJiOgSDOcUEAQBTVYndJkK5GdnprocIiISGYZzCticA3D0\nB1DG/c1ERDQGhnMKNA0NaXO+mYiIxsJwToHh/c0LON9MRERjYDinQFO7Exq1HPlmTapLISIiEWI4\nJ5ndNYBetx9lRQZIOd9MRERjYDgnWWy+mUPaREQ0DoZzknExGBERTYThnGRNVgcyVHIUWbSpLoWI\niERKPpkHbdu2DUePHoVEIkFNTQ3Ky8tj39uzZw+2b98OpVKJtWvXYuPGjXjttdfw5ptvxh5z/Phx\nHDlyJP7VTzN9bj9sTj8Wl2ZDKuV8MxERjW3CcD548CDa2tpQW1uLlpYW1NTUoLa2FgAQiUSwdetW\n7N69GwaDAZs3b0ZVVRXuv/9+3H///bHn//GPf0zsp5gmeIlIIiKajAmHtevr61FVVQUAKC0thcvl\ngsfjAQA4HA7o9XqYTCZIpVIsW7YM+/btG/X8F198EV/96lcTUPr0c3ExGOebiYhofBP2nO12OxYu\nXBi7bTKZYLPZoNVqYTKZ4PV60draioKCAhw4cAAVFRWxxzY0NCAvLw9ms3nCQozGTMjlsqv8GGMz\nm3Vxfb2paulyIUMlxw0L8yCTpc90v9jaOV2xnZOHbZ0cbOfxTWrOeSRBEGJfSyQSPPPMM6ipqYFO\np0NhYeGox+7cuRP33HPPpF7X4fBdaSmXZTbrYLP1x/U1p8LpCaDT5sV1c7PR1+dNdTlxI7Z2Tlds\n5+RhWycH2/nyv5xM2H2zWCyw2+2x2z09PaN6whUVFXj11Vfx0ksvQafToaCgIPa9AwcOYMmSJVdb\nd1pptnJIm4iIJmfCcF6+fDnq6uoAAI2NjbBYLNBqL24DevTRR9Hb2wufz4e9e/eisrISANDd3Q2N\nRgOlUpmg0qeXU9zfTEREkzThsPbSpUuxcOFCVFdXQyKR4Omnn8auXbug0+mwatUqrF+/Hps2bYJE\nIsGWLVtgMpkAADabLfY1AU3tDqgUMpTkco6FiIguTyKMnEROoXjPPYhpPsPtHcSTL3yEhbONeKo6\nvYb5xdTO6YztnDxs6+RgO09xzpmmbni+uYz7m4mIaBIYzknA87SJiOhKMJyToMnqgFIuxZw8fapL\nISKiaYDhnGCegSA6bF6UFmRBIWdzExHRxJgWCRbb38whbSIimiSGc4KdancA4OEjREQ0eQznBGtu\nd0Iuk2JuPuebiYhochjOCeT1B2Ht8WBuvh6KOF/Ug4iI0hfDOYFOW10QwPlmIiK6MgznBGqycr6Z\niIiuHMM5gZranZBJJSgtyEp1KURENI0wnBNkIBBCW3c/5uTroVJwvpmIiCaP4ZwgpztcEATONxMR\n0ZVjOCcI55uJiOhqMZwTpKndCalEgms430xERFeI4ZwA/sEQWs/3Y3aeDmqlPNXlEBHRNMNwToAz\nnS5EBIHzzUREdFUYzgkQu34z55uJiOgqMJwToMnqhEQCzCtkOBMR0ZVjOMdZIBjGuS43SnJ0yFBx\nvpmIiK4cwznOzna6EI4IHNImIqKrxnCOsybr0HxzkTHFlRAR0XTFcI6zU+1OSACUFXF/MxERXR2G\ncxwFQ2Gc7XKjyKJFplqR6nKIiGiaYjjH0dkuN0LhCMo430xERFPAcI6j2P5mzjcTEdEUMJzjaHgx\nGOebiYhoKhjOcRIKR9DS6UKBWQNdpjLV5RAR0TTGcI6Tc+fdGAxFsIBD2kRENEUM5zjhedpERBQv\nDOc4uTjfzHAmIqKpYTjHQSgcwZkOF/KyM6HXcL6ZiIimhuEcB20X+hEIhjG/mPPNREQ0dQznOLh4\nnjaHtImIaOoYznHAxWBERBRPDOcpCkciON3hRI4xAwatKtXlEBFRGmA4T1F7twf+Qc43ExFR/DCc\np4hD2kREFG8M5ylq5mIwIiKKM4bzFEQiApqsTpgNapj06lSXQ0REaYLhPAXWHg8GAiFeIpKIiOKK\n4TwFsf3NnG8mIqI4YjhPQVO7AwDnm4mIKL4YzlcpIghotjqRrVdhliEj1eUQEVEaYThfpS6bF15/\nCGWcbyYiojhjOF+l4fnmBZxvJiKiOGM4X6XYfDPDmYiI4ozhfBUEIbq/2ahTwcz5ZiIiijOG81Xo\n6vWh3xfE/CIDJBJJqsshIqI0w3C+Cs1DQ9plHNImIqIEmFQ4b9u2DRs2bEB1dTUaGhpGfW/Pnj24\n77778MADD+CVV16J3f/mm2/i7rvvxr333ov3338/rkWnWhPP0yYiogSST/SAgwcPoq2tDbW1tWhp\naUFNTQ1qa2sBAJFIBFu3bsXu3bthMBiwefNmVFVVQaVS4cUXX8Trr78On8+HF154AbfcckuiP0tS\nCIKApnYn9Bolck2ZqS6HiIjS0IThXF9fj6qqKgBAaWkpXC4XPB4PtFotHA4H9Ho9TCYTAGDZsmXY\nt28f1Go1KisrodVqodVqsXXr1sR+iiTqdgzA5R3ETQssnG8mIqKEmHBY2263w2i8eNCGyWSCzWaL\nfe31etHa2opgMIgDBw7Abrejo6MDfr8fjz32GB588EHU19cn7hMk2fAWKu5vJiKiRJmw53wpQRBi\nX0skEjzzzDOoqamBTqdDYWFh7HtOpxM//elP0dXVhUceeQR79+69bE/TaMyEXC670nIuy2zWxfX1\nAKCtxwsAWLa4ICGvPx2xHZKD7Zw8bOvkYDuPb8JwtlgssNvtsds9PT0wm82x2xUVFXj11VcBAM89\n9xwKCgrg9/uxZMkSyOVyFBcXQ6PRoK+vD9nZ2eO+j8Phm8rn+BSzWQebrT+urykIAo6etkGXqYBa\niri//nSUiHamT2M7Jw/bOjnYzpf/5WTCYe3ly5ejrq4OANDY2AiLxQKtVhv7/qOPPore3l74fD7s\n3bsXlZWVWLFiBfbv349IJAKHwwGfzzdqaHy6sjkH4OgPoIz7m4mIKIEm7DkvXboUCxcuRHV1NSQS\nCZ5++mns2rULOp0Oq1atwvr167Fp0yZIJBJs2bIltjhs9erVWL9+PQDgO9/5DqTS6b+luqmdW6iI\niCjxJMLISeQUivfwRiKGTF7+/QnsO34B/3dTBYos2omfMANwaCo52M7Jw7ZODrbzFIe16aKmdic0\najkKzJpUl0JERGmM4TxJdtcAet1+lBUZIOV8MxERJRDDeZI430xERMnCcJ6k2HnaxdN/1TkREYkb\nw3mSmtudyFDJuRCMiIgSjuE8CX1uP3qcAygrzIJUyvlmIiJKLIbzJHBIm4iIkonhPAmxxWC82AUR\nESUBw3kSmqxOqJUyFOdwvpmIiBKP4TwBpyeA7j4frinMgiwNjiAlIiLxY9pMoNnK/c1ERJRcDOcJ\nXJxv5mIwIiJKDobzBJqsTigVUszO5UXBiYgoORjOl+H2DqLL7sW8gizIZWwqIiJKDibOZQzPN5dx\nSJuIiJKI4XwZvNgFERGlAsP5MpqsDijkUszJ06e6FCIimkEYzuPwDATRYfOiNF8PhZzNREREycPU\nGUczz9MmIqIUYTiPg/PNRESUKgzncTRZHZDLpCgt4HwzERElF8N5DD5/ENZuD+bm66GQy1JdDhER\nzTAM5zE0W10QwCFtIiJKDYbzGJqsDgC8fjMREaUGw3kMTe1OyKQSlBZkpboUIiKagRjOlxgIhNDW\n3Y85eXqoFJxvJiKi5GM4X+J0hwuCwCFtIiJKHYbzJWLzzVwMRkREKcJwvkRzuxNSCeebiYgodRjO\nI/gHQ2i90I/ZeTpkqOSpLoeIiGYohvMIZzpdCEcEDmkTEVFKMZxHiJ2nzcVgRESUQgznEZqsTkgk\nwLxChjMREaUOw3lIIBjGuS43inM430xERKnFcB5ylvPNREQkEgznIU1WzjcTEZE4MJyHNLU7IQFQ\nxp4zERGlGMMZQDAURkuXG0UWLTRqRarLISKiGY7hDOBslxuhcARlHNImIiIRYDhjxP7mImOKKyEi\nImI4A7i4GKysiOdpExFR6s34cA6FI2jpdKHArIEuU5nqcoiIiBjO5867MRiKcH8zERGJxowP54vn\naXO+mYiIxIHhHJtvZs+ZiIjEYUaHcygcwZkOF/KyM5Gl4XwzERGJw4wO57bufgSCYQ5pExGRqMzo\ncL64v5lD2kREJB4MZ/BiF0REJC4zNpzDkQhOdziRY8yAQatKdTlEREQxMzac27s98A+G2WsmIiLR\nkU/mQdu2bcPRo0chkUhQU1OD8vLy2Pf27NmD7du3Q6lUYu3atdi4cSMOHDiAJ554AvPmzQMAlJWV\n4bvf/W5iPsFV4nnaREQkVhOG88GDB9HW1oba2lq0tLSgpqYGtbW1AIBIJIKtW7di9+7dMBgM2Lx5\nM6qqqgAAFRUV+MlPfpLY6qeg2cr5ZiIiEqcJh7Xr6+tjgVtaWgqXywWPxwMAcDgc0Ov1MJlMkEql\nWLZsGfbt25fYiuMgEhHQbHViVpYaJr061eUQERGNMmE42+12GI0Xh35NJhNsNlvsa6/Xi9bWVgSD\nQRw4cAB2ux0AcObMGTz22GN44IEH8Je//CVB5V+dDpsHvkCIvWYiIhKlSc05jyQIQuxriUSCZ555\nBjU1NdDpdCgsLAQAzJ49G48//jjWrFkDq9WKRx55BO+88w6UyvFP4TKbdVdR/uWN95pmsw6/e+5v\n4/5+M1Ui/u3o09jOycO2Tg628/gm7DlbLJZYbxgAenp6YDabY7crKirw6quv4qWXXoJOp0NBQQFy\ncnJw5513QiKRoLi4GLNmzUJ3d3diPgEREVGamTCcly9fjrq6OgBAY2MjLBYLtFpt7PuPPvooent7\n4fP5sHfvXlRWVuLNN9/Ejh07AAA2mw29vb3IyclJ0EcgIiJKLxJh5Dj1OH70ox/h448/hkQiwdNP\nP40TJ05Ap9Nh1apVeOedd/Diiy9CIpFg06ZNuPvuu+HxePCP//iPcLvdCAaDePzxx7Fy5cpkfB4i\nIqJpb1LhTERERMkzY08IIyIiEiuGMxERkcikZThv27YNGzZsQHV1NRoaGlJdTtr64Q9/iA0bNuC+\n++7DO++8k+py0prf70dVVRV27dqV6lLS1ptvvom7774b9957L95///1Ul5OWvF4vHn/8cTz88MOo\nrq7Ghx9+mOqSROuK9zmL3eWOG6X42b9/P06fPo3a2lo4HA7cc889uP3221NdVtravn07srKyUl1G\n2nI4HHjxxRfx+uuvw+fz4YUXXsAtt9yS6rLSzu7duzFnzhw89dRT6O7uxhe/+EW8/fbbqS5LlNIu\nnMc7bnTk9i+auptuuil2ARS9Xo+BgQGEw2HIZLIUV5Z+WlpacObMGYZFAtXX16OyshJarRZarRZb\nt25NdUlpyWg0oqmpCQDgdrtHnT5Jo6XdsPbljhul+JHJZMjMzAQA7Ny5E5///OcZzAny7LPP4p/+\n6Z9SXUZa6+jogN/vx2OPPYYHH3wQ9fX1qS4pLa1duxZdXV1YtWoVNm7ciG9+85upLkm00q7nfCnu\nFEusPXv2YOfOnfjlL3+Z6lLS0m9/+1tcf/31KCoqSnUpac/pdOKnP/0purq68Mgjj2Dv3r2QSCSp\nLiutvPHGG8jPz8eOHTtw6tQp1NTUcB3FONIunCc6bpTi58MPP8R//Md/4OWXX4ZOxzNyE+H999+H\n1WrF+++/jwsXLkCpVCI3Nxef+9znUl1aWsnOzsaSJUsgl8tRXFwMjUaDvr4+ZGdnp7q0tHL48GGs\nWLECALBgwQL09PRwOmwcaTesPdFxoxQf/f39+OEPf4iXXnoJBgOv7pUoP/7xj/H666/jf/7nf3D/\n/ffjq1/9KoM5AVasWIH9+/cjEonA4XDA5/NxPjQBSkpKcPToUQBAZ2cnNBoNg3kcaddzXrp0KRYu\nXIjq6urYcaMUf2+99RYcDgeefPLJ2H3PPvss8vPzU1gV0dXJycnB6tWrsX79egDAd77zHUiladd3\nSbkNGzagpqYGGzduRCgUwve+971UlyRaPL6TiIhIZPirIRERkcgwnImIiESG4UxERCQyDGciIiKR\nYTgTERGJDMOZiIhIZBjOREREIsNwJiIiEpn/D5dyeZKZ/UMFAAAAAElFTkSuQmCC\n","text/plain":["
"]},"metadata":{"tags":[]}},{"output_type":"display_data","data":{"text/plain":["
"]},"metadata":{"tags":[]}}]},{"metadata":{"id":"-5gPqgYHZgmX","colab_type":"text"},"cell_type":"markdown","source":["The validation accuracy, computed on the training sample, did not improve. \n","\n","But this is already teaching us something: 200 neurons on the hidden dense layer is not better than 100. Now, we started with 100... maybe it was too much. Could 50 neurons do the job? "]},{"metadata":{"id":"yxgQob5pZFK4","colab_type":"code","outputId":"002161e2-368b-4aef-aa48-702272302440","executionInfo":{"status":"ok","timestamp":1549889967550,"user_tz":-60,"elapsed":77707,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":663}},"cell_type":"code","source":["model_do_50 = models.Sequential()\n","model_do_50.add( layers.Conv2D(10, 4, input_shape=(28,28,1), activation='relu') )\n","model_do_50.add( layers.Flatten() )\n","model_do_50.add( layers.Dropout(rate=0.5) )\n","model_do_50.add( layers.Dense(50, activation='relu') )\n","model_do_50.add( layers.Dense(10, activation='softmax') )\n","model_do_50.summary()\n","\n","model_do_50.compile(loss='categorical_crossentropy',\n"," optimizer=RMSprop(lr=0.001),\n"," metrics=['acc'])\n","\n","history_do_50 = model_do_50.fit(kx_train, y_train, validation_data=(kx_test,y_test),\n"," batch_size=50, epochs=10)"],"execution_count":32,"outputs":[{"output_type":"stream","text":["_________________________________________________________________\n","Layer (type) Output Shape Param # \n","=================================================================\n","conv2d_4 (Conv2D) (None, 25, 25, 10) 170 \n","_________________________________________________________________\n","flatten_4 (Flatten) (None, 6250) 0 \n","_________________________________________________________________\n","dropout_3 (Dropout) (None, 6250) 0 \n","_________________________________________________________________\n","dense_7 (Dense) (None, 50) 312550 \n","_________________________________________________________________\n","dense_8 (Dense) (None, 10) 510 \n","=================================================================\n","Total params: 313,230\n","Trainable params: 313,230\n","Non-trainable params: 0\n","_________________________________________________________________\n","Train on 60000 samples, validate on 10000 samples\n","Epoch 1/10\n","60000/60000 [==============================] - 8s 132us/step - loss: 0.2584 - acc: 0.9221 - val_loss: 0.1066 - val_acc: 0.9685\n","Epoch 2/10\n","60000/60000 [==============================] - 8s 127us/step - loss: 0.1117 - acc: 0.9656 - val_loss: 0.0742 - val_acc: 0.9782\n","Epoch 3/10\n","60000/60000 [==============================] - 8s 128us/step - loss: 0.0871 - acc: 0.9746 - val_loss: 0.0715 - val_acc: 0.9779\n","Epoch 4/10\n","60000/60000 [==============================] - 8s 127us/step - loss: 0.0743 - acc: 0.9779 - val_loss: 0.0646 - val_acc: 0.9792\n","Epoch 5/10\n","60000/60000 [==============================] - 8s 127us/step - loss: 0.0652 - acc: 0.9805 - val_loss: 0.0649 - val_acc: 0.9804\n","Epoch 6/10\n","60000/60000 [==============================] - 8s 127us/step - loss: 0.0608 - acc: 0.9824 - val_loss: 0.0583 - val_acc: 0.9820\n","Epoch 7/10\n","60000/60000 [==============================] - 8s 127us/step - loss: 0.0556 - acc: 0.9831 - val_loss: 0.0619 - val_acc: 0.9808\n","Epoch 8/10\n","60000/60000 [==============================] - 8s 127us/step - loss: 0.0550 - acc: 0.9835 - val_loss: 0.0575 - val_acc: 0.9830\n","Epoch 9/10\n","60000/60000 [==============================] - 8s 128us/step - loss: 0.0511 - acc: 0.9845 - val_loss: 0.0540 - val_acc: 0.9834\n","Epoch 10/10\n","60000/60000 [==============================] - 8s 127us/step - loss: 0.0494 - acc: 0.9852 - val_loss: 0.0488 - val_acc: 0.9852\n"],"name":"stdout"}]},{"metadata":{"id":"zlsPc4u7Z72l","colab_type":"code","outputId":"4635bf1b-3a42-473b-e898-5a9c068a8f98","executionInfo":{"status":"ok","timestamp":1549889978001,"user_tz":-60,"elapsed":661,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":379}},"cell_type":"code","source":["plot_accuracy(history_do_50, miny=0.95)"],"execution_count":33,"outputs":[{"output_type":"display_data","data":{"image/png":"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\nEYiIiNKLIA4dpz6Pn/70p9izZw8EQcCTTz6JgwcPQq/Xo6qqCtu3b8f69eshCAJWrVqF22+/HW63\nG//0T/+Evr4+BINBPProo1i8eHEyPg8REdGYd0HhTERERMnDHcKIiIgkhuFMREQkMWkZzuvWrcOK\nFStQXV2Nffv2pbqctPWTn/wEK1aswF133YXt27enupy05vf7UVlZic2bN6e6lLS1detW3H777bjz\nzjvx4YcfprqctOTxePDoo4/igQceQHV1NT7++ONUlyRZF73OWepG2m6U4ueTTz7B0aNHUVtbC6fT\niTvuuAM333xzqstKWy+++CKysrJSXUbacjqdWL9+Pd544w14vV688MILuP7661NdVtrZsmULSktL\n8fjjj6OrqwsPPfQQ3n333VSXJUlpF87n22506PIvunzz5s2LXQDFYDDA5/MhHA5DLpenuLL009TU\nhGPHjjEsEqiurg4LFiyATqeDTqfD2rVrU11SWjKZTDh8+DAAoK+vb9jukzRc2g1rj7TdKMWPXC5H\nZmYmAGDTpk346le/ymBOkGeeeQb//M//nOoy0lpbWxv8fj8eeeQR3Hfffairq0t1SWlp2bJl6Ojo\nQFVVFVauXInvfe97qS5JstKu53wmrhRLrB07dmDTpk347//+71SXkpZ+//vf46qrrkJRUVGqS0l7\nvb29+NnPfoaOjg48+OCD2LlzJwRBSHVZaeXNN99Efn4+NmzYgMbGRtTU1HAexXmkXTiPtt0oxc/H\nH3+MX/ziF3jllVeg13OP3ET48MMP0draig8//BCdnZ1QqVTIy8vDV77ylVSXllays7Nx9dVXQ6FQ\noLi4GFqtFj09PcjOzk51aWnl888/x6JFiwAAZWVl6O7u5umw80i7Ye3Rthul+Ojv78dPfvITvPTS\nSzAajakuJ23953/+J9544w387ne/wz333INvfvObDOYEWLRoET755BNEIhE4nU54vV6eD02AiRMn\nYu/evQCA9vZ2aLVaBvN5pF3Pec6cOSgvL0d1dXVsu1GKv3feeQdOpxPf+c53Yo8988wzyM/PT2FV\nRJcmNzcXS5YswfLlywEATzzxBGSytOu7pNyKFStQU1ODlStXIhQK4amnnkp1SZLF7TuJiIgkhn8a\nEhERSQzDmYiISGIYzkRERBLDcCYiIpIYhjMREZHEMJyJiIgkhuFMREQkMQxnIiIiifn/Ylq7YrcG\nXNMAAAAASUVORK5CYII=\n","text/plain":["
"]},"metadata":{"tags":[]}},{"output_type":"display_data","data":{"text/plain":["
"]},"metadata":{"tags":[]}}]},{"metadata":{"id":"9GasTWUcbsBY","colab_type":"text"},"cell_type":"markdown","source":["This time, the accuracy on the training sample plateau around 98.5%, because 50 neurons do not appear to be enough to capture all the information from the training samples. Let's go back to 100 neurons as our baseline. \n","\n","As an exercise, you could check what happens if you add a second hidden layer, with e.g. 50 neurons in both hidden layers. \n","\n","You will probably see that there is nothing to gain in playing this game. And if you manage to improve the performance in this way, please give details in the comments! \n","\n","Another way to improve performance is to act on the first stage of the network. Usually, image recognition is done with networks featuring stacked convolutional layers. Let's try that. \n","\n","### Stacked convolution layers"]},{"metadata":{"id":"_pwU79FMfGik","colab_type":"text"},"cell_type":"markdown","source":["In the model below, we stack a second convolutional layer after the first one. Directly stacking it on top of the first one would not bring us anything, we could as well try and extract more than 10 features. Instead, we perform a max pooling in a window of 2x2 pixels and then apply the new convolutional layer on the output of the max pooling layer. In this way, the second convolutional layer will learn longer-distance features. We also increase the number of features to be extracted from 10 to 20. "]},{"metadata":{"id":"_pxQOe3IbmnD","colab_type":"code","outputId":"306f50d8-e159-487b-901d-7a37359f2359","executionInfo":{"status":"ok","timestamp":1549890197877,"user_tz":-60,"elapsed":83853,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":731}},"cell_type":"code","source":["model_2c = models.Sequential()\n","model_2c.add( layers.Conv2D(10, 4, input_shape=(28,28,1), activation='relu') )\n","model_2c.add( layers.MaxPooling2D(2) )\n","model_2c.add( layers.Conv2D(20, 4, activation='relu') )\n","model_2c.add( layers.Flatten() )\n","model_2c.add( layers.Dropout(rate=0.5) )\n","model_2c.add( layers.Dense(100, activation='relu') )\n","model_2c.add( layers.Dense(10, activation='softmax') )\n","model_2c.summary()\n","\n","model_2c.compile(loss='categorical_crossentropy',\n"," optimizer=RMSprop(lr=0.001),\n"," metrics=['acc'])\n","\n","history_2c = model_2c.fit(kx_train, y_train, validation_data=(kx_test,y_test),\n"," batch_size=50, epochs=10)"],"execution_count":34,"outputs":[{"output_type":"stream","text":["_________________________________________________________________\n","Layer (type) Output Shape Param # \n","=================================================================\n","conv2d_5 (Conv2D) (None, 25, 25, 10) 170 \n","_________________________________________________________________\n","max_pooling2d_1 (MaxPooling2 (None, 12, 12, 10) 0 \n","_________________________________________________________________\n","conv2d_6 (Conv2D) (None, 9, 9, 20) 3220 \n","_________________________________________________________________\n","flatten_5 (Flatten) (None, 1620) 0 \n","_________________________________________________________________\n","dropout_4 (Dropout) (None, 1620) 0 \n","_________________________________________________________________\n","dense_9 (Dense) (None, 100) 162100 \n","_________________________________________________________________\n","dense_10 (Dense) (None, 10) 1010 \n","=================================================================\n","Total params: 166,500\n","Trainable params: 166,500\n","Non-trainable params: 0\n","_________________________________________________________________\n","Train on 60000 samples, validate on 10000 samples\n","Epoch 1/10\n","60000/60000 [==============================] - 9s 143us/step - loss: 0.2109 - acc: 0.9363 - val_loss: 0.0624 - val_acc: 0.9802\n","Epoch 2/10\n","60000/60000 [==============================] - 8s 138us/step - loss: 0.0792 - acc: 0.9760 - val_loss: 0.0382 - val_acc: 0.9868\n","Epoch 3/10\n","60000/60000 [==============================] - 8s 137us/step - loss: 0.0622 - acc: 0.9813 - val_loss: 0.0332 - val_acc: 0.9891\n","Epoch 4/10\n","60000/60000 [==============================] - 8s 138us/step - loss: 0.0529 - acc: 0.9837 - val_loss: 0.0377 - val_acc: 0.9881\n","Epoch 5/10\n","60000/60000 [==============================] - 8s 137us/step - loss: 0.0473 - acc: 0.9858 - val_loss: 0.0286 - val_acc: 0.9914\n","Epoch 6/10\n","60000/60000 [==============================] - 8s 138us/step - loss: 0.0457 - acc: 0.9862 - val_loss: 0.0271 - val_acc: 0.9902\n","Epoch 7/10\n","60000/60000 [==============================] - 8s 138us/step - loss: 0.0428 - acc: 0.9871 - val_loss: 0.0350 - val_acc: 0.9894\n","Epoch 8/10\n","60000/60000 [==============================] - 8s 138us/step - loss: 0.0407 - acc: 0.9880 - val_loss: 0.0282 - val_acc: 0.9915\n","Epoch 9/10\n","60000/60000 [==============================] - 8s 137us/step - loss: 0.0381 - acc: 0.9888 - val_loss: 0.0284 - val_acc: 0.9906\n","Epoch 10/10\n","60000/60000 [==============================] - 8s 139us/step - loss: 0.0357 - acc: 0.9891 - val_loss: 0.0317 - val_acc: 0.9907\n"],"name":"stdout"}]},{"metadata":{"id":"eV8_ARDugAtx","colab_type":"text"},"cell_type":"markdown","source":["We achieved a test accuracy over 99%, which is great! but can we do even better? \n","\n","### To 100% and beyond!\n","\n","After one hour of optimizations, I converged to this network: "]},{"metadata":{"id":"AoubrswNfqVW","colab_type":"code","outputId":"b5325b6d-e0bd-4cff-a305-7cb1cdd1f9ea","executionInfo":{"status":"ok","timestamp":1549890641603,"user_tz":-60,"elapsed":135731,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":1785}},"cell_type":"code","source":["model_best = models.Sequential()\n","model_best.add( layers.Conv2D(16, 4, input_shape=(28,28,1), activation='relu') )\n","model_best.add( layers.MaxPooling2D(2) )\n","model_best.add( layers.Conv2D(32, 4, activation='relu') )\n","model_best.add( layers.MaxPooling2D(2) )\n","model_best.add( layers.Flatten() )\n","model_best.add( layers.Dropout(0.4) )\n","model_best.add( layers.Dense(100, activation='relu') )\n","model_best.add( layers.Dense(10, activation='softmax') )\n","model_best.summary()\n","model_best.compile(loss='categorical_crossentropy',\n"," optimizer=RMSprop(lr=0.001),\n"," metrics=['acc'])\n","\n","history_best = model_best.fit(kx_train, y_train, validation_data=(kx_test,y_test),\n"," batch_size=200, epochs=40)"],"execution_count":35,"outputs":[{"output_type":"stream","text":["_________________________________________________________________\n","Layer (type) Output Shape Param # \n","=================================================================\n","conv2d_7 (Conv2D) (None, 25, 25, 16) 272 \n","_________________________________________________________________\n","max_pooling2d_2 (MaxPooling2 (None, 12, 12, 16) 0 \n","_________________________________________________________________\n","conv2d_8 (Conv2D) (None, 9, 9, 32) 8224 \n","_________________________________________________________________\n","max_pooling2d_3 (MaxPooling2 (None, 4, 4, 32) 0 \n","_________________________________________________________________\n","flatten_6 (Flatten) (None, 512) 0 \n","_________________________________________________________________\n","dropout_5 (Dropout) (None, 512) 0 \n","_________________________________________________________________\n","dense_11 (Dense) (None, 100) 51300 \n","_________________________________________________________________\n","dense_12 (Dense) (None, 10) 1010 \n","=================================================================\n","Total params: 60,806\n","Trainable params: 60,806\n","Non-trainable params: 0\n","_________________________________________________________________\n","Train on 60000 samples, validate on 10000 samples\n","Epoch 1/40\n","60000/60000 [==============================] - 4s 63us/step - loss: 0.3473 - acc: 0.8939 - val_loss: 0.0924 - val_acc: 0.9729\n","Epoch 2/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.1145 - acc: 0.9645 - val_loss: 0.0594 - val_acc: 0.9807\n","Epoch 3/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0830 - acc: 0.9748 - val_loss: 0.0436 - val_acc: 0.9859\n","Epoch 4/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0692 - acc: 0.9786 - val_loss: 0.0357 - val_acc: 0.9878\n","Epoch 5/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0596 - acc: 0.9813 - val_loss: 0.0314 - val_acc: 0.9885\n","Epoch 6/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0532 - acc: 0.9830 - val_loss: 0.0293 - val_acc: 0.9904\n","Epoch 7/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0482 - acc: 0.9856 - val_loss: 0.0272 - val_acc: 0.9909\n","Epoch 8/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0443 - acc: 0.9859 - val_loss: 0.0253 - val_acc: 0.9922\n","Epoch 9/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0412 - acc: 0.9867 - val_loss: 0.0263 - val_acc: 0.9906\n","Epoch 10/40\n","60000/60000 [==============================] - 3s 55us/step - loss: 0.0373 - acc: 0.9884 - val_loss: 0.0239 - val_acc: 0.9926\n","Epoch 11/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0375 - acc: 0.9882 - val_loss: 0.0226 - val_acc: 0.9923\n","Epoch 12/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0328 - acc: 0.9896 - val_loss: 0.0204 - val_acc: 0.9926\n","Epoch 13/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0332 - acc: 0.9894 - val_loss: 0.0254 - val_acc: 0.9914\n","Epoch 14/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0302 - acc: 0.9904 - val_loss: 0.0223 - val_acc: 0.9923\n","Epoch 15/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0297 - acc: 0.9903 - val_loss: 0.0202 - val_acc: 0.9929\n","Epoch 16/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0295 - acc: 0.9905 - val_loss: 0.0206 - val_acc: 0.9921\n","Epoch 17/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0274 - acc: 0.9914 - val_loss: 0.0205 - val_acc: 0.9937\n","Epoch 18/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0256 - acc: 0.9920 - val_loss: 0.0218 - val_acc: 0.9925\n","Epoch 19/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0250 - acc: 0.9922 - val_loss: 0.0193 - val_acc: 0.9942\n","Epoch 20/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0243 - acc: 0.9923 - val_loss: 0.0203 - val_acc: 0.9930\n","Epoch 21/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0241 - acc: 0.9923 - val_loss: 0.0194 - val_acc: 0.9934\n","Epoch 22/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0225 - acc: 0.9929 - val_loss: 0.0227 - val_acc: 0.9926\n","Epoch 23/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0225 - acc: 0.9927 - val_loss: 0.0196 - val_acc: 0.9934\n","Epoch 24/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0223 - acc: 0.9934 - val_loss: 0.0192 - val_acc: 0.9941\n","Epoch 25/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0206 - acc: 0.9935 - val_loss: 0.0196 - val_acc: 0.9936\n","Epoch 26/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0201 - acc: 0.9937 - val_loss: 0.0197 - val_acc: 0.9942\n","Epoch 27/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0211 - acc: 0.9931 - val_loss: 0.0200 - val_acc: 0.9941\n","Epoch 28/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0190 - acc: 0.9939 - val_loss: 0.0221 - val_acc: 0.9933\n","Epoch 29/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0193 - acc: 0.9937 - val_loss: 0.0188 - val_acc: 0.9939\n","Epoch 30/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0198 - acc: 0.9938 - val_loss: 0.0228 - val_acc: 0.9926\n","Epoch 31/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0175 - acc: 0.9944 - val_loss: 0.0188 - val_acc: 0.9935\n","Epoch 32/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0176 - acc: 0.9945 - val_loss: 0.0194 - val_acc: 0.9934\n","Epoch 33/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0165 - acc: 0.9944 - val_loss: 0.0192 - val_acc: 0.9937\n","Epoch 34/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0175 - acc: 0.9943 - val_loss: 0.0203 - val_acc: 0.9939\n","Epoch 35/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0173 - acc: 0.9944 - val_loss: 0.0205 - val_acc: 0.9937\n","Epoch 36/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0178 - acc: 0.9938 - val_loss: 0.0201 - val_acc: 0.9937\n","Epoch 37/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0162 - acc: 0.9947 - val_loss: 0.0202 - val_acc: 0.9941\n","Epoch 38/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0161 - acc: 0.9946 - val_loss: 0.0193 - val_acc: 0.9943\n","Epoch 39/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0146 - acc: 0.9952 - val_loss: 0.0215 - val_acc: 0.9936\n","Epoch 40/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0151 - acc: 0.9947 - val_loss: 0.0206 - val_acc: 0.9938\n"],"name":"stdout"}]},{"metadata":{"id":"liMqdVECgyYW","colab_type":"code","outputId":"fed0cff8-050f-4f15-adc6-0199924b383a","executionInfo":{"status":"ok","timestamp":1549890649186,"user_tz":-60,"elapsed":685,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":379}},"cell_type":"code","source":["plot_accuracy(history_best, miny=0.95)"],"execution_count":36,"outputs":[{"output_type":"display_data","data":{"image/png":"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\nAABJRU5ErkJggg==\n","text/plain":["
"]},"metadata":{"tags":[]}},{"output_type":"display_data","data":{"text/plain":["
"]},"metadata":{"tags":[]}}]},{"metadata":{"id":"eZ0EWjFQiK5r","colab_type":"text"},"cell_type":"markdown","source":["The accuracy on the training sample now plateaus around 99.4%. \n","\n","In this attempt: \n","\n","* I extract more features from the two convolutional layers\n","* I added a second max pooling layer to reduce complexity before the dense network\n","* I lowered the dropout rate to 40%, and I checked that overfitting appears if I go lower\n","* I increased the batch size to train faster, and trained for 40 epochs. I checked that more epochs are not useful \n","\n","**Can you do even better? If yes please tell us in the comments, I'd love to hear from it.**\n","\n","Obviously, we can't get an accuracy larger than 100%... And you really need to fight for 0.1% at the end! Moreover, when you're at this stage, you need to be careful about the performance metric. For instance:\n","\n","* what is the precision on the accuracy?\n","* the accuracy varies as a function of the epoch. What are we supposed to do with that? \n","\n","I'll come back to these questions in a future post. \n","\n","For now, let's have a look at the digits we did not manage to classify. \n","\n","## Learning from the failures\n","\n","First, we evaluate the predictions of the network for the whole testing sample, and we get the predicted and true digits for this sample by choosing the digit with maximum probability. "]},{"metadata":{"id":"OZeKWdchh0w3","colab_type":"code","outputId":"34f19488-7dcd-43cf-c6c4-c883a2e770d2","executionInfo":{"status":"ok","timestamp":1549890806354,"user_tz":-60,"elapsed":1015,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":51}},"cell_type":"code","source":["preds = model_best.predict(kx_test)\n","pred_digits = np.argmax(preds, axis=1)\n","y_digits = np.argmax(y_test, axis=1)\n","print pred_digits\n","print y_digits"],"execution_count":37,"outputs":[{"output_type":"stream","text":["[7 2 1 ... 4 5 6]\n","[7 2 1 ... 4 5 6]\n"],"name":"stdout"}]},{"metadata":{"id":"-9iTUr9nlNIu","colab_type":"text"},"cell_type":"markdown","source":["Then we extract the images, the true labels, and the predicted labels for the misclassified digits: "]},{"metadata":{"id":"HzP31z1mkolq","colab_type":"code","outputId":"2b8b2cb6-73bf-4b30-d2ee-a07b25d95655","executionInfo":{"status":"ok","timestamp":1549890810107,"user_tz":-60,"elapsed":416,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":34}},"cell_type":"code","source":["mispred_img = x_test[pred_digits!=y_digits]\n","mispred_true = y_digits[pred_digits!=y_digits]\n","mispred_pred = pred_digits[pred_digits!=y_digits]\n","print 'number of misclassified digits:', mispred_img.shape[0]"],"execution_count":38,"outputs":[{"output_type":"stream","text":["number of misclassified digits: 62\n"],"name":"stdout"}]},{"metadata":{"id":"trGdOX5_lmPL","colab_type":"text"},"cell_type":"markdown","source":["Finally, let's have a look: "]},{"metadata":{"id":"6PrmA-_GlUx6","colab_type":"code","colab":{}},"cell_type":"code","source":["def plot_img_results(array, true, pred, i, n=1):\n"," # plot the image and the target for sample i\n"," ncols = 5\n"," nrows = n/ncols + 1\n"," fig = plt.figure( figsize=(ncols*1.5, nrows*1.5), dpi=90)\n"," for j in range(n):\n"," index = j+i\n"," plt.subplot(nrows,ncols, j+1)\n"," plt.imshow(array[index])\n"," plt.title('true: {} pred: {}'.format(true[index], pred[index]))\n"," plt.axis('off')"],"execution_count":0,"outputs":[]},{"metadata":{"id":"PACOrciTlpDS","colab_type":"code","outputId":"370062a0-2536-484c-ebb9-113ef2b4ee1a","executionInfo":{"status":"ok","timestamp":1549890818038,"user_tz":-60,"elapsed":3656,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":1399}},"cell_type":"code","source":["plot_img_results(mispred_img, mispred_true, mispred_pred, 0, len(mispred_img))"],"execution_count":40,"outputs":[{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAjMAAAVmCAYAAABstj8IAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAN1wAADdcBQiibeAAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3Xl4TFfjB/BvGgmJrXZBCNKk0pJU\n4o2tIlFii1I7CbJYWnstodSudlJLbaXWVym1VSilqCKSqH2tIPZYEkJiEsn9/eHnvGdiJpmsM1e+\nn+fxPN+ZuffOmTmZmeOee84xUxRFAREREZFKvWfsAhARERFlBxszREREpGpszBAREZGqsTFDRERE\nqsbGDBEREakaGzNERESkamzMEBERkaqxMUNERESqxsaMiZo3bx68vLyMXQwyEOtLfYYPHw4/Pz9j\nF4MMxM+YuuR1fRmlMRMREYFjx44Z46n1iouLQ8OGDVX75RYXF4cJEybA09MTzs7O6NSpE06fPp0j\nxzal+jp16hS6dOkCZ2dn1K1bF+PGjUNiYqKxi5VpKSkpmDdvHry9vfHJJ5+gbdu22LlzZ44d31Tq\n7Pnz55g0aRIaN26MTz75BM2bN8ePP/5o7GJlyePHjzF69Gg0bNgQtWvXRqdOnXLsPTaV+nr16hUW\nLlyIpk2bwsXFBd7e3li3bp2xi5VlT548waBBg+Do6IiwsLAcO66p1Jcsv/+GGaUxs3r1ahw/ftwY\nT63XlClT8PLlS2MXI8tGjBiBf/75Bz/99BNOnDiBtm3bIjAwEI8ePcr2sU2lvqKjo+Hv749WrVrh\n+PHj+PnnnxEVFYVt27YZu2iZtnjxYmzbtg1z585FWFgYBgwYgNGjR+fYF66p1NnEiRMRFhaGVatW\nISIiAhMmTMCCBQuwZcsWYxct07766ivExMRg69atOHbsGNzd3fHVV1/hwYMH2T62qdTX999/jy1b\ntmDBggWIjIzEiBEj8N1332H//v3GLlqmRUZGok2bNihevHiOH9tU6kuW33/D8rwx06VLF+zduxfL\nly+Hm5sbAMDPzw+TJk1CYGAgXFxckJKSAj8/PwwfPlxr365du2LUqFHi9vHjx9GtWze4ubmhTp06\nGDp0KB4+fCgeHzt2LHr27Jlhmf744w+cOHECHTp0SHe7sLAwODo64tChQ2jTpg1q1qyJpk2barXQ\nvby8sGDBArRv3x7e3t4AgJcvX2LKlCnw8vJCrVq10KJFC60f4NTUVISEhKBRo0ZwdXVFcHAwNBqN\n1nMHBARg9OjROsuVkJCAv/76C71794adnR0KFiyIbt26wd7eHlu3bs3w9afHlOprxYoVcHNzg5+f\nH6ysrGBnZ4d169aha9euOrc31fpSFAXr16+Hv78/PvroI1haWuKzzz6Dh4cH1qxZo/f1G8qU6uzc\nuXNo3Lgx7OzsYG5ujrp168LR0RFnzpzRuf2vv/4KZ2dnHDp0CN7e3qhZsyZ8fHxw6dIlsY2joyNW\nrVoFb29v9OrVCwAQGxuL4OBgeHh4wNnZGe3atcOhQ4fEPklJSRg/fjzq1asHd3d3TJs2DWmXpfP2\n9sbChQt1lis+Ph7Vq1fHN998gzJlyqBgwYLo3bs3EhIS9L4WQ5lSfRUoUACjR4/Ghx9+CHNzc3z2\n2Wf44IMP9J6FMNXPGPD6TNqiRYsQFBSkd5usMKX6eoO/YQAUI/D09FTmzp0rbvv6+ip169ZV9uzZ\no6SkpIj7hg0bprVfly5dlODgYEVRFOXq1atKrVq1lA0bNihJSUlKTEyMEhAQoPj5+WWqLLGxsUqD\nBg2UgwcPKvPnz1d8fX31bnv8+HHFwcFB8fX1VaKjo5UXL14oU6dOVZydnZX4+Hjx2jw8PJTw8HAl\nNTVVURRFGTFihNKhQwclOjpaSU5OVvbu3as4OTkpJ06cUBRFUbZu3ap8/PHHytGjR5WkpCRlz549\nSu3atRVPT0+DXsOLFy+UDz/8UNm+fbvW/X379lUGDhyYqfdDF1Opr2bNminTpk1Thg4dqri6uopy\nJSUl6dzeVOvrxo0bioODgxIZGal1/5IlS5QGDRoY/H6kx1TqbN68eYq3t7fy77//KikpKcqJEycU\nFxcX5ciRIzq337Jli+Lg4KAMHDhQefTokfLs2TNl0KBBioeHhyi3g4OD0qpVK+Xq1auizrp166b0\n7dtXefjwoaLRaJR169YpTk5OSnR0tKIoirJw4UKlbt26yoULFxSNRqOsWbNGcXFxSffznpFz584p\nDg4OypkzZ7J8jDdMpb7S0mg0St26dZUff/xR5+Om+hmTvfm8HT9+PIvvwttMqb74G/aayVwAbGNj\nA29vb7z3nmFF2rRpE2rUqIEuXbrAwsICZcqUwciRIxEWFobo6GiDn3fy5Mlo2LAhPDw8DN7H19cX\n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\nzHphTQzPzBAREZGqsTFDREREqpYvupnkU55y90SBAv8bmb5y5UqRly1bJvKpU6dElk+XGkp+e2fP\nni3y119/nelj5XcPHz4U2cHBQeT4+Hid26f909ZXf0WKFBF51apVIrdt2zYrxSTKF7799lut21On\nTtW5Xbly5UQ+c+aMyGXKlMmdgqnY8+fPRX7y5InIlStX1rn9rVu3RJa7yP/zn/+IfOPGDZEnT56s\ntf+YMWOyXFZTwzMzREREpGpszBAREZGq5YsZgL/55huR5a6e6tWri5zeqCVDyFee79ixI1vHov9J\nSEgQ+auvvhJZX9dSVsinduXRZx06dBBZ7n4i05GYmChycnKyzm1iY2NF/vvvv0WWuz8AoHHjxiKb\nm5vnUAnfLX/++afIM2fONGifbt26icyupfTJXd5y1sfW1lbn/QsXLhRZ7i6/cuWK1nby76E8IleN\neGaGiIiIVI2NGSIiIlK1d7abSb6yftasWSLLI1rkrqWaNWuK/OOPP4osn8ZLOxpm+fLlIsuTHcnq\n168vcuvWrQ0qe3734sULkQMCAkTeunVrrj/3y5cvRX7w4EGuPx/9j7ywHgBcunRJZHmCymPHjoks\nf4bj4uKy9fzy517+u8vv5FGEQUFBIuvr1gOAzz77TOSxY8fmTsFIr5YtW4o8btw4kefOnau13fnz\n50X28fER2dHRMRdLlzt4ZoaIiIhUjY0ZIiIiUrV3tpupYsWKGW4jj0Bas2aNyEWLFtW5fdq1SBYs\nWCCyfCq2Vq1aIv/+++8iFy5cOMMykfaIiS1btmS4vYWFhcgrVqwQWV6rBAA2b94scnBwcHaKSAZ4\n9eqVyFevXhV548aNIstdO8+ePdPa393dXWRvb2+Re/fuLXLVqlVFNmT0h+z27dtat+Uu5fzezSTX\nnfxeXL9+Xe8+cje8XEclSpTI4dJRZsjdfPLnEADWrl0r8vTp00X+6aefcr9gOYxnZoiIiEjV2Jgh\nIiIiVXtnu5l69eolsr+/v85tnJ2dRZ4yZYrI8igKeQK8tKOZateuLbJ8xbg8uRtl3vz58zO1vVyP\n8gRdacmTJFLukEcUjRw5UuTVq1eLLI/wk7t369atq3Usa2vr3CiisGHDBq3b6f3t5Aepqakit2jR\nQuT9+/cbtP/gwYNF7tixo8jyGmk///yzyBcvXhR50KBBIpcuXdrAElNmNW/eXOu23M1kaWmZ18XJ\nUTwzQ0RERKrGxgwRERGp2jvbzSST16P49NNPRU67HLou8toV8lo9AGBjYyOy2k/Rqc0nn3wi8p49\newzaZ+nSpZl6jvLly2dq+/xEo9GIvGzZMpFHjx4t8sCBA0W+c+eOyMbsRpC7TH777Tetx3bv3p3X\nxTE6edSS3D1uSNdSv379tG7LE5XK5K4MuftfduLECZEN/TxT5hUooP8nPyUlJQ9LkvN4ZoaIiIhU\njY0ZIiIiUrV80c30wQcfiOzl5SWyPHmXPk+ePBE57dovVapUyYHSUVbIa2m9//77Orc5efKk1u1D\nhw5l6jk4sZ42uWupS5cuIp86dUrkw4cPiyyP9jMmeaIweeLEAwcOaG1nbm6eZ2UyJnlNpZCQEJHl\nCQz1adasmchz5szReszKykpkec0feQI9feSRVGQc586dM3YRsoVnZoiIiEjV2JghIiIiVcsX3Uwy\nefKu/v37i7x+/XqRd+3aJfK0adNEnjlzptaxGjZsqHM7V1dXkeV1g0i/u3fviixPWqiPIV18x48f\n17qdlJSU4T4uLi4iV6hQIcPt33XPnz8XWR7NV6pUKZEvXLggstzVYCoqV64sstw1kl+6ldKSu0/l\nbiZ9ihcvLrK8Pl3aupa74bt37y6y3K2lj9x9RbnHzc1N72M3btwQWf4O/vDDD3OzSDmGZ2aIiIhI\n1diYISIiIlXLd91McrdPgwYNdOYXL16ILF+V37JlS61jySM35P379OmjM8sTvZG227dviyx3Oekj\nn9KWJ/5auHChyMOGDdPaJ+3aWrrII9+KFSuW4fbvuvDwcJEfPXok8rZt20QuVKhQhsd5+fKlyImJ\niSKXKFEiu0XMUMGCBXP9OUydPLJPXh9JnyJFioh87NgxkatVqyZy2knWxowZI/KZM2cyVT65TPIa\nXfXq1RM5v3YL5qSbN2/qfUyuTzVOGMozM0RERKRqbMwQERGRqrExQ0RERKpmpiiKYuxCqJU8JLVj\nx44iX7x4UWT57ZVn2AwMDMzl0qlX06ZNRU47S2tmpJ1V9L33Mm67R0VFicwZnoEePXqI7O7uLrI8\nrYEh5AUGt2/fLnKbNm1E9vPz09pHnvpAvu7FkGufSJudnZ3I0dHROrcpXLiwyPLCjzVq1NC5/cqV\nK7VuBwUFZaOEuo0cOVLk6dOn5/jx85tffvlF63bnzp11bidfJyV/7k0Zz8wQERGRqrExQ0RERKrG\nbqYckpCQILJ8Gn3gwIEiP3v2TOQVK1aI7OvrKzJPoWvPBpqdbqa0f9qGvLfXrl0Tmd1M2guzyu/n\nn3/+meVjyp8DefHP+fPna223f/9+keVuKnnWWg6f10+e4kCeckAeGi/7448/RPbw8NC5zenTp0Vu\n1KiR1mPyd2BOqVq1qsjyZ5OyxtBuJk9PT5Hl2fFl8izgpjDTPc/MEBERkaqxMUNERESqxm6mXCaf\nGnVwcNC5jbyYnyku1JfX5JEU9evXz/Jx2M2UfQ8ePBDZ1tZW5FGjRoksL1woj4jJrLSjz06dOiWy\n3AUld+P+/fffIjs5OWX5ud9F9+/fF9ne3l7k3OgOyknywpZbtmwRWe7ypPTJs6Lv27dPZHlBZAA4\ncuRIlp/jP//5j8hHjx4V2ZBRo7mBZ2aIiIhI1diYISIiIlVTXTdT2lPR8uk0S0vLvC5OhuTFu+SF\nJuUFLDdu3Chyhw4d8qZgJiwpKUlkudtn3rx5OreXJ3jSN2EhYFg301dffSVy2tE1+d2OHTtEDggI\nEFl+X+WFVf39/UWWuzmya+bMmSLLC4vKk1jKCyWS9ugUeQSZMbVv317ksmXLiix3Ycpdm/Q2ebFj\n+Xdk165dIuubJDG75O6kc+fOifzhhx/myvNlhGdmiIiISNXYmCEiIiJVK2DsAmTWwYMHtW7LIynm\nzJkjctoJnYzF3Nxc5AIFdL/d+iaxyq/k7kJ5XZhly5bp3D4mJkbkChUqZOu5Hz58mK3932XyOkqP\nHj0S+b///a/Iu3fvFrl27doiy3/j8jpmhpJPlcsjJ8aMGSMyu5b027Ztm8jyels7d+7MleeTP4dt\n27YVWV5/Sx4Nw8lC06fRaEQeNmyYyIsXLxY5J68YkS932Lx5s8hffvmlyD179hTZWF1LMp6ZISIi\nIlVjY4aIiIhUTXWjmV6+fKl1u2HDhiKfPHlSZPlUqnwqWl6jJC88fvxYZHnSvNjYWJHlNVE4MVTm\nyadg5UnbsjKaqXTp0iJHRESIXKlSpewUMV+SJ2eTu6XkEWcyeS0mAGjSpInO7ZydnUUuV66cyOyq\nMIw8wlLuVpW/ey5dupTp486ePVvkfv36iWxtbZ3pY5E2+XdvypQpIsvrlLm6uoosd+etXbtW5L/+\n+kvruD4+PiLLo0UrVqwo8p07d0SWJxKVL6EwBTwzQ0RERKrGxgwRERGpmuq6mdKSJ1gLDAwUWb4C\n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\njs8//xzVqlVD4cKF0bNnT9SsWRPbt29P9/Wnx5jq7PLly/jkk09QrVo1mJqaomnTprCzs8PFixdT\n3X7btm1wcHDA0aNH4ePjA3t7e7Rv3x7Xrl0T29jZ2WHt2rXw8fFB3759AQDPnj1DcHAw3N3d4eDg\ngE6dOuHo0aNiH41Gg4kTJ8LFxQVNmjTB9OnT3zvb4OPjg8WLF6darj///BM3btzAkCFDUKFCBRQt\nWhRDhw5FUlISDh06pPf1G8KY6qtdu3aYOnUqrKysYGpqihYtWuCjjz7C1atXU93eWOsrJxlTfeWn\n37B//vkHS5YsQVBQkN5t0qTkAQ8PD2Xu3Lnitr+/v9K0aVNl//79ilarFfeNHDlSZz8/Pz8lODhY\nURRFuXnzptKgQQNl48aNikajUf766y+lX79+SkBAgMHlcHFxUZYuXapzX2hoqPLZZ5+luv3JkycV\nW1tbxd/fX4mNjVVevnypTJs2TXFwcFDi4+PFa3N3d1fOnDmjJCcnK4qiKKNHj1a6dOmixMbGKomJ\niUp4eLhSt25d5fTp04qiKMr27duV+vXrKydOnFA0Go2yf/9+xdHRUfHw8DD4tYwaNUrx8/NT7t+/\nryQlJSn79u1THBwclBs3bhh8DH2Mpb4URVGePXumNG/eXImIiFAWLlyo+Pv7693WWOvr5cuXSu3a\ntZVff/1V5/4BAwYoX3/9dYbeD32Mpc7mzZun+Pj4KH/88Yei1WqV06dPKw0bNlSOHTuW6vZbt25V\nbG1tla+//lr5+++/lRcvXihDhgxR3N3dRbltbW0VX19f5ebNm6LOevbsqQwYMEB58uSJkpCQoGzY\nsEGpW7euEhsbqyiKoixevFhp2rSpcuXKFSUhIUH58ccflYYNG6b59yP7448/FFtbW+Xs2bM697dr\n106ZMWOGwe+HPsZSX7LXr18rv/76q9KwYUPxt5+SsdaXorx9T4OCgpQ2bdoojo6OSqdOnZTffvst\nU+9Fasc2hvrKT79h79y+fVuxtbVVTp48maH9jOYCYCsrK/j4+OCDDwwr0ubNm1GnTh34+fnBzMwM\n5cqVw5gxY3Dq1CnExsYadAxvb29s3LgRFy9eRGJiIqKiohAeHo5nz56luZ+/vz9sbGxgaWmJQYMG\nISEhAZGRkeJxe3t7ODs7w8TEBHFxcdi1axeGDh0KGxsbFCpUCK1atYKnpyc2b94MANi7dy/c3Nzg\n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\nXAlnZ2cAb1tkU6ZMQf/+/dGwYUNotVoEBARg1KhROvv26NEDY8eOFbdPnjyJnj17wtnZGY0bN8bw\n4cPx5MkT8fi4cePQp08fvWU5cOAAevTogbp168Lc3Bze3t7w8vLCxo0bU93+1KlTsLOzw9GjR9Gh\nQwfY29ujVatWOi10T09PLFq0CJ07d4aPjw+At63nqVOnwtPTEw0aNECbNm2wY8cOsU9ycjLmz58P\nNzc3ODk5ITg4GAkJCTrP3a9fP4SEhOh9LZcvX0abNm1QoUIFmJmZoW3btihTpgwuXbqkdx9DGFN9\nFSpUCCEhIahduzZMTU3RsmVL1KpVS+//kIy1vhRFwU8//YTAwEDUq1cP5ubmaNmyJdzd3fHjjz/q\nff2GMqY6yyhjrbPXr1+jX79++Pbbb1G6dGmYmZmhY8eOKFGiBK5evZql12xM9bVq1So4OzsjICAA\nFhYWqFatGjZs2KC3IWOs9QUA//zzD5YsWYKgoCC922SGMdVXfvoNyzIlD3h4eChz584Vt/39/ZWm\nTZsq+/fvV7Rarbhv5MiROvv5+fkpwcHBiqIoys2bN5UGDRooGzduVDQajfLXX38p/fr1UwICAgwu\nh4uLi7J06VKd+0JDQ5XPPvss1e1Pnjyp2NraKv7+/kpsbKzy8uVLZdq0aYqDg4MSHx8vXpu7u7ty\n5swZJTk5WVEURRk9erTSpUsXJTY2VklMTFTCw8OVunXrKqdPn1YURVG2b9+u1K9fXzlx4oSi0WiU\n/fv3K46OjoqHh4fBr2XUqFGKn5+fcv/+fSUpKUnZt2+f4uDgoNy4ccPgY+hjLPWVUkJCgtK0aVPl\nhx9+SPVxY62v27dvK7a2tkp0dLTO/WFhYUrz5s0z+3boMJY6Cw4OVjp27Kh0795dcXJyUry9vZWw\nsDAlKSkp1e2Ntc5Sio+PV1avXq04OTkpMTExmTqGzFjqy9vbW5k+fboyfPhwxcnJSZRLo9Gkur0a\n6uvd5+3kyZMZ3lcfY6mv/PQb5u/vr/Tq1Uvp2LGj4ujoqPj6+iqbNm0yeH+juQDYysoKPj4++OAD\nw4q0efNm1KlTB35+fjAzM0O5cuUwZswYnDp1CrGxsQYdw9vbGxs3bsTFixeRmJiIqKgohIeH49mz\nZ2nu5+/vDxsbG1haWmLQoEFISEhAZGSkeNze3h7Ozs4wMTFBXFwcdu3ahaFDh8LGxgaFChVCq1at\n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\nR40aNRAWFmbwZRImSm71Q+QDp06dQu/evREeHm7wqS/KO6wv9WGdqQvrS13yc30Z7TUzRERERIZg\nY4aIiIhUjd1MREREpGo8M0NERESqxsYMERERqRobM0RERKRqbMwQERGRqrExQ0RERKrGxgwRERGp\nGhszREREpGpszBAREZGqsTFDREREqsbGDBEREakaGzNERESkamzMEBERkaqxMUNERESqxsYMERER\nqRobM0RERKRqhfK6AESZodVqRT569KjIu3btEnn+/PnZ9nzyc7i6uor8wQf8/wDlb8+fPxe5VKlS\nBu2zY8cOkTt06JDtZSJKid/EREREpGpszBAREZGqsTFDRET0/9i78/CYrv8P4O80EhJU7YLYJbaI\nErVTUWIptS+RWELR2ilpWksVVUVRO62tlop9izRa27eWNPRX+1ZREQStnUgiub8/fH2+Z2Immawz\nN3m/nqfP856Ze++cmZM7Tu+55xzSNd4zk4xWrVpJDg4ONnht3bp1knv06JFpZcpONE2TvH//fsnD\nhw+XfPbsWaP72tjYpFs53n33XckTJkyQHBAQINne3j7D3l/vrl+/Lnnr1q2ST58+LXn58uUG+6h1\nX7NmTck3btyQ3K9fP8m9e/eWXLFixTSWmIwx92+af/uU2XhlhoiIiHSNjRkiIiLSNRtNvZZLAJLu\nWjJFHb745ptvpnuZsqt//vlHcpEiRSxYkuQ9e/bM4HGuXLksVBLLCQ0Nlax2walD29UuCPXnJ3HX\nhFrfderUkbxjxw6j+5QrV05ymzZtJM+ePdv8D0CvUX/bChQoYNY+6tDstm3bpnuZKGmPHj2SvHr1\naslr1qwx2C4sLCzZY/3nP/+RXL9+/XQoXcbglRkiIiLSNTZmiIiISNc4mum/vv76a8lq11LZsmUl\n//nnnwb75MuXT7K/v7/kRYsWZUQRs42EhATJu3btsmBJUiZxd4bazZKVjRgxQvJ3330n2VR3ksrR\n0VFy7dq1DV7z9vaWrM4i++GHH0pWR5mpo5wGDhwoOSgoSHLr1q2NfwgiHVK7k5YuXSpZ/S26ffu2\n5MTnoXqONm3aVPKCBQsklylTJl3KmtF4ZYaIiIh0jY0ZIiIi0jWOZvovdSTE1atXJSf19Zga9cSR\nTWmzZcsWyZ07d071cYoXL27weNy4cZLV0RbqZHxxcXGpfr/E1O6yrMzT01OyqVFL6oiWatWqSR42\nbJjkwoULp1uZEo8se0Xt1iLzqN2I8+bNM2sfjmbKOOrtDv379zf6vCmJR1g+f/5c8owZMySPHDky\nLUW0CF6ZISIiIl1jY4aIiIh0jaOZ/kvtWpo2bZpZ+5i6y3v37t2SuWaTedTLnePHj0/Rvg4ODpLV\nu/h79uxpsF3u3LklDxo0SPIff/whecCAAUafJ9N++uknyWoXa4kSJSSb6t45deqU5H379hm8po7C\n+OijjyTb2dklWyZ2J6Wf+/fvm7Wdi4uL5MaNG2dUcbKlvXv3Sh41apTk8+fPp+g4Fy5cMHi8du1a\nyervbpUqVSSro5wSrz9nTXhlhoiIiHSNjRkiIiLStWw9mmn9+vWS1Qm6zB2NZGqZe7ULgxPomefm\nzZuSS5YsmaJ9vby8JO/ZsydN5VBHNjVr1ixNx8ouo5lSytTomKTWZlIvp6uTVVLGuHv3rmR1YsLE\n3RSqunXrSj58+HCGlCs7UbuW2rdvL1ntkq9atapk9VaJ6Ohoyeq6Zonr5fr165LVriV1/0OHDknm\n2kxEREREGYSNGSIiItK1bD2aSb18pjLVtaR2SyXl77//Tm2Rsq3FixdbugiUzu7cuSO5ZcuWkk+e\nPClZ7eXu16+fwf7qY3YtZS51naukupZU33//fUYVJ9tQu/fUc0al3sagTprXqFEjyepovp07d5p8\nP2dnZ8lhYWGS1e4r9bjHjh2TnHgtNUvjlRkiIiLSNTZmiIiISNeydTdTSruDVq9ebdZ26jpNZJ7S\npUunet9SpUqlY0koLdSupQoVKkh++vSpZHXU0pw5cySrl88B8ybHo4wxZcqUZLcpUKCAweO8efNm\nVHGyja+++kqyqdGyX3/9teSNGzca3UYdCZW4nkxRJ4EtW7asZPXfSXWEpzrCUJ0g01J4ZYaIiIh0\njY0ZIiIi0rVs3c3UpEkTyWrXUHh4uORy5coZ3SYx9RI5R+akXLdu3SR/+OGHKdpXnUTq0qVLJrdT\nu7Jy5syZovcwx7Bhw9L9mHqjrq+kdi2po5befvttyUOHDs2cglGK/Pnnn8luk3jts5ROdkkvRUVF\nSV6xYoXRbdQ1lNSuWXUdQbU7SZ0oz1y5cuWSfOTIEcnq+aqW9cCBA5IT/y1YAq/MEBERka6xMUNE\nRES6lq27mT7++GPJAQEBkt977z3Ja9asMbm/eolP3V99nkxTJ+ZKPGFaSvz4449Gc2INGzaUrF6S\n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\ncqdOndK1nNnNyZMnJdeqVcvoNup3n3j4tZubm2S1Xin9VK1aVfLVq1clx8XFSb5+/bpkb29vyU5O\nTgbHWrt2bUYUkZLQqlUryervmynr1q0zeJyVup14ZYaIiIh0jY0ZIiIi0rUs28304MEDyT/99FOy\n26t36W/dutXoNom7mczppurTp4/kAQMGSE48EoBSLygoSPKWLVskDx061GC7okWLSj58+LDkLl26\nSFa7JytWrJiu5cwO9u/fL9nPz0+y2lWhSqqbqVSpUpLVc9Ld3T3N5aSXvv32W8mTJ0+WHBgYKHnY\nsGFG923UqJHB4wsXLkjOlSuX5A4dOkj+6KOPUl9YAgAcOXJEcoMGDSSrXUiHDh2SrC7m2rJlS4Nj\n7dmzJyOKaBG8MkNERES6xsYMERER6VqW7WZKqRs3bkh+5513JKuL3aWmm0k1YsQIyTNmzEhpEcmE\nv//+W3K5cuUkJ64v1ZkzZyRXr15dMruZUk79CVG7Gt577z3Jt2/fTnZfcxeT/P777yX7+vpKtrW1\nNWt/Mu7p06eSHRwcJD9//lyyWkeJRwvWq1dPsnoeqc+r3buUOupvnDoCTT2XHj16JDlfvnwmj/Xw\n4UPJb775ZnoV0SJ4ZYaIiIh0jY0ZIiIi0rUsuzaTOVauXCl5xYoVktWupbTy9/eX3Ldv33Q7Lv2P\nOkopf/78Zu0TGhoqWR3NVKFChfQrWDakTnSXUfr16ydZ7S4cO3as5KTWVCPjcufObfR5deJP1bZt\n2wweq11LhQsXlqyeX5Q51C6jsmXLSla7pRJvp3e8MkNERES6xsYMERER6Vq26Gb666+/JKsjVFI6\nGmnkyJEGj9XujTFjxqSydJRW6sgLNSf24sULycuWLZNcv359yeaOqMnujh8/LnnatGmSUzo4MjVr\npan7zJ4922jeuHGj5I4dO6aoTGTo8ePHkjds2CB5+PDhJvcpWLCg5GbNmmVMwbIpV1dXyWq3kTqC\naffu3Ua3SWz9+vWS9b5OE6/MEBERka6xMUNERES6li26mZYsWSJZvZRtzmVtdTTSlClT0rdglO5K\nly5t8jV1lNqVK1ckq+vQkHnmzp0refv27ZLN6abz8PCQ7OLiIrlXr14G26lryqgjZ9Tz1tT7qety\nsZvJPGo3xaVLlyQHBARI/vXXX806lnquxcXFpUPp6BX1PAkODpac1OR4pqxevVoyu5mIiIiILIiN\nGSIiItK1bNHNlBbTp0+XXLx4cYPXvL29Jb/11luZViYybdasWZITj6xRu0bUSRJLlSqV8QXLAmJj\nYyU/e/Ys1cdRJ7dLqguocePGkj/66CPJ6qV1U2s+qc+rk2NyLSdDatdS27ZtJZsaJaNSJ8YDDOtr\nwYIFktMygaE6cu3s2bMGr2XGBI3WSO0OunbtmmS1O3DQoEGS1XpR/80CDM8lveOVGSIiItI1NmaI\niIhI12y0lM5ypUOrVq2S7OfnJzmlk+aplzwBwNPTU/LevXtTWTrKKE+ePDF4PGLECMlDhgyRXKNG\njUwrk56dPHlScq1atVJ9HHX0mLkjjS5fvixZXUNo6dKlkk2NNlR/4pYvXy65d+/eZr13Vvbzzz9L\nbtWqlWS1a+jp06eSS5YsKblatWoGx/r+++8lp2ZkjTHqSKiaNWsavHb69Ol0eY/sJKnRhnpvCvDK\nDBEREekaGzNERESka9mim0m1b98+yeolt3Xr1klWRz+oEnczqZdSQ0JCJKuTgpHl7Ny50+DxnDlz\nJKv1xVEt5lFHj5w7dy7Z7Xv27ClZnZwrs8uknrfvvPOOZPVvAEi/rhE9UbtiK1WqJPnmzZtGtz91\n6pTk/PnzG7xWokSJdC6dIXVyRgC4e/eu5P79+2foe2cVSXUzHT58WLK6Xp1e8MoMERER6RobM0RE\nRKRrbMwQERGRrmW7GYDV4dSqpk2bSl62bJlkdYZEdegiADx8+FBynTp1JO/fv1+yOvsiZa6uXbsa\nPJ48ebJk3ieTcmp/uzkLSpqzTVqtXbtWcuvWrSVHRUVJNmdhyuwqT548ktX7CWNiYoxuX6FCBcm5\ncuXKuIL9l3q/061btwxe+/jjjyXznhnilRkiIiLSNTZmiIiISNey3dDstEi80KQ6NFBVoEAByRs3\nbpTMLqeMd+LECcmJv+8bN25I5sKgKVe9enXJ5gzNLlasmORu3bpJnjp1quT07KpQZ+FWu4TVnzi1\nm+n//u//DPbPrgsXWrMdO3ZI/uCDDwxeGz58uGR12gUyTV2wFQAWL14sWV2cctGiRZlWpvTCKzNE\nRESka2zMEBERka6xmykF1G4KAGjevLlkdSE8U9RF0yhjjBs3TnLihegSzyBKKTN79mzJY8aMSfVx\n2rdvL9nd3V1y4gU/1Z8mdeZZ9fnu3btLbteunWT1fMxO3UzPnj2TrC4QWahQIcnWPqJLHUmlzqZ+\n8eJFg+0iIyMlqwtjkmnr1683eOzt7W10Oz02C3hlhoiIiHSNjRkiIiLStWw3aV5aJF5I7eeff5Zc\nrly5zC4O/dfy5cslz507V/Jff/1lieJkWepEdGm5DL1161bJmzdvlqxObpcUdSI1dUHES5cuJbu9\n+h56vJSeHHVxT7VbdcOGDZLV7vE333xTsrnff0a4f/++5E8//VTy2bNnJQ8bNsxgH3YtpVzp0qUt\nXYQMwyszREREpGtszBAREZGusZvpv8LCwiQHBgYa3SbxZWl1tABlrk2bNkkeMGCA5F27dkkuWrRo\nppYpqxs8eLBkdU0ktfsppVKzbpK6j7qOmqn9XVxcJNetW1dy/vz5zS6nXqiju9Sub/V5R0dHyX5+\nfpIDAgIk586d2+jxc+T43z8ZDg4OZpUpOjpastqdpHYDDxkyRLI6IaO/v7/kxN1MlHLVqlUza7sj\nR45Irl+/fkYVJ13xygwRERHpGhszREREpGvZetK8Bw8eSC5YsGCy26ujIoCU3/0fHx+fou3J0PPn\nzyWr3QWFCxeWHBwcLNnW1jZzCpYNqZPY9e7dW3LiiQqTY2pCu9Ts06BBA8nz58+XrHY3ZtcRMGp3\njTqBnjpB3ddffy3Zzs5O8sOHDyWXLVtWsqkJ1xJTR1KZGmGo/pZ+/vnnkidNmmTWe1DqmDrnWrZs\nKVmtP3X0m7XhlRkiIiLSNTZmiIiISNeydTfTixcvJH/22WeS1TVoVKnpZlIvcatriVDK3b17V7L6\nvR47dkzyO++8k6llIsNuH3XE09KlS1O0b+JL3sWKFZOsdiuq+6iTxDVr1kxyvnz5kn1vMhQeHi5Z\n/f727dsnWR1pNGfOHIP9nzx5IjlnzpyS1S4rtU6//PJLyXnz5pWsdnFQxlJHvF29etXoNtOmTZOs\nTmhobXhlhoiIiHSNjRkiIiLStWzdzaRS13Vp1KiR5Hv37kk2t5tJnaRr7969kosXL57mcmZns2bN\nkrxlyxbJv/76q+RcuXJlapmI6KXffvtNsjo521tvvWWJ4pAZ1BFs6qSJqkGDBkletGhRhpcptXhl\nhoiIiHSNjRkiIiLSNa7N9F9q11CLFi0k//TTTyk+VpcuXSSzaylt1Em2Jk6cKDkoKEgyu5aILK9h\nw4aWLgKlUOPGjS1dhHTDKzNERESka2zMEBERka6xMUNERES6xqHZRqgzWfr4+EjeuXOnwXZOTk6S\nf/zxR8nqgnf29vYZUcRsQ13EUB2CfeXKFcnqbKNERJRy6gzc6izMe/bssURxUoxXZoiIiEjX2Jgh\nIiIiXePQbCPy5Mkjedu2bRYsCeXOnVvyDz/8IJldS0RE6Ufvd5zwygwRERHpGhszREREpGsc/qLC\nCgAAIABJREFUzURERES6xiszREREpGtszBAREZGusTFDREREusbGDBEREekaGzNWavbs2fD09LR0\nMchMrC992bhxI1xdXS1dDEoBnmP6ktn1ZZFJ844fP464uDjUq1fPEm9v4M8//8TXX3+N8+fPw8HB\nAS1atEBAQAAcHBwsXbRUi4iIQLt27dCyZUt8/fXXaT6etdTXp59+iu3btyNHDsM/2wkTJqBLly4W\nKlXqxMfH47vvvkNwcDDu3LmD0qVLo1+/fmjbtm2aj20t9QUAq1atQmBgIG7evAknJyd07doVffr0\nsXSxUszNze215xISElC0aFHs27cvzce3pjrLKr+Jt2/fxsyZM3H06FE8ffoUzs7O6NOnDzp27Jjm\nY1tLfWX032VmSmt9WaQxs2rVKpQrV87ifwgRERHo27cvRo0ahRUrVuD27dsYN24ctm3bhh49eli0\nbKmlaRoCAgJe+wc/LaylvgDggw8+SJcGmqUtWrQI27Ztw8KFC1GxYkUcOnQII0aMQJEiRVCnTp00\nHdta6mvbtm2YO3cuFi5ciJo1a+LUqVMYOHAg8uXLhw4dOli0bCl1+vRpg8cJCQno2bOnwaKyaWEt\ndZaVfhNHjhwJW1tbbN68GQUKFMDevXsxatQoODk5pfl7tpb6yui/y8yU1vrK9G6m7t27IyQkBMuW\nLYOHhwcAwNfXF19++SX69euHGjVqID4+Hr6+vvjkk08M9u3Rowc+/fRTeXzs2DF4e3vDw8MDtWvX\nxsiRI3H37l15fdy4cQarLif2ww8/wMPDA76+vnBwcECZMmWwZs0akydtaGgoXF1dcfDgQbRr1w5u\nbm5o3rw5jh49Ktt4enpi3rx56NSpE7y8vAAAz58/x5QpU+Dp6Ynq1aujVatWBsskJCQkYM6cOWjc\nuDFq1aoFf39/xMTEGLy3n58fAgICkvt6sXr1ajx79gxNmzZNdltzWFN9pZS11pemaVi7di369u2L\nqlWrwt7eHu+99x6aNGmC1atXp+kzW1N9rV69Gp06dULdunVhb28PDw8PdOrUCatWrTK6fWRkJFxd\nXbFr1y706NED1atXR+PGjbFjxw7ZxthniY+Px/z58+Hl5QV3d3c0a9YM33//vcGx16xZg2bNmuHt\nt9/GoEGDcP/+fYPXU/q39+o8GzhwoNn7mGJNdZaVfhPPnDmDVq1aoWjRorCzs0Pr1q1RsGDB1xoA\nKWVN9ZVYcn+XWbq+NAto2rSp9u2338pjHx8frW7dulpwcLAWHx8vz40ePdpgv+7du2v+/v6apmna\n5cuXterVq2vr16/XYmNjtTt37mh+fn6ar6+v2eVo0aKFNm3aNG3kyJFarVq1pFyxsbFGtz927Jjm\n4uKi+fj4aBEREdrTp0+1qVOnau7u7trjx4/lszVp0kQLCwvTEhISNE3TtDFjxmidO3fWIiIitLi4\nOC0kJESrUqWK9vvvv2uapmlbt27VqlWrph05ckSLjY3VgoODtZo1a2pNmzY1+7Nomqb9/fffWq1a\ntbTz589r/v7+8l2llbXUl7+/v9a+fXutW7duWq1atbQWLVpoixcv1l68eGF0e2utr7///ltzcXHR\nTpw4YfD84sWLtQYNGpj9fZhiDfUVExOjVa5cWduxY4fB8zt37tQqVaqkPXv27LV9rl+/rrm4uGjv\nv/++dv78eS0mJkb74YcfNFdXV+3q1asmP8ucOXO0Zs2aaRcuXNBevHihhYWFaTVr1tS2bt2qaZqm\nhYWFaS4uLtquXbu02NhYLTQ0VGvQoIHm4uJi1mdJ7M6dO1qNGjVeq7+0sIY607Ss9Zv4ySefaN27\nd9du3LihvXjxQtuzZ4/m7u6uXbp0yexjmGIt9aUy5+8yK9eX1dwA7OTkBC8vL7zxhnlFCgwMROXK\nldG9e3fY2dmhcOHCGDt2LEJDQxEREWHWMaKiorBlyxa8//77OHLkCKZMmYK1a9di6dKlSe7n4+MD\nZ2dnODo6YvDgwYiJicGhQ4fkdTc3N3h4eMDGxgYPHjzAzp07MXz4cDg7OyNHjhxo3rw5PD09ERgY\nCAAICgpC48aNUa9ePdjZ2cHLy0ta/OZKSEhAQEAAevfujUqVKqVo39SwRH2VLFkSJUuWxNSpU3Hk\nyBGMHTsWixcvNliA0hhrq6979+4BAPLly2fwfP78+eW19JbZ9fXgwQPEx8cb/YwJCQl48OCByX07\ndOiASpUqwd7eHn369EG+fPkQEhJi9LMkJCRg3bp1+PDDD+Hq6gpbW1t4eHigS5cuUl+7d+9G5cqV\n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\nCwA++ugjDB06NEOObS11xnPMPNZSX+Hh4RgwYAAaNGgAvc+yMmbMGNy5cwcrVqyAk5MTNm/ejH79\n+iE4OBiFChVKdv9MvzLTvXt3hISEYNmyZfDw8ADw8v96vvzyS/Tr1w81atRAfHw8fH19DaZtBoAe\nPXrg008/lcfHjh2Dt7c3PDw8ULt2bYwcORJ3796V18eNG4fevXubLMvPP/+MHj16oEqVKrC3t0eL\nFi3QrFkzrF+/3uj2oaGhcHV1xcGDB9GuXTu4ubmhefPmBi10T09PzJs3D506dYKXlxeAl/+HOmXK\nFHh6eqJ69epo1aoVtm3bJvskJCRgzpw5aNy4MWrVqgV/f3/ExMQYvLefn5/BiqqJnTlzBq1atULR\nokVhZ2eH1q1bo2DBgq+d0CllTfWVI0cOBAQEoFKlSrC1tcV7772HihUrmvw/JGuur8RmzZqFsmXL\non379mbvY4w11VdWOr8ykjXVGc+x5FlTff3zzz8YP348xo8fb1bZrbW+nj17hv/85z/48MMPUaZM\nGeTMmRPe3t6oUKECtm7datZng2YBTZs21b799lt57OPjo9WtW1cLDg7W4uPj5bnRo0cb7Ne9e3fN\n399f0zRNu3z5sla9enVt/fr1WmxsrHbnzh3Nz89P8/X1Nbsc9erV0xYuXGjw3OTJk7WOHTsa3f7Y\nsWOai4uL5uPjo0VERGhPnz7Vpk6dqrm7u2uPHz+Wz9akSRMtLCxMS0hI0DRN08aMGaN17txZi4iI\n0OLi4rSQkBCtSpUq2u+//65pmqZt3bpVq1atmnbkyBEtNjZWCw4O1mrWrKk1bdrU7M/yySefaN27\nd9du3LihvXjxQtuzZ4/m7u6uXbp0yexjmGIt9ZVYTEyMVrduXe377783+ro115fq/Pnzmpubm3b9\n+vVU7Z+YtdRXVjq/fHx8tJ49e2rt27fXatasqbVp00bbsGGD2fsnx1rqLDGeY8ZZW33FxcVpLi4u\n2ubNm5Pczlrr6+nTp1qlSpW07du3Gzw/cOBAbejQoWYdw2puAHZycoKXl5fZC2QFBgaicuXK6N69\nO+zs7FC4cGGMHTsWoaGhBotyJaVFixZYv349Tp06hbi4OBw9ehQhISG4f/9+kvv5+PjA2dkZjo6O\nGDx4MGJiYnDo0CF53c3NDR4eHrCxscGDBw+wc+dODB8+HM7OzsiRIweaN28OT09PBAYGAgCCgoLQ\n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\nDkl+7bXXsqewlKbvv/9ecvfu3U1uo84QrS6gRznj66+/lqwOwV6+fLnk9u3b52iZciv18zJnzhzJ\n6oKvqb3zzjuS1WHz6j1u9oxXZoiIiEjX2JghIiIiXcvVC01m1NKlS40eq5fysjI0W+1yoqy5efOm\n5CZNmhj9TO1aUqlDuMeNG2cyqzPQsmsp51WtWjXdbf744w/JwcHB1iwOwXjINWC+ayn1cOCMUIcL\nOzs7G/3s33//lZzR6RVedOoMzGl1LY0dO1byRx99JFldmFQveGWGiIiIdI2NGSIiItI1djP9f+pM\nv3///bfkunXrSk7dHWTJqCW1a0m9K3zr1q2SOetv9lm3bp1kc91KqaldSOpCleoClOaol3PVGWsB\n4wX2yPpcXV1tXYQXnvqZqFOnjtHP1O+9vn37Sh40aFC6xzX3XaqqVauW0ePmzZtLZjcTsHDhQskl\nS5Y0uU3qz8jQoUMl67FrScUrM0RERKRrbMwQERGRruW6bia1W2D69OmS1e6FLVu2SFYveaZeSNCS\nUUuffvqpZHXCKHYtZZ/ff/9d8oABA7J0LLW+1Uuy06ZNk6yOfmrWrJlkdcFLAHjw4EGWykL/R50Q\nzxxPT88cKIk+3b17V7I6GaRK7epZuXKl5EuXLknetGmTZHUBQ8D4s6MuIunv72/yfGfPnpXs5uYm\nuUqVKpKHDBkiuVSpUiaPk5upo70+/PBDyQ8fPpSsdselHpFbuHBhK5YuZ/HKDBEREekaGzNERESk\nay9sN5PavTNmzBjJGV03ydzIpNQ/Uyfp6tatm+QuXbpkuOyUviNHjkj+66+/JKdej8kS6pok6gRf\narfRxo0bJUdFRUkuW7as5J07d2b43GSeupbW+PHjTW7DUSzm7du3T3LXrl0lq13qKktGFKn69+9v\n9LhTp06Svby8JBcpUsTk/gkJCZILFCiQ7vnoqRMnTkhWJ7pTu5bU7yV1vb8XqVspNV6ZISIiIl1j\nY4aIiIh0TffdTOZGJ82fP19yVtZNMvc8YDyKRh1JYe6yKmUfdXK8L774IkvHqlGjhmT1zv8GDRpI\nVi/Tq1atWiW5QoUKWSoHGVPX2VLXXVKpo27IeGI5c2vyFCxYUPKMGTMkL1iwQPKpU6ckq6OI1NEw\nNWvWzFJZ2bWUNnUiV/X/l7x5/++/bfX7qmHDhpLVbvHc8j7zygwRERHpGhszREREpGt5NPUWdh1Q\n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\n6tQpzf3s7fPVo0cPbN26FWvXrpV/QUFBCAoKwtq1ay0+TlpYZ/qqM3uor7feegvbt283eo2dO3dG\ntWrVsHbtWrz66qtm97W3+gKA3377DeHh4bh69SoePXqEjz/+GMWLF5cRVemxSeLbg4MAACAASURB\nVDdT165d8fnnn6NRo0byZqTWq1cvnDp1Ci1atEDhwoXRu3dvoxZa2bJlsWDBAsycORORkZFwdnaG\nr68vFi5cKJe7PvroI1y4cAGLFi0yeQ4/Pz98+eWX+OKLL/D555/jlVdewYABA9L9D6Vjx47o378/\nYmNj4eLiggULFqBgwYJmt382x0Hv3r3x8OFDlC5dGoMGDZL7MkJCQnD16lUMGTJEhhC+++67RkPS\nwsLCUKpUKUyZMuW54+fNmxfz58/H9OnT0aFDB9y9exelS5fG+PHj0axZszRfiyXspb6+/PJLzJw5\nE506dUJCQgJcXFzwwQcfICwsLM3yt2rVCl27dsXly5dRqVIlzJ8/36jvN7Vp06bhk08+QYcOHZCU\nlITy5ctj6tSpckPb0KFDER8fL5NTtWzZEm+//bbcbwM87eZr2bIlBgwY8NzxCxQogO+++w7Tpk1D\ns2bNkJCQAE9PTyxZsgSVKlVK87VYwl7qq2fPnrh27RpCQkLw+PFjeHl5YdGiRShWrFia5be3z1eh\nQoVQqFAho+cKFCgA4OlfpNmBdaavOrOH+ipQoIC8pmcKFSoEJyendF+jvdUX8HSemfHjx6Nly5ZI\nTk5GrVq18M033xjdBpCWPFpO9UO8APbu3Yt3330X0dHROdYdQJm3atUqjB49Gn///Xe2T3JG2Y+f\nL/1hnenLi1xfdnvPDBEREZEl2JghIiIiXWM3ExEREekar8wQERGRrrExQ0RERLrGxgwRERHpGhsz\nREREpGtszBAREZGusTFDREREusbGDBEREekaGzNERESka2zMEBERka6xMUNERES6xsYMERER6Rob\nM0RERKRrbMwQERGRrrExQ0RERLrGxgwRERHpWl5bF8AePXnyRPLZs2cljxkzxmi7VatWSX7ppf9r\nF06dOlXy0KFDJTs4OGRrOemp27dvS54yZYpktX4AICYmRnLx4sWtXzAiIsoRvDJDREREusbGDBER\nEekaGzNERESka3k0TdNsXQhbiY+Pl7xy5UrJmzZtkvzzzz+b3V996/LkyWNymwsXLkh2cXHJVDkp\n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\n","text/plain":["
"]},"metadata":{"tags":[]}}]},{"metadata":{"id":"MbxwflYGlzbC","colab_type":"text"},"cell_type":"markdown","source":["Ok, we're not doing so bad after all. To get better results, it would help to: \n","\n","* give people a pen that works (or get more old pens in the training set)\n","* teach them how to write properly (or get more bad writers in the training set)\n","* get rid of all these europeans who add an horizontal bar to the 7 (or get more europeans in the training set)\n","\n","Still, for the major fraction of the misclassified digits, the human brain would perform better than our network, and we can always aim for better performance. \n","\n","The world record for this classification exercise is 99.8%. \n","\n","How well do you rank?\n","\n","Do you have any idea on how to manipulate the input images to help the network on such bad cases? hint: it's always possible to edit the images before feeding them to the network for training, a technique called **data augmentation**. \n","\n","## Wrapping it up \n","\n","In this tutorial, you have learnt: \n","\n","* how to use the Google Colab platform to do deep learning, without having to install software or to buy a GPU; \n","* how to use Google Colab to run your own notebooks;\n","* what is a convolutional network, and what are its most important layers: the convolutional layers, the maxpooling layers, and the dropout layers; \n","* how to build a simple convolutional network, and how to tune it to reach an accuracy around 99.4% in the recognition of handwritten digits. \n","\n","Now, let's do a small contest! \n","\n","What's your highest accuracy? \n","\n","Please tell us in the comments. To claim your reward (a dinner at my place if you're around!), you should: \n","\n","* post your accuracy history plot\n","* give the code that describes your model \n","\n","In the future, we'll have a look at other image classification problems, and talk about data augmentation. \n","\n","We will also learn about other kinds of deep neural networks used in natural language processing and time series analysis. \n"]},{"metadata":{"id":"iuA5oljUlroJ","colab_type":"code","colab":{}},"cell_type":"code","source":[""],"execution_count":0,"outputs":[]}]} \ No newline at end of file +{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"hwd_dl_google.ipynb","version":"0.3.2","provenance":[{"file_id":"https://github.com/cbernet/maldives/blob/master/hwd_deeplearning_google/hwd_dl_google.ipynb","timestamp":1549729378561}],"collapsed_sections":[]},"kernelspec":{"name":"python2","display_name":"Python 2"},"accelerator":"GPU"},"cells":[{"metadata":{"id":"SRvDywmJtVds","colab_type":"text"},"cell_type":"markdown","source":["## About this tutorial \n","\n","To do deep learning in practice, you need a Graphics Processing Unit (GPU). Or the time needed to train your deep neural nets on the CPU of your machine will be prohibitive.\n","\n","We have seen how to [install TensorFlow on Windows](https://thedatafrog.com/install-tensorflow-windows/) and [on Linux](https://thedatafrog.com/install-tensorflow-ubuntu/), which is useful if you have an nvidia graphics card in your PC. \n","\n","But what if you don't? \n","\n","If you just want to learn deep learning, there is a very easy solution that requires **no specific hardware or software**, the Colaboratory platform from Google.\n","\n","Let's try and use it for the first time. \n","\n","In this tutorial, you will learn: \n","\n","* What is the google colaboratory platform and how to use it. \n","* How to set up a first convolutional neural network to recognize handwritten digits with very high accuracy \n","\n","**Prerequisites**\n","\n","* Please have a look at [my first tutorial on handwritten digits](https://thedatafrog.com/handwritten-digit-recognition-scikit-learn/). This will show you which kind of performance we can get without deep learning, and will teach you the basics of numpy, matplotlib, and neural networks. \n","* You should know a bit of [Keras](https://thedatafrog.com/first-neural-network-keras/)\n","\n","\n","## The Google Colaboratory Platorm\n","\n","Google has recently set up the [Colaboratory Platform](https://colab.research.google.com/notebooks/welcome.ipynb) to promote the use of TensorFlow for deep learning, and it's awesome! \n","\n","It provides: \n","\n","* python environments with all the necessary software, and you can install more if needed\n","* access to GPUs\n","* excellent tutorials\n","* the possibility to run your own code (and my stuff!)\n","\n","In particular, the author of Keras and google engineer François Chollet set up extremely useful tutorials in which Keras is used as an interface to TensorFlow. For example, you can check out [this one](https://colab.research.google.com/github/tensorflow/tpu/blob/master/tools/colab/fashion_mnist.ipynb) where we learn how to classify clothing items (trousers, shoes, and whatnot). \n","\n","I do encourage you to dig into the google colab tutorials on your own! I would only advise you to stick to the keras-based tutorials which are much easier. \n","\n","On my side, I intend to use this tool to provide you with original content, as well as more details about the subjects already covered by google. \n","\n","💡 **To run your jupyter notebook on google colab, you can either:**\n","\n","* **commit it to github, and to provide a specific url to direct google colab to the notebook.**\n","* **put it in your google drive, and use Chrome to open it with Colab.**\n","\n","The url of this tutorial on github is https://github.com/cbernet/maldives/blob/master/hwd_deeplearning_google/hwd_dl_google.ipynb\n","\n","The url to run it on google colab is https://colab.research.google.com/github/cbernet/maldives/blob/master/hwd_deeplearning_google/hwd_dl_google.ipynb\n","\n","Just follow this link now. Then:\n","\n","* head to the Runtime (or Exécution) menu, and change the runtime to GPU\n","* click \"CONNECT\" on the top right.\n"]},{"metadata":{"id":"9mw3fUDitVdy","colab_type":"text"},"cell_type":"markdown","source":["## The Dataset\n","\n","In [my first tutorial on handwritten digits](https://thedatafrog.com/handwritten-digit-recognition-scikit-learn/), we have used the simplified digits dataset provided with scikit-learn because we didn't have the resources to process the [real MNIST handrwitten digits dataset](http://yann.lecun.com/exdb/mnist/) at that time. \n","\n","Here, we have access to the GPUs from Google, and to keras which provides an easy way to load this dataset:"]},{"metadata":{"id":"jFKEynAytVd2","colab_type":"code","colab":{}},"cell_type":"code","source":["import tensorflow as tf\n","(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()"],"execution_count":0,"outputs":[]},{"metadata":{"id":"gQLSCxxYtVeC","colab_type":"text"},"cell_type":"markdown","source":["Let's have a look our dataset."]},{"metadata":{"id":"311Pzt80tVeG","colab_type":"code","outputId":"115ad5cb-6fc7-4e6c-bd90-12a1d64fd697","executionInfo":{"status":"ok","timestamp":1549887917098,"user_tz":-60,"elapsed":405,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":34}},"cell_type":"code","source":["print x_train.shape, y_train.shape, x_test.shape, y_test.shape"],"execution_count":2,"outputs":[{"output_type":"stream","text":["(60000, 28, 28) (60000,) (10000, 28, 28) (10000,)\n"],"name":"stdout"}]},{"metadata":{"id":"cxrNL8agtVeR","colab_type":"text"},"cell_type":"markdown","source":["so: \n","\n","* 60,000 training samples and 10,000 test samples\n","* images are 28x28 = 784 pixels, while they are 8x8=64 pixels in the simplified digits dataset of scikit-learn. We have images with much better resolution, but need networks with many more neurons to process them"]},{"metadata":{"id":"FWCU17B1tVeU","colab_type":"text"},"cell_type":"markdown","source":["Now let's plot some of these images. "]},{"metadata":{"id":"umgVXlOetVeX","colab_type":"code","colab":{}},"cell_type":"code","source":["import matplotlib.pyplot as plt\n","def plot_img(i):\n"," # plot the image and the target for sample i\n"," plt.imshow(x_train[i])\n"," plt.title(y_train[i])\n"," plt.axis('off')"],"execution_count":0,"outputs":[]},{"metadata":{"id":"lf9qi83jtVed","colab_type":"code","outputId":"b98d5c5c-f088-42f1-f953-2276d5bea9ab","executionInfo":{"status":"ok","timestamp":1549889416861,"user_tz":-60,"elapsed":419,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":362}},"cell_type":"code","source":["plot_img(2)"],"execution_count":3,"outputs":[{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[]}}]},{"metadata":{"id":"rOzBtEWxtVem","colab_type":"text"},"cell_type":"markdown","source":["Please have a look at other images by repeating the plot above for different samples"]},{"metadata":{"id":"wN7sUkhFtVeq","colab_type":"text"},"cell_type":"markdown","source":["Now we should check the actual data for a given image. Let's put the values in the pixels of the first image in an histogram: "]},{"metadata":{"id":"JUBPdg6NtVeu","colab_type":"code","outputId":"5e2c39c9-03f2-45eb-f375-be9d65f2501a","executionInfo":{"status":"ok","timestamp":1549889418983,"user_tz":-60,"elapsed":1151,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":874}},"cell_type":"code","source":["plt.hist(x_train[0])"],"execution_count":4,"outputs":[{"output_type":"execute_result","data":{"text/plain":["([array([28., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),\n"," array([28., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),\n"," array([28., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),\n"," array([28., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),\n"," array([26., 0., 1., 0., 0., 1., 0., 0., 0., 0.]),\n"," array([26., 0., 0., 0., 0., 0., 1., 0., 0., 1.]),\n"," array([26., 0., 0., 0., 0., 0., 0., 0., 1., 1.]),\n"," array([24., 1., 0., 0., 0., 0., 1., 0., 0., 2.]),\n"," array([21., 1., 0., 1., 0., 0., 0., 0., 3., 2.]),\n"," array([20., 1., 1., 0., 0., 1., 1., 0., 0., 4.]),\n"," array([20., 0., 0., 1., 1., 1., 0., 0., 1., 4.]),\n"," array([18., 0., 0., 0., 1., 1., 2., 0., 0., 6.]),\n"," array([15., 2., 0., 0., 0., 1., 1., 1., 1., 7.]),\n"," array([15., 0., 0., 2., 0., 1., 0., 2., 1., 7.]),\n"," array([16., 2., 1., 1., 0., 0., 0., 1., 2., 5.]),\n"," array([18., 0., 0., 0., 0., 1., 1., 3., 0., 5.]),\n"," array([15., 1., 0., 2., 2., 0., 0., 1., 0., 7.]),\n"," array([16., 0., 0., 0., 1., 1., 1., 1., 0., 8.]),\n"," array([19., 0., 0., 2., 0., 1., 1., 0., 1., 4.]),\n"," array([20., 2., 0., 1., 0., 0., 1., 2., 1., 1.]),\n"," array([24., 0., 1., 1., 0., 0., 1., 0., 0., 1.]),\n"," array([25., 0., 1., 0., 0., 0., 0., 0., 0., 2.]),\n"," array([25., 1., 0., 0., 0., 0., 0., 1., 0., 1.]),\n"," array([26., 0., 1., 0., 1., 0., 0., 0., 0., 0.]),\n"," array([28., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),\n"," array([28., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),\n"," array([28., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),\n"," array([28., 0., 0., 0., 0., 0., 0., 0., 0., 0.])],\n"," array([ 0. , 25.5, 51. , 76.5, 102. , 127.5, 153. , 178.5, 204. ,\n"," 229.5, 255. ]),\n"," )"]},"metadata":{"tags":[]},"execution_count":4},{"output_type":"display_data","data":{"image/png":"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\nv1iD1AUgSvevAAAAAElFTkSuQmCC\n","text/plain":["
"]},"metadata":{"tags":[]}}]},{"metadata":{"id":"3IDwJz6UtVe4","colab_type":"text"},"cell_type":"markdown","source":["We see that the values in the image array are between 0 and 255 (the values are coded on 8 bits). \n","\n","This is not adequate. Indeed, for a neural network to work well, it must deal with input values close to unity. So we're going to normalize all images to values between 0 and 1: "]},{"metadata":{"id":"p1bOPi4ltVe8","colab_type":"code","outputId":"ede8bfe8-ebb1-4718-a683-57a2729935a7","executionInfo":{"status":"ok","timestamp":1549889422422,"user_tz":-60,"elapsed":1425,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":857}},"cell_type":"code","source":["import numpy as np\n","x_train = x_train/255.\n","plt.hist(x_train[0])"],"execution_count":5,"outputs":[{"output_type":"execute_result","data":{"text/plain":["([array([28., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),\n"," array([28., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),\n"," array([28., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),\n"," array([28., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),\n"," array([26., 0., 1., 0., 0., 1., 0., 0., 0., 0.]),\n"," array([26., 0., 0., 0., 0., 0., 1., 0., 0., 1.]),\n"," array([26., 0., 0., 0., 0., 0., 0., 0., 1., 1.]),\n"," array([24., 1., 0., 0., 0., 0., 1., 0., 0., 2.]),\n"," array([21., 1., 0., 1., 0., 0., 0., 0., 3., 2.]),\n"," array([20., 1., 1., 0., 0., 1., 1., 0., 0., 4.]),\n"," array([20., 0., 0., 1., 1., 1., 0., 0., 1., 4.]),\n"," array([18., 0., 0., 0., 1., 1., 2., 0., 0., 6.]),\n"," array([15., 2., 0., 0., 0., 1., 1., 1., 1., 7.]),\n"," array([15., 0., 0., 2., 0., 1., 0., 2., 1., 7.]),\n"," array([16., 2., 1., 1., 0., 0., 0., 1., 2., 5.]),\n"," array([18., 0., 0., 0., 0., 1., 1., 3., 0., 5.]),\n"," array([15., 1., 0., 2., 2., 0., 0., 1., 0., 7.]),\n"," array([16., 0., 0., 0., 1., 1., 1., 1., 0., 8.]),\n"," array([19., 0., 0., 2., 0., 1., 1., 0., 1., 4.]),\n"," array([20., 2., 0., 1., 0., 0., 1., 2., 1., 1.]),\n"," array([24., 0., 1., 1., 0., 0., 1., 0., 0., 1.]),\n"," array([25., 0., 1., 0., 0., 0., 0., 0., 0., 2.]),\n"," array([25., 1., 0., 0., 0., 0., 0., 1., 0., 1.]),\n"," array([26., 0., 1., 0., 1., 0., 0., 0., 0., 0.]),\n"," array([28., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),\n"," array([28., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),\n"," array([28., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),\n"," array([28., 0., 0., 0., 0., 0., 0., 0., 0., 0.])],\n"," array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ]),\n"," )"]},"metadata":{"tags":[]},"execution_count":5},{"output_type":"display_data","data":{"image/png":"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\nNcaPH598xoEi1y43btwYt956a1xzzTXFGG/A6GmPhw8fjo9//OOxfPnyaGxsjGeffbZYYw4IPe3y\nYx/7WDz22GMxceLEqK+vj89//vNOH+xBJpOJyy+//IL3FbI7JRXfD8v6Lai8udAu33vvvXj00Udj\n8eLF5/xFpmdn7/Jvf/tbbNy4MR588MEiTjQwnb3HbDYbhw4dihkzZkRzc3O8/vrrsX379uINN8Cc\nvcujR4/G2rVr46WXXoqtW7fGa6+9Fn/+85+LOB0XUlLx7enYyg/fd+jQoQu+TcC/5DoC9OjRo/Hd\n73435s6dG3fccUcxRhwwetrlzp074/Dhw/Htb387Hn/88di7d28sW7asWKOWtJ72WFNTEyNGjIjr\nrrsuKioqYuzYsdHZ2VmsUUteT7vct29fjBw5MoYOHRqVlZXxxS9+Mdrb24s16oBWyO6UVHx7Orby\n2muvjaNHj8bbb78dJ0+ejN/+9rdx++23F3PckpbrCNCmpqb4zne+E+PGjSvWiANGT7v8yle+Eps2\nbYpf//rXsXr16rjxxhtjwYIFxRy3ZPW0x0wmEyNHjoy//OUvZ+73VunF9bTLa665Jvbt2xcnTpyI\niIj29va4/vrrizXqgFbI7pTcCVerVq2KP/7xj2eOrXz99dejuro67r777ti1a1esWrUqIiLuueee\nePjhh4s8bWm72C7vuOOOGDNmTNxyyy1nrv36178eDQ0NRZy2tPX05/K0t99+O5566qnYsGFDESct\nbT3t8c0334z58+dHNpuNG264IZYsWRKXXlpSrw9KSk+7/NWvfhUbN26MioqKuOWWW2LevHnFHrdk\ntbe3x4oVK+LAgQORyWRi+PDhMWHChLj22msL2p2Siy8AlDv/WQkAiYkvACQmvgCQmPgCQGLiCwCJ\niS8AJCa+AJCY+AJAYv8LecSYOvKrzXUAAAAASUVORK5CYII=\n","text/plain":["
"]},"metadata":{"tags":[]}}]},{"metadata":{"id":"votCeFOGtVfI","colab_type":"text"},"cell_type":"markdown","source":["💡 **Always normalize your input data.**\n","\n","And we must do the same for the test dataset:"]},{"metadata":{"id":"QGVarm2ItVfL","colab_type":"code","colab":{}},"cell_type":"code","source":["x_test = x_test/255."],"execution_count":0,"outputs":[]},{"metadata":{"id":"n4QP_ozjtVfR","colab_type":"text"},"cell_type":"markdown","source":["We should also check our targets: "]},{"metadata":{"id":"tWDbXQCotVfT","colab_type":"code","outputId":"df63c3b6-60a6-4748-df53-59f099686724","executionInfo":{"status":"ok","timestamp":1549889435175,"user_tz":-60,"elapsed":450,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":34}},"cell_type":"code","source":["y_train[0]"],"execution_count":7,"outputs":[{"output_type":"execute_result","data":{"text/plain":["5"]},"metadata":{"tags":[]},"execution_count":7}]},{"metadata":{"id":"wzeZSdx9tVfa","colab_type":"text"},"cell_type":"markdown","source":["For the reasons explained in [our first keras tutorial](https://thedatafrog.com/first-neural-network-keras/), we're going to perform one-hot encoding on the targets: "]},{"metadata":{"id":"1oiAvEIxtVfc","colab_type":"code","outputId":"a88bd7db-4aa0-44ac-db52-cc2036f4982f","executionInfo":{"status":"ok","timestamp":1549889436861,"user_tz":-60,"elapsed":408,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":51}},"cell_type":"code","source":["from keras.utils import np_utils\n","y_train = np_utils.to_categorical(y_train, 10)\n","y_test = np_utils.to_categorical(y_test, 10)\n","print y_train[0]"],"execution_count":8,"outputs":[{"output_type":"stream","text":["[0. 0. 0. 0. 0. 1. 0. 0. 0. 0.]\n"],"name":"stdout"},{"output_type":"stream","text":["Using TensorFlow backend.\n"],"name":"stderr"}]},{"metadata":{"id":"YMUeoGyxtVfr","colab_type":"text"},"cell_type":"markdown","source":["## Convolutional Neural Networks"]},{"metadata":{"id":"zjZ6JG1LtVft","colab_type":"text"},"cell_type":"markdown","source":["Classifying handwritten digits in 10 categories is a task of image recognition. \n","\n","Since convolutional neural networks are known to provide excellent performance for image recognition, we're going to use them. \n","\n","A convolutional neural network for image classification typically features the following layers: \n","\n","* the first layers are **convolutional layers**, interleaved with **pooling layers**. The role of these layers is to extract interesting features from the image.\n","* then come **dense layers**, which interpret the features from the first stage, and provide the probability for the image to belong to each category. \n","\n","In addition to these, **dropout** layers can be added to regularize the network or in other words, to make it more stable. \n","\n","Before building the network, I'd like to explain each kind of layer in details. "]},{"metadata":{"id":"CYREa4eftVfv","colab_type":"text"},"cell_type":"markdown","source":["### Convolutional layers"]},{"metadata":{"id":"rxK8mGf0tVfx","colab_type":"text"},"cell_type":"markdown","source":["A 2D [convolutional layer](https://keras.io/layers/convolutional/) scans the input image from left to right and from top to bottom, with a small window, called the **kernel**. In the example below, we use a window of 5x5 pixel. After every step, the image moves right. Here, we use a **stride** of 1 pixel, meaning that we move the window by 1 pixel. When the right border of the window hits the right border of the image, the window is returned to the left and moved down by 1 pixel. \n","\n","![](https://github.com/cbernet/maldives/blob/master/hwd_deeplearning_google/conv_layer.png?raw=1)\n","\n","At each step, the pixels within the window are considered and a number of features are extracted. Each feature is just a value. Let's say there are **nf** features to be extracted for each position of the window (nf could be of the order of 10). \n","\n","At first these features are completely meaningless, but the network is going to be trained to extract meaningful features. For example, if you do face recognition, the features might be related to the presence of an eye or a nose. For now, just keep in mind that a fixed number of values are extracted for each window, and that these values are going to make sense to the network (and maybe not to us!).\n","\n","Now, what kind of data do we get out of the convolutional layer? \n","Let **(nx, ny)** be the shape of the picture, so nx and ny are the numbers of pixels in the image along the horizontal and vertical directions, respectively. \n","\n","For each window position, we get 10 features, and the window positions are arranged in a 2D array. So the output of the convolutional layer is a 3D array (ox, oy, nf), where **ox** and **oy** are the numbers of output pixels along the horizontal and vertical directions, and nf is the number of features for each pixel.\n","\n","The user (we) decide on the number of features to be extracted, so we know that. But what about ox and oy? \n","\n","The answer is simple. For example, the number of output pixels along the horizontal direction is **ox = nx - kernel_size + 1**. \n","\n","To convince yourself, you can use the simple case below, with an image of size 7x5 and a window of size 3x3. \n","\n","![](https://raw.githubusercontent.com/cbernet/maldives/master/hwd_deeplearning_google/conv_layer_simple.png)\n","\n","Ok... I have spent three hours in blender trying to model a convolutional layer in 3D as an illustration, and barely managed to model a cube. So I gave up on this software and, as a last resort, went back to my favorite 3D modelling hardware: \n","\n","![](https://raw.githubusercontent.com/cbernet/maldives/master/hwd_deeplearning_google/crayon.png)\n","\n","\n","And here's the result, with shading and transparency! \n","\n","![](https://raw.githubusercontent.com/cbernet/maldives/master/hwd_deeplearning_google/conv_layer_schema.png)"]},{"metadata":{"id":"ik0k9DqUtVfz","colab_type":"text"},"cell_type":"markdown","source":["### Pooling layers\n","\n","Pooling layers are used to reduce the size of the data at a given stage to reduce the complexity of the network. In this case we will use 2D pooling layers, and in particular, the [MaxPooling2D](https://keras.io/layers/pooling/). \n","\n","The keras documentation is a bit scarce, so let's see how it works on a simple image. Here we use [seaborn](https://seaborn.pydata.org/), a high-level interface to matplotlib, to get a heat map with annotations."]},{"metadata":{"id":"cAugHvJNtVf3","colab_type":"code","outputId":"7cdab101-e402-427e-c0d9-6005dfed86c2","executionInfo":{"status":"ok","timestamp":1549889445058,"user_tz":-60,"elapsed":958,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":368}},"cell_type":"code","source":["import numpy as np\n","import seaborn as sns\n","\n","# building the image of a zero:\n","zero = np.array([[0,0,0,1,0,0,0,0],\n"," [0,1,2,3,2,1,0,0],\n"," [0,4,3,1,3,2,0,0],\n"," [1,5,2,0,0,5,1,0],\n"," [2,4,0,0,0,6,2,0],\n"," [1,3,0,0,0,4,1,0],\n"," [0,2,3,2,1,3,0,0],\n"," [0,0,3,4,3,1,0,0]])\n","sns.heatmap(zero, annot=True)"],"execution_count":9,"outputs":[{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{"tags":[]},"execution_count":9},{"output_type":"display_data","data":{"image/png":"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\nfMr/B8IrDNo8NumtAAAAAElFTkSuQmCC\n","text/plain":["
"]},"metadata":{"tags":[]}}]},{"metadata":{"id":"RIFajNK8tVgC","colab_type":"text"},"cell_type":"markdown","source":["Pooling layers are based on a pooling window that moves across the image like the kernel of the convolutional layers. For every position of the pooling window, a number is extracted, for example: \n","\n","* the maximum value in the window (max pooling)\n","* the average value over the window (average pooling)\n","\n","We're going to use [scikit-image](http://scikit-image.org/docs/dev/auto_examples/numpy_operations/plot_view_as_blocks.html) to perform each pooling operation. By the way I didn't know scikit-image, I just googled \"max pooling numpy\". Google is your friend, especially when you're trying to do something in python"]},{"metadata":{"id":"NzMgr3M1tVgF","colab_type":"code","colab":{}},"cell_type":"code","source":["from skimage.util import view_as_blocks\n","pooling_window_shape = (2,2)\n","view = view_as_blocks(zero, pooling_window_shape)\n","flatten_view = view.reshape(view.shape[0], view.shape[1], -1)\n","mean_view = np.mean(flatten_view, axis=2)\n","max_view = np.max(flatten_view, axis=2)"],"execution_count":0,"outputs":[]},{"metadata":{"id":"OOd8CPMPtVgN","colab_type":"code","outputId":"5ed3d348-c449-43b8-d7f0-4acf14af7c2d","executionInfo":{"status":"ok","timestamp":1549889447319,"user_tz":-60,"elapsed":697,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":368}},"cell_type":"code","source":["sns.heatmap(max_view, annot=True)"],"execution_count":11,"outputs":[{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{"tags":[]},"execution_count":11},{"output_type":"display_data","data":{"image/png":"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\n16nI7OxszZgxQ7fddpuCwaBmzZqliIjm5zKKDQBgRLguscXExOipp5466/VsRQIAnMLEBgAwwhfh\njXtFUmwAACM8cg9ktiIBAG5hYgMAGOGVj62h2AAARnik1yg2AIAZXpnYuMYGAHAKExsAwAiPDGxM\nbAAAtzCxAQDM8MjIRrEBAIzwyuERig0AYIRHeo1iAwCY4ZV7RXJ4BADgFIoNAOAUtiIBAEZwjQ0A\n4BRORQIAnOKRXqPYAABmeGVi4/AIAMApFBsAwClsRQIAjPDITiTFBgAwwyvX2Cg2AIAZHrm4RbEB\nAIzwysTmkX71lu6De+lfls1UfKf2tqM4Z+OnmzXx9jt180+ydNc/36eyQ4dtR3JSp6REPf/qU3p3\n3VIte2+RhgwdZDuSc9qmp6jH+BvU8x9uUrebx8jfgZ8XXkGx/Z2o6CiN+NkYBWrqbEdxTl0goGkz\nZmn2zIf09vICXX/dtZrzRJ7tWE769b8/rHVFG3XTiGzN/bcFyv7HCbYjOSUqto1SRw1TSeEG7Vn2\nro7t2acuI662HQunUGx/Z/jEkdr1X5/rROCE7SjO2fTpFqWlpuryvn0kSePH3axPNmxSbW2t5WRu\nSe7SSZcP7K3XFy+XJH26/o968J9n2w3lmMaGBpUUrteJo9WSpLpD5fInxFtOZZ/P1/qHSWdVbI2N\njd95rayszGwSD0hM76T0K3ros7c32o7ipOJ9+5SWmtr0PDY2Vgnt22tfSYnFVO7p06+XDuwv1X3T\n79aKD1/RooL56tv/MtuxnBIK1qu25L9/BrZN66JAeaXFRN7g8/la/TCpxWJbs2aNRo8ereHDh+tX\nv/qVjh8/3vRn06ZNMxrECzKnjFXhS6vUEGqwHcVJgWC9/P7o017z+/0KBIKWErmpXfu2uqxPD23Z\nuE3jxvxc7/xhjX77/BxFRkbajuakuJQkJQ7orbINW21Hse6CmNheeOEF/eEPf9Ann3yiwYMHa/Lk\nyaqpqZH0/VPchWzgjwarsqRCB/+033YUZ7VpE6P6+tO3eIPBoGLbtLGUyE3Hq2tVWVGlojUfS5KW\nL31b8e3bqWuPNMvJ3NOua6pSRg7TvtVrm7YlL2oeabYWj/tHRkYqISFBkpSVlaXExERNnjxZ+fn5\nnjnWaUrPjN5K7tlFPYb8dcumTXysbn1ikt759zdVsrPYcjo3dO/WVavWfND0vOb4cVXX1Cg9/VKL\n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\n","text/plain":["
"]},"metadata":{"tags":[]}}]},{"metadata":{"id":"_9_yO3pxtVgV","colab_type":"code","outputId":"7a45ebb9-af13-44fe-fe5b-340846888e2e","executionInfo":{"status":"ok","timestamp":1549889448430,"user_tz":-60,"elapsed":626,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":368}},"cell_type":"code","source":["sns.heatmap(mean_view, annot=True)"],"execution_count":12,"outputs":[{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{"tags":[]},"execution_count":12},{"output_type":"display_data","data":{"image/png":"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\nUBdRKgi4AAAAAElFTkSuQmCC\n","text/plain":["
"]},"metadata":{"tags":[]}}]},{"metadata":{"id":"gRi_9ACttVgg","colab_type":"text"},"cell_type":"markdown","source":["Please check that the pooled values are what you expect for both the max pooling and the average pooling operations. \n","\n","Coming back to our case, we will want to pool after a convolutional layer. The input to the pooling is a 3D array with several values (the features) for each pixel. \n","\n","In this case, the pooling layer will pool each feature separately for each position of the pooling window. \n","\n","So the pooling will reduce the dimensionality along the x and y directions, but the number of features in output will stay the same. That's good, because maxing or averaging over all features would not make any sense. "]},{"metadata":{"id":"YrjHyl0FtVgj","colab_type":"text"},"cell_type":"markdown","source":["### Dense layers\n","\n","A sub-network of dense layers is added at the end of the deep neural network. The aim of this sub-network is to make use of the features extracted by the previous layers to perform the classification.\n","\n","We know about dense layers already since the tutorial about [handwritten digits with scikit-learn](https://thedatafrog.com/handwritten-digit-recognition-scikit-learn/), so I'm not going to give details here. \n","\n","Two things to note: \n","\n","**1- Dense layers are fully connected to the previous layer.** This means that each neuron in the dense layer has a connection to all neurons in the previous layer. \n","\n","**2- The input to a dense layer is 1D.** But the output of our convolutional (or pooling) layers is 3D... So we will need to flatten the 3D data to 1D, by just serializing all numbers. To do that in keras, we will insert a [Flatten layer](https://keras.io/layers/core/) just before the dense layer. \n","\n","The last layer of our dense sub-network will have a **softmax activation**. This means that the output of neuron $k$ is set to \n","\n","$$y_k = \\frac{e^{z_k}}{\\sum_{i=1}^{N} e^{z_i}}$$,\n","\n","where the sum runs over the N neurons of the layer. \n","\n","Please note that the softmax activation is well suited to classification problems: \n","\n","* the probability for a given class is bound between 0 and 1. \n","* all probabilities sum up to 1\n","\n","### Dropout layers \n","\n","Deep convolutional neural networks are complicated and have a lot of tunable parameters. And for this reason, they can easily go wrong.\n","\n","During the training, the network can **overfit** the training data. This means that it gets very good at recognizing specific examples of the training data, but looses its ability to recognize new, unseen examples, and loses generality. This is typically due to parts of the network that evolve in a coordinated way and in the wrong direction during training. \n","\n","**Dropout regularization** is a way to reduce this effect \n","\n","To perform dropout normalization, we will insert an additional layer just before the dense sub-network, containing one neuron per output variable in the previous layer. Each neuron acts as a gate, and is turned on and off randomly during the training. When it's on, the corresponding variable flows to the following dense layer. When it's off, the variable is blocked, and the neuron outputs zero. \n","\n","In this way, some part of the network, which is always changing, is deactivated, and only the rest is trained.\n","\n","After training, for the evaluation of the unseen test samples, the dropout layer is removed, and the whole network is used. \n","\n","To learn more about dropout regularization, you can refer to the [original paper](http://jmlr.org/papers/volume15/srivastava14a.old/srivastava14a.pdf).\n","\n"]},{"metadata":{"id":"pgluyk5btVgk","colab_type":"text"},"cell_type":"markdown","source":["## Building the network \n","\n","Let's first build a simple convolutional neural network with keras. "]},{"metadata":{"id":"UlOHJrMZtVgm","colab_type":"code","colab":{}},"cell_type":"code","source":["from keras import models\n","from keras import layers"],"execution_count":0,"outputs":[]},{"metadata":{"id":"eC6AaklatVgr","colab_type":"text"},"cell_type":"markdown","source":["We start with the convolutional layer, specifying that: \n","\n","* we want to extract 10 features for each kernel\n","* the kernel size is 4x4\n","* the input images are 28x28 pixels\n","* we use a ReLU activation. We could have used a sigmoid, but the ReLU is way better for deep neural networks. If you want to know more, here is a [nice post about ReLUs](https://www.kaggle.com/dansbecker/rectified-linear-units-relu-in-deep-learning)"]},{"metadata":{"id":"pu0SWOnUtVgt","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":88},"outputId":"97c857bc-7064-4523-80af-a71230190aeb","executionInfo":{"status":"ok","timestamp":1549889453994,"user_tz":-60,"elapsed":436,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}}},"cell_type":"code","source":["model = models.Sequential()\n","model.add( layers.Conv2D(10, 4, input_shape=(28,28,1), activation='relu') )"],"execution_count":14,"outputs":[{"output_type":"stream","text":["WARNING:tensorflow:From /usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.\n","Instructions for updating:\n","Colocations handled automatically by placer.\n"],"name":"stdout"}]},{"metadata":{"id":"VEWhpXJItVg5","colab_type":"text"},"cell_type":"markdown","source":["At this stage, here is a summary of our network:"]},{"metadata":{"id":"Zv4dbI6EtVg-","colab_type":"code","outputId":"5b7d590f-6a43-4ef4-9ce8-92417c34039a","executionInfo":{"status":"ok","timestamp":1549889457760,"user_tz":-60,"elapsed":479,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":170}},"cell_type":"code","source":["model.summary()"],"execution_count":15,"outputs":[{"output_type":"stream","text":["_________________________________________________________________\n","Layer (type) Output Shape Param # \n","=================================================================\n","conv2d_1 (Conv2D) (None, 25, 25, 10) 170 \n","=================================================================\n","Total params: 170\n","Trainable params: 170\n","Non-trainable params: 0\n","_________________________________________________________________\n"],"name":"stdout"}]},{"metadata":{"id":"ThENrOldtVhD","colab_type":"text"},"cell_type":"markdown","source":["In the output shape, we should ignore the first `None`. Then come the shape of the output array. The x and y dimensions are of size 28 - 4 + 1 = 25, and the last dimension corresponds to the number of features we have required. So far so good. \n","\n","Now, we add the dense neural network, forgetting about dropout for now. As a starting point, let's try a simple dense subnetwork with a single hidden layer of 100 neurons. Before the dense sub-network, the 3D array is flattened."]},{"metadata":{"id":"rzk7CUDztVhF","colab_type":"code","colab":{}},"cell_type":"code","source":["model.add( layers.Flatten() )\n","model.add( layers.Dense(100, activation='relu') )"],"execution_count":0,"outputs":[]},{"metadata":{"id":"ssV-E3cvtVhG","colab_type":"text"},"cell_type":"markdown","source":["And finally, our final softmax layer with 10 neurons, for the 10 digit categories:"]},{"metadata":{"id":"vMUArCqutVhI","colab_type":"code","colab":{}},"cell_type":"code","source":["model.add( layers.Dense(10, activation='softmax') )"],"execution_count":0,"outputs":[]},{"metadata":{"id":"C5Q-4i2QtVhM","colab_type":"code","outputId":"5bbe286e-a613-432d-eeac-ee702ed8b76d","executionInfo":{"status":"ok","timestamp":1549889462087,"user_tz":-60,"elapsed":441,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":272}},"cell_type":"code","source":["model.summary()"],"execution_count":18,"outputs":[{"output_type":"stream","text":["_________________________________________________________________\n","Layer (type) Output Shape Param # \n","=================================================================\n","conv2d_1 (Conv2D) (None, 25, 25, 10) 170 \n","_________________________________________________________________\n","flatten_1 (Flatten) (None, 6250) 0 \n","_________________________________________________________________\n","dense_1 (Dense) (None, 100) 625100 \n","_________________________________________________________________\n","dense_2 (Dense) (None, 10) 1010 \n","=================================================================\n","Total params: 626,280\n","Trainable params: 626,280\n","Non-trainable params: 0\n","_________________________________________________________________\n"],"name":"stdout"}]},{"metadata":{"id":"PDTkzJortVhR","colab_type":"text"},"cell_type":"markdown","source":["We have more than 600k parameters to optimize! let's compile the model, and then train it."]},{"metadata":{"id":"11jVHnhetVhS","colab_type":"code","colab":{}},"cell_type":"code","source":["from keras.optimizers import RMSprop"],"execution_count":0,"outputs":[]},{"metadata":{"id":"RVC9fzwg2Glz","colab_type":"code","colab":{}},"cell_type":"code","source":["model.compile(loss='categorical_crossentropy',\n"," optimizer=RMSprop(lr=0.001),\n"," metrics=['acc'])"],"execution_count":0,"outputs":[]},{"metadata":{"id":"Pz38CbJQtVhY","colab_type":"code","colab":{}},"cell_type":"code","source":["kx_train = x_train.reshape(len(x_train),28,28,1)\n","kx_test = x_test.reshape(len(x_test),28,28,1)"],"execution_count":0,"outputs":[]},{"metadata":{"id":"TH-ETwuEtVhb","colab_type":"code","outputId":"22de3e0c-0c30-4edf-8672-e00ed049727a","executionInfo":{"status":"ok","timestamp":1549889467907,"user_tz":-60,"elapsed":430,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":34}},"cell_type":"code","source":["kx_test.shape"],"execution_count":22,"outputs":[{"output_type":"execute_result","data":{"text/plain":["(10000, 28, 28, 1)"]},"metadata":{"tags":[]},"execution_count":22}]},{"metadata":{"id":"oihTfuPBtVhd","colab_type":"code","outputId":"fea9763b-004f-4bcf-e6ce-affc1c261235","executionInfo":{"status":"ok","timestamp":1549889548411,"user_tz":-60,"elapsed":79794,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":445}},"cell_type":"code","source":["history = model.fit(kx_train, y_train, validation_data=(kx_test,y_test),\n"," batch_size=50, epochs=10)"],"execution_count":23,"outputs":[{"output_type":"stream","text":["WARNING:tensorflow:From /usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/math_ops.py:3066: to_int32 (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.\n","Instructions for updating:\n","Use tf.cast instead.\n","Train on 60000 samples, validate on 10000 samples\n","Epoch 1/10\n","60000/60000 [==============================] - 9s 153us/step - loss: 0.1713 - acc: 0.9483 - val_loss: 0.0746 - val_acc: 0.9760\n","Epoch 2/10\n","60000/60000 [==============================] - 8s 128us/step - loss: 0.0581 - acc: 0.9823 - val_loss: 0.0515 - val_acc: 0.9817\n","Epoch 3/10\n","60000/60000 [==============================] - 8s 129us/step - loss: 0.0382 - acc: 0.9886 - val_loss: 0.0475 - val_acc: 0.9847\n","Epoch 4/10\n","60000/60000 [==============================] - 8s 130us/step - loss: 0.0272 - acc: 0.9920 - val_loss: 0.0440 - val_acc: 0.9856\n","Epoch 5/10\n","60000/60000 [==============================] - 8s 129us/step - loss: 0.0197 - acc: 0.9942 - val_loss: 0.0520 - val_acc: 0.9843\n","Epoch 6/10\n","60000/60000 [==============================] - 8s 129us/step - loss: 0.0145 - acc: 0.9959 - val_loss: 0.0757 - val_acc: 0.9816\n","Epoch 7/10\n","60000/60000 [==============================] - 8s 129us/step - loss: 0.0107 - acc: 0.9969 - val_loss: 0.0578 - val_acc: 0.9844\n","Epoch 8/10\n","60000/60000 [==============================] - 8s 131us/step - loss: 0.0081 - acc: 0.9975 - val_loss: 0.0605 - val_acc: 0.9850\n","Epoch 9/10\n","60000/60000 [==============================] - 8s 130us/step - loss: 0.0060 - acc: 0.9983 - val_loss: 0.0774 - val_acc: 0.9837\n","Epoch 10/10\n","60000/60000 [==============================] - 8s 130us/step - loss: 0.0042 - acc: 0.9989 - val_loss: 0.0885 - val_acc: 0.9829\n"],"name":"stdout"}]},{"metadata":{"id":"MPta7Q6gFCD6","colab_type":"text"},"cell_type":"markdown","source":["We're getting an accuracy larger than 98% from this first try. Much better than the mere 91% we got from the simple dense neural net we set up with scikit-learn. Deep learning starts to show its power!\n","\n","And it's not the end of the story. Let's try and do even better. \n","\n","## Tuning the network \n","\n","### Dealing with overfitting\n","\n","A neural network has *parameters* (weights and biases) that are tuned during the training. The **hyperparameters** are the parameters affecting the network configuration, such as the number of layers, the number of neurons per layer, the number of features extracted by the convolutional layers, etc. \n","\n","We can try and improve the performance by tuning the hyperparameters. \n","\n","But how should we start? \n","\n","First of all: \n","\n","💡**VERY IMPORTANT: Start with a very simple network, and tune it by making it more complex.**\n","\n","If you start from a complex network, you'll have many more hyperparameters to play with, and it's easy to get lost. \n","\n","Then, we should not tune blindly, so let's start by having a more detailed look at the performance. First of all, we can plot the evolution of the accuracy as a function of the training evolution. The accuracy is computed for both the training and the test samples. \n"]},{"metadata":{"id":"KyqZxpfuuiXz","colab_type":"code","colab":{}},"cell_type":"code","source":["def plot_accuracy(history, miny=None):\n"," acc = history.history['acc']\n"," test_acc = history.history['val_acc']\n"," epochs = range(len(acc))\n"," plt.plot(epochs, acc)\n"," plt.plot(epochs, test_acc)\n"," if miny:\n"," plt.ylim(miny, 1.0)\n"," plt.title('accuracy') \n"," plt.figure()\n"],"execution_count":0,"outputs":[]},{"metadata":{"id":"2a0GtdyuH-tK","colab_type":"code","outputId":"75a16be7-5c77-43cc-fd42-66f89010b9e4","executionInfo":{"status":"ok","timestamp":1549889565931,"user_tz":-60,"elapsed":769,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":379}},"cell_type":"code","source":["plot_accuracy(history, miny=0.95)"],"execution_count":26,"outputs":[{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[]}},{"output_type":"display_data","data":{"text/plain":["
"]},"metadata":{"tags":[]}}]},{"metadata":{"id":"vM43vThyIxOH","colab_type":"text"},"cell_type":"markdown","source":["We see that the accuracy on the training sample continuously improves: the network gets better and better at recognizing the digits of this sample, because it's trained to do so. \n","\n","But the accuracy on the testing sample, which is not used for training, plateaus very early at about 98.5%. Training further will not help. \n","\n","That's a clear sign of overfitting. And the more complex the network, the easier it is for it to learn the specific examples of the training sample. \n","\n","**So our first step should not be to make the network more complex, but to solve this overfitting problem. **\n","\n","To do that, we'll create a new instance of our network, in which we will introduce a dropout layer, just before the dense sub-network:"]},{"metadata":{"id":"-RMe3RhFIBMs","colab_type":"code","outputId":"1d859b13-0a99-45f2-dd09-936269368cdb","executionInfo":{"status":"ok","timestamp":1549889626140,"user_tz":-60,"elapsed":439,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":377}},"cell_type":"code","source":["model_do = models.Sequential()\n","model_do.add( layers.Conv2D(10, 4, input_shape=(28,28,1), activation='relu') )\n","model_do.add( layers.Flatten() )\n","model_do.add( layers.Dropout(rate=0.5) )\n","model_do.add( layers.Dense(100, activation='relu') )\n","model_do.add( layers.Dense(10, activation='softmax') )\n","model_do.summary()\n"],"execution_count":27,"outputs":[{"output_type":"stream","text":["WARNING:tensorflow:From /usr/local/lib/python2.7/dist-packages/keras/backend/tensorflow_backend.py:3445: calling dropout (from tensorflow.python.ops.nn_ops) with keep_prob is deprecated and will be removed in a future version.\n","Instructions for updating:\n","Please use `rate` instead of `keep_prob`. Rate should be set to `rate = 1 - keep_prob`.\n","_________________________________________________________________\n","Layer (type) Output Shape Param # \n","=================================================================\n","conv2d_2 (Conv2D) (None, 25, 25, 10) 170 \n","_________________________________________________________________\n","flatten_2 (Flatten) (None, 6250) 0 \n","_________________________________________________________________\n","dropout_1 (Dropout) (None, 6250) 0 \n","_________________________________________________________________\n","dense_3 (Dense) (None, 100) 625100 \n","_________________________________________________________________\n","dense_4 (Dense) (None, 10) 1010 \n","=================================================================\n","Total params: 626,280\n","Trainable params: 626,280\n","Non-trainable params: 0\n","_________________________________________________________________\n"],"name":"stdout"}]},{"metadata":{"id":"m78DB4CtKw_K","colab_type":"text"},"cell_type":"markdown","source":["The dropout layer has the same output shape as the flatten layer just before. It will drop 50% of the values from flatten, chosen on a random basis.\n","\n","Let's compile, fit, and then check the performance.\n"]},{"metadata":{"id":"9jxrFBHzKloV","colab_type":"code","outputId":"70febe93-7622-4c6f-a43c-924e64a7f235","executionInfo":{"status":"ok","timestamp":1549889726010,"user_tz":-60,"elapsed":83732,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":374}},"cell_type":"code","source":["model_do.compile(loss='categorical_crossentropy',\n"," optimizer=RMSprop(lr=0.001),\n"," metrics=['acc'])\n","\n","history_do = model_do.fit(kx_train, y_train, validation_data=(kx_test,y_test),\n"," batch_size=50, epochs=10)"],"execution_count":28,"outputs":[{"output_type":"stream","text":["Train on 60000 samples, validate on 10000 samples\n","Epoch 1/10\n","60000/60000 [==============================] - 8s 140us/step - loss: 0.1954 - acc: 0.9410 - val_loss: 0.0674 - val_acc: 0.9788\n","Epoch 2/10\n","60000/60000 [==============================] - 8s 137us/step - loss: 0.0811 - acc: 0.9750 - val_loss: 0.0569 - val_acc: 0.9802\n","Epoch 3/10\n","60000/60000 [==============================] - 8s 137us/step - loss: 0.0634 - acc: 0.9811 - val_loss: 0.0498 - val_acc: 0.9837\n","Epoch 4/10\n","60000/60000 [==============================] - 8s 138us/step - loss: 0.0545 - acc: 0.9833 - val_loss: 0.0442 - val_acc: 0.9855\n","Epoch 5/10\n","60000/60000 [==============================] - 8s 138us/step - loss: 0.0496 - acc: 0.9850 - val_loss: 0.0458 - val_acc: 0.9851\n","Epoch 6/10\n","60000/60000 [==============================] - 8s 137us/step - loss: 0.0454 - acc: 0.9861 - val_loss: 0.0417 - val_acc: 0.9860\n","Epoch 7/10\n","60000/60000 [==============================] - 8s 137us/step - loss: 0.0419 - acc: 0.9875 - val_loss: 0.0429 - val_acc: 0.9866\n","Epoch 8/10\n","60000/60000 [==============================] - 8s 138us/step - loss: 0.0399 - acc: 0.9882 - val_loss: 0.0442 - val_acc: 0.9878\n","Epoch 9/10\n","60000/60000 [==============================] - 8s 138us/step - loss: 0.0379 - acc: 0.9889 - val_loss: 0.0420 - val_acc: 0.9869\n","Epoch 10/10\n","60000/60000 [==============================] - 8s 138us/step - loss: 0.0370 - acc: 0.9891 - val_loss: 0.0453 - val_acc: 0.9864\n"],"name":"stdout"}]},{"metadata":{"id":"TFsDJTK-LnIe","colab_type":"code","outputId":"323e25c7-9c39-493e-ff55-dfee9be188eb","executionInfo":{"status":"ok","timestamp":1549889729183,"user_tz":-60,"elapsed":575,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":379}},"cell_type":"code","source":["plot_accuracy(history_do, miny=0.95)"],"execution_count":29,"outputs":[{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAecAAAFZCAYAAACizedRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzt3Xt01PWdN/D3b66Z+yWZyZWEkIgo\nAsoiCwVFbSIirtt6gWjRPmvFx7Xu2l23p9tUF0/ZpdpTd9da1uWp7LbP4+E0W4Xq1guKBi8FoVtb\nblYxAwm5kGQmmcw1k7n9nj9mMkkg5ELm8svwfp3DmdtvJt/5irzzvfw+P0EURRFEREQkGbJcN4CI\niIjGYjgTERFJDMOZiIhIYhjOREREEsNwJiIikhiGMxERkcQwnImIiCSG4UxERCQxDGeiWeCXv/wl\n1q1bh5tvvhlf+9rX0NnZCVEU8YMf/AA33XQT1q5dixdffBEALvj8888/j+9973upzxz9+L777sO/\n/Mu/YN26dfjkk0/gcrnwjW98A7fccgtuuukm/Od//mfqfcePH8cdd9yBtWvXYtOmTWhvb8czzzyD\n73//+6ljPB4PlixZgv7+/mx0D1HeUeS6AUQ0sb6+Pnz/+9/HO++8g5KSEnz3u9/Fv/3bv2H58uU4\nevQo9u7di6GhIdx2221Yvnw5Tp8+Pe7zkzl+/Dhef/11yGQybN26FRUVFdi5cyfa29uxbt063HLL\nLSgtLcXf/u3f4nvf+x7WrFmDn/3sZ9i6dSsee+wxbN68GY2NjVAoFGhubsayZctgtVqz0ENE+Yfh\nTCRxhYWF+N3vfgeVSgUAWLZsGV599VWEQiGsXbsWSqUSSqUSb7zxBjQaDX7+85+P+/z7778/4c9Z\ns2YNZLLEZNoTTzyBWCwGAJgzZw5sNhs6OjoQCoXgdruxZs0aAMCmTZtwzz33QK1Ww2Aw4ODBg7ju\nuuuwb98+3HrrrRnsFaL8xnAmkrhYLIYf//jHeO+99xCLxRAIBFBdXQ232w2j0Zg6TqvVAsAFn5+M\nyWRK3T927BieffZZnD17FjKZDE6nE/F4HG63GwaDIXWcQqGAQpH4Z+S2227Dr3/9a1x77bU4fPgw\ntm3bNqPvTXQp45ozkcS98cYbeO+99/DSSy9h7969+Ou//msAgMVigdvtTh3ncrng9/sv+LxMJkM8\nHk897/F4Lvgzv/3tb2Pt2rXYu3cv3nrrLVgsltTPHBgYSH1OJBJBR0cHAGD9+vV499138e6772Lp\n0qVjfkEgoulhOBNJXF9fH8rLy2G1WuF2u/Hmm28iEAjgpptuwuuvv45wOIxgMIh7770XJ0+evODz\ndrsdJ0+eRDweR39/Pz744IMJf+ZVV10FQRCwZ88eDA4OIhgMYu7cuSgpKcHbb78NAHj55ZfxD//w\nDwCAefPmobKyEs8++yzWrVuXlb4hylec1iaSuNtuuw2vv/466uvrMWfOHHzrW9/CX/7lX+LYsWNY\nvXo1br75ZqjVatx1111YunQpRFHE559/ft7zl112GV577TXU1dVh3rx5uOWWW9DX1zfuz3zsscfw\nzW9+E2azGQ0NDdi4cSOefPJJ7Nq1C8899xy+/e1v45//+Z9hs9nwgx/8IPW+9evX47nnnsOXv/zl\nbHUPUV4SeD1nIkqXN954A3v37sVzzz2X66YQzWqc1iaitBgcHMSLL76I++67L9dNIZr1phTOJ0+e\nRF1dHV566aXzXjtw4ADuuusubNy4Edu3b089v23bNmzcuBENDQ04evRo+lpMRJLT3NyMdevW4cYb\nb8SyZcty3RyiWW/SNedgMIitW7di5cqV477+j//4j9i5cyeKi4uxadMmrF27Fv39/Whra0NTUxMc\nDgcaGxvR1NSU9sYTkTTceOONuPHGG3PdDKK8MenIWaVS4ac//Snsdvt5r7W3t8NkMqG0tBQymQxr\n1qzBwYMHcfDgQdTV1QEAampq4PF44Pf70996IiKiPDRpOCsUChQUFIz7mtPpHFOez2q1wul0wuVy\npc6LHP08ERERTS4rG8KmsiE8Go1loSVERETSN6PznO12O1wuV+pxT08P7HY7lErlmOd7e3ths9km\n/Cy3OziTppzHZjPA6fSl9TPpfOzn7GA/Zw/7OjvYz4k+uJAZjZwrKirg9/vR0dGBaDSK5uZmrFq1\nCqtWrcLevXsBACdOnIDdboder5/JjyIiIrpkTDpyPn78OJ555hl0dnZCoVBg7969uOmmm1BRUYH6\n+no89dRTePzxxwEAt956K6qrq1FdXY2FCxeioaEBgiBgy5YtGf8iRERE+UIyFcLSPb3BKZPsYD9n\nB/s5e9jX2cF+zuC0NhEREaUfw5mIiEhiGM5EREQSw3AmIiKSGIYzERGRxDCciYiIJIbhTEREJDEM\n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\nQmCC\n","text/plain":["
"]},"metadata":{"tags":[]}},{"output_type":"display_data","data":{"text/plain":["
"]},"metadata":{"tags":[]}}]},{"metadata":{"id":"O0-8a2kPPO9J","colab_type":"text"},"cell_type":"markdown","source":["The situation is improved, but the network would still be able to overtrain, given enough time (more epochs). And we might be seeing a hint for overfitting starting at epoch 8. Anyway, let's stick with this setting for now, and let's try to make our network more complex. \n","\n","One thing we can do is to play with the hyperparameters of the dense subnetwork. Let's try to add neurons to the hidden layer.\n","\n","### Tuning the dense sub-network"]},{"metadata":{"id":"M3kiFG4L5yHy","colab_type":"code","outputId":"5d6efc55-9520-4dd7-cb58-63c98578dc3e","executionInfo":{"status":"ok","timestamp":1549889856504,"user_tz":-60,"elapsed":96230,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":663}},"cell_type":"code","source":["model_do_200 = models.Sequential()\n","model_do_200.add( layers.Conv2D(10, 4, input_shape=(28,28,1), activation='relu') )\n","model_do_200.add( layers.Flatten() )\n","model_do_200.add( layers.Dropout(rate=0.5) )\n","model_do_200.add( layers.Dense(200, activation='relu') )\n","model_do_200.add( layers.Dense(10, activation='softmax') )\n","model_do_200.summary()\n","\n","model_do_200.compile(loss='categorical_crossentropy',\n"," optimizer=RMSprop(lr=0.001),\n"," metrics=['acc'])\n","\n","history_do_200 = model_do_200.fit(kx_train, y_train, validation_data=(kx_test,y_test),\n"," batch_size=50, epochs=10)"],"execution_count":30,"outputs":[{"output_type":"stream","text":["_________________________________________________________________\n","Layer (type) Output Shape Param # \n","=================================================================\n","conv2d_3 (Conv2D) (None, 25, 25, 10) 170 \n","_________________________________________________________________\n","flatten_3 (Flatten) (None, 6250) 0 \n","_________________________________________________________________\n","dropout_2 (Dropout) (None, 6250) 0 \n","_________________________________________________________________\n","dense_5 (Dense) (None, 200) 1250200 \n","_________________________________________________________________\n","dense_6 (Dense) (None, 10) 2010 \n","=================================================================\n","Total params: 1,252,380\n","Trainable params: 1,252,380\n","Non-trainable params: 0\n","_________________________________________________________________\n","Train on 60000 samples, validate on 10000 samples\n","Epoch 1/10\n","60000/60000 [==============================] - 10s 163us/step - loss: 0.1824 - acc: 0.9442 - val_loss: 0.0821 - val_acc: 0.9735\n","Epoch 2/10\n","60000/60000 [==============================] - 9s 158us/step - loss: 0.0832 - acc: 0.9748 - val_loss: 0.0617 - val_acc: 0.9801\n","Epoch 3/10\n","60000/60000 [==============================] - 10s 159us/step - loss: 0.0642 - acc: 0.9813 - val_loss: 0.0520 - val_acc: 0.9832\n","Epoch 4/10\n","60000/60000 [==============================] - 10s 159us/step - loss: 0.0546 - acc: 0.9837 - val_loss: 0.0450 - val_acc: 0.9857\n","Epoch 5/10\n","60000/60000 [==============================] - 10s 159us/step - loss: 0.0499 - acc: 0.9852 - val_loss: 0.0587 - val_acc: 0.9841\n","Epoch 6/10\n","60000/60000 [==============================] - 10s 158us/step - loss: 0.0457 - acc: 0.9865 - val_loss: 0.0405 - val_acc: 0.9866\n","Epoch 7/10\n","60000/60000 [==============================] - 9s 158us/step - loss: 0.0449 - acc: 0.9867 - val_loss: 0.0428 - val_acc: 0.9857\n","Epoch 8/10\n","60000/60000 [==============================] - 9s 158us/step - loss: 0.0398 - acc: 0.9881 - val_loss: 0.0425 - val_acc: 0.9865\n","Epoch 9/10\n","60000/60000 [==============================] - 10s 159us/step - loss: 0.0381 - acc: 0.9886 - val_loss: 0.0418 - val_acc: 0.9874\n","Epoch 10/10\n","60000/60000 [==============================] - 10s 158us/step - loss: 0.0372 - acc: 0.9891 - val_loss: 0.0511 - val_acc: 0.9855\n"],"name":"stdout"}]},{"metadata":{"id":"Q45Q4PACYr9p","colab_type":"code","outputId":"6eae1624-2b8b-4a47-9fd1-a73bc971e287","executionInfo":{"status":"ok","timestamp":1549889861915,"user_tz":-60,"elapsed":562,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":379}},"cell_type":"code","source":["plot_accuracy(history_do_200, miny=0.95)"],"execution_count":31,"outputs":[{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAecAAAFZCAYAAACizedRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzt3Xt41PWdL/D33CeZS2YmzOSeAJFA\nBYOgpqRgURtExHVXRYiK9pQKx7ae6q7bp9u0XXvKLtU+dbfWWtZW2t091qdZEaptrbEoVi0BKiCB\nAAkEkkwSSGaSuWRmMpO5/M4fkwwJJiSQufwyeb+eh4fMZC6f+aJ553v9SQRBEEBERESiIU11AURE\nRDQaw5mIiEhkGM5EREQiw3AmIiISGYYzERGRyDCciYiIRIbhTEREJDIMZyIiIpFhOBNNA6+99hrW\nrFmD22+/HQ899BA6OzshCAJ+8IMf4LbbbsPq1avx8ssvA8C497/wwgv49re/HXvNkbcffvhh/Pu/\n/zvWrFmDw4cPw26348tf/jLuuOMO3HbbbfjVr34Ve97x48dx7733YvXq1di4cSOsViueffZZfP/7\n3489xuVyYfHixejr60tG8xClHXmqCyCiy+vt7cX3v/99/OlPf0Jubi6+9a1v4Wc/+xkqKirQ0NCA\nuro6BAIB3HXXXaioqMC5c+fGvH8ix48fxx/+8AdIpVJs3boVhYWF2LFjB6xWK9asWYM77rgDeXl5\n+Id/+Ad8+9vfxsqVK/Gf//mf2Lp1K5544gls3rwZNTU1kMvl2Lt3L2688UaYTKYktBBR+mE4E4lc\ndnY2Dh06BKVSCQC48cYb8cYbb8Dv92P16tVQKBRQKBR46623kJGRgf/6r/8a8/4///nPl32flStX\nQiqNDqZ95zvfQTgcBgAUFRXBbDajo6MDfr8fDocDK1euBABs3LgRDzzwAFQqFXQ6Herr63HzzTdj\nz549uPPOOxPYKkTpjeFMJHLhcBg/+clP8N577yEcDsPr9WLOnDlwOBzQ6/Wxx2VmZgLAuPdPJCsr\nK/b1sWPH8Nxzz+H8+fOQSqWw2WyIRCJwOBzQ6XSxx8nlcsjl0R8jd911F37/+9/jpptuwsGDB7Ft\n27YpfW6imYxzzkQi99Zbb+G9997DK6+8grq6Onz9618HABiNRjgcjtjj7HY7PB7PuPdLpVJEIpHY\n/S6Xa9z3/MY3voHVq1ejrq4Ob7/9NoxGY+w9nU5n7HWCwSA6OjoAAGvXrsW7776Ld999F0uXLh31\nCwIRXRmGM5HI9fb2oqCgACaTCQ6HA3/84x/h9Xpx22234Q9/+AMGBwfh8/nw4IMPorm5edz7LRYL\nmpubEYlE0NfXhw8++OCy77lo0SJIJBLs3r0bAwMD8Pl8mD17NnJzc/HOO+8AAHbu3Il//ud/BgDM\nnTsXxcXFeO6557BmzZqktA1RuuKwNpHI3XXXXfjDH/6AVatWoaioCE8++SS+8pWv4NixY1ixYgVu\nv/12qFQqrFu3DkuXLoUgCGhqavrU/fPmzcObb76JqqoqzJ07F3fccQd6e3vHfM8nnngCX/va12Aw\nGFBdXY0NGzbgu9/9Ll599VU8//zz+MY3voF/+7d/g9lsxg9+8IPY89auXYvnn38eX/jCF5LVPERp\nScLrORNRvLz11luoq6vD888/n+pSiKY1DmsTUVwMDAzg5ZdfxsMPP5zqUoimvUmFc3NzM6qqqvDK\nK6986nv79u3DunXrsGHDBrz44oux+7dt24YNGzaguroaDQ0N8auYiERn7969WLNmDW699VbceOON\nqS6HaNqbcM7Z5/Nh69atqKysHPP7//Iv/4IdO3YgJycHGzduxOrVq9HX14e2tjbU1taipaUFNTU1\nqK2tjXvxRCQOt956K2699dZUl0GUNibsOSuVSvziF7+AxWL51PesViuysrKQl5cHqVSKlStXor6+\nHvX19aiqqgIAlJaWwuVywePxxL96IiKiNDRhOMvlcqjV6jG/Z7PZRh3PZzKZYLPZYLfbY/siR95P\nREREE0vKgrDJLAgPhcJJqISIiEj8prTP2WKxwG63x253d3fDYrFAoVCMur+npwdms/myr+Vw+KZS\nyqeYzTrYbP1xfU36NLZzcrCdk4dtnRxs52gbjGdKPefCwkJ4PB50dHQgFAph7969WL58OZYvX466\nujoAQGNjIywWC7Ra7VTeioiIaMaYsOd8/PhxPPvss+js7IRcLkddXR1uu+02FBYWYtWqVfje976H\np556CgBw5513Ys6cOZgzZw4WLlyI6upqSCQSPP300wn/IEREROlCNCeExXt4g0MmycF2Tg62c/Kw\nrZOD7ZzAYW0iIiKKP4YzERGRyDCciYiIRIbhTEREJDIMZyIiIpFhOBMREYkMw5mIiEhkGM5EREQi\n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\n","text/plain":["
"]},"metadata":{"tags":[]}},{"output_type":"display_data","data":{"text/plain":["
"]},"metadata":{"tags":[]}}]},{"metadata":{"id":"-5gPqgYHZgmX","colab_type":"text"},"cell_type":"markdown","source":["The validation accuracy, computed on the training sample, did not improve. \n","\n","But this is already teaching us something: 200 neurons on the hidden dense layer is not better than 100. Now, we started with 100... maybe it was too much. Could 50 neurons do the job? "]},{"metadata":{"id":"yxgQob5pZFK4","colab_type":"code","outputId":"002161e2-368b-4aef-aa48-702272302440","executionInfo":{"status":"ok","timestamp":1549889967550,"user_tz":-60,"elapsed":77707,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":663}},"cell_type":"code","source":["model_do_50 = models.Sequential()\n","model_do_50.add( layers.Conv2D(10, 4, input_shape=(28,28,1), activation='relu') )\n","model_do_50.add( layers.Flatten() )\n","model_do_50.add( layers.Dropout(rate=0.5) )\n","model_do_50.add( layers.Dense(50, activation='relu') )\n","model_do_50.add( layers.Dense(10, activation='softmax') )\n","model_do_50.summary()\n","\n","model_do_50.compile(loss='categorical_crossentropy',\n"," optimizer=RMSprop(lr=0.001),\n"," metrics=['acc'])\n","\n","history_do_50 = model_do_50.fit(kx_train, y_train, validation_data=(kx_test,y_test),\n"," batch_size=50, epochs=10)"],"execution_count":32,"outputs":[{"output_type":"stream","text":["_________________________________________________________________\n","Layer (type) Output Shape Param # \n","=================================================================\n","conv2d_4 (Conv2D) (None, 25, 25, 10) 170 \n","_________________________________________________________________\n","flatten_4 (Flatten) (None, 6250) 0 \n","_________________________________________________________________\n","dropout_3 (Dropout) (None, 6250) 0 \n","_________________________________________________________________\n","dense_7 (Dense) (None, 50) 312550 \n","_________________________________________________________________\n","dense_8 (Dense) (None, 10) 510 \n","=================================================================\n","Total params: 313,230\n","Trainable params: 313,230\n","Non-trainable params: 0\n","_________________________________________________________________\n","Train on 60000 samples, validate on 10000 samples\n","Epoch 1/10\n","60000/60000 [==============================] - 8s 132us/step - loss: 0.2584 - acc: 0.9221 - val_loss: 0.1066 - val_acc: 0.9685\n","Epoch 2/10\n","60000/60000 [==============================] - 8s 127us/step - loss: 0.1117 - acc: 0.9656 - val_loss: 0.0742 - val_acc: 0.9782\n","Epoch 3/10\n","60000/60000 [==============================] - 8s 128us/step - loss: 0.0871 - acc: 0.9746 - val_loss: 0.0715 - val_acc: 0.9779\n","Epoch 4/10\n","60000/60000 [==============================] - 8s 127us/step - loss: 0.0743 - acc: 0.9779 - val_loss: 0.0646 - val_acc: 0.9792\n","Epoch 5/10\n","60000/60000 [==============================] - 8s 127us/step - loss: 0.0652 - acc: 0.9805 - val_loss: 0.0649 - val_acc: 0.9804\n","Epoch 6/10\n","60000/60000 [==============================] - 8s 127us/step - loss: 0.0608 - acc: 0.9824 - val_loss: 0.0583 - val_acc: 0.9820\n","Epoch 7/10\n","60000/60000 [==============================] - 8s 127us/step - loss: 0.0556 - acc: 0.9831 - val_loss: 0.0619 - val_acc: 0.9808\n","Epoch 8/10\n","60000/60000 [==============================] - 8s 127us/step - loss: 0.0550 - acc: 0.9835 - val_loss: 0.0575 - val_acc: 0.9830\n","Epoch 9/10\n","60000/60000 [==============================] - 8s 128us/step - loss: 0.0511 - acc: 0.9845 - val_loss: 0.0540 - val_acc: 0.9834\n","Epoch 10/10\n","60000/60000 [==============================] - 8s 127us/step - loss: 0.0494 - acc: 0.9852 - val_loss: 0.0488 - val_acc: 0.9852\n"],"name":"stdout"}]},{"metadata":{"id":"zlsPc4u7Z72l","colab_type":"code","outputId":"4635bf1b-3a42-473b-e898-5a9c068a8f98","executionInfo":{"status":"ok","timestamp":1549889978001,"user_tz":-60,"elapsed":661,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":379}},"cell_type":"code","source":["plot_accuracy(history_do_50, miny=0.95)"],"execution_count":33,"outputs":[{"output_type":"display_data","data":{"image/png":"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\nEYiIiNKLIA4dpz6Pn/70p9izZw8EQcCTTz6JgwcPQq/Xo6qqCtu3b8f69eshCAJWrVqF22+/HW63\nG//0T/+Evr4+BINBPProo1i8eHEyPg8REdGYd0HhTERERMnDHcKIiIgkhuFMREQkMWkZzuvWrcOK\nFStQXV2Nffv2pbqctPWTn/wEK1aswF133YXt27enupy05vf7UVlZic2bN6e6lLS1detW3H777bjz\nzjvx4YcfprqctOTxePDoo4/igQceQHV1NT7++ONUlyRZF73OWepG2m6U4ueTTz7B0aNHUVtbC6fT\niTvuuAM333xzqstKWy+++CKysrJSXUbacjqdWL9+Pd544w14vV688MILuP7661NdVtrZsmULSktL\n8fjjj6OrqwsPPfQQ3n333VSXJUlpF87n22506PIvunzz5s2LXQDFYDDA5/MhHA5DLpenuLL009TU\nhGPHjjEsEqiurg4LFiyATqeDTqfD2rVrU11SWjKZTDh8+DAAoK+vb9jukzRc2g1rj7TdKMWPXC5H\nZmYmAGDTpk346le/ymBOkGeeeQb//M//nOoy0lpbWxv8fj8eeeQR3Hfffairq0t1SWlp2bJl6Ojo\nQFVVFVauXInvfe97qS5JstKu53wmrhRLrB07dmDTpk347//+71SXkpZ+//vf46qrrkJRUVGqS0l7\nvb29+NnPfoaOjg48+OCD2LlzJwRBSHVZaeXNN99Efn4+NmzYgMbGRtTU1HAexXmkXTiPtt0oxc/H\nH3+MX/ziF3jllVeg13OP3ET48MMP0draig8//BCdnZ1QqVTIy8vDV77ylVSXllays7Nx9dVXQ6FQ\noLi4GFqtFj09PcjOzk51aWnl888/x6JFiwAAZWVl6O7u5umw80i7Ye3Rthul+Ojv78dPfvITvPTS\nSzAajakuJ23953/+J9544w387ne/wz333INvfvObDOYEWLRoET755BNEIhE4nU54vV6eD02AiRMn\nYu/evQCA9vZ2aLVaBvN5pF3Pec6cOSgvL0d1dXVsu1GKv3feeQdOpxPf+c53Yo8988wzyM/PT2FV\nRJcmNzcXS5YswfLlywEATzzxBGSytOu7pNyKFStQU1ODlStXIhQK4amnnkp1SZLF7TuJiIgkhn8a\nEhERSQzDmYiISGIYzkRERBLDcCYiIpIYhjMREZHEMJyJiIgkhuFMREQkMQxnIiIiifn/Ylq7YrcG\nXNMAAAAASUVORK5CYII=\n","text/plain":["
"]},"metadata":{"tags":[]}},{"output_type":"display_data","data":{"text/plain":["
"]},"metadata":{"tags":[]}}]},{"metadata":{"id":"9GasTWUcbsBY","colab_type":"text"},"cell_type":"markdown","source":["This time, the accuracy on the training sample plateau around 98.5%, because 50 neurons do not appear to be enough to capture all the information from the training samples. Let's go back to 100 neurons as our baseline. \n","\n","As an exercise, you could check what happens if you add a second hidden layer, with e.g. 50 neurons in both hidden layers. \n","\n","You will probably see that there is nothing to gain in playing this game. And if you manage to improve the performance in this way, please give details in the comments! \n","\n","Another way to improve performance is to act on the first stage of the network. Usually, image recognition is done with networks featuring stacked convolutional layers. Let's try that. \n","\n","### Stacked convolution layers"]},{"metadata":{"id":"_pwU79FMfGik","colab_type":"text"},"cell_type":"markdown","source":["In the model below, we stack a second convolutional layer after the first one. Directly stacking it on top of the first one would not bring us anything, we could as well try and extract more than 10 features. Instead, we perform a max pooling in a window of 2x2 pixels and then apply the new convolutional layer on the output of the max pooling layer. In this way, the second convolutional layer will learn longer-distance features. We also increase the number of features to be extracted from 10 to 20. "]},{"metadata":{"id":"_pxQOe3IbmnD","colab_type":"code","outputId":"306f50d8-e159-487b-901d-7a37359f2359","executionInfo":{"status":"ok","timestamp":1549890197877,"user_tz":-60,"elapsed":83853,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":731}},"cell_type":"code","source":["model_2c = models.Sequential()\n","model_2c.add( layers.Conv2D(10, 4, input_shape=(28,28,1), activation='relu') )\n","model_2c.add( layers.MaxPooling2D(2) )\n","model_2c.add( layers.Conv2D(20, 4, activation='relu') )\n","model_2c.add( layers.Flatten() )\n","model_2c.add( layers.Dropout(rate=0.5) )\n","model_2c.add( layers.Dense(100, activation='relu') )\n","model_2c.add( layers.Dense(10, activation='softmax') )\n","model_2c.summary()\n","\n","model_2c.compile(loss='categorical_crossentropy',\n"," optimizer=RMSprop(lr=0.001),\n"," metrics=['acc'])\n","\n","history_2c = model_2c.fit(kx_train, y_train, validation_data=(kx_test,y_test),\n"," batch_size=50, epochs=10)"],"execution_count":34,"outputs":[{"output_type":"stream","text":["_________________________________________________________________\n","Layer (type) Output Shape Param # \n","=================================================================\n","conv2d_5 (Conv2D) (None, 25, 25, 10) 170 \n","_________________________________________________________________\n","max_pooling2d_1 (MaxPooling2 (None, 12, 12, 10) 0 \n","_________________________________________________________________\n","conv2d_6 (Conv2D) (None, 9, 9, 20) 3220 \n","_________________________________________________________________\n","flatten_5 (Flatten) (None, 1620) 0 \n","_________________________________________________________________\n","dropout_4 (Dropout) (None, 1620) 0 \n","_________________________________________________________________\n","dense_9 (Dense) (None, 100) 162100 \n","_________________________________________________________________\n","dense_10 (Dense) (None, 10) 1010 \n","=================================================================\n","Total params: 166,500\n","Trainable params: 166,500\n","Non-trainable params: 0\n","_________________________________________________________________\n","Train on 60000 samples, validate on 10000 samples\n","Epoch 1/10\n","60000/60000 [==============================] - 9s 143us/step - loss: 0.2109 - acc: 0.9363 - val_loss: 0.0624 - val_acc: 0.9802\n","Epoch 2/10\n","60000/60000 [==============================] - 8s 138us/step - loss: 0.0792 - acc: 0.9760 - val_loss: 0.0382 - val_acc: 0.9868\n","Epoch 3/10\n","60000/60000 [==============================] - 8s 137us/step - loss: 0.0622 - acc: 0.9813 - val_loss: 0.0332 - val_acc: 0.9891\n","Epoch 4/10\n","60000/60000 [==============================] - 8s 138us/step - loss: 0.0529 - acc: 0.9837 - val_loss: 0.0377 - val_acc: 0.9881\n","Epoch 5/10\n","60000/60000 [==============================] - 8s 137us/step - loss: 0.0473 - acc: 0.9858 - val_loss: 0.0286 - val_acc: 0.9914\n","Epoch 6/10\n","60000/60000 [==============================] - 8s 138us/step - loss: 0.0457 - acc: 0.9862 - val_loss: 0.0271 - val_acc: 0.9902\n","Epoch 7/10\n","60000/60000 [==============================] - 8s 138us/step - loss: 0.0428 - acc: 0.9871 - val_loss: 0.0350 - val_acc: 0.9894\n","Epoch 8/10\n","60000/60000 [==============================] - 8s 138us/step - loss: 0.0407 - acc: 0.9880 - val_loss: 0.0282 - val_acc: 0.9915\n","Epoch 9/10\n","60000/60000 [==============================] - 8s 137us/step - loss: 0.0381 - acc: 0.9888 - val_loss: 0.0284 - val_acc: 0.9906\n","Epoch 10/10\n","60000/60000 [==============================] - 8s 139us/step - loss: 0.0357 - acc: 0.9891 - val_loss: 0.0317 - val_acc: 0.9907\n"],"name":"stdout"}]},{"metadata":{"id":"eV8_ARDugAtx","colab_type":"text"},"cell_type":"markdown","source":["We achieved a test accuracy over 99%, which is great! but can we do even better? \n","\n","### To 100% and beyond!\n","\n","After one hour of optimizations, I converged to this network: "]},{"metadata":{"id":"AoubrswNfqVW","colab_type":"code","outputId":"b5325b6d-e0bd-4cff-a305-7cb1cdd1f9ea","executionInfo":{"status":"ok","timestamp":1549890641603,"user_tz":-60,"elapsed":135731,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":1785}},"cell_type":"code","source":["model_best = models.Sequential()\n","model_best.add( layers.Conv2D(16, 4, input_shape=(28,28,1), activation='relu') )\n","model_best.add( layers.MaxPooling2D(2) )\n","model_best.add( layers.Conv2D(32, 4, activation='relu') )\n","model_best.add( layers.MaxPooling2D(2) )\n","model_best.add( layers.Flatten() )\n","model_best.add( layers.Dropout(0.4) )\n","model_best.add( layers.Dense(100, activation='relu') )\n","model_best.add( layers.Dense(10, activation='softmax') )\n","model_best.summary()\n","model_best.compile(loss='categorical_crossentropy',\n"," optimizer=RMSprop(lr=0.001),\n"," metrics=['acc'])\n","\n","history_best = model_best.fit(kx_train, y_train, validation_data=(kx_test,y_test),\n"," batch_size=200, epochs=40)"],"execution_count":35,"outputs":[{"output_type":"stream","text":["_________________________________________________________________\n","Layer (type) Output Shape Param # \n","=================================================================\n","conv2d_7 (Conv2D) (None, 25, 25, 16) 272 \n","_________________________________________________________________\n","max_pooling2d_2 (MaxPooling2 (None, 12, 12, 16) 0 \n","_________________________________________________________________\n","conv2d_8 (Conv2D) (None, 9, 9, 32) 8224 \n","_________________________________________________________________\n","max_pooling2d_3 (MaxPooling2 (None, 4, 4, 32) 0 \n","_________________________________________________________________\n","flatten_6 (Flatten) (None, 512) 0 \n","_________________________________________________________________\n","dropout_5 (Dropout) (None, 512) 0 \n","_________________________________________________________________\n","dense_11 (Dense) (None, 100) 51300 \n","_________________________________________________________________\n","dense_12 (Dense) (None, 10) 1010 \n","=================================================================\n","Total params: 60,806\n","Trainable params: 60,806\n","Non-trainable params: 0\n","_________________________________________________________________\n","Train on 60000 samples, validate on 10000 samples\n","Epoch 1/40\n","60000/60000 [==============================] - 4s 63us/step - loss: 0.3473 - acc: 0.8939 - val_loss: 0.0924 - val_acc: 0.9729\n","Epoch 2/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.1145 - acc: 0.9645 - val_loss: 0.0594 - val_acc: 0.9807\n","Epoch 3/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0830 - acc: 0.9748 - val_loss: 0.0436 - val_acc: 0.9859\n","Epoch 4/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0692 - acc: 0.9786 - val_loss: 0.0357 - val_acc: 0.9878\n","Epoch 5/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0596 - acc: 0.9813 - val_loss: 0.0314 - val_acc: 0.9885\n","Epoch 6/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0532 - acc: 0.9830 - val_loss: 0.0293 - val_acc: 0.9904\n","Epoch 7/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0482 - acc: 0.9856 - val_loss: 0.0272 - val_acc: 0.9909\n","Epoch 8/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0443 - acc: 0.9859 - val_loss: 0.0253 - val_acc: 0.9922\n","Epoch 9/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0412 - acc: 0.9867 - val_loss: 0.0263 - val_acc: 0.9906\n","Epoch 10/40\n","60000/60000 [==============================] - 3s 55us/step - loss: 0.0373 - acc: 0.9884 - val_loss: 0.0239 - val_acc: 0.9926\n","Epoch 11/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0375 - acc: 0.9882 - val_loss: 0.0226 - val_acc: 0.9923\n","Epoch 12/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0328 - acc: 0.9896 - val_loss: 0.0204 - val_acc: 0.9926\n","Epoch 13/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0332 - acc: 0.9894 - val_loss: 0.0254 - val_acc: 0.9914\n","Epoch 14/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0302 - acc: 0.9904 - val_loss: 0.0223 - val_acc: 0.9923\n","Epoch 15/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0297 - acc: 0.9903 - val_loss: 0.0202 - val_acc: 0.9929\n","Epoch 16/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0295 - acc: 0.9905 - val_loss: 0.0206 - val_acc: 0.9921\n","Epoch 17/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0274 - acc: 0.9914 - val_loss: 0.0205 - val_acc: 0.9937\n","Epoch 18/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0256 - acc: 0.9920 - val_loss: 0.0218 - val_acc: 0.9925\n","Epoch 19/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0250 - acc: 0.9922 - val_loss: 0.0193 - val_acc: 0.9942\n","Epoch 20/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0243 - acc: 0.9923 - val_loss: 0.0203 - val_acc: 0.9930\n","Epoch 21/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0241 - acc: 0.9923 - val_loss: 0.0194 - val_acc: 0.9934\n","Epoch 22/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0225 - acc: 0.9929 - val_loss: 0.0227 - val_acc: 0.9926\n","Epoch 23/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0225 - acc: 0.9927 - val_loss: 0.0196 - val_acc: 0.9934\n","Epoch 24/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0223 - acc: 0.9934 - val_loss: 0.0192 - val_acc: 0.9941\n","Epoch 25/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0206 - acc: 0.9935 - val_loss: 0.0196 - val_acc: 0.9936\n","Epoch 26/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0201 - acc: 0.9937 - val_loss: 0.0197 - val_acc: 0.9942\n","Epoch 27/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0211 - acc: 0.9931 - val_loss: 0.0200 - val_acc: 0.9941\n","Epoch 28/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0190 - acc: 0.9939 - val_loss: 0.0221 - val_acc: 0.9933\n","Epoch 29/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0193 - acc: 0.9937 - val_loss: 0.0188 - val_acc: 0.9939\n","Epoch 30/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0198 - acc: 0.9938 - val_loss: 0.0228 - val_acc: 0.9926\n","Epoch 31/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0175 - acc: 0.9944 - val_loss: 0.0188 - val_acc: 0.9935\n","Epoch 32/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0176 - acc: 0.9945 - val_loss: 0.0194 - val_acc: 0.9934\n","Epoch 33/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0165 - acc: 0.9944 - val_loss: 0.0192 - val_acc: 0.9937\n","Epoch 34/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0175 - acc: 0.9943 - val_loss: 0.0203 - val_acc: 0.9939\n","Epoch 35/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0173 - acc: 0.9944 - val_loss: 0.0205 - val_acc: 0.9937\n","Epoch 36/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0178 - acc: 0.9938 - val_loss: 0.0201 - val_acc: 0.9937\n","Epoch 37/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0162 - acc: 0.9947 - val_loss: 0.0202 - val_acc: 0.9941\n","Epoch 38/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0161 - acc: 0.9946 - val_loss: 0.0193 - val_acc: 0.9943\n","Epoch 39/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0146 - acc: 0.9952 - val_loss: 0.0215 - val_acc: 0.9936\n","Epoch 40/40\n","60000/60000 [==============================] - 3s 56us/step - loss: 0.0151 - acc: 0.9947 - val_loss: 0.0206 - val_acc: 0.9938\n"],"name":"stdout"}]},{"metadata":{"id":"liMqdVECgyYW","colab_type":"code","outputId":"fed0cff8-050f-4f15-adc6-0199924b383a","executionInfo":{"status":"ok","timestamp":1549890649186,"user_tz":-60,"elapsed":685,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":379}},"cell_type":"code","source":["plot_accuracy(history_best, miny=0.95)"],"execution_count":36,"outputs":[{"output_type":"display_data","data":{"image/png":"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\nAABJRU5ErkJggg==\n","text/plain":["
"]},"metadata":{"tags":[]}},{"output_type":"display_data","data":{"text/plain":["
"]},"metadata":{"tags":[]}}]},{"metadata":{"id":"eZ0EWjFQiK5r","colab_type":"text"},"cell_type":"markdown","source":["The accuracy on the training sample now plateaus around 99.4%. \n","\n","In this attempt: \n","\n","* I extract more features from the two convolutional layers\n","* I added a second max pooling layer to reduce complexity before the dense network\n","* I lowered the dropout rate to 40%, and I checked that overfitting appears if I go lower\n","* I increased the batch size to train faster, and trained for 40 epochs. I checked that more epochs are not useful \n","\n","**Can you do even better? If yes please tell us in the comments, I'd love to hear from it.**\n","\n","Obviously, we can't get an accuracy larger than 100%... And you really need to fight for 0.1% at the end! Moreover, when you're at this stage, you need to be careful about the performance metric. For instance:\n","\n","* what is the precision on the accuracy?\n","* the accuracy varies as a function of the epoch. What are we supposed to do with that? \n","\n","I'll come back to these questions in a future post. \n","\n","For now, let's have a look at the digits we did not manage to classify. \n","\n","## Learning from the failures\n","\n","First, we evaluate the predictions of the network for the whole testing sample, and we get the predicted and true digits for this sample by choosing the digit with maximum probability. "]},{"metadata":{"id":"OZeKWdchh0w3","colab_type":"code","outputId":"34f19488-7dcd-43cf-c6c4-c883a2e770d2","executionInfo":{"status":"ok","timestamp":1549890806354,"user_tz":-60,"elapsed":1015,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":51}},"cell_type":"code","source":["preds = model_best.predict(kx_test)\n","pred_digits = np.argmax(preds, axis=1)\n","y_digits = np.argmax(y_test, axis=1)\n","print pred_digits\n","print y_digits"],"execution_count":37,"outputs":[{"output_type":"stream","text":["[7 2 1 ... 4 5 6]\n","[7 2 1 ... 4 5 6]\n"],"name":"stdout"}]},{"metadata":{"id":"-9iTUr9nlNIu","colab_type":"text"},"cell_type":"markdown","source":["Then we extract the images, the true labels, and the predicted labels for the misclassified digits: "]},{"metadata":{"id":"HzP31z1mkolq","colab_type":"code","outputId":"2b8b2cb6-73bf-4b30-d2ee-a07b25d95655","executionInfo":{"status":"ok","timestamp":1549890810107,"user_tz":-60,"elapsed":416,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":34}},"cell_type":"code","source":["mispred_img = x_test[pred_digits!=y_digits]\n","mispred_true = y_digits[pred_digits!=y_digits]\n","mispred_pred = pred_digits[pred_digits!=y_digits]\n","print 'number of misclassified digits:', mispred_img.shape[0]"],"execution_count":38,"outputs":[{"output_type":"stream","text":["number of misclassified digits: 62\n"],"name":"stdout"}]},{"metadata":{"id":"trGdOX5_lmPL","colab_type":"text"},"cell_type":"markdown","source":["Finally, let's have a look: "]},{"metadata":{"id":"6PrmA-_GlUx6","colab_type":"code","colab":{}},"cell_type":"code","source":["def plot_img_results(array, true, pred, i, n=1):\n"," # plot the image and the target for sample i\n"," ncols = 5\n"," nrows = n/ncols + 1\n"," fig = plt.figure( figsize=(ncols*1.5, nrows*1.5), dpi=90)\n"," for j in range(n):\n"," index = j+i\n"," plt.subplot(nrows,ncols, j+1)\n"," plt.imshow(array[index])\n"," plt.title('true: {} pred: {}'.format(true[index], pred[index]))\n"," plt.axis('off')"],"execution_count":0,"outputs":[]},{"metadata":{"id":"PACOrciTlpDS","colab_type":"code","outputId":"370062a0-2536-484c-ebb9-113ef2b4ee1a","executionInfo":{"status":"ok","timestamp":1549890818038,"user_tz":-60,"elapsed":3656,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}},"colab":{"base_uri":"https://localhost:8080/","height":1399}},"cell_type":"code","source":["plot_img_results(mispred_img, mispred_true, mispred_pred, 0, len(mispred_img))"],"execution_count":40,"outputs":[{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAjMAAAVmCAYAAABstj8IAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAN1wAADdcBQiibeAAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3Xl4TFfjB/BvGgmJrXZBCNKk0pJU\n4o2tIlFii1I7CbJYWnstodSudlJLbaXWVym1VSilqCKSqH2tIPZYEkJiEsn9/eHnvGdiJpmsM1e+\nn+fxPN+ZuffOmTmZmeOee84xUxRFAREREZFKvWfsAhARERFlBxszREREpGpszBAREZGqsTFDRERE\nqsbGDBEREakaGzNERESkamzMEBERkaqxMUNERESqxsaMiZo3bx68vLyMXQwyEOtLfYYPHw4/Pz9j\nF4MMxM+YuuR1fRmlMRMREYFjx44Z46n1iouLQ8OGDVX75RYXF4cJEybA09MTzs7O6NSpE06fPp0j\nxzal+jp16hS6dOkCZ2dn1K1bF+PGjUNiYqKxi5VpKSkpmDdvHry9vfHJJ5+gbdu22LlzZ44d31Tq\n7Pnz55g0aRIaN26MTz75BM2bN8ePP/5o7GJlyePHjzF69Gg0bNgQtWvXRqdOnXLsPTaV+nr16hUW\nLlyIpk2bwsXFBd7e3li3bp2xi5VlT548waBBg+Do6IiwsLAcO66p1Jcsv/+GGaUxs3r1ahw/ftwY\nT63XlClT8PLlS2MXI8tGjBiBf/75Bz/99BNOnDiBtm3bIjAwEI8ePcr2sU2lvqKjo+Hv749WrVrh\n+PHj+PnnnxEVFYVt27YZu2iZtnjxYmzbtg1z585FWFgYBgwYgNGjR+fYF66p1NnEiRMRFhaGVatW\nISIiAhMmTMCCBQuwZcsWYxct07766ivExMRg69atOHbsGNzd3fHVV1/hwYMH2T62qdTX999/jy1b\ntmDBggWIjIzEiBEj8N1332H//v3GLlqmRUZGok2bNihevHiOH9tU6kuW33/D8rwx06VLF+zduxfL\nly+Hm5sbAMDPzw+TJk1CYGAgXFxckJKSAj8/PwwfPlxr365du2LUqFHi9vHjx9GtWze4ubmhTp06\nGDp0KB4+fCgeHzt2LHr27Jlhmf744w+cOHECHTp0SHe7sLAwODo64tChQ2jTpg1q1qyJpk2barXQ\nvby8sGDBArRv3x7e3t4AgJcvX2LKlCnw8vJCrVq10KJFC60f4NTUVISEhKBRo0ZwdXVFcHAwNBqN\n1nMHBARg9OjROsuVkJCAv/76C71794adnR0KFiyIbt26wd7eHlu3bs3w9afHlOprxYoVcHNzg5+f\nH6ysrGBnZ4d169aha9euOrc31fpSFAXr16+Hv78/PvroI1haWuKzzz6Dh4cH1qxZo/f1G8qU6uzc\nuXNo3Lgx7OzsYG5ujrp168LR0RFnzpzRuf2vv/4KZ2dnHDp0CN7e3qhZsyZ8fHxw6dIlsY2joyNW\nrVoFb29v9OrVCwAQGxuL4OBgeHh4wNnZGe3atcOhQ4fEPklJSRg/fjzq1asHd3d3TJs2DWmXpfP2\n9sbChQt1lis+Ph7Vq1fHN998gzJlyqBgwYLo3bs3EhIS9L4WQ5lSfRUoUACjR4/Ghx9+CHNzc3z2\n2Wf44IMP9J6FMNXPGPD6TNqiRYsQFBSkd5usMKX6eoO/YQAUI/D09FTmzp0rbvv6+ip169ZV9uzZ\no6SkpIj7hg0bprVfly5dlODgYEVRFOXq1atKrVq1lA0bNihJSUlKTEyMEhAQoPj5+WWqLLGxsUqD\nBg2UgwcPKvPnz1d8fX31bnv8+HHFwcFB8fX1VaKjo5UXL14oU6dOVZydnZX4+Hjx2jw8PJTw8HAl\nNTVVURRFGTFihNKhQwclOjpaSU5OVvbu3as4OTkpJ06cUBRFUbZu3ap8/PHHytGjR5WkpCRlz549\nSu3atRVPT0+DXsOLFy+UDz/8UNm+fbvW/X379lUGDhyYqfdDF1Opr2bNminTpk1Thg4dqri6uopy\nJSUl6dzeVOvrxo0bioODgxIZGal1/5IlS5QGDRoY/H6kx1TqbN68eYq3t7fy77//KikpKcqJEycU\nFxcX5ciRIzq337Jli+Lg4KAMHDhQefTokfLs2TNl0KBBioeHhyi3g4OD0qpVK+Xq1auizrp166b0\n7dtXefjwoaLRaJR169YpTk5OSnR0tKIoirJw4UKlbt26yoULFxSNRqOsWbNGcXFxSffznpFz584p\nDg4OypkzZ7J8jDdMpb7S0mg0St26dZUff/xR5+Om+hmTvfm8HT9+PIvvwttMqb74G/aayVwAbGNj\nA29vb7z3nmFF2rRpE2rUqIEuXbrAwsICZcqUwciRIxEWFobo6GiDn3fy5Mlo2LAhPDw8DN7H19cX\n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\nzHphTQzPzBAREZGqsTFDREREqpYvupnkU55y90SBAv8bmb5y5UqRly1bJvKpU6dElk+XGkp+e2fP\nni3y119/nelj5XcPHz4U2cHBQeT4+Hid26f909ZXf0WKFBF51apVIrdt2zYrxSTKF7799lut21On\nTtW5Xbly5UQ+c+aMyGXKlMmdgqnY8+fPRX7y5InIlStX1rn9rVu3RJa7yP/zn/+IfOPGDZEnT56s\ntf+YMWOyXFZTwzMzREREpGpszBAREZGq5YsZgL/55huR5a6e6tWri5zeqCVDyFee79ixI1vHov9J\nSEgQ+auvvhJZX9dSVsinduXRZx06dBBZ7n4i05GYmChycnKyzm1iY2NF/vvvv0WWuz8AoHHjxiKb\nm5vnUAnfLX/++afIM2fONGifbt26icyupfTJXd5y1sfW1lbn/QsXLhRZ7i6/cuWK1nby76E8IleN\neGaGiIiIVI2NGSIiIlK1d7abSb6yftasWSLLI1rkrqWaNWuK/OOPP4osn8ZLOxpm+fLlIsuTHcnq\n168vcuvWrQ0qe3734sULkQMCAkTeunVrrj/3y5cvRX7w4EGuPx/9j7ywHgBcunRJZHmCymPHjoks\nf4bj4uKy9fzy517+u8vv5FGEQUFBIuvr1gOAzz77TOSxY8fmTsFIr5YtW4o8btw4kefOnau13fnz\n50X28fER2dHRMRdLlzt4ZoaIiIhUjY0ZIiIiUrV3tpupYsWKGW4jj0Bas2aNyEWLFtW5fdq1SBYs\nWCCyfCq2Vq1aIv/+++8iFy5cOMMykfaIiS1btmS4vYWFhcgrVqwQWV6rBAA2b94scnBwcHaKSAZ4\n9eqVyFevXhV548aNIstdO8+ePdPa393dXWRvb2+Re/fuLXLVqlVFNmT0h+z27dtat+Uu5fzezSTX\nnfxeXL9+Xe8+cje8XEclSpTI4dJRZsjdfPLnEADWrl0r8vTp00X+6aefcr9gOYxnZoiIiEjV2Jgh\nIiIiVXtnu5l69eolsr+/v85tnJ2dRZ4yZYrI8igKeQK8tKOZateuLbJ8xbg8uRtl3vz58zO1vVyP\n8gRdacmTJFLukEcUjRw5UuTVq1eLLI/wk7t369atq3Usa2vr3CiisGHDBq3b6f3t5Aepqakit2jR\nQuT9+/cbtP/gwYNF7tixo8jyGmk///yzyBcvXhR50KBBIpcuXdrAElNmNW/eXOu23M1kaWmZ18XJ\nUTwzQ0RERKrGxgwRERGp2jvbzSST16P49NNPRU67HLou8toV8lo9AGBjYyOy2k/Rqc0nn3wi8p49\newzaZ+nSpZl6jvLly2dq+/xEo9GIvGzZMpFHjx4t8sCBA0W+c+eOyMbsRpC7TH777Tetx3bv3p3X\nxTE6edSS3D1uSNdSv379tG7LE5XK5K4MuftfduLECZEN/TxT5hUooP8nPyUlJQ9LkvN4ZoaIiIhU\njY0ZIiIiUrV80c30wQcfiOzl5SWyPHmXPk+ePBE57dovVapUyYHSUVbIa2m9//77Orc5efKk1u1D\nhw5l6jk4sZ42uWupS5cuIp86dUrkw4cPiyyP9jMmeaIweeLEAwcOaG1nbm6eZ2UyJnlNpZCQEJHl\nCQz1adasmchz5szReszKykpkec0feQI9feSRVGQc586dM3YRsoVnZoiIiEjV2JghIiIiVcsX3Uwy\nefKu/v37i7x+/XqRd+3aJfK0adNEnjlzptaxGjZsqHM7V1dXkeV1g0i/u3fviixPWqiPIV18x48f\n17qdlJSU4T4uLi4iV6hQIcPt33XPnz8XWR7NV6pUKZEvXLggstzVYCoqV64sstw1kl+6ldKSu0/l\nbiZ9ihcvLrK8Pl3aupa74bt37y6y3K2lj9x9RbnHzc1N72M3btwQWf4O/vDDD3OzSDmGZ2aIiIhI\n1diYISIiIlXLd91McrdPgwYNdOYXL16ILF+V37JlS61jySM35P379OmjM8sTvZG227dviyx3Oekj\nn9KWJ/5auHChyMOGDdPaJ+3aWrrII9+KFSuW4fbvuvDwcJEfPXok8rZt20QuVKhQhsd5+fKlyImJ\niSKXKFEiu0XMUMGCBXP9OUydPLJPXh9JnyJFioh87NgxkatVqyZy2knWxowZI/KZM2cyVT65TPIa\nXfXq1RM5v3YL5qSbN2/qfUyuTzVOGMozM0RERKRqbMwQERGRqrExQ0RERKpmpiiKYuxCqJU8JLVj\nx44iX7x4UWT57ZVn2AwMDMzl0qlX06ZNRU47S2tmpJ1V9L33Mm67R0VFicwZnoEePXqI7O7uLrI8\nrYEh5AUGt2/fLnKbNm1E9vPz09pHnvpAvu7FkGufSJudnZ3I0dHROrcpXLiwyPLCjzVq1NC5/cqV\nK7VuBwUFZaOEuo0cOVLk6dOn5/jx85tffvlF63bnzp11bidfJyV/7k0Zz8wQERGRqrExQ0RERKrG\nbqYckpCQILJ8Gn3gwIEiP3v2TOQVK1aI7OvrKzJPoWvPBpqdbqa0f9qGvLfXrl0Tmd1M2guzyu/n\nn3/+meVjyp8DefHP+fPna223f/9+keVuKnnWWg6f10+e4kCeckAeGi/7448/RPbw8NC5zenTp0Vu\n1KiR1mPyd2BOqVq1qsjyZ5OyxtBuJk9PT5Hl2fFl8izgpjDTPc/MEBERkaqxMUNERESqxm6mXCaf\nGnVwcNC5jbyYnyku1JfX5JEU9evXz/Jx2M2UfQ8ePBDZ1tZW5FGjRoksL1woj4jJrLSjz06dOiWy\n3AUld+P+/fffIjs5OWX5ud9F9+/fF9ne3l7k3OgOyknywpZbtmwRWe7ypPTJs6Lv27dPZHlBZAA4\ncuRIlp/jP//5j8hHjx4V2ZBRo7mBZ2aIiIhI1diYISIiIlVTXTdT2lPR8uk0S0vLvC5OhuTFu+SF\nJuUFLDdu3Chyhw4d8qZgJiwpKUlkudtn3rx5OreXJ3jSN2EhYFg301dffSVy2tE1+d2OHTtEDggI\nEFl+X+WFVf39/UWWuzmya+bMmSLLC4vKk1jKCyWS9ugUeQSZMbVv317ksmXLiix3Ycpdm/Q2ebFj\n+Xdk165dIuubJDG75O6kc+fOifzhhx/myvNlhGdmiIiISNXYmCEiIiJVK2DsAmTWwYMHtW7LIynm\nzJkjctoJnYzF3Nxc5AIFdL/d+iaxyq/k7kJ5XZhly5bp3D4mJkbkChUqZOu5Hz58mK3932XyOkqP\nHj0S+b///a/Iu3fvFrl27doiy3/j8jpmhpJPlcsjJ8aMGSMyu5b027Ztm8jyels7d+7MleeTP4dt\n27YVWV5/Sx4Nw8lC06fRaEQeNmyYyIsXLxY5J68YkS932Lx5s8hffvmlyD179hTZWF1LMp6ZISIi\nIlVjY4aIiIhUTXWjmV6+fKl1u2HDhiKfPHlSZPlUqnwqWl6jJC88fvxYZHnSvNjYWJHlNVE4MVTm\nyadg5UnbsjKaqXTp0iJHRESIXKlSpewUMV+SJ2eTu6XkEWcyeS0mAGjSpInO7ZydnUUuV66cyOyq\nMIw8wlLuVpW/ey5dupTp486ePVvkfv36iWxtbZ3pY5E2+XdvypQpIsvrlLm6uoosd+etXbtW5L/+\n+kvruD4+PiLLo0UrVqwo8p07d0SWJxKVL6EwBTwzQ0RERKrGxgwRERGpmuq6mdKSJ1gLDAwUWb4C\n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\njs8//xzVqlVD4cKF0bNnT9SsWRPbt29P9/Wnx5jq7PLly/jkk09QrVo1mJqaomnTprCzs8PFixdT\n3X7btm1wcHDA0aNH4ePjA3t7e7Rv3x7Xrl0T29jZ2WHt2rXw8fFB3759AQDPnj1DcHAw3N3d4eDg\ngE6dOuHo0aNiH41Gg4kTJ8LFxQVNmjTB9OnT3zvb4OPjg8WLF6darj///BM3btzAkCFDUKFCBRQt\nWhRDhw5FUlISDh06pPf1G8KY6qtdu3aYOnUqrKysYGpqihYtWuCjjz7C1atXU93eWOsrJxlTfeWn\n37B//vkHS5YsQVBQkN5t0qTkAQ8PD2Xu3Lnitr+/v9K0aVNl//79ilarFfeNHDlSZz8/Pz8lODhY\nURRFuXnzptKgQQNl48aNikajUf766y+lX79+SkBAgMHlcHFxUZYuXapzX2hoqPLZZ5+luv3JkycV\nW1tbxd/fX4mNjVVevnypTJs2TXFwcFDi4+PFa3N3d1fOnDmjJCcnK4qiKKNHj1a6dOmixMbGKomJ\niUp4eLhSt25d5fTp04qiKMr27duV+vXrKydOnFA0Go2yf/9+xdHRUfHw8DD4tYwaNUrx8/NT7t+/\nryQlJSn79u1THBwclBs3bhh8DH2Mpb4URVGePXumNG/eXImIiFAWLlyo+Pv7693WWOvr5cuXSu3a\ntZVff/1V5/4BAwYoX3/9dYbeD32Mpc7mzZun+Pj4KH/88Yei1WqV06dPKw0bNlSOHTuW6vZbt25V\nbG1tla+//lr5+++/lRcvXihDhgxR3N3dRbltbW0VX19f5ebNm6LOevbsqQwYMEB58uSJkpCQoGzY\nsEGpW7euEhsbqyiKoixevFhp2rSpcuXKFSUhIUH58ccflYYNG6b59yP7448/FFtbW+Xs2bM697dr\n106ZMWOGwe+HPsZSX7LXr18rv/76q9KwYUPxt5+SsdaXorx9T4OCgpQ2bdoojo6OSqdOnZTffvst\nU+9Fasc2hvrKT79h79y+fVuxtbVVTp48maH9jOYCYCsrK/j4+OCDDwwr0ubNm1GnTh34+fnBzMwM\n5cqVw5gxY3Dq1CnExsYadAxvb29s3LgRFy9eRGJiIqKiohAeHo5nz56luZ+/vz9sbGxgaWmJQYMG\nISEhAZGRkeJxe3t7ODs7w8TEBHFxcdi1axeGDh0KGxsbFCpUCK1atYKnpyc2b94MANi7dy/c3Nzg\n4uICMzMz+Pj4iBa/oUJDQ2FhYQEPDw/Uq1cPISEh+O6771CrVq0MHcdQeVFfwNvX6erqCnd3d4P3\nMbb6srS0hKurK1auXIlbt25Bo9Fg3759iI6OTvdvLyvyos6GDh2KBg0aoG3btqhbty4CAwMxdOhQ\nNG/ePM39vvjiC5QpUwbFixfHl19+iYcPH+qcZXR1dUXNmjVhYmKCa9eu4ezZswgODkbZsmVhbm6O\nXr16wc7ODlu3bgXwts7at2+POnXqwNzcHAEBAahcubJBrwEAqlWrBltbWyxYsAAPHz7EmzdvsGHD\nBty9exdxcXEGHycj8uozBrz9X7SDgwNmz56N77//Ho0bN05ze2OrLwCwtbVFjRo1sGHDBhw9ehSt\nWrXC4MGDcf78+Qwdx1D8Dcvab1hW5ck1M6mxsbHJ0PYxMTG4cOEC7O3tde43NTXFvXv3UKVKlXSP\nMWbMGJiammLw4MFISEiAq6srunXrhl27dqW530cffSRyyZIlUaJECTx8+DDV13Lnzh0kJydj4MCB\nMDExEfcrigIHBwcAby8sbNasmc5z1KxZEzdv3kz3NbwzbNgwJCcn4+DBgyhbtiwiIyMRHByMUqVK\n5Ui/bl7U17vupT179mTouY2xvmbOnInp06cjICAAJiYm8Pb2Rvv27XH79u0MvbaMyIs6Cw0NxfXr\n17Fr1y5UrVoV586dw7Bhw1CyZEl06tRJ735ynVlbWwN4+76/qwP5tcTExAAAOnTooHMMRVFQs2ZN\nAMCDBw/Ecd6pWbMm/vnnn3RfA/D2NS9duhTTpk1Dx44dYWFhgU8//RQtWrRAoUI58zWaF/X1zurV\nq/H69WscOXIEwcHBmDx5Mtq2bat3e2OrLwAICwvTuf3ll18iPDwcmzdvRsOGDQ0+jqH4G5a178Ss\nMprGjJmZWbrbJCcni1ykSBF88sknWLZsWaaf09LSEuPHj8f48ePFfTNnzkSlSpXS3E+r1ercVhRF\npzUuv5Z3FwZu3rwZdevWTfV4Go3mvda8/FrTc+vWLRw5cgRbtmwRf4Q+Pj7Yvn07Nm7cmCONmdyu\nr3ejf0JDQ1GiRIkM7Wts9QUApUuXxuzZs3XuGzJkSLp/e1mR23X2+vVrbNy4Ed9//z1sbW0BAC4u\nLmjfvj02bNiQZmMmZZ0B0HnPzc3NRX5XZ8eOHUPJkiVTPV5iYmKW68zGxua9H8jOnTvr/TvJqrz4\nTpRZWFigbdu2OHfuHFauXJlmY8YY6ys1VapUwePHj7N8nNTwNyz76ysjjKabKaXChQvrjFZJTk7G\nvXv3xO1q1arh+vXrOm9YQkJChv5Qo6Oj3xteFxkZiSZNmqS53507d0SOi4vDixcvYGVlleq2NjY2\nMDU1xZUrV3Tuf/DgAZKSkgAAFStWxP3793Uev3HjhsGv4917kPIPVKvV5tqQypyuryNHjuDvv//G\n2LFj0aRJEzRp0gQ//PADzp07hyZNmuj8ryIlY6sv4O3fmXwRbEJCAk6dOpXu3152yuk6S05OhqIo\n732pJSUlpft3KdfZu1Pu+uqsWrVqAPBend29e1c8T3bU2f79+3Hr1i1x+6+//sLVq1dzrc5yur6e\nPHkCT09PnDlzRud+jUYDU1PTNPc1tvq6e/cuJk+ejBcvXujcHxMTg6pVqxp8nKzgb1jGPl9ZlSeN\nGQsLC8TGxiI+Pj7VFj0A1KhRA9HR0bh//z4SEhKwaNEi8cYBb68of/LkCebPn49///0Xz58/x+TJ\nk9GnTx+DW4Tnzp3DyJEj8ccff0Cj0WD+/Pl4+vRpukMQ169fj3v37uH169dYsmQJLC0t0aJFi1S3\nLVq0KLp06YIlS5bgypUr0Gq1OHPmDDp16oS9e/cCeHv1eGRkJM6ePQuNRoO9e/fqHe2RmurVq6NW\nrVpYvHgxHj16hMTERBw+fBhRUVFp/m/KUMZQX61bt0ZERAR+/fVX8c/Pzw/169fHr7/+ivLly+vd\n19jqCwAOHz6M4OBgPHr0CK9evcKkSZNQunRpMXogq4yhzooWLYrmzZtj1apV+PPPP5GUlISzZ89i\n79696f5dLl++HP/88w/i4+MRFhYGGxsb1K9fP9VtP/roI7i6umLmzJm4c+cOtFotfvvtN/j6+iI6\nOhrA2zrbuXMnbty4gYSEBKxdu1Zn1Ightm7dikmTJuHZs2d49uwZvvnmGzRu3BiOjo4ZOk5qjKG+\nypUrh8qVK2PWrFnifTx58iR2796N1q1bp7mvsdVX2bJlcejQIUyePBnPnj3Dq1evsHjxYvz555/w\n9/c3+Dj6GEN9AfnnNyw75EljpmfPnoiIiICXl5feC5X69+8PW1tb+Pr6omXLlvjwww91WpvW1tZY\nvnw5oqKi0KxZM/j4+OD58+dYuXKlON2V3rC2wMBAtG3bFv7+/vj4448RHR2NdevWoVSpUmmWv1u3\nbhg0aBA+/vhjHD16FMuXL0fRokX1bh8SEgIPDw8EBQXB0dEREyZMwJAhQ0Sfsb+/P3r06IFhw4ah\nadOmOHToEHr37q1zjLSGtRUqVAhhYWEoUaIEunbtCkdHR8ycORMTJ05EmzZt0nwthjCG+rKwsEDF\nihV1/hUrVgzm5uaoWLFimv9zNLb6At7OM1OvXj20b98erq6uiIuLw6pVq3ROx2eFMdQZAMyePRv2\n9vbo168fGjVqhNGjRyMoKAiBgYFplr9Dhw7o2bMnmjVrhjt37iAsLEynvz6156lZsya6du0KZ2dn\nLFmyBDNnzhQXIQ4fPhxubm4ICAiAm5sb7t27h3bt2ukcI72hvtOmTYOlpSW8vLzg7e2N0qVLY+HC\nhWm+DkMZS30tXLgQderUQffu3eHo6IhJkybhq6++Qr9+/dIsv7HVl4WFBdasWYOXL1+iTZs2cHFx\nwfHjx7FhwwbUqFEjzddiCGOpr/zyG/bucXt7e/j6+or37913hyFMlNzqh8gHTp06hd69eyM8PDzX\nTlVS5rG+1Gfbtm0ICQnB//73vxy7sJayD+tLXfLzd6LRXjNDREREZAg2ZoiIiEjV2M1EREREqsYz\nM0RERKRqbMwQERGRqrExQ0RERKrGxgwRERGpGhszREREpGpszBAREZGqsTFDREREqsbGDBEREaka\nGzNERESkamzMEBERkaqxMUNERESqxsYMERERqRobM0RERKRqbMwQERGRqhXK6wIYI0VRRNZqtSKH\nh4frbOfi4iJy8eLFRTYxMRHZ1NQ0J4pIRJStHj58KHJISIjI69evFzk5OVnkyZMn6+w/YcKEHCwd\nUdp4ZoaIiIhUjY0ZIiIiUjU2ZoiIiEjVTBT5ApEC7NmzZyLLfcELFy7M8LEaNmwo8rx580R2c3MT\nWb6uhqigSkhIEHnIkCE6j61YsUJkCwsLkc3NzUVesmSJyD179hSZny/DyNfJuLq6ivz69WuR5Wtm\n5HzgwAGdYx09elRkW1vbbC0nZcwPP/wg8rFjx0SWPy8AULRo0VwrU07jmRkiIiJSNTZmiIiISNUK\ndDfToUOHRP76669FvnbtmsiFCv3f6PVSpUrp7N+oUSOR79+/L/L//ve/VJ/v3r17IltZWYnMU+JZ\nI3dVzJo1S+SU9RAaGiryRx99JPIHH7BNn1emT58u8tSpU3Ue++yzz0SWu2vlbmD5tPmlS5dErlev\nXraWM7+aMWOGyHKXutxlVKtWLZHv3LkjsvwZAoABAwaInLI7g3Le+fPnRf74449FlqcXqVy5ss4+\n0dHRIpcrVy4HS5fz+C1OREREqsbGDBEREalagZsB+OnTpyLLoyfkrqUyZcqIvGjRIpH9/Pz0Hlce\nDSWfup1OfnCnAAAgAElEQVQ9e7bI1tbWIssjAVq1amVQ2en/vHnzRuTFixeLPHHiRL37bN68WeSD\nBw+K7Onpmer2f/31l8hyF2HFihVFrlSpkoElLtjkz92ZM2dEnjJlisjyqAsAcHJySvVY8udr27Zt\nIh85ckRkdjNlnKOjo8hy15LMxsZGZH9//xwvExlO/q2Su5Zq1qwp8s2bN3X26d69u8iHDx/OwdLl\nPJ6ZISIiIlVjY4aIiIhUrUCMZnr16pXIjRs3Fvnq1asi16hRQ+Rz586JXKJEiQw/nyFdTsOGDRN5\nzpw5InNkjX5JSUkiyxOk/fLLLxk+Vp06dUSWRz09ePBAZHm02pMnT0SW/yb+/vtvkeWRb6S7YGvH\njh1F3rVrl8gtWrQQef/+/Tr7yxPl6SOPgJJHssn1WKxYMQNLXPDIIymjoqJEbtq0abr7fvnllzq3\n5UkO5e/AzHyHkmHkyQ3lyyM+//xzkeXfnSJFiujsL49gunv3rsjyxJRqwV9OIiIiUjU2ZoiIiEjV\nCsR5cY1GI7LctSQbNWqUyFk9LSpPrhccHCzyunXrRJ4/f77I06ZNE9mQU+sFiTwhnjx6YuvWrenu\na2lpqXNbHuHi6+srsjzSRh7RIXctyV68eCHyli1bRO7Ro0e6ZSpI5K4euWtp+PDhIssT4GX1b//f\nf/8VWR6Jxm4m/bLSrZ1ysk9O/pn75LW15O/Kb7/9VuS0uozkbnJ50kl9IwmNGc/MEBERkaqxMUNE\nRESqViC6mQyRU6fVSpcuLbJ8uls+DR4RESFymzZtcqQcaiV30xnStdSwYUOR5a48AHBzcxM5NjZW\n5E6dOoks14shrl+/nqHtC5JvvvlG5KCgIJHl0RUcvacuiYmJIt++fVvnsWrVqolsZmaWSyUq2ORu\nbnn0oDxqSZ4gND8PXuY3CREREakaGzNERESkagWim8nU1FRkeZIgebTK+vXrRZYn1ssqeVIjeVSV\nfLpPXrq9oHYzJScni9yrVy+Rd+zYke6+TZo0EVk+pVq4cGGd7SIjI0Xu0KGDyPLoJEPIk+PJk8ER\ncOfOHZH/85//iPzf//5X5OzsWnr58qXI8ug1uXuX9HN3d8/Q9vL3WXh4uM5jAwYMEJmjMnPHpk2b\nRJZHkzk7O4t869atVLdJ7baa8cwMERERqRobM0RERKRqBaKbqXjx4iKPHTtW5JEjR4q8YcMGkT/7\n7DOR5TVKUq5rYYiTJ0+KfO/ePZHl03vyOkMF1dGjR0WWT53qI6+lJXctyZNApeyyu3btWqbLJ4+S\nkteCkstBwPbt20WWR75kJ3nE2cqVK0X28vIS+cMPP8yR585vvL29M7T9jRs3RE45Mub48eMiy2vS\nyd+/ffv2Fblo0aIZem56X0hIiMgHDhxIdZuFCxeKvHbtWp3H5NFQchcxJ80jIiIiymVszBAREZGq\nFYhuJtngwYNFPnbsmMjy6XFPT0+R+/XrJ/KYMWN0jlW1alWR5ZEz8giLlBO3vSOfbrW2tjak6Pma\nPBLCEPIItREjRoi8Zs0akZOSkrJUJnl0zIoVK0Rm11L2kbsqUnZLyV2x8fHxIn/99dciv3r1SuQ5\nc+bkRBHztZo1a4psSNdcnTp1RE5r5KX83Xr58mWRp06dKrI8qeKXX34psjxakNLWtWvXVLM+R44c\n0ftYTExMtpQpr/DMDBEREakaGzNERESkagXufJ68Zoh8xb3cNSRPBrV69epUMwC4urqKLE/SJa/7\nI0+IJzt06JDIc+fOFblt27YiW1lZ6ezDicD+z82bN1PN2cnPz09keRIq0k8euSLbuXOnyLa2tiLv\n379fZHkiQwAoU6aMyObm5iLL3YenTp0SuVatWpkoccHWpUuXDG0vj0DavXu3Qfs8f/5cZPm7bvjw\n4SK3atVK5Nq1a2eoTJQ9sjLa0xjwzAwRERGpGhszREREpGpszBAREZGqmSgpp3EsoORFIOVF8SZN\nmiSyvhkWc0qVKlV0bt++fTtXnz83ffvttyJPnz49D0vyf+Rrnzh83jDy8Gp51uSrV6+KLC9ueOXK\nFZHlhV/T0rlzZ5F//vlnkeXr4cg4xcXFiSz/fXz11Vcip5wCg7JPcHCwzu3Zs2eLHBgYKPKqVaty\nrUzZhWdmiIiISNXYmCEiIiJVK3BDs/WRh342adJE5F9//VVkeRgpAHTs2DFDz9GjRw+R5dll9ZG7\nu/I7eQHQXbt2iSzPHqqPPIupvEiovLAnoNsloc+sWbNErlSpUrrbky65q0eelmDy5MkiL1u2LNV9\n5Rm1ASAoKEhkX19fkR0dHUXesWOHyIbMgEp5S55lWJ5NWB6+TblHnmVbzmrEMzNERESkamzMEBER\nkaqxmykd8uiMlDMA6yMvRLhv375U75cXStRHXkQvv5Nnjo2OjhZZq9WKLC8GWqxYMZF9fHxElk+V\ntmjRwqDnlutl4MCBIn/wAdv6WSF3OckLDMrZUMnJySL3799f5NDQUJHlUU6sO+P0999/iyx3Q1as\nWDEvikP5CD/xREREpGpszBAREZGqsZspFfIEX/pG2aRUvXp1kX///XeRUy4WmRGGjHjKj+TuCTnL\no8H0kd/706dPG/Qc8+fPF1nuvqLsI0+IJ48CPHz4sMiFCxfWu7/cbSR3H8qTe8ldUexmyji5C6hs\n2bI58hwvXrwQWf6bkEe7EWUGP/FERESkamzMEBERkaoV6G6m169fi7x+/XqRhw8fnuo2KcldS8eO\nHRM5K11LlDVy3aWlTJkyIrdr1y6nilOgySMBO3ToILKtra3IhQpl/CuocuXKWSsYCWFhYSIfOXJE\n5E2bNuVqOeTJ9Igyg2dmiIiISNXYmCEiIiJVy7fdTBqNRuS9e/emus3atWtFltdg0rdGxfTp03Vu\nDx06VOQiRYpkppiUDU6ePCnyuXPnDNpn5syZOVUc+v/krlt55MrBgwdFNmTyyJTu378vcsmSJUVW\n+9oyeSEuLk7kX375RWR54spGjRqJnJlRYvIIJnnttGbNmomc1kg2yjmKoogsj2aTJyvNzGc0L/DM\nDBEREakaGzNERESkaqrrZoqJidG5ffHiRZHl0UWenp4iP3v2LN3jyqeora2tRT5+/LjIlSpV0tlH\nLaff8rvNmzener98ChXQrWMHB4ccLVNB9ebNG5HHjx8vsjy5XdGiRTN83OfPn4s8Y8YMkYODg0Xm\n5zHjbGxsRJY/H02aNBHZ399fZHlUmtxNBOiurxQfHy/yt99+K3JsbKzI+/fvF5ndTLmjbt26Orfl\nOpcnhZXXwevSpUvOFywb8MwMERERqRobM0RERKRqqutmkk8rA8DWrVtFlifgSkpKSvdYFSpUEFle\nn0e+4l5ew4eM040bN1K9P63RLW5ubiLLXZelS5fOvoIVQA8ePBD54cOHIpcqVSrDx5JHQDVv3lzk\ncuXKifz1119n+Lj0f7p37y6y3B0/bdo0kTds2CCyPEJNHkkGAE2bNhX51q1bIv/xxx8ijxgxQuSP\nP/44s8WmTLpy5YpB28lduexmIiIiIsoFbMwQERGRqpkoKYd8GLnLly/r3I6IiEh3n/bt24ssj1SS\ncSSEeslrK+mbIDEtv//+u8hydwZlnDxZpbxGmbzG2ZQpU0S2sLAQeceOHTrHOnHihMg9evQQee7c\nuSKXKFEiiyWm1Lx8+VLkdevWiSxPrBcZGal3/5CQEJE7duwocoMGDURmF37uO3z4sM5t+bszISFB\nZG9vb5H37duX8wXLBjwzQ0RERKrGxgwRERGpGhszREREpGqqu2aGKKVDhw6J3LZtW5ETExP17iPP\nOHrhwgWRbW1ts7l0BZc8O/fy5ctFXrZsWarbp7z+ZdGiRSLLs9ByQUmi7OHo6CiyfJ2UvHhvZqZV\nyAs8M0NERESqxsYMERERqRq7mShfkWeu/Oabb/RuN336dJFTzipNRETqwjMzREREpGpszBAREZGq\nsZuJiIiIVI1nZoiIiEjV2JghIiIiVWNjhoiIiFSNjRkiIiJSNTZmjNS8efPg6emZ18UgA7G+1Id1\npi6sL3XJ7frKk8bM2bNnERUVlRdPrePNmzeYN28eWrVqBQcHB7Rv3x4RERF5XaxMefz4MUaPHg1X\nV1c0atQIHTp0wLZt27Ll2MZSX0lJSVi8eDFatWqFhg0bwsfHBxs2bMjrYmWKVqvFvHnz4OPjg0aN\nGqFjx47YtWtXth3fWOps7NixqFOnDuzt7XX+bdmyJa+LlmEPHz7EiBEj4OLiAnt7e7Ru3TrbXoex\n1BcAnD9/Hn5+fnBwcEDTpk0xYcIEvH79Oq+LlSlPnz7FkCFDYGdnh1OnTmXbcY2lvvLTb1hAQADq\n1q373nfF8ePHDdq/UA6XL1Xr1q1DjRo14OLikhdPL8yYMQMRERFYunQpatasiYiICAwbNgybNm2C\nnZ1dnpYto4YPHw5TU1Ns3boVpUuXxm+//YYRI0bAysoqy++zsdTXggULsHv3bixbtgy1atXCkSNH\nMGTIEFhZWcHLyytPy5ZRy5Ytw44dO7B06VLUqlULkZGRGDZsGMqXL48mTZpk+fjGUmcA8Omnn+rM\nzKxW/fv3h52dHfbs2YPixYtjz549CA4OhpWVFVxdXbN0bGOpr9jYWAQGBmLEiBFYs2YNHj9+jHHj\nxmHHjh3o0aNHnpYto6KjozF06FB4eHhk+7GNpb7y028YAHz55Zf4+uuvM7Vvrp+Z8fPzQ3h4OFau\nXAlnZ2cAb1tkU6ZMQf/+/dGwYUNotVoEBARg1KhROvv26NEDY8eOFbdPnjyJnj17wtnZGY0bN8bw\n4cPx5MkT8fi4cePQp08fvWU5cOAAevTogbp168Lc3Bze3t7w8vLCxo0bU93+1KlTsLOzw9GjR9Gh\nQwfY29ujVatWOi10T09PLFq0CJ07d4aPjw+At63nqVOnwtPTEw0aNECbNm2wY8cOsU9ycjLmz58P\nNzc3ODk5ITg4GAkJCTrP3a9fP4SEhOh9LZcvX0abNm1QoUIFmJmZoW3btihTpgwuXbqkdx9DGFN9\nFSpUCCEhIahduzZMTU3RsmVL1KpVS+//kIy1vhRFwU8//YTAwEDUq1cP5ubmaNmyJdzd3fHjjz/q\nff2GMqY6yyhjrbPXr1+jX79++Pbbb1G6dGmYmZmhY8eOKFGiBK5evZql12xM9bVq1So4OzsjICAA\nFhYWqFatGjZs2KC3IWOs9QUA//zzD5YsWYKgoCC922SGMdVXfvoNyzIlD3h4eChz584Vt/39/ZWm\nTZsq+/fvV7Rarbhv5MiROvv5+fkpwcHBiqIoys2bN5UGDRooGzduVDQajfLXX38p/fr1UwICAgwu\nh4uLi7J06VKd+0JDQ5XPPvss1e1Pnjyp2NraKv7+/kpsbKzy8uVLZdq0aYqDg4MSHx8vXpu7u7ty\n5swZJTk5WVEURRk9erTSpUsXJTY2VklMTFTCw8OVunXrKqdPn1YURVG2b9+u1K9fXzlx4oSi0WiU\n/fv3K46OjoqHh4fBr2XUqFGKn5+fcv/+fSUpKUnZt2+f4uDgoNy4ccPgY+hjLPWVUkJCgtK0aVPl\nhx9+SPVxY62v27dvK7a2tkp0dLTO/WFhYUrz5s0z+3boMJY6Cw4OVjp27Kh0795dcXJyUry9vZWw\nsDAlKSkp1e2Ntc5Sio+PV1avXq04OTkpMTExmTqGzFjqy9vbW5k+fboyfPhwxcnJSZRLo9Gkur0a\n6uvd5+3kyZMZ3lcfY6mv/PQb5u/vr/Tq1Uvp2LGj4ujoqPj6+iqbNm0yeH+juQDYysoKPj4++OAD\nw4q0efNm1KlTB35+fjAzM0O5cuUwZswYnDp1CrGxsQYdw9vbGxs3bsTFixeRmJiIqKgohIeH49mz\nZ2nu5+/vDxsbG1haWmLQoEFISEhAZGSkeNze3h7Ozs4wMTFBXFwcdu3ahaFDh8LGxgaFChVCq1at\n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\nR40aNRAWFmbwZRImSm71Q+QDp06dQu/evREeHm7wqS/KO6wv9WGdqQvrS13yc30Z7TUzRERERIZg\nY4aIiIhUjd1MREREpGo8M0NERESqxsYMERERqRobM0RERKRqbMwQERGRqrExQ0RERKrGxgwRERGp\nGhszREREpGpszBAREZGqsTFDREREqsbGDBEREakaGzNERESkamzMEBERkaqxMUNERESqxsYMERER\nqRobM0RERKRqhfK6AESZodVqRT569KjIu3btEnn+/PnZ9nzyc7i6uor8wQf8/wDlb8+fPxe5VKlS\nBu2zY8cOkTt06JDtZSJKid/EREREpGpszBAREZGqsTFDRET0/9i78/CYrv8P4O80EhJU7YLYJbaI\nErVTUWIptS+RWELR2ilpWksVVUVRO62tlop9izRa27eWNPRX+1ZREQStnUgiub8/fH2+Z2Immawz\nN3m/nqfP856Ze++cmZM7Tu+55xzSNd4zk4xWrVpJDg4ONnht3bp1knv06JFpZcpONE2TvH//fsnD\nhw+XfPbsWaP72tjYpFs53n33XckTJkyQHBAQINne3j7D3l/vrl+/Lnnr1q2ST58+LXn58uUG+6h1\nX7NmTck3btyQ3K9fP8m9e/eWXLFixTSWmIwx92+af/uU2XhlhoiIiHSNjRkiIiLSNRtNvZZLAJLu\nWjJFHb745ptvpnuZsqt//vlHcpEiRSxYkuQ9e/bM4HGuXLksVBLLCQ0Nlax2walD29UuCPXnJ3HX\nhFrfderUkbxjxw6j+5QrV05ymzZtJM+ePdv8D0CvUX/bChQoYNY+6tDstm3bpnuZKGmPHj2SvHr1\naslr1qwx2C4sLCzZY/3nP/+RXL9+/XQoXcbglRkiIiLSNTZmiIiISNc4mum/vv76a8lq11LZsmUl\n//nnnwb75MuXT7K/v7/kRYsWZUQRs42EhATJu3btsmBJUiZxd4bazZKVjRgxQvJ3330n2VR3ksrR\n0VFy7dq1DV7z9vaWrM4i++GHH0pWR5mpo5wGDhwoOSgoSHLr1q2NfwgiHVK7k5YuXSpZ/S26ffu2\n5MTnoXqONm3aVPKCBQsklylTJl3KmtF4ZYaIiIh0jY0ZIiIi0jWOZvovdSTE1atXJSf19Zga9cSR\nTWmzZcsWyZ07d071cYoXL27weNy4cZLV0RbqZHxxcXGpfr/E1O6yrMzT01OyqVFL6oiWatWqSR42\nbJjkwoULp1uZEo8se0Xt1iLzqN2I8+bNM2sfjmbKOOrtDv379zf6vCmJR1g+f/5c8owZMySPHDky\nLUW0CF6ZISIiIl1jY4aIiIh0jaOZ/kvtWpo2bZpZ+5i6y3v37t2SuWaTedTLnePHj0/Rvg4ODpLV\nu/h79uxpsF3u3LklDxo0SPIff/whecCAAUafJ9N++uknyWoXa4kSJSSb6t45deqU5H379hm8po7C\n+OijjyTb2dklWyZ2J6Wf+/fvm7Wdi4uL5MaNG2dUcbKlvXv3Sh41apTk8+fPp+g4Fy5cMHi8du1a\nyervbpUqVSSro5wSrz9nTXhlhoiIiHSNjRkiIiLStWw9mmn9+vWS1Qm6zB2NZGqZe7ULgxPomefm\nzZuSS5YsmaJ9vby8JO/ZsydN5VBHNjVr1ixNx8ouo5lSytTomKTWZlIvp6uTVVLGuHv3rmR1YsLE\n3RSqunXrSj58+HCGlCs7UbuW2rdvL1ntkq9atapk9VaJ6Ohoyeq6Zonr5fr165LVriV1/0OHDknm\n2kxEREREGYSNGSIiItK1bD2aSb18pjLVtaR2SyXl77//Tm2Rsq3FixdbugiUzu7cuSO5ZcuWkk+e\nPClZ7eXu16+fwf7qY3YtZS51naukupZU33//fUYVJ9tQu/fUc0al3sagTprXqFEjyepovp07d5p8\nP2dnZ8lhYWGS1e4r9bjHjh2TnHgtNUvjlRkiIiLSNTZmiIiISNeydTdTSruDVq9ebdZ26jpNZJ7S\npUunet9SpUqlY0koLdSupQoVKkh++vSpZHXU0pw5cySrl88B8ybHo4wxZcqUZLcpUKCAweO8efNm\nVHGyja+++kqyqdGyX3/9teSNGzca3UYdCZW4nkxRJ4EtW7asZPXfSXWEpzrCUJ0g01J4ZYaIiIh0\njY0ZIiIi0rVs3c3UpEkTyWrXUHh4uORy5coZ3SYx9RI5R+akXLdu3SR/+OGHKdpXnUTq0qVLJrdT\nu7Jy5syZovcwx7Bhw9L9mHqjrq+kdi2po5befvttyUOHDs2cglGK/Pnnn8luk3jts5ROdkkvRUVF\nSV6xYoXRbdQ1lNSuWXUdQbU7SZ0oz1y5cuWSfOTIEcnq+aqW9cCBA5IT/y1YAq/MEBERka6xMUNE\nRES6lq27mT7++GPJAQEBkt977z3Ja9asMbm/eolP3V99nkxTJ+ZKPGFaSvz4449Gc2INGzaUrF6S\n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\ncqdOndK1nNnNyZMnJdeqVcvoNup3n3j4tZubm2S1Xin9VK1aVfLVq1clx8XFSb5+/bpkb29vyU5O\nTgbHWrt2bUYUkZLQqlUryervmynr1q0zeJyVup14ZYaIiIh0jY0ZIiIi0rUs28304MEDyT/99FOy\n26t36W/dutXoNom7mczppurTp4/kAQMGSE48EoBSLygoSPKWLVskDx061GC7okWLSj58+LDkLl26\nSFa7JytWrJiu5cwO9u/fL9nPz0+y2lWhSqqbqVSpUpLVc9Ld3T3N5aSXvv32W8mTJ0+WHBgYKHnY\nsGFG923UqJHB4wsXLkjOlSuX5A4dOkj+6KOPUl9YAgAcOXJEcoMGDSSrXUiHDh2SrC7m2rJlS4Nj\n7dmzJyOKaBG8MkNERES6xsYMERER6VqW7WZKqRs3bkh+5513JKuL3aWmm0k1YsQIyTNmzEhpEcmE\nv//+W3K5cuUkJ64v1ZkzZyRXr15dMruZUk79CVG7Gt577z3Jt2/fTnZfcxeT/P777yX7+vpKtrW1\nNWt/Mu7p06eSHRwcJD9//lyyWkeJRwvWq1dPsnoeqc+r3buUOupvnDoCTT2XHj16JDlfvnwmj/Xw\n4UPJb775ZnoV0SJ4ZYaIiIh0jY0ZIiIi0rUsuzaTOVauXCl5xYoVktWupbTy9/eX3Ldv33Q7Lv2P\nOkopf/78Zu0TGhoqWR3NVKFChfQrWDakTnSXUfr16ydZ7S4cO3as5KTWVCPjcufObfR5deJP1bZt\n2wweq11LhQsXlqyeX5Q51C6jsmXLSla7pRJvp3e8MkNERES6xsYMERER6Vq26Gb666+/JKsjVFI6\nGmnkyJEGj9XujTFjxqSydJRW6sgLNSf24sULycuWLZNcv359yeaOqMnujh8/LnnatGmSUzo4MjVr\npan7zJ4922jeuHGj5I4dO6aoTGTo8ePHkjds2CB5+PDhJvcpWLCg5GbNmmVMwbIpV1dXyWq3kTqC\naffu3Ua3SWz9+vWS9b5OE6/MEBERka6xMUNERES6li26mZYsWSJZvZRtzmVtdTTSlClT0rdglO5K\nly5t8jV1lNqVK1ckq+vQkHnmzp0refv27ZLN6abz8PCQ7OLiIrlXr14G26lryqgjZ9Tz1tT7qety\nsZvJPGo3xaVLlyQHBARI/vXXX806lnquxcXFpUPp6BX1PAkODpac1OR4pqxevVoyu5mIiIiILIiN\nGSIiItK1bNHNlBbTp0+XXLx4cYPXvL29Jb/11luZViYybdasWZITj6xRu0bUSRJLlSqV8QXLAmJj\nYyU/e/Ys1cdRJ7dLqguocePGkj/66CPJ6qV1U2s+qc+rk2NyLSdDatdS27ZtJZsaJaNSJ8YDDOtr\nwYIFktMygaE6cu3s2bMGr2XGBI3WSO0OunbtmmS1O3DQoEGS1XpR/80CDM8lveOVGSIiItI1NmaI\niIhI12y0lM5ypUOrVq2S7OfnJzmlk+aplzwBwNPTU/LevXtTWTrKKE+ePDF4PGLECMlDhgyRXKNG\njUwrk56dPHlScq1atVJ9HHX0mLkjjS5fvixZXUNo6dKlkk2NNlR/4pYvXy65d+/eZr13Vvbzzz9L\nbtWqlWS1a+jp06eSS5YsKblatWoGx/r+++8lp2ZkjTHqSKiaNWsavHb69Ol0eY/sJKnRhnpvCvDK\nDBEREekaGzNERESka9mim0m1b98+yeolt3Xr1klWRz+oEnczqZdSQ0JCJKuTgpHl7Ny50+DxnDlz\nJKv1xVEt5lFHj5w7dy7Z7Xv27ClZnZwrs8uknrfvvPOOZPVvAEi/rhE9UbtiK1WqJPnmzZtGtz91\n6pTk/PnzG7xWokSJdC6dIXVyRgC4e/eu5P79+2foe2cVSXUzHT58WLK6Xp1e8MoMERER6RobM0RE\nRKRrbMwQERGRrmW7GYDV4dSqpk2bSl62bJlkdYZEdegiADx8+FBynTp1JO/fv1+yOvsiZa6uXbsa\nPJ48ebJk3ieTcmp/uzkLSpqzTVqtXbtWcuvWrSVHRUVJNmdhyuwqT548ktX7CWNiYoxuX6FCBcm5\ncuXKuIL9l3q/061btwxe+/jjjyXznhnilRkiIiLSNTZmiIiISNey3dDstEi80KQ6NFBVoEAByRs3\nbpTMLqeMd+LECcmJv+8bN25I5sKgKVe9enXJ5gzNLlasmORu3bpJnjp1quT07KpQZ+FWu4TVnzi1\nm+n//u//DPbPrgsXWrMdO3ZI/uCDDwxeGz58uGR12gUyTV2wFQAWL14sWV2cctGiRZlWpvTCKzNE\nRESka2zMEBERka6xmykF1G4KAGjevLlkdSE8U9RF0yhjjBs3TnLihegSzyBKKTN79mzJY8aMSfVx\n2rdvL9nd3V1y4gU/1Z8mdeZZ9fnu3btLbteunWT1fMxO3UzPnj2TrC4QWahQIcnWPqJLHUmlzqZ+\n8eJFg+0iIyMlqwtjkmnr1683eOzt7W10Oz02C3hlhoiIiHSNjRkiIiLStWw3aV5aJF5I7eeff5Zc\nrly5zC4O/dfy5cslz507V/Jff/1lieJkWepEdGm5DL1161bJmzdvlqxObpcUdSI1dUHES5cuJbu9\n+h56vJSeHHVxT7VbdcOGDZLV7vE333xTsrnff0a4f/++5E8//VTy2bNnJQ8bNsxgH3YtpVzp0qUt\nXYQMwyszREREpGtszBAREZGusZvpv8LCwiQHBgYa3SbxZWl1tABlrk2bNkkeMGCA5F27dkkuWrRo\nppYpqxs8eLBkdU0ktfsppVKzbpK6j7qOmqn9XVxcJNetW1dy/vz5zS6nXqiju9Sub/V5R0dHyX5+\nfpIDAgIk586d2+jxc+T43z8ZDg4OZpUpOjpastqdpHYDDxkyRLI6IaO/v7/kxN1MlHLVqlUza7sj\nR45Irl+/fkYVJ13xygwRERHpGhszREREpGvZetK8Bw8eSC5YsGCy26ujIoCU3/0fHx+fou3J0PPn\nzyWr3QWFCxeWHBwcLNnW1jZzCpYNqZPY9e7dW3LiiQqTY2pCu9Ts06BBA8nz58+XrHY3ZtcRMGp3\njTqBnjpB3ddffy3Zzs5O8sOHDyWXLVtWsqkJ1xJTR1KZGmGo/pZ+/vnnkidNmmTWe1DqmDrnWrZs\nKVmtP3X0m7XhlRkiIiLSNTZmiIiISNeydTfTixcvJH/22WeS1TVoVKnpZlIvcatriVDK3b17V7L6\nvR47dkzyO++8k6llIsNuH3XE09KlS1O0b+JL3sWKFZOsdiuq+6iTxDVr1kxyvnz5kn1vMhQeHi5Z\n/f727dsnWR1pNGfOHIP9nzx5IjlnzpyS1S4rtU6//PJLyXnz5pWsdnFQxlJHvF29etXoNtOmTZOs\nTmhobXhlhoiIiHSNjRkiIiLStWzdzaRS13Vp1KiR5Hv37kk2t5tJnaRr7969kosXL57mcmZns2bN\nkrxlyxbJv/76q+RcuXJlapmI6KXffvtNsjo521tvvWWJ4pAZ1BFs6qSJqkGDBkletGhRhpcptXhl\nhoiIiHSNjRkiIiLSNa7N9F9q11CLFi0k//TTTyk+VpcuXSSzaylt1Em2Jk6cKDkoKEgyu5aILK9h\nw4aWLgKlUOPGjS1dhHTDKzNERESka2zMEBERka6xMUNERES6xqHZRqgzWfr4+EjeuXOnwXZOTk6S\nf/zxR8nqgnf29vYZUcRsQ13EUB2CfeXKFcnqbKNERJRy6gzc6izMe/bssURxUoxXZoiIiEjX2Jgh\nIiIiXePQbCPy5Mkjedu2bRYsCeXOnVvyDz/8IJldS0RE6Ufvd5zwygwRERHpGhszREREpGsc/qLC\nCgAAIABJREFUzURERES6xiszREREpGtszBAREZGusTFDREREusbGDBEREekaGzNWavbs2fD09LR0\nMchMrC992bhxI1xdXS1dDEoBnmP6ktn1ZZFJ844fP464uDjUq1fPEm9v4M8//8TXX3+N8+fPw8HB\nAS1atEBAQAAcHBwsXbRUi4iIQLt27dCyZUt8/fXXaT6etdTXp59+iu3btyNHDsM/2wkTJqBLly4W\nKlXqxMfH47vvvkNwcDDu3LmD0qVLo1+/fmjbtm2aj20t9QUAq1atQmBgIG7evAknJyd07doVffr0\nsXSxUszNze215xISElC0aFHs27cvzce3pjrLKr+Jt2/fxsyZM3H06FE8ffoUzs7O6NOnDzp27Jjm\nY1tLfWX032VmSmt9WaQxs2rVKpQrV87ifwgRERHo27cvRo0ahRUrVuD27dsYN24ctm3bhh49eli0\nbKmlaRoCAgJe+wc/LaylvgDggw8+SJcGmqUtWrQI27Ztw8KFC1GxYkUcOnQII0aMQJEiRVCnTp00\nHdta6mvbtm2YO3cuFi5ciJo1a+LUqVMYOHAg8uXLhw4dOli0bCl1+vRpg8cJCQno2bOnwaKyaWEt\ndZaVfhNHjhwJW1tbbN68GQUKFMDevXsxatQoODk5pfl7tpb6yui/y8yU1vrK9G6m7t27IyQkBMuW\nLYOHhwcAwNfXF19++SX69euHGjVqID4+Hr6+vvjkk08M9u3Rowc+/fRTeXzs2DF4e3vDw8MDtWvX\nxsiRI3H37l15fdy4cQarLif2ww8/wMPDA76+vnBwcECZMmWwZs0akydtaGgoXF1dcfDgQbRr1w5u\nbm5o3rw5jh49Ktt4enpi3rx56NSpE7y8vAAAz58/x5QpU+Dp6Ynq1aujVatWBsskJCQkYM6cOWjc\nuDFq1aoFf39/xMTEGLy3n58fAgICkvt6sXr1ajx79gxNmzZNdltzWFN9pZS11pemaVi7di369u2L\nqlWrwt7eHu+99x6aNGmC1atXp+kzW1N9rV69Gp06dULdunVhb28PDw8PdOrUCatWrTK6fWRkJFxd\nXbFr1y706NED1atXR+PGjbFjxw7ZxthniY+Px/z58+Hl5QV3d3c0a9YM33//vcGx16xZg2bNmuHt\nt9/GoEGDcP/+fYPXU/q39+o8GzhwoNn7mGJNdZaVfhPPnDmDVq1aoWjRorCzs0Pr1q1RsGDB1xoA\nKWVN9ZVYcn+XWbq+NAto2rSp9u2338pjHx8frW7dulpwcLAWHx8vz40ePdpgv+7du2v+/v6apmna\n5cuXterVq2vr16/XYmNjtTt37mh+fn6ar6+v2eVo0aKFNm3aNG3kyJFarVq1pFyxsbFGtz927Jjm\n4uKi+fj4aBEREdrTp0+1qVOnau7u7trjx4/lszVp0kQLCwvTEhISNE3TtDFjxmidO3fWIiIitLi4\nOC0kJESrUqWK9vvvv2uapmlbt27VqlWrph05ckSLjY3VgoODtZo1a2pNmzY1+7Nomqb9/fffWq1a\ntbTz589r/v7+8l2llbXUl7+/v9a+fXutW7duWq1atbQWLVpoixcv1l68eGF0e2utr7///ltzcXHR\nTpw4YfD84sWLtQYNGpj9fZhiDfUVExOjVa5cWduxY4fB8zt37tQqVaqkPXv27LV9rl+/rrm4uGjv\nv/++dv78eS0mJkb74YcfNFdXV+3q1asmP8ucOXO0Zs2aaRcuXNBevHihhYWFaTVr1tS2bt2qaZqm\nhYWFaS4uLtquXbu02NhYLTQ0VGvQoIHm4uJi1mdJ7M6dO1qNGjVeq7+0sIY607Ss9Zv4ySefaN27\nd9du3LihvXjxQtuzZ4/m7u6uXbp0yexjmGIt9aUy5+8yK9eX1dwA7OTkBC8vL7zxhnlFCgwMROXK\nldG9e3fY2dmhcOHCGDt2LEJDQxEREWHWMaKiorBlyxa8//77OHLkCKZMmYK1a9di6dKlSe7n4+MD\nZ2dnODo6YvDgwYiJicGhQ4fkdTc3N3h4eMDGxgYPHjzAzp07MXz4cDg7OyNHjhxo3rw5PD09ERgY\nCAAICgpC48aNUa9ePdjZ2cHLy0ta/OZKSEhAQEAAevfujUqVKqVo39SwRH2VLFkSJUuWxNSpU3Hk\nyBGMHTsWixcvNliA0hhrq6979+4BAPLly2fwfP78+eW19JbZ9fXgwQPEx8cb/YwJCQl48OCByX07\ndOiASpUqwd7eHn369EG+fPkQEhJi9LMkJCRg3bp1+PDDD+Hq6gpbW1t4eHigS5cuUl+7d+9G5cqV\n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\nCwA++ugjDB06NEOObS11xnPMPNZSX+Hh4RgwYAAaNGgAvc+yMmbMGNy5cwcrVqyAk5MTNm/ejH79\n+iE4OBiFChVKdv9MvzLTvXt3hISEYNmyZfDw8ADw8v96vvzyS/Tr1w81atRAfHw8fH19DaZtBoAe\nPXrg008/lcfHjh2Dt7c3PDw8ULt2bYwcORJ3796V18eNG4fevXubLMvPP/+MHj16oEqVKrC3t0eL\nFi3QrFkzrF+/3uj2oaGhcHV1xcGDB9GuXTu4ubmhefPmBi10T09PzJs3D506dYKXlxeAl/+HOmXK\nFHh6eqJ69epo1aoVtm3bJvskJCRgzpw5aNy4MWrVqgV/f3/ExMQYvLefn5/BiqqJnTlzBq1atULR\nokVhZ2eH1q1bo2DBgq+d0CllTfWVI0cOBAQEoFKlSrC1tcV7772HihUrmvw/JGuur8RmzZqFsmXL\non379mbvY4w11VdWOr8ykjXVGc+x5FlTff3zzz8YP348xo8fb1bZrbW+nj17hv/85z/48MMPUaZM\nGeTMmRPe3t6oUKECtm7datZng2YBTZs21b799lt57OPjo9WtW1cLDg7W4uPj5bnRo0cb7Ne9e3fN\n399f0zRNu3z5sla9enVt/fr1WmxsrHbnzh3Nz89P8/X1Nbsc9erV0xYuXGjw3OTJk7WOHTsa3f7Y\nsWOai4uL5uPjo0VERGhPnz7Vpk6dqrm7u2uPHz+Wz9akSRMtLCxMS0hI0DRN08aMGaN17txZi4iI\n0OLi4rSQkBCtSpUq2u+//65pmqZt3bpVq1atmnbkyBEtNjZWCw4O1mrWrKk1bdrU7M/yySefaN27\nd9du3LihvXjxQtuzZ4/m7u6uXbp0yexjmGIt9ZVYTEyMVrduXe377783+ro115fq/Pnzmpubm3b9\n+vVU7Z+YtdRXVjq/fHx8tJ49e2rt27fXatasqbVp00bbsGGD2fsnx1rqLDGeY8ZZW33FxcVpLi4u\n2ubNm5Pczlrr6+nTp1qlSpW07du3Gzw/cOBAbejQoWYdw2puAHZycoKXl5fZC2QFBgaicuXK6N69\nO+zs7FC4cGGMHTsWoaGhBotyJaVFixZYv349Tp06hbi4OBw9ehQhISG4f/9+kvv5+PjA2dkZjo6O\nGDx4MGJiYnDo0CF53c3NDR4eHrCxscGDBw+wc+dODB8+HM7OzsiRIweaN28OT09PBAYGAgCCgoLQ\n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\nDkl+7bXXsqewlKbvv/9ecvfu3U1uo84QrS6gRznj66+/lqwOwV6+fLnk9u3b52iZciv18zJnzhzJ\n6oKvqb3zzjuS1WHz6j1u9oxXZoiIiEjX2JghIiIiXcvVC01m1NKlS40eq5fysjI0W+1yoqy5efOm\n5CZNmhj9TO1aUqlDuMeNG2cyqzPQsmsp51WtWjXdbf744w/JwcHB1iwOwXjINWC+ayn1cOCMUIcL\nOzs7G/3s33//lZzR6RVedOoMzGl1LY0dO1byRx99JFldmFQveGWGiIiIdI2NGSIiItI1djP9f+pM\nv3///bfkunXrSk7dHWTJqCW1a0m9K3zr1q2SOetv9lm3bp1kc91KqaldSOpCleoClOaol3PVGWsB\n4wX2yPpcXV1tXYQXnvqZqFOnjtHP1O+9vn37Sh40aFC6xzX3XaqqVauW0ePmzZtLZjcTsHDhQskl\nS5Y0uU3qz8jQoUMl67FrScUrM0RERKRrbMwQERGRruW6bia1W2D69OmS1e6FLVu2SFYveaZeSNCS\nUUuffvqpZHXCKHYtZZ/ff/9d8oABA7J0LLW+1Uuy06ZNk6yOfmrWrJlkdcFLAHjw4EGWykL/R50Q\nzxxPT88cKIk+3b17V7I6GaRK7epZuXKl5EuXLknetGmTZHUBQ8D4s6MuIunv72/yfGfPnpXs5uYm\nuUqVKpKHDBkiuVSpUiaPk5upo70+/PBDyQ8fPpSsdselHpFbuHBhK5YuZ/HKDBEREekaGzNERESk\nay9sN5PavTNmzBjJGV03ydzIpNQ/Uyfp6tatm+QuXbpkuOyUviNHjkj+66+/JKdej8kS6pok6gRf\narfRxo0bJUdFRUkuW7as5J07d2b43GSeupbW+PHjTW7DUSzm7du3T3LXrl0lq13qKktGFKn69+9v\n9LhTp06Svby8JBcpUsTk/gkJCZILFCiQ7vnoqRMnTkhWJ7pTu5bU7yV1vb8XqVspNV6ZISIiIl1j\nY4aIiIh0TffdTOZGJ82fP19yVtZNMvc8YDyKRh1JYe6yKmUfdXK8L774IkvHqlGjhmT1zv8GDRpI\nVi/Tq1atWiW5QoUKWSoHGVPX2VLXXVKpo27IeGI5c2vyFCxYUPKMGTMkL1iwQPKpU6ckq6OI1NEw\nNWvWzFJZ2bWUNnUiV/X/l7x5/++/bfX7qmHDhpLVbvHc8j7zygwRERHpGhszREREpGt5NPUWdh1Q\n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\n6tQpzf3s7fPVo0cPbN26FWvXrpV/QUFBCAoKwtq1ay0+TlpYZ/qqM3uor7feegvbt283eo2dO3dG\ntWrVsHbtWrz66qtm97W3+gKA3377DeHh4bh69SoePXqEjz/+GMWLF5cRVemxSeLbg4MAACAASURB\nVDdT165d8fnnn6NRo0byZqTWq1cvnDp1Ci1atEDhwoXRu3dvoxZa2bJlsWDBAsycORORkZFwdnaG\nr68vFi5cKJe7PvroI1y4cAGLFi0yeQ4/Pz98+eWX+OKLL/D555/jlVdewYABA9L9D6Vjx47o378/\nYmNj4eLiggULFqBgwYJmt382x0Hv3r3x8OFDlC5dGoMGDZL7MkJCQnD16lUMGTJEhhC+++67RkPS\nwsLCUKpUKUyZMuW54+fNmxfz58/H9OnT0aFDB9y9exelS5fG+PHj0axZszRfiyXspb6+/PJLzJw5\nE506dUJCQgJcXFzwwQcfICwsLM3yt2rVCl27dsXly5dRqVIlzJ8/36jvN7Vp06bhk08+QYcOHZCU\nlITy5ctj6tSpckPb0KFDER8fL5NTtWzZEm+//bbcbwM87eZr2bIlBgwY8NzxCxQogO+++w7Tpk1D\ns2bNkJCQAE9PTyxZsgSVKlVK87VYwl7qq2fPnrh27RpCQkLw+PFjeHl5YdGiRShWrFia5be3z1eh\nQoVQqFAho+cKFCgA4OlfpNmBdaavOrOH+ipQoIC8pmcKFSoEJyendF+jvdUX8HSemfHjx6Nly5ZI\nTk5GrVq18M033xjdBpCWPFpO9UO8APbu3Yt3330X0dHROdYdQJm3atUqjB49Gn///Xe2T3JG2Y+f\nL/1hnenLi1xfdnvPDBEREZEl2JghIiIiXWM3ExEREekar8wQERGRrrExQ0RERLrGxgwRERHpGhsz\nREREpGtszBAREZGusTFDREREusbGDBEREekaGzNERESka2zMEBERka6xMUNERES6xsYMERER6Rob\nM0RERKRrbMwQERGRrrExQ0RERLrGxgwRERHpWl5bF8AePXnyRPLZs2cljxkzxmi7VatWSX7ppf9r\nF06dOlXy0KFDJTs4OGRrOemp27dvS54yZYpktX4AICYmRnLx4sWtXzAiIsoRvDJDREREusbGDBER\nEekaGzNERESka3k0TdNsXQhbiY+Pl7xy5UrJmzZtkvzzzz+b3V996/LkyWNymwsXLkh2cXHJVDkp\n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\n","text/plain":["
"]},"metadata":{"tags":[]}}]},{"metadata":{"id":"MbxwflYGlzbC","colab_type":"text"},"cell_type":"markdown","source":["Ok, we're not doing so bad after all. To get better results, it would help to: \n","\n","* give people a pen that works (or get more old pens in the training set)\n","* teach them how to write properly (or get more bad writers in the training set)\n","* get rid of all these europeans who add an horizontal bar to the 7 (or get more europeans in the training set)\n","\n","Still, for the major fraction of the misclassified digits, the human brain would perform better than our network, and we can always aim for better performance. \n","\n","The world record for this classification exercise is 99.8%. \n","\n","How well do you rank?\n","\n","Do you have any idea on how to manipulate the input images to help the network on such bad cases? hint: it's always possible to edit the images before feeding them to the network for training, a technique called **data augmentation**. \n","\n","## Wrapping it up \n","\n","In this tutorial, you have learnt: \n","\n","* how to use the Google Colab platform to do deep learning, without having to install software or to buy a GPU; \n","* how to use Google Colab to run your own notebooks;\n","* what is a convolutional network, and what are its most important layers: the convolutional layers, the maxpooling layers, and the dropout layers; \n","* how to build a simple convolutional network, and how to tune it to reach an accuracy around 99.4% in the recognition of handwritten digits. \n","\n","Now, let's do a small contest! \n","\n","What's your highest accuracy? \n","\n","Please tell us in the comments. To claim your reward (a dinner at my place if you're around!), you should: \n","\n","* post your accuracy history plot\n","* give the code that describes your model \n","\n","In the future, we'll have a look at other image classification problems, and talk about data augmentation. \n","\n","We will also learn about other kinds of deep neural networks used in natural language processing and time series analysis. \n"]},{"metadata":{"id":"iuA5oljUlroJ","colab_type":"code","colab":{}},"cell_type":"code","source":[""],"execution_count":0,"outputs":[]}]} \ No newline at end of file