From 7e5f9e7166ccd78318a7f8d5021a5e59447f1069 Mon Sep 17 00:00:00 2001 From: Colin Bernet Date: Mon, 11 Feb 2019 14:17:19 +0100 Subject: [PATCH] dl hwd google done --- 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 69dc22b..b29116d 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":{"base_uri":"https://localhost:8080/","height":68},"outputId":"4b98499b-24ce-4706-dbdf-aec5a0d03733","executionInfo":{"status":"ok","timestamp":1549887913711,"user_tz":-60,"elapsed":1698,"user":{"displayName":"Colin Bernet","photoUrl":"https://lh5.googleusercontent.com/-PT0Y40VvMq0/AAAAAAAAAAI/AAAAAAAAFEI/VsJO93FEElA/s64/photo.jpg","userId":"10813031011844134122"}}},"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":1,"outputs":[{"output_type":"stream","text":["Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz\n","11493376/11490434 [==============================] - 0s 0us/step\n","11501568/11490434 [==============================] - 0s 0us/step\n"],"name":"stdout"}]},{"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":"e8ab3784-a0e3-40ec-a715-9f2c4c9a827d","executionInfo":{"status":"ok","timestamp":1549887967241,"user_tz":-60,"elapsed":406,"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":6,"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":"15cc8bca-164b-4a27-93cb-1bbb01782463","executionInfo":{"status":"ok","timestamp":1549818229785,"user_tz":-60,"elapsed":3465,"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":885}},"cell_type":"code","source":["plt.hist(x_train[0])"],"execution_count":0,"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":50},{"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":"b2bbb439-e761-442d-cd5e-0832ffc4156e","executionInfo":{"status":"ok","timestamp":1549888056757,"user_tz":-60,"elapsed":1314,"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":7,"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":7},{"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":"1b919ed7-f998-43d2-f916-ea4405e75046","executionInfo":{"status":"ok","timestamp":1549818231053,"user_tz":-60,"elapsed":4650,"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":0,"outputs":[{"output_type":"execute_result","data":{"text/plain":["5"]},"metadata":{"tags":[]},"execution_count":53}]},{"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":"62ce848c-c6cb-44df-e9fd-dab55e4d3716","executionInfo":{"status":"ok","timestamp":1549888120273,"user_tz":-60,"elapsed":417,"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":"6b76efed-53e6-40ac-f325-67a50ad05b3f","executionInfo":{"status":"ok","timestamp":1549818231066,"user_tz":-60,"elapsed":4589,"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","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":0,"outputs":[{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{"tags":[]},"execution_count":56},{"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","If we use a pooling window of 2x2 pixels, the extracted value would be 1 in the case of max pooling, and 1/4 = 0.25 in the case of 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 it. It's always useful to do that 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":"6588c784-fbc8-4cfa-f53b-86fe5f8bf0fe","executionInfo":{"status":"ok","timestamp":1549818231578,"user_tz":-60,"elapsed":5048,"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":0,"outputs":[{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{"tags":[]},"execution_count":58},{"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":"2ffe98fd-5585-4be6-a3ad-559dbb2327de","executionInfo":{"status":"ok","timestamp":1549818232159,"user_tz":-60,"elapsed":5599,"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":0,"outputs":[{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{"tags":[]},"execution_count":59},{"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":["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 pixel in x and y.\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 turn 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. 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 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 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":{}},"cell_type":"code","source":["model = models.Sequential()\n","model.add( layers.Conv2D(10, 4, input_shape=(28,28,1), activation='relu') )"],"execution_count":0,"outputs":[]},{"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":"c512db93-f772-44b9-9daa-19f47497f8f2","executionInfo":{"status":"ok","timestamp":1549818232192,"user_tz":-60,"elapsed":5548,"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":173}},"cell_type":"code","source":["model.summary()"],"execution_count":0,"outputs":[{"output_type":"stream","text":["_________________________________________________________________\n","Layer (type) Output Shape Param # \n","=================================================================\n","conv2d_18 (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":"8fe83f11-cb18-4eda-cdd5-6bc73d9c7532","executionInfo":{"status":"ok","timestamp":1549818232219,"user_tz":-60,"elapsed":5521,"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":278}},"cell_type":"code","source":["model.summary()"],"execution_count":0,"outputs":[{"output_type":"stream","text":["_________________________________________________________________\n","Layer (type) Output Shape Param # \n","=================================================================\n","conv2d_18 (Conv2D) (None, 25, 25, 10) 170 \n","_________________________________________________________________\n","flatten_10 (Flatten) (None, 6250) 0 \n","_________________________________________________________________\n","dense_19 (Dense) (None, 100) 625100 \n","_________________________________________________________________\n","dense_20 (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":"564d1d7f-7de4-4ff3-82f1-61b412c956b8","executionInfo":{"status":"ok","timestamp":1549818232238,"user_tz":-60,"elapsed":5480,"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":0,"outputs":[{"output_type":"execute_result","data":{"text/plain":["(10000, 28, 28, 1)"]},"metadata":{"tags":[]},"execution_count":69}]},{"metadata":{"id":"oihTfuPBtVhd","colab_type":"code","outputId":"28fa3095-6a61-4363-9db4-802f2c444c51","executionInfo":{"status":"ok","timestamp":1549818310394,"user_tz":-60,"elapsed":83610,"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":382}},"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":0,"outputs":[{"output_type":"stream","text":["Train on 60000 samples, validate on 10000 samples\n","Epoch 1/10\n","60000/60000 [==============================] - 9s 142us/step - loss: 0.1668 - acc: 0.9501 - val_loss: 0.0583 - val_acc: 0.9818\n","Epoch 2/10\n","60000/60000 [==============================] - 8s 130us/step - loss: 0.0586 - acc: 0.9822 - val_loss: 0.0580 - val_acc: 0.9802\n","Epoch 3/10\n","60000/60000 [==============================] - 8s 130us/step - loss: 0.0393 - acc: 0.9881 - val_loss: 0.0452 - val_acc: 0.9856\n","Epoch 4/10\n","60000/60000 [==============================] - 8s 129us/step - loss: 0.0283 - acc: 0.9913 - val_loss: 0.0550 - val_acc: 0.9840\n","Epoch 5/10\n","60000/60000 [==============================] - 8s 130us/step - loss: 0.0208 - acc: 0.9939 - val_loss: 0.0560 - val_acc: 0.9842\n","Epoch 6/10\n","60000/60000 [==============================] - 8s 130us/step - loss: 0.0153 - acc: 0.9956 - val_loss: 0.0561 - val_acc: 0.9846\n","Epoch 7/10\n","60000/60000 [==============================] - 8s 131us/step - loss: 0.0116 - acc: 0.9970 - val_loss: 0.0665 - val_acc: 0.9844\n","Epoch 8/10\n","60000/60000 [==============================] - 8s 129us/step - loss: 0.0091 - acc: 0.9977 - val_loss: 0.0576 - val_acc: 0.9855\n","Epoch 9/10\n","60000/60000 [==============================] - 8s 127us/step - loss: 0.0062 - acc: 0.9983 - val_loss: 0.0768 - val_acc: 0.9843\n","Epoch 10/10\n","60000/60000 [==============================] - 8s 128us/step - loss: 0.0047 - acc: 0.9988 - val_loss: 0.0733 - val_acc: 0.9852\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":"69050329-46d3-493b-a0fe-c362589d9b90","executionInfo":{"status":"ok","timestamp":1549818396399,"user_tz":-60,"elapsed":73374,"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.9)"],"execution_count":0,"outputs":[{"output_type":"display_data","data":{"image/png":"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\nGcIZAACbIZwBALAZwhkAAJshnAEAsBnCGQAAmyGcAQCwGcIZAACbIZwBALAZwhkAAJshnAEAsBnC\nGQAAmyGcAQCwGcIZAACbIZwBALAZwhkAAJshnAEAsBnCGQAAmyGcAQCwGcIZAACbIZwBALAZwhkA\nAJshnAEAsBnCGQAAmyGcAQCwGcIZAACbIZwBALAZwhkAAJs5p3DeuHGj1q5dq6qqKu3evXvQttra\nWt1xxx2688479dRTT53TawAAwPBcIz2hvr5ehw4dUk1NjQ4cOKDq6mrV1NRIkkzT1IYNG7RlyxYV\nFBTonnvuUUVFhQ4fPjzsawAAwNmNGM47d+5URUWFJGnu3Llqb29XV1eXfD6fwuGw8vLyFAgEJEnX\nXHONduzYoYaGhmFfAwAAzm7Ebu1QKKTCwsLUciAQUHNzc2q+u7tbBw8eVDwe165duxQKhc76GgAA\ncHYj7jmfzrKs1LxhGHrwwQdVXV0tv9+vsrKyEV8znOJi//mWkpH3xJlo5/SgndOHtk4P2nl4I4Zz\nMBhUKBRKLTc1Nam4uDi1XF5erqefflqS9PDDD6u0tFTRaPSsrwEAAMMbsVt72bJl2rp1qyRpz549\nCgaDg44d33333WppaVFPT4/q6uq0dOnSEV8DAACGN+Ke86JFizR//nxVVVXJMAw98MAD2rx5s/x+\nvyorK7VmzRrdddddMgxD69evVyAQUCAQOOM1AADg3BjWuRwQBgAAacMIYQAA2AzhDACAzUzIcGbo\n0PR46KGHtHbtWt1xxx168cUXM13OhBaJRFRRUaHNmzdnupQJ6/nnn9cXvvAF3X777dq+fXumy5mQ\nuru79bd/+7f62te+pqqqKr322muZLsm2zvs6Z7s723CjGD2vv/66PvroI9XU1CgcDutLX/qSVq1a\nlemyJqzHHntM+fn5mS5jwgqHw/r5z3+uZ599Vj09PXr00Ue1cuXKTJc14WzZskWzZ8/WfffdpxMn\nTugb3/iG/vCHP2S6LFuacOF8tuFGMXqWLFmiBQsWSJLy8vLU29urZDIpp9OZ4comngMHDmj//v2E\nxRjauXOnli5dKp/PJ5/Ppw0bNmS6pAmpsLBQH374oSSpo6Nj0EiSGGzCdWszdGh6OJ1O5eTkSJKe\neeYZXX/99QTzGNm0aZP+8R//MdNlTGiNjY2KRCL65je/qa9+9avauXNnpkuakG699VYdPXpUlZWV\nWrdunb73ve9luiTbmnB7zqfjSrGxVVtbq2eeeUa//vWvM13KhPTcc89p4cKFmjFjRqZLmfDa2tr0\ns5/9TEePHtXXv/511dXVyTCMTJc1ofz2t79VSUmJnnzySe3du1fV1dWcRzGMCRfOIw03itHz2muv\n6Ze//KWeeOIJ+f2MkTsWtm/froaGBm3fvl3Hjx+Xx+PRtGnTdO2112a6tAmlqKhIV111lVwul2bO\nnKnc3Fy1traqqKgo06VNKG+//baWL18uSbr88svV1NTE4bBhTLhubYYOTY/Ozk499NBDevzxx1VQ\nUJDpciasn/70p3r22Wf1m9/8Rl/5ylf0rW99i2AeA8uXL9frr78u0zQVDofV09PD8dAxMGvWLL3z\nzjuSpCNHjig3N5dgHsaE23MearhRjL4XXnhB4XBY9957b2rdpk2bVFJSksGqgE9n6tSpWr16tdas\nWSNJuv/+++VwTLh9l4xbu3atqqurtW7dOiUSCf3whz/MdEm2xfCdAADYDH8aAgBgM4QzAAA2QzgD\nAGAzhDMAADZDOAMAYDOEMwAANkM4AwBgM4QzAAA28/8DrxopEaeAALQAAAAASUVORK5CYII=\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.6%. 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":"5caa60c1-ba22-4a84-bec0-5ca4ab7ddf55","executionInfo":{"status":"ok","timestamp":1549818310782,"user_tz":-60,"elapsed":83920,"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":312}},"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":0,"outputs":[{"output_type":"stream","text":["_________________________________________________________________\n","Layer (type) Output Shape Param # \n","=================================================================\n","conv2d_19 (Conv2D) (None, 25, 25, 10) 170 \n","_________________________________________________________________\n","flatten_11 (Flatten) (None, 6250) 0 \n","_________________________________________________________________\n","dropout_9 (Dropout) (None, 6250) 0 \n","_________________________________________________________________\n","dense_21 (Dense) (None, 100) 625100 \n","_________________________________________________________________\n","dense_22 (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":"ae3dd27b-59a9-4071-99ed-6e64ddc1a765","executionInfo":{"status":"ok","timestamp":1549818395787,"user_tz":-60,"elapsed":168895,"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":382}},"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":0,"outputs":[{"output_type":"stream","text":["Train on 60000 samples, validate on 10000 samples\n","Epoch 1/10\n","60000/60000 [==============================] - 9s 147us/step - loss: 0.2026 - acc: 0.9382 - val_loss: 0.0800 - val_acc: 0.9739\n","Epoch 2/10\n","60000/60000 [==============================] - 8s 135us/step - loss: 0.0927 - acc: 0.9724 - val_loss: 0.0599 - val_acc: 0.9809\n","Epoch 3/10\n","60000/60000 [==============================] - 8s 137us/step - loss: 0.0745 - acc: 0.9776 - val_loss: 0.0543 - val_acc: 0.9816\n","Epoch 4/10\n","60000/60000 [==============================] - 8s 135us/step - loss: 0.0633 - acc: 0.9808 - val_loss: 0.0523 - val_acc: 0.9824\n","Epoch 5/10\n","60000/60000 [==============================] - 8s 137us/step - loss: 0.0587 - acc: 0.9823 - val_loss: 0.0482 - val_acc: 0.9844\n","Epoch 6/10\n","60000/60000 [==============================] - 8s 134us/step - loss: 0.0543 - acc: 0.9843 - val_loss: 0.0466 - val_acc: 0.9846\n","Epoch 7/10\n","60000/60000 [==============================] - 8s 134us/step - loss: 0.0508 - acc: 0.9850 - val_loss: 0.0447 - val_acc: 0.9853\n","Epoch 8/10\n","60000/60000 [==============================] - 8s 137us/step - loss: 0.0487 - acc: 0.9856 - val_loss: 0.0450 - val_acc: 0.9850\n","Epoch 9/10\n","60000/60000 [==============================] - 9s 146us/step - loss: 0.0474 - acc: 0.9865 - val_loss: 0.0451 - val_acc: 0.9864\n","Epoch 10/10\n","60000/60000 [==============================] - 10s 166us/step - loss: 0.0450 - acc: 0.9862 - val_loss: 0.0432 - val_acc: 0.9870\n"],"name":"stdout"}]},{"metadata":{"id":"TFsDJTK-LnIe","colab_type":"code","outputId":"b1d19574-7cd7-4f92-9746-5f19c90ca509","executionInfo":{"status":"ok","timestamp":1549818395792,"user_tz":-60,"elapsed":168877,"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)"],"execution_count":0,"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":"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 9. 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":"45731305-08a6-4d0c-a456-9c9d69d43b4e","executionInfo":{"status":"ok","timestamp":1549818671382,"user_tz":-60,"elapsed":94419,"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":677}},"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":0,"outputs":[{"output_type":"stream","text":["_________________________________________________________________\n","Layer (type) Output Shape Param # \n","=================================================================\n","conv2d_20 (Conv2D) (None, 25, 25, 10) 170 \n","_________________________________________________________________\n","flatten_12 (Flatten) (None, 6250) 0 \n","_________________________________________________________________\n","dropout_10 (Dropout) (None, 6250) 0 \n","_________________________________________________________________\n","dense_23 (Dense) (None, 200) 1250200 \n","_________________________________________________________________\n","dense_24 (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 170us/step - loss: 0.1795 - acc: 0.9441 - val_loss: 0.0671 - val_acc: 0.9785\n","Epoch 2/10\n","60000/60000 [==============================] - 9s 154us/step - loss: 0.0775 - acc: 0.9766 - val_loss: 0.0569 - val_acc: 0.9817\n","Epoch 3/10\n","60000/60000 [==============================] - 9s 154us/step - loss: 0.0607 - acc: 0.9817 - val_loss: 0.0479 - val_acc: 0.9850\n","Epoch 4/10\n","60000/60000 [==============================] - 9s 154us/step - loss: 0.0531 - acc: 0.9837 - val_loss: 0.0453 - val_acc: 0.9851\n","Epoch 5/10\n","60000/60000 [==============================] - 9s 153us/step - loss: 0.0465 - acc: 0.9855 - val_loss: 0.0444 - val_acc: 0.9859\n","Epoch 6/10\n","60000/60000 [==============================] - 9s 154us/step - loss: 0.0437 - acc: 0.9870 - val_loss: 0.0444 - val_acc: 0.9867\n","Epoch 7/10\n","60000/60000 [==============================] - 9s 157us/step - loss: 0.0406 - acc: 0.9884 - val_loss: 0.0473 - val_acc: 0.9860\n","Epoch 8/10\n","60000/60000 [==============================] - 9s 155us/step - loss: 0.0378 - acc: 0.9889 - val_loss: 0.0513 - val_acc: 0.9855\n","Epoch 9/10\n","60000/60000 [==============================] - 9s 154us/step - loss: 0.0350 - acc: 0.9891 - val_loss: 0.0392 - val_acc: 0.9879\n","Epoch 10/10\n","60000/60000 [==============================] - 9s 154us/step - loss: 0.0347 - acc: 0.9895 - val_loss: 0.0424 - val_acc: 0.9873\n"],"name":"stdout"}]},{"metadata":{"id":"Q45Q4PACYr9p","colab_type":"code","outputId":"9bf53eea-847c-4215-ed68-89b1f10ae26d","executionInfo":{"status":"ok","timestamp":1549818680961,"user_tz":-60,"elapsed":764,"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)"],"execution_count":0,"outputs":[{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAecAAAFZCAYAAACizedRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzt3Xtwm9WBPv7n1dWSJVmSI9mJ7dxv\nxCGBACYhoQHqENIwnSmUxECg37Ikw7adpbvd/rrrwoZpZgN0NrtLKcsyA73MMJn1FpKFWVLChjrc\n4iQFSm5AYjuxY9mOLdmSrIt1fd/fH5JlO4kvsWW9kvx8ZjSSXt2ODsSPzjnvOUeQJEkCERERZQ2F\n3AUgIiKi4RjOREREWYbhTERElGUYzkRERFmG4UxERJRlGM5ERERZhuFMRESUZRjOREREWYbhTJQD\n/vCHP2DTpk24++678fDDD6O9vR2SJOHZZ5/FXXfdhY0bN+LVV18FgBGPv/jii/j5z3+ees+h9x95\n5BH827/9GzZt2oTPP/8cLpcLf/VXf4V77rkHd911F37729+mXnf69Gncd9992LhxI7Zt24a2tjY8\n//zz+MUvfpF6jtfrxcqVK9Hb25uJ6iHKOyq5C0BEo+vp6cEvfvEL/N///R9KS0vxj//4j/iP//gP\nVFVV4eTJkzh48CDC4TDuvfdeVFVV4cKFC1c9PpbTp0/jnXfegUKhwK5du1BeXo7XXnsNbW1t2LRp\nE+655x7MnDkTf/d3f4ef//znWL9+PX73u99h165dePLJJ7F9+3bU1tZCpVKhvr4eN998M6xWawZq\niCj/MJyJslxxcTE+++wzaDQaAMDNN9+Mt956C6FQCBs3boRarYZarcaBAweg0+nw+9///qrHP/jg\ng1E/Z/369VAoEp1pTz31FOLxOACgoqICNpsNDocDoVAIbrcb69evBwBs27YNDz74ILRaLYxGIxoa\nGnD77bfj0KFD+Na3vjWFtUKU3xjORFkuHo/jV7/6Ff70pz8hHo8jEAhg3rx5cLvdMJlMqefp9XoA\nGPH4WIqKilK3T506hT179qCzsxMKhQJOpxOiKMLtdsNoNKaep1KpoFIl/ozce++9+N///V/ccsst\nOH78OHbv3j2p7000nXHMmSjLHThwAH/605/w+uuv4+DBg/ibv/kbAIDFYoHb7U49z+Vywe/3j3hc\noVBAFMXUca/XO+Jn/vSnP8XGjRtx8OBBvPvuu7BYLKnP9Hg8qfeJRqNwOBwAgM2bN+P999/H+++/\nj1WrVg37gUBE14bhTJTlenp6UFZWBqvVCrfbjT/+8Y8IBAK466678M477yASiSAYDOKhhx7CuXPn\nRjxut9tx7tw5iKKI3t5efPjhh6N+5vLlyyEIAvbv34/+/n4Eg0HMnTsXpaWleO+99wAAb7zxBv7p\nn/4JADB//nzMnj0be/bswaZNmzJSN0T5it3aRFnu3nvvxTvvvIMNGzagoqICP/7xj/HXf/3XOHXq\nFNatW4e7774bWq0W3/3ud7Fq1SpIkoSzZ89ecXzRokV4++23UV1djfnz5+Oee+5BT0/PVT/zySef\nxA9/+EOYzWbU1NRg69atePrpp7F371688MIL+OlPf4p//dd/hc1mw7PPPpt63ebNm/HCCy/gm9/8\nZqaqhygvCdzPmYjS5cCBAzh48CBeeOEFuYtClNPYrU1EadHf349XX30VjzzyiNxFIcp5DGcimrT6\n+nps2rQJd955J26++Wa5i0OU89itTURElGXYciYiIsoyDGciIqIskzVTqZxOX1rfz2LRw+0OpvU9\n6Uqs58xgPWcO6zozWM+AzWYc8bG8bTmrVEq5izAtsJ4zg/WcOazrzGA9jy5vw5mIiChXMZyJiIiy\nDMOZiIgoyzCciYiIsgzDmYiIKMuMK5x3796NrVu3oqamBidPnhz22KFDh3D//ffjwQcfxOuvvw4A\nEEURTz/9NGpqavDII4+gubk5/SUnIiLKU2POcz5+/DhaW1tRV1eH5uZm1NbWoq6uDkAihHft2oX9\n+/fDbDZj+/btqK6uxqlTp+Dz+fBf//VfuHjxIv75n/8Zr7zyypR/GSIionwwZsu5oaEB1dXVAIAF\nCxbA6/XC7/cDANxuN0wmE6xWKxQKBVavXo0jR46gpaUFK1asAADMnj0bHR0diMfjU/g1iIiI8seY\n4exyuWCxWFL3rVYrnE5n6nYgEEBLSwui0SiOHTsGl8uFxYsX4+OPP0Y8Hsf58+fR1tYGt9s9dd+C\niIgoj1zz8p1DN7ESBAHPPfccamtrYTQaUV5eDgBYv349Pv/8czz88MNYsmQJ5s+fj7E2v7JY9Glf\nMWa0pdEofVjPmcF6zhzWdWawnkc2Zjjb7Xa4XK7U/e7ubthsttT9qqoq7N27FwCwZ88elJWVAQD+\n9m//NvWc6upqFBcXj/o56V5j1WYzpn29broS6zkzWM+Zw7rOjGyqZ0mSEImKCEViCEXiyUsM/cnr\nUCSOcCSO6+ZYMLskfT8oRvtxMmY4r127Fi+++CJqampw5swZ2O12GAyG1OOPP/44nn/+eeh0OtTX\n1+P73/8+vv76a/z+97/Hs88+iw8//BDLli2DQsFZW0RElB6xuJgI0fDwQA1F4uhPHbvysZFuj9G5\nCwBYsaAYP35g5dR/OYwjnFetWoXKykrU1NRAEATs3LkT+/btg9FoxIYNG7BlyxY89thjEAQBO3bs\ngNVqhdlshiRJ+O53vwutVot/+Zd/ycR3ISKiLBQXRUSiIiIxEdFoHOGYCHd/DJ1dfVcPy/DYgRqL\njyNNR6BSKlCgUaJAo0SxSYcCrTJ5X5U6XqBRQacZfnxheVEaa2V0gjTWYHCGpLt7I5u6TPIZ6zkz\nWM+ZM13qWpIkRGOJwIxE4yNfR0VEY3GEoyIisTiiMRHhaOJ64PHB11z++sTtuDi5mBEEXBGcw25f\nJVx1A7e1V75OpcyOntxJdWsTEZG8orE4gqEYguHYsOv+cOJ2OJIMxmSAJgI1EaKRWBzRqIhwMjSj\nQ8Iz3dQqBTQqBTRqJbRqJYw6DbRqReK4Wpl6TKNSwFykgxQXxwjcxDGNSgFBENJe3mzGcCYimkID\nJxslAjV6RbBeHrr9Q28nnz+ZLlylQoBGrYBalQg5faFmMCzVCmhUA9cDtwdDNPE8BbSp28ohzxt+\nrVYroLiGAJ0uPRQTxXAmIhqFKEkIR+JXCc/oVVuxg8E6+Pxr7dZVKQXoC9TQF6gxw6yDXquCvkAF\nnVaVuq3XqqBLXmvVyitapgPhmi1duHRtGM5ENG1JkoQebwht3X60dfvhcAUQjorw+kKDQRyOjetM\n3qE0agV0WhWMejVKrDrotepUoI4WsvoCNfRaJdRpXvOBcg/DmYimhUg0jnZXIBHEXX60dfvQ5gyg\nPxy74rlajRJ6rQpmoxYzZxQOC9LEtXrUkGVrlSaL4UxEeUWSJHj8kUT4JlvEbd1+XOoNDmsBCwJQ\natXj+vlWlNsMqLAnLgvnFqO3NyDfFyACw5mIclg0JqLDFYDD6R8WxP7+6LDn6bRKLCorQoXdiIqS\nRAjPmlEIrfrK7mMlW71TxhP24qTzDE71fAUoRGhRgEJNIQzqyy5DjqmVarmLLQuGMxHlBG/gKq3h\nnuAVJ1vZzTosqTCnWsIVdgOKiwqm3VScbNEddOGE8zROOE/jQt/Fa369RqkZFtyF6kIYNYlrg1oP\ng8aQfEwPg9oAvVoHhZD7P7AYzkSUVWJxEZd6g8NCuK3bj75AZNjztGol5pYah4SwEWW2Qui0/LMm\nJ0mS4PB3pgK5I3AJAKAQFFhsXoCV9uVYOaMSC8pmobWzG76IH4FoAP5oEP6oH/5I8joaQCAahD/i\nhz8aRGfgEqLilecHXE6AgEK1/rLwTtw3JsN9aMvcoDFAo1Bn3Y83/l9MRLLx90eHBHCiVdzhClwx\nr7fYpMUNC2eg3G7A7GQY2yy6a5pXS1NHlERc8F7EF85TOOE8g55QLwBApVDh+hnXYeWM5bh+xjIY\nNIWp1ygVShg1Bhg1hpHe9grheAT+SCAZ3sFEqCfD2x8NJC6RQDLYA+gOOiFh7FPt1QrViOE99P4c\nUwW0Ss21V9AEMJyJaMqJooQu95WtYbcvPOx5apVi2MlZFXYDyu0GFBZMz3HHbBYTYzjnbk60kF1n\n4Iv4AQAFSi1usq/EDfbrscy6GAWqgrR9plapgVanQbHOMq7ni5KIYLR/MLijAQQiAfiS4X15mHf1\nuxDxd4z4ftfPuA5PrPh+ur7OqBjORJRW4Wgcbd1+tF4aHB9ud/qvWC7SbNDg+vnFw4K4xKqDkjvY\nZa1wPIIve87ihPM0Tvd8hf5YCABgUBfitplVWGmrxBLrIqgV2REtCkGRaPUOabGPJRKPDgb3ZeG9\n1Lp4Cks7XHbUIBHlpP5wDG3dfrRc8qH1kg8Xu3zo6AkMm7KkVAiYNaNwWAhX2A0w6jPTPUiTE4gG\ncdr1Fb5wnsZXvWdT474WrRmrS2/GSttyLDDPzYuTsABAo1RDozTDUmCWtRwMZyIal2AoitZLPrR2\n+dHa5UPLJR+6e4OJMT11BII6BI0+ipmLJBQWxaHVxTDDYESpyQJzgQomjRomjQYmjRZ6Nf/0ZLPE\nlKcvccJ5Guc8zRClRK9Hqd6OG2zLsdK2HBXGsqw7iSqf8F8IEV3BF4ygtcuH851unHd2w+FxwRvp\ng6AOQ9CEIGhCUM6MoHBeGKKyf9hJN+7kBSGgOQTAdeX7KwQFTBojTBoDjBpj8nbiYtQYEre1ifsF\nSi1DIANGmvI0x1iBlbZKrLQtR2mhXcYSTi8MZ6JpSJIkBKJBeMJedHh7cMHVjXZvD1xBD3zRPsQU\nQQiaMARVFDACMAKXd0InAtYEs3YGirRFMGtNMGuLkhcTjBoD+mMh9EX86Iv4UhdfxI++cOJ2Z6Ab\nF33to5ZVrVAND2+tESa1IRXeiUBPXGum6YIVEyFJEtr9nfjisilPAgQsMs/HDbbrsdJWKXv37nTF\ncCbKMzExBm/YB2/EC0+4D56QJ3Ed9sIV9KC334NA3A8R8StfrE1clKIKOoUBRVoTSgxW2A0WWLRF\nw0LYqDFMepxRkiSE4mH4Ir7BEA/7kveHXvxo9TlS3asjKVAWwKQ1wKg2Dgtv00BrPNkiN6oNUCqm\n3+YSA1OeTjhP4wvn6cEpT4ISy4uvww22K6c8kTwYzkQ5IhFkIbhDXniTYesJ98ET8cIb9sITStz3\nRf2jvAeAqBZSpBBStAAaSQ9LgRklRgvmWO1YVFKCCssM6NTpm/4yGkEQoFMVQKcqgF1vG/W5oiQi\nGOtPhrf/svAecizsgzPYM+b81kK1/squdI0RpT4r4v0C9GoddCo99Cod9Gpdznavx8QYGt3n8YXz\nFE66vkRfJLGHslapwU32lVhpW47K4iVpnfJEk8dwJsoCoiSiL+IbDNxwIoATQeyFL+5DT9CDSDwy\n4nsooYIGehRE7AgFVIiGtJAiWkiRAkiRApi1JsybYcOc0iLMLTVidokRRYW5c8a0QlCkFoYYS1yM\nwx8NXhbevlR4D7TGveE+dAa6hr+4eeTP16kKEmGt0kOv1kGv0kGXvB4Icf2QQB8M9swuHxqOR/BV\nz1l84TyD0z1fXjbl6RastC3HEsvCabtudS5gOBNNsXA8kgjdkDcVup7I8BD2hvtGbekZtQbYdMUw\na4qggR7xsBb9fhW8bgW6nSL6/RogrgKQCAC7RYc5JUbMWWDEnFIj5pQYYdBNnz/ESoUSRVojirTG\nMZ8bFWOp4PZF/FAUiOhyuxGM9iMY60cw2o/+WDB1OxjrhzvsRWwcS0kOECCMEOQ66NX61DGd+sqQ\nL1BpxzV8EIwGccr1FU44T+PL3nOIionNPyxaM24tvQk32JZjftHcadmdn4sYzkQTJEoi/NHAYOAO\ntHqTIeyJ9MEb9qZaLVejEpQo0powr2hOaiy3SGtKje8KMR26u+O45I7i63M9ONXlRzg6OFYsACgt\n1mPlkkRLONEiNkDPFbXGTa1QwVpggbUgseqUzWaE0+Ab83WReBTBWDAV2P1DwjsYTYb50GOxfvRH\ng+gMe8e1RvQAAcJgiz0Z2kNDXqvUoMlz4YopTytty7HSVonZxvKc7I6f7hjORFcRjUfhjfSlWreD\nl0TgepKt3bh0lZOqknQqHSxaM+aaTKkzmAdPqDLDrDWhUK1PtYokSUK3ux/n2jz4wuFBY9sldHv6\nU+8nCMCsGYWJFnGyNVxhN3CjB5kkFqtInJ1+raLx6GXhHbwsxAduB4e14DsD3akW8eVmG8tTc5A5\n5Sn38V815T1JkiBKYuICaUjwXhm4A8cC0eCI7zcwR7fCWDZs+lCRdjCEzdoiaMZYIF8UJbR1+XHO\n4UFjmweNDi+8Q3Ze0mtVWLGgGIsrzLhl+UyYtMqr7j9MuUetVKNIqUaR1nTNr42KsWFd7f2xEGYW\nlqRa/pQfGM40YW2+dhztccDrC0CUJIhSHCKGBGHqIkGECFEUE9fJ45IkIS6JkCQRcSnx2OXHpIHX\nJ9978NiQ95big59xxWPiuHalGVCg1KJIW4Ryw6zLAnfyU4iiMREXOvvQ6PDgbJsHze1e9IcHW95m\ngwZV19mxqNyMxRVmlNkKU7su2WxGOJ1jd7VS/lMrVOMeT6fcxXCmayJKIk66vkR920do8lyY0s8S\nIEAhKJIXAQpBmbiGYshxBVQK5bD7Cgx5bvKYICigFBQQBAFqQYWiYV3Mg13OujROJ+kPx9DU7sW5\ntkTL+HynD7H44DzdEosONy0xY3G5GYsrimAz6zg2SEQAGM40Tv2xfjR0/BmHHUdSCxdcZ12Mu5es\nQywoXBmgggIKDIaiQhAGAxIKKBWJa4UgJENTkbpWJEM514LKG4igsc2Dc20enHN40NbtT20AIQhA\nhd2QDGIzFpUXociglbfARJS1GM40KmewBx84PkFD558RioehVqiwdtatuKN8LWYZSqdtd6skSXB6\nQ0PC2Iuu3sFxapVSwMKyIiyuSITxgllF0BfwnxsRjQ//WtAVJElCo+c86ts+xinXl5AgoUhjwt1z\n7sTaWbdOy6X9RElCuzOQ6KJ2JALZ4x88eatAo8Ty+dZUy3jeTCPUKp68RUQTw3CmlGg8ik+7T6C+\n7SO0+zsBJHakuatiHW60r5hWixfE4iJaLvlSLeOmdi8CocG5qSa9GjctsSVaxuVmVNgNUChyqxue\niLIXw5ngDfvwcXsDPmo/Cl/UD4WgwCr7CtxZcTvmmWbn3NjvRIQiMTS396Vaxuc7+hCJDZ68ZTMX\n4IaFM7Ao2U1dYuHJW0Q0dRjO01ibrwP1bR/hs64vEJPi0Kl02DD7DnyjfE3ez5n0BSNodCTOpD7X\n5sHFLj/E5NlbAoAymwGLK4qSJ2+ZYTHy5C0iyhyG8zQjSiJOub5EfdvHaPScBwDY9TNwZ/ntuHXm\nTdCOsXBGrgpFYvj6ogdnLvTiy5ZedPYMnrylVAiYN8uIxeVmLEqeSV3I5S+JSEYM52miPxZCQ+ef\ncbjtk2FToe6sWIfrrIsnvS9vthElCa2XfDhzoRdnLvSiqd2LuJhoGWvVSlTOtSS6qMvNmDfLxJW3\niCirMJzz3NWnQlXhjvJ1mGUolbt4adXbF8KZlt5k69gNf39iDWIBwNyZRlTOs6JyrhULyoqgUubX\njxEiyi8M5zw00lSoDXPuxLo8mgoVjsRxti3RVX2mpRcdrkDqMYtRi3UrZmL5PCuum2OBUZ+f3fVE\nlJ8YznkkKsbwWdcXqG/7GA5/B4DETjV3VdyOG+3XQ6XI7f/coiTB0e3HmQu9OH2hF40OD2LxRFe1\nRqXA9fOLsXyeFZXzrJhZrOfZ1ESUs3L7rzUBAPoiPnzUfhQfORrgi/ohQMCN9hW4q2Id5pnm5HRI\nef1hnGlJhPGXF3rRFxzcLm92iQGV86xYPteKheVmqFXsqiai/MBwzmFtvg4cbvsYn3b9JTUVqnr2\nenyj7DYU63JzKlQ0Fse5Nm+qdexw+lOPFRVqcNvy0tTYsamQXdVElJ8YzjkmMRXqK9S3fXTZVKh1\nqCq9CQWq3JqPK0kS2l2B1FnVZ9s8iCYX/1ApFaica0HlvER3dZmtMKd7AYiIxovhnCP6YyEc7fwU\nh9s+his5FWqpZRHurFiHZcVLcmoqVF8wgi9benHmfC9Ot/TCO2SN6nJbYaJlPC+xTrWGU5yIaBpi\nOGc5V38PDjs+QUNH7k6FisZENLV7U63j1q7BXayMejVWLytB5Twrls21ciUuIiIwnLOSJEloSk6F\nOpmaCmXMmalQkiThUm8Qpwe6qi96EI7GASRW41o624zl84tROdeKihIDFOyqJiIahuGcRXJ5KpS/\nP5roqk7OOe7tC6cem1msT5xVPc+KJRUWaDXsqiYiGk32/rWfRrzhPnzcfhQfdRyFL5I7U6F6vCEc\n/NSB42cuoaWzD1LyeGGBCrcstafOqi4uKpC1nEREuYbhLBNJknChrxWH2z7BX5ynIEoidKoCfHP2\nN7C+bG1WT4WSJAkffNGBuvomhCNxKBUCFpUXoTK5CMicEiP3NiYimgSGc4ZF4lF81vUFPmg/gjZf\nOwBgZmEJ1pevxS0lN2b9VCiXpx+//ePX+KrVDb1WhR89sBLXlRdBp+X/SkRE6cK/qBnSG3Ljo/aj\n+KTjGALRIAQIuMG2HOvL12KReX7Wdl0PEJOt5f9OtpZXLCjG9+5ZisXzZ8Dp9I39BkRENG4M5ymU\n2ICiGYcdR3DSeQYSJBSq9bh7zp24vWw1rAXZ23U9lNPTj98NaS0/fu91WFNZmvU/KIiIchXDeQqE\nYmH8uetzfOA4gs5AFwCgwliG9eVrcbN9JdRKtcwlHB9RknD4L+34Q30zwtE4Vi4oxqP3LOVcZCKi\nKcZwTqPuoAsfth/B0c5P0R8LQSEocHPJDVhfvhbzTLNzqqXp9PTjtwe+wtcXPSgsUOHRjcuwurIk\np74DEVGuYjhPkiiJ+Kr3HD5wHMGXPWchQYJJY8Sd827Hulm3okhrkruI1+Ty1vINC2fg0XuWwGxg\na5mIKFPGFc67d+/GiRMnIAgCamtrsWLFitRjhw4dwssvvwyNRoPNmzdj27ZtCAQC+NnPfgav14to\nNIof/vCHuP3226fsS8ihP9aPhs5P8aHjCJz9PQCA+UVzsL58LW6wLc/qBUNG0u3px++GtpbvWYbV\ny9haJiLKtDET5Pjx42htbUVdXR2am5tRW1uLuro6AIAoiti1axf2798Ps9mM7du3o7q6GocOHcK8\nefPwk5/8BF1dXfje976Hd999d8q/TCZ0BrrwgeMIjl36DJF4BCqFCqtn3oz15bdhtrFc7uJNiChJ\nqP+8HX843IRIVGRrmYhIZmOGc0NDA6qrqwEACxYsgNfrhd/vh8FggNvthslkgtVqBQCsXr0aR44c\ngcViwdmzZwEAfX19sFhy46zkkSS2afwShx1HcM7dBACwaM3YNOebuG1WVdavdT2abk8/fvvOVzjb\nlmgt/797luJWtpaJiGQ1Zji7XC5UVlam7lutVjidThgMBlitVgQCAbS0tKCsrAzHjh1DVVUVduzY\ngX379mHDhg3o6+vDK6+8MmZBLBY9VKr0rrlssxkn9Xpf2I/3z3+C95o+hCuY2Kax0r4YmxbdiZtm\nXQ+lInfXiBZFCQeOXMDv3vkS4Ugct1aW4offXQmL6dqX2pxsPdP4sJ4zh3WdGaznkV3zwKgkSanb\ngiDgueeeQ21tLYxGI8rLE926b731FmbNmoXXXnsNX3/9NWpra7Fv375R39ftDl5rUUZlsxknvDhG\nm68dHziO4NOuvyAqxqBRqLGubDXWl92W2qaxtye95c2kbncQvznwNc4lW8vf+/Yy3HpdCWLhKJzO\n6DW912TqmcaP9Zw5rOvMYD2P/uNkzHC22+1wuVyp+93d3bDZbKn7VVVV2Lt3LwBgz549KCsrw/Hj\nx7Fu3ToAwNKlS9Hd3Y14PA6lMntbmnExji+cp3DYcQTnvS0AgBm6Yqwvvw2rS2+GXq2Tt4BpIEoS\n3v/MgTc/aEYkKuLGRTPw6MYlKOLYMhFRVhkznNeuXYsXX3wRNTU1OHPmDOx2OwwGQ+rxxx9/HM8/\n/zx0Oh3q6+vx/e9/H11dXThx4gQ2btyI9vZ2FBYWZm0we8M+fNJxFB+3H4U3kvgVt6x4CdaX3YZl\nxUugEBQylzA9utxB/Padr3DO4YVBp8b3N12HquvsHFsmIspCY4bzqlWrUFlZiZqaGgiCgJ07d2Lf\nvn0wGo3YsGEDtmzZgsceewyCIGDHjh2wWq3YunUramtrsW3bNsRiMTzzzDMZ+CrjJ0kSWvou4rDj\nE/yl+xTiUhwFygLcWbEO3yhbA7veNvab5IhUa/lwMyIxEasW2/DIxiUoKtTIXTQiIhqBIA0dRJZR\nuscerjaeEY1H8Vn3CXzg+AQXkztClRaWYH3ZbagqXZX1O0Jdq8tby9vuXoxblqa3tcxxo8xgPWcO\n6zozWM+THHPOB+6QBx+2N+BIx3H4owEIELByRiXWl6/FYsuCvOvaFSUJhz51YN8HidbyTYtt2MbW\nMhFRzsjbcJYkCefczfjAcQQnXWcgSiIKVXpsmH0Hbi9bg2Jdbs+9HklXbxC/OfAVGpOt5cc2X5f2\n1jIREU2tvAzns71NeP6zd3DRm+i6rjDMwvrytbip5AZocmRHqGslihIOfdqGNz88j2hMxE1LbHjk\n7iUwsbVMRJRz8jKcj136DO19nbjJvhLry9diftGcvG45Xkq2lpuSreXH712GW5ba5S4WERFNUF6G\n84NL78dfr3kYAW9M7qJMKVGU8H+ftmFfsrV881I7tm1YzNYyEVGOy8twVitU0Gt0CCB/zwTs7Ang\ntwe+RlO7F0Y9W8tERPkkL8M5n4mihPf+3Ib9HyVay7cstePhuxfDpGdrmYgoXzCcc0hnTwC/OfAV\nmtv7YNSrsf3eZbiZrWUiorzDcM4Bl7eWq66z46ENbC0TEeUrhnOW6+wJ4DfvfIXmjj6Y2FomIpoW\nGM5ZShQlHPzzRez/8AJi8URr+eENi2Fka5mIKO8xnLPQ5a3lRzYuw01L2FomIpouGM5ZRBQlHDx+\nEfs/SrSWb11WgoeqF7G1TERndcqyAAAWuElEQVQ0zTCcs4TT049X3j6D8x19MBVq8MjdS3DTkvzZ\nupKIiMaP4Zwl/uv9Rpzv6MPqZSV4aMNiGHT5uQY4ERGNjeGcBURJwrk2D2zmAuz4dqXcxSEiIpkp\n5C4AAZ2uAAKhGBaVm+UuChERZQGGcxZobPcCABaWF8lcEiIiygYM5yzQ5EiE86IyhjMRETGcs0Kj\nwwO9VoWZMwrlLgoREWUBhrPMvP4wnJ4QFpYXQSEIcheHiIiyAMNZZo0DXdocbyYioiSGs8yaBk4G\n43gzERElMZxl1ujwQKkQMG+mSe6iEBFRlmA4yygcjeNilx9zS43QqJVyF4eIiLIEw1lGFzr6EBcl\nzm8mIqJhGM4yanR4AAALy7gyGBERDWI4y4grgxER0dUwnGUiShKa2/tQYtGhqJD7NRMR0SCGs0w6\nnAH0h2NsNRMR0RUYzjIZGG/mTlRERHQ5hrNMBsabuTIYERFdjuEskyaHFwadGqVWvdxFISKiLMNw\nloHbF4bLG8LCsiII3OyCiIguw3CWQWp+M7u0iYjoKhjOMmjiTlRERDQKhrMMGtu9UCkFzC01yl0U\nIiLKQgznDAtFYmjr8mNuqQlqFTe7ICKiKzGcM+x8Rx9EiZtdEBHRyBjOGcbxZiIiGgvDOcNSm12U\nMZyJiOjqGM4ZJIoSmtu9KLXqYdRzswsiIro6hnMGOZx+hCJxdmkTEdGoGM4Z1Ojg/s1ERDQ2hnMG\nNaU2u+BOVERENDKGcwY1Ojww6tUosejkLgoREWUxhnOG9PaF0NsX5mYXREQ0JoZzhjQ62KVNRETj\nw3DOEO5ERURE48VwzpAmhxcqpQJzSrjZBRERjY7hnAH94RjanH7Mn2mEWsUqJyKi0anG86Tdu3fj\nxIkTEAQBtbW1WLFiReqxQ4cO4eWXX4ZGo8HmzZuxbds2/OEPf8Dbb7+des7p06fxl7/8Jf2lzxHn\nO/ogScBCjjcTEdE4jBnOx48fR2trK+rq6tDc3Iza2lrU1dUBAERRxK5du7B//36YzWZs374d1dXV\neOCBB/DAAw+kXv/HP/5xar9FluN4MxERXYsx+1gbGhpQXV0NAFiwYAG8Xi/8fj8AwO12w2QywWq1\nQqFQYPXq1Thy5Miw17/00kv4wQ9+MAVFzx2plcG42QUREY3DmC1nl8uFysrK1H2r1Qqn0wmDwQCr\n1YpAIICWlhaUlZXh2LFjqKqqSj335MmTmDlzJmw225gFsVj0UKmUE/waV2ezyX/yVTwu4kJnHypK\njJg32yp3caZENtTzdMB6zhzWdWawnkc2rjHnoSRJSt0WBAHPPfccamtrYTQaUV5ePuy5b7zxBr7z\nne+M633d7uC1FmVUNpsRTqcvre85Ea2XfAhF4phXmh3lSbdsqed8x3rOHNZ1ZrCeR/9xMma3tt1u\nh8vlSt3v7u4e1hKuqqrC3r178corr8BoNKKsrCz12LFjx3DjjTdOtNx54VxyvJk7URER0XiNGc5r\n167FwYMHAQBnzpyB3W6HwWBIPf7444+jp6cHwWAQ9fX1WLNmDQCgq6sLhYWF0Gim977FTamVwRjO\nREQ0PmN2a69atQqVlZWoqamBIAjYuXMn9u3bB6PRiA0bNmDLli147LHHIAgCduzYAas1Ma7qdDpT\nt6crSZLQ6PDAVKiBzczNLoiIaHwEaeggsozSPfaQDeMZLk8//r//bMBNi2344X3Xy1qWqZIN9Twd\nsJ4zh3WdGaznSY4508Q1Jvdv5vxmIiK6FgznKdTEnaiIiGgCGM5TqNHhhUalwOwSw9hPJiIiSmI4\nT5FgKIp2px/zZpqgUrKaiYho/JgaU6S5ow8SON5MRETXjuE8RRo53kxERBPEcJ4iTQ4PBAALy0xy\nF4WIiHIMw3kKxOIiznf0YZatEPoCtdzFISKiHMNwngJt3X5EYiK7tImIaEIYzlMgNd7M/ZuJiGgC\nGM5ToDG5ExXP1CYioolgOKeZJElocnhRZNBgRlGB3MUhIqIcxHBOM6c3BG8ggkXlZgiCIHdxiIgo\nBzGc06wp2aXN8WYiIpoohnOaDZwMxvFmIiKaKIZzmjU5vNCoFaiwc7MLIiKaGIZzGgVCUbS7Algw\nq4ibXRAR0YQxQdJoYP/mhRxvJiKiSWA4p1FT+8BmFwxnIiKaOIZzGjU6vBAEYAFbzkRENAkM5zSJ\nxUVc6OxDuc0AnVYld3GIiCiHMZzTpPWSD9GYyClUREQ0aQznNOFmF0RElC4M5zQZPBmM20QSEdHk\nMJzTILHZhQcWoxbF3OyCiIgmieGcBt3ufvQFo5xCRUREacFwToNGLj5CRERpxHBOg6b25E5UHG8m\nIqI0YDinQaPDC61GiXJ7odxFISKiPMBwniR/fxSdPUEsmGWCUsHqJCKiyWOaTNLAZhfs0iYionRh\nOE9SY3K8mSuDERFRujCcJ2lgs4v5M01yF4WIiPIEw3kSojERLZ0+VNi52QUREaUPw3kSWi/5EIuL\nHG8mIqK0YjhPQmNqfjPHm4mIKH0YzpPQ2MaVwYiIKP0YzhMkSRKa2r0oNmlhNXGzCyIiSh+G8wRd\n6g3C3x/leDMREaUdw3mCUptdcLyZiIjSjOE8QU3ciYqIiKYIw3mCGtu90GmVKLcZ5C4KERHlGYbz\nBPQFI+jqDWLBrCIoFILcxSEiojzDcJ6AJo43ExHRFGI4T0BqJyqONxMR0RRgOE9AY7sHCkHA/FkM\nZyIiSj+G8zWKRONo6fRhdokBWo1S7uIQEVEeYjhfo5ZLPsRFiePNREQ0ZRjO16jRMbDZBVcGIyKi\nqcFwvkZcfISIiKbauMJ59+7d2Lp1K2pqanDy5Mlhjx06dAj3338/HnzwQbz++uup42+//Ta+/e1v\n47777sPhw4fTWmi5iMnNLmYUFcBi1MpdHCIiylOqsZ5w/PhxtLa2oq6uDs3NzaitrUVdXR0AQBRF\n7Nq1C/v374fZbMb27dtRXV0NrVaLl156CW+++SaCwSBefPFF3HHHHVP9XaZcZ08QgVAMKxYUy10U\nIiLKY2OGc0NDA6qrqwEACxYsgNfrhd/vh8FggNvthslkgtVqBQCsXr0aR44cQUFBAdasWQODwQCD\nwYBdu3ZN7bfIkKbkePNCjjcTEdEUGrNb2+VywWKxpO5brVY4nc7U7UAggJaWFkSjURw7dgwulwsO\nhwOhUAhPPPEEHnroITQ0NEzdN8ig1OIjPFObiIim0Jgt58tJkpS6LQgCnnvuOdTW1sJoNKK8vDz1\nmMfjwa9//Wt0dHTg0UcfRX19PQRh5HWoLRY9VKr0zhu22Yxpfb/znT4U6tRYubSUa2oPke56pqtj\nPWcO6zozWM8jGzOc7XY7XC5X6n53dzdsNlvqflVVFfbu3QsA2LNnD8rKyhAKhXDjjTdCpVJh9uzZ\nKCwsRG9vL4qLRx6rdbuDk/keV7DZjHA6fWl7P28ggs6eAK6fX4yeHn/a3jfXpbue6epYz5nDus4M\n1vPoP07G7NZeu3YtDh48CAA4c+YM7HY7DIbBbRIff/xx9PT0IBgMor6+HmvWrMG6detw9OhRiKII\nt9uNYDA4rGs8FzWl5jezS5uIiKbWmC3nVatWobKyEjU1NRAEATt37sS+fftgNBqxYcMGbNmyBY89\n9hgEQcCOHTtSJ4dt3LgRW7ZsAQA89dRTUChye0p1I8ebiYgoQwRp6CCyjNLdvZHuLpNdv/8UF7t8\n+PXffgNaNdfUHsCuqcxgPWcO6zozWM+T7NYmIByN42KXD7NLjAxmIiKacgzncWjp7ENclNilTURE\nGcFwHodzHG8mIqIMYjiPQ2qzC64MRkREGcBwHoMoSWhu98Ju1qGoUCN3cYiIaBpgOI+hwxVAMBxj\nlzYREWUMw3kMjakubYYzERFlBsN5DNyJioiIMo3hPIZGhxeFBSrMLNbLXRQiIpomGM6jcPvCcHlD\nWFhWBMUoO2oRERGlE8N5FE3tHG8mIqLMYziPojG1ExXHm4mIKHMYzqNocnihUgqYN5MbghMRUeYw\nnEcQisRwscuPOaVGqFXc7IKIiDKH4TyCCx19ECUJi8rYpU1ERJnFcB5BI08GIyIimTCcR9DElcGI\niEgmDOerEEUJTe1elFj1MOm52QUREWUWw/kqHE4/QpE4FpWx1UxERJnHcL4KLj5CRERyYjhfxcBO\nVNwmkoiI5MBwvoomhwcGnRqlVm52QUREmcdwvkxvXwg9fWEsLCuCwM0uiIhIBgznywyMNy+qYJc2\nERHJg+F8mca2ZDhzZTAiIpIJw/kyje0eqJQKzCnlZhdERCQPhvMQ/eEY2rr9mDvTCLWKVUNERPJg\nAg1xvrMPksQpVEREJC+G8xCNbR4AHG8mIiJ5MZyH4MpgRESUDRjOSXFRRHNHH2YW62HQqeUuDhER\nTWMM5yRHdwDhSJzjzUREJDuGc1KjIzHevJDjzUREJDOGc1JqZTC2nImISGYMZwCSJKHR4YVJr4bd\nopO7OERENM0xnAH09IXg9oWxsNzMzS6IiEh2DGcATcn9mxeWsUubiIjkx3AG0MjxZiIiyiIMZyR2\nolKruNkFERFlh2kfzsFQDO1OP+bNNEGlnPbVQUREWWDap9H5Di8ksEubiIiyx7QP50aeDEZERFmG\n4TywMhhbzkRElCWmdTjH4iLOd/ahbEYhCgu42QUREWWHaR3Obd1+RKIiW81ERJRVpnU4Dyw+wpPB\niIgom0zrcB4cb+ZOVERElD2mbThLkoTGdi+KCjWwFRXIXRwiIqKUaRvOLm8IXn8EC8uLuNkFERFl\nlWkbzgNd2ovYpU1ERFlm2oYzTwYjIqJspRrPk3bv3o0TJ05AEATU1tZixYoVqccOHTqEl19+GRqN\nBps3b8a2bdtw7NgxPPnkk1i0aBEAYPHixXj66aen5htMUGO7Fxq1AhV2g9xFISIiGmbMcD5+/Dha\nW1tRV1eH5uZm1NbWoq6uDgAgiiJ27dqF/fv3w2w2Y/v27aiurgYAVFVV4Ve/+tXUln6CAqEoOpwB\nLJlt5mYXRESUdcZMpoaGhlTgLliwAF6vF36/HwDgdrthMplgtVqhUCiwevVqHDlyZGpLnAbN7YnN\nLjiFioiIstGY4exyuWCxWFL3rVYrnE5n6nYgEEBLSwui0SiOHTsGl8sFAGhqasITTzyBBx98EJ98\n8skUFX9iGjneTEREWWxcY85DSZKUui0IAp577jnU1tbCaDSivLwcADB37lz86Ec/wqZNm9DW1oZH\nH30U7733HjQazYjva7HooVIpJ/AVRmazGa96vLXbD0EAbl1RhkId19SerJHqmdKL9Zw5rOvMYD2P\nbMxwttvtqdYwAHR3d8Nms6XuV1VVYe/evQCAPXv2oKysDCUlJfjWt74FAJg9ezZmzJiBrq4uVFRU\njPg5bndwwl/iamw2I5xO3xXHY3ER51rdKJtRiKA/hKA/lNbPnW5GqmdKL9Zz5rCuM4P1PPqPkzG7\ntdeuXYuDBw8CAM6cOQO73Q6DYfAM58cffxw9PT0IBoOor6/HmjVr8Pbbb+O1114DADidTvT09KCk\npGSy3yMtWrt8iMREzm8mIqKsNWbLedWqVaisrERNTQ0EQcDOnTuxb98+GI1GbNiwAVu2bMFjjz0G\nQRCwY8cOWK1W3HXXXfj7v/97vP/++4hGo3jmmWdG7dLOpIH5zdyJioiIspUgDR1EllG6uzdG6jJ5\nad8pfHbOiV8+sQYzzLq0fuZ0xK6pzGA9Zw7rOjNYz5Ps1s4nkiSh0eGBxahFMTe7ICKiLDWtwrnb\n04++YBQLy7jZBRERZa9pFc4cbyYiolwwrcKZi48QEVEumGbh7IFWreRmF0RElNWmTTj7+6Po7Ali\n/iwTlIpp87WJiCgHTZuUampnlzYREeWG6RPOPBmMiIhyxLQJ50aHB4IALJjFcCYiouw2LcI5GhNx\nodOHCpsBOu01b8RFRESUUdMinFu7fIjFRXZpExFRTpgW4dzo8AAAd6IiIqKcMC3CuYmLjxARUQ7J\n+3CWJAlN7V5YTVpYTdzsgoiIsl/eh3OXux++5GYXREREuSDvw7mxjePNRESUW/I/nLkyGBER5Zi8\nD+cmhxcFGiXKbdzsgoiIckNeh3NfMIJLvUEsmGWCQiHIXRwiIqJxyetwbk5NoeJ4MxER5Y68DueB\n8WauDEZERLkkr8O5yeGFQhAwf5ZJ7qIQERGNW96GcyQaR8ulPlSUGFCg4WYXRESUO/I2nBvbPIjF\nJSzi4iNERJRj8jacv2rpBcDxZiIiyj35G84XEuHMM7WJiCjX5GU4i5KEr1p6MKOoABajVu7iEBER\nXZO8DOdLPcHEZhfs0iYiohyUl+HcNLCeNk8GIyKiHJSX4TywE9VCjjcTEVEOystwVquVKLMVomxG\nodxFISIiumZ5uTrHtrsXwzbDiJ4ev9xFISIiumZ52XJWCAJ3oSIiopyVl+FMRESUyxjOREREWYbh\nTERElGUYzkRERFmG4UxERJRlGM5ERERZhuFMRESUZRjOREREWYbhTERElGUYzkRERFmG4UxERJRl\nBEmSJLkLQURERIPYciYiIsoyDGciIqIsw3AmIiLKMgxnIiKiLMNwJiIiyjIMZyIioiyTl+G8e/du\nbN26FTU1NTh58qTcxclbv/zlL7F161bcf//9eO+99+QuTl4LhUKorq7Gvn375C5K3nr77bfx7W9/\nG/fddx8OHz4sd3HyUiAQwI9+9CM88sgjqKmpwUcffSR3kbKWSu4CpNvx48fR2tqKuro6NDc3o7a2\nFnV1dXIXK+8cPXoUjY2NqKurg9vtxne+8x3cfffdchcrb7388ssoKiqSuxh5y+1246WXXsKbb76J\nYDCIF198EXfccYfcxco7+/fvx7x58/CTn/wEXV1d+N73vod3331X7mJlpbwL54aGBlRXVwMAFixY\nAK/XC7/fD4PBIHPJ8sstt9yCFStWAABMJhP6+/sRj8ehVCplLln+aW5uRlNTE8NiCjU0NGDNmjUw\nGAwwGAzYtWuX3EXKSxaLBWfPngUA9PX1wWKxyFyi7JV33doul2vYf3Cr1Qqn0yljifKTUqmEXq8H\nALzxxhv4xje+wWCeIs8//zz+4R/+Qe5i5DWHw4FQKIQnnngCDz30EBoaGuQuUl7avHkzOjo6sGHD\nBmzbtg0/+9nP5C5S1sq7lvPluDrp1Dp06BDeeOMN/OY3v5G7KHnpf/7nf3DDDTegoqJC7qLkPY/H\ng1//+tfo6OjAo48+ivr6egiCIHex8spbb72FWbNm4bXXXsPXX3+N2tpankcxgrwLZ7vdDpfLlbrf\n3d0Nm80mY4ny10cffYT//M//xKuvvgqj0Sh3cfLS4cOH0dbWhsOHD+PSpUvQaDQoLS3FbbfdJnfR\n8kpxcTFuvPFGqFQqzJ49G4WFhejt7UVxcbHcRcsrn3/+OdatWwcAWLp0Kbq7uzkcNoK869Zeu3Yt\nDh48CAA4c+YM7HY7x5ungM/nwy9/+Uu88sorMJvNchcnb/37v/873nzzTfz3f/83HnjgAfzgBz9g\nME+BdevW4ejRoxBFEW63G8FgkOOhU2DOnDk4ceIEAKC9vR2FhYUM5hHkXct51apVqKysRE1NDQRB\nwM6dO+UuUl46cOAA3G43fvzjH6eOPf/885g1a5aMpSKamJKSEmzcuBFbtmwBADz11FNQKPKu7SK7\nrVu3ora2Ftu2bUMsFsMzzzwjd5GyFreMJCIiyjL8aUhERJRlGM5ERERZhuFMRESUZRjOREREWYbh\nTERElGUYzkRERFmG4UxERJRlGM5ERERZ5v8HlyrdDbpBN08AAAAASUVORK5CYII=\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. But we see that overfitting is back, because the network is more complex. So we did not gain anything.\n","\n","But this is still 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":"7bfb10ec-a4c2-4939-c834-2a28a73c4b26","executionInfo":{"status":"ok","timestamp":1549818979799,"user_tz":-60,"elapsed":75656,"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":677}},"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":0,"outputs":[{"output_type":"stream","text":["_________________________________________________________________\n","Layer (type) Output Shape Param # \n","=================================================================\n","conv2d_21 (Conv2D) (None, 25, 25, 10) 170 \n","_________________________________________________________________\n","flatten_13 (Flatten) (None, 6250) 0 \n","_________________________________________________________________\n","dropout_11 (Dropout) (None, 6250) 0 \n","_________________________________________________________________\n","dense_25 (Dense) (None, 50) 312550 \n","_________________________________________________________________\n","dense_26 (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 136us/step - loss: 0.2041 - acc: 0.9389 - val_loss: 0.0770 - val_acc: 0.9770\n","Epoch 2/10\n","60000/60000 [==============================] - 7s 123us/step - loss: 0.0924 - acc: 0.9716 - val_loss: 0.0636 - val_acc: 0.9815\n","Epoch 3/10\n","60000/60000 [==============================] - 7s 123us/step - loss: 0.0737 - acc: 0.9773 - val_loss: 0.0574 - val_acc: 0.9825\n","Epoch 4/10\n","60000/60000 [==============================] - 7s 123us/step - loss: 0.0635 - acc: 0.9810 - val_loss: 0.0499 - val_acc: 0.9829\n","Epoch 5/10\n","60000/60000 [==============================] - 7s 123us/step - loss: 0.0559 - acc: 0.9824 - val_loss: 0.0485 - val_acc: 0.9847\n","Epoch 6/10\n","60000/60000 [==============================] - 8s 127us/step - loss: 0.0518 - acc: 0.9842 - val_loss: 0.0448 - val_acc: 0.9857\n","Epoch 7/10\n","60000/60000 [==============================] - 7s 123us/step - loss: 0.0478 - acc: 0.9856 - val_loss: 0.0448 - val_acc: 0.9854\n","Epoch 8/10\n","60000/60000 [==============================] - 7s 122us/step - loss: 0.0457 - acc: 0.9861 - val_loss: 0.0448 - val_acc: 0.9857\n","Epoch 9/10\n","60000/60000 [==============================] - 7s 123us/step - loss: 0.0444 - acc: 0.9863 - val_loss: 0.0466 - val_acc: 0.9861\n","Epoch 10/10\n","60000/60000 [==============================] - 7s 123us/step - loss: 0.0422 - acc: 0.9869 - val_loss: 0.0436 - val_acc: 0.9871\n"],"name":"stdout"}]},{"metadata":{"id":"zlsPc4u7Z72l","colab_type":"code","outputId":"d178fadc-06bc-4379-fa3b-4c7673932d25","executionInfo":{"status":"ok","timestamp":1549818998454,"user_tz":-60,"elapsed":585,"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)"],"execution_count":0,"outputs":[{"output_type":"display_data","data":{"image/png":"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\nRESpjOFMRESUZBjORERESYbhTERElGQYzkREREmG4UxERJRkGM5ERERJhuFMRESUZBjORERESYbh\nTERElGQYzkREREkmabaMJCIioiE8ciYiIkoyDGciIqIkw3AmIiJKMgxnIiKiJMNwJiIiSjIMZyIi\noiSTluG8Y8cObNy4EdXV1Th+/LjS5aStH//4x9i4cSPuvfdevPPOO0qXk9aCwSCqqqqwe/dupUtJ\nW3v37sVdd92Fe+65BwcOHFC6nLTk8/nwrW99Cw888ACqq6vxwQcfKF1S0lIrXUC8HT16FC0tLait\nrUVTUxNqampQW1urdFlp5/Dhwzh16hRqa2vhcrlw991347bbblO6rLT13HPPITc3V+ky0pbL5cKz\nzz6LV155BX6/H8888wxuueUWpctKO3v27MH8+fPxne98B93d3fja176Gt99+W+myklLahfOhQ4dQ\nVVUFACgvL4fb7YbX64XBYFC4svRy3XXXYcmSJQAAk8mEQCCAaDQKlUqlcGXpp6mpCadPn2ZYzKJD\nhw5h+fLlMBgMMBgM2L59u9IlpSWz2YyGhgYAgMfjgdlsVrii5JV23dpOp3PMf3CLxQKHw6FgRelJ\npVIhJycHAPDyyy/jpptuYjDPkqeeegr//M//rHQZaa29vR3BYBAPP/wwvvrVr+LQoUNKl5SW1q9f\nj87OTqxevRqbNm3C9773PaVLSlppd+T8eVyddHbt378fL7/8Mv7rv/5L6VLS0quvvoqrrroKJSUl\nSpeS9vr7+/Hzn/8cnZ2dePDBB1FfXw9BEJQuK6289tprKCoqwosvvojPPvsMNTU1PI9iHGkXzjab\nDU6nM3a7p6cHVqtVwYrS1wcffID/+I//wAsvvACj0ah0OWnpwIEDaGtrw4EDB3Du3DlotVoUFBTg\nhhtuULq0tJKfn4+rr74aarUapaWl0Ov16OvrQ35+vtKlpZWPPvoIK1euBABceuml6Onp4XDYONKu\nW3vFihWoq6sDAJw8eRI2m43jzbNgYGAAP/7xj/H8888jLy9P6XLS1k9/+lO88sor+PWvf4377rsP\njzzyCIN5FqxcuRKHDx+GJElwuVzw+/0cD50F8+bNw7FjxwAAHR0d0Ov1DOZxpN2R89KlS1FRUYHq\n6moIgoBt27YpXVJa2rdvH1wuF7797W/H7nvqqadQVFSkYFVEMzN37lysWbMGGzZsAAA89thjEMW0\nO3ZR3MaNG1FTU4NNmzYhEongiSeeULqkpMUtI4mIiJIMvxoSERElGYYzERFRkmE4ExERJRmGMxER\nUZJhOBMRESUZhjMREVGSYTgTERElGYYzERFRkvn/ylORzrbITYgAAAAASUVORK5CYII=\n","text/plain":["
"]},"metadata":{"tags":[]}},{"output_type":"display_data","data":{"text/plain":["
"]},"metadata":{"tags":[]}}]},{"metadata":{"id":"ktbfm6eJajQk","colab_type":"text"},"cell_type":"markdown","source":["Indeed, we're getting the exact same performance with 50 neurons, so this network should be preferred to the one with more neuron, to reduce complexity and overfitting. So I went a bit overkill in my first try... remember: start small. \n","\n","Now can we go down to 10 neurons? "]},{"metadata":{"id":"LLPXT35caSui","colab_type":"code","outputId":"98760c53-5ebb-44ea-9b6e-52f471f3258e","executionInfo":{"status":"ok","timestamp":1549819778376,"user_tz":-60,"elapsed":72374,"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":677}},"cell_type":"code","source":["model_do_10 = models.Sequential()\n","model_do_10.add( layers.Conv2D(10, 4, input_shape=(28,28,1), activation='relu') )\n","model_do_10.add( layers.Flatten() )\n","model_do_10.add( layers.Dropout(rate=0.5) )\n","model_do_10.add( layers.Dense(10, activation='relu') )\n","model_do_10.add( layers.Dense(10, activation='softmax') )\n","model_do_10.summary()\n","\n","model_do_10.compile(loss='categorical_crossentropy',\n"," optimizer=RMSprop(lr=0.001),\n"," metrics=['acc'])\n","\n","history_do_10 = model_do_10.fit(kx_train, y_train, validation_data=(kx_test,y_test),\n"," batch_size=50, epochs=10)"],"execution_count":0,"outputs":[{"output_type":"stream","text":["_________________________________________________________________\n","Layer (type) Output Shape Param # \n","=================================================================\n","conv2d_25 (Conv2D) (None, 25, 25, 10) 170 \n","_________________________________________________________________\n","flatten_17 (Flatten) (None, 6250) 0 \n","_________________________________________________________________\n","dropout_15 (Dropout) (None, 6250) 0 \n","_________________________________________________________________\n","dense_33 (Dense) (None, 10) 62510 \n","_________________________________________________________________\n","dense_34 (Dense) (None, 10) 110 \n","=================================================================\n","Total params: 62,790\n","Trainable params: 62,790\n","Non-trainable params: 0\n","_________________________________________________________________\n","Train on 60000 samples, validate on 10000 samples\n","Epoch 1/10\n","60000/60000 [==============================] - 8s 133us/step - loss: 0.3696 - acc: 0.8930 - val_loss: 0.1756 - val_acc: 0.9497\n","Epoch 2/10\n","60000/60000 [==============================] - 7s 117us/step - loss: 0.1681 - acc: 0.9497 - val_loss: 0.1051 - val_acc: 0.9692\n","Epoch 3/10\n","60000/60000 [==============================] - 7s 117us/step - loss: 0.1252 - acc: 0.9626 - val_loss: 0.0835 - val_acc: 0.9737\n","Epoch 4/10\n","60000/60000 [==============================] - 7s 117us/step - loss: 0.1039 - acc: 0.9688 - val_loss: 0.0735 - val_acc: 0.9770\n","Epoch 5/10\n","60000/60000 [==============================] - 7s 116us/step - loss: 0.0927 - acc: 0.9721 - val_loss: 0.0691 - val_acc: 0.9803\n","Epoch 6/10\n","60000/60000 [==============================] - 7s 117us/step - loss: 0.0872 - acc: 0.9731 - val_loss: 0.0624 - val_acc: 0.9802\n","Epoch 7/10\n","60000/60000 [==============================] - 7s 123us/step - loss: 0.0809 - acc: 0.9756 - val_loss: 0.0623 - val_acc: 0.9809\n","Epoch 8/10\n","60000/60000 [==============================] - 7s 119us/step - loss: 0.0782 - acc: 0.9765 - val_loss: 0.0576 - val_acc: 0.9824\n","Epoch 9/10\n","60000/60000 [==============================] - 7s 116us/step - loss: 0.0738 - acc: 0.9776 - val_loss: 0.0658 - val_acc: 0.9805\n","Epoch 10/10\n","60000/60000 [==============================] - 7s 116us/step - loss: 0.0705 - acc: 0.9787 - val_loss: 0.0593 - val_acc: 0.9827\n"],"name":"stdout"}]},{"metadata":{"id":"kvabZSV6asYu","colab_type":"code","outputId":"6319210f-804e-4a3b-8bc0-410dd1145d4f","executionInfo":{"status":"ok","timestamp":1549819780512,"user_tz":-60,"elapsed":463,"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_10)"],"execution_count":0,"outputs":[{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAecAAAFZCAYAAACizedRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzt3Xt01OWdP/D33C+ZezIDZHIBwjXh\noqgUxFttEKluW0UhKNqWIu326m97etpNu2tPOVL1HHbt2tb6W7Rdi+zGIqhrrVhqaN0fCNvacku4\nBTKEhJBMMpnJ3DK37++PmUwSyIWQmfnOTN6vc3Iyl2TymUfMO8/l+zwSQRAEEBERUdaQil0AERER\nDcVwJiIiyjIMZyIioizDcCYiIsoyDGciIqIsw3AmIiLKMgxnIiKiLMNwJiIiyjIMZ6Ic8Jvf/Aar\nV6/GPffcg0cffRStra0QBAE//vGPcffdd2PVqlXYvn07AIz4+AsvvIDvf//7ydccfP+xxx7Dv/7r\nv2L16tX4+OOP4XQ68aUvfQn33nsv7r77bvzyl79Mft/x48fx4IMPYtWqVdiwYQNaWlrw7LPP4kc/\n+lHya9xuNxYvXozu7u5MNA9R3pGLXQARja6rqws/+tGP8Pvf/x5Tp07FP/7jP+LnP/85li5diqNH\nj2Lv3r3o6+vD/fffj6VLl+L8+fPDPj6W48eP47e//S2kUim2bNmCkpISvPzyy2hpacHq1atx7733\nYtq0afiHf/gHfP/738edd96JX/3qV9iyZQu+9a1v4YknnkBtbS3kcjnq6+tx8803w2KxZKCFiPIP\nw5koyxUWFuIvf/kLlEolAODmm2/GW2+9hWAwiFWrVkGhUEChUODdd9+FRqPBf/zHfwz7+B//+MdR\nf86dd94JqTQ+mPaDH/wA0WgUAFBaWgqr1YqLFy8iGAzC5XLhzjvvBABs2LAB69evh0qlgl6vx8GD\nB3H77bdj3759+PSnP53GViHKbwxnoiwXjUbxb//2b/jggw8QjUbh8/kwY8YMuFwuGAyG5NdptVoA\nGPHxsRiNxuTtY8eOYdu2bbh06RKkUik6OzsRi8Xgcrmg1+uTXyeXyyGXx3+N3H///XjnnXdwyy23\n4PDhw9i6deuE3jfRZMY5Z6Is9+677+KDDz7Ajh07sHfvXnzzm98EAJjNZrhcruTXOZ1OeL3eER+X\nSqWIxWLJx91u94g/8zvf+Q5WrVqFvXv34r333oPZbE7+zJ6enuTrhMNhXLx4EQBw33334Q9/+AP+\n8Ic/YMmSJUP+QCCi8WE4E2W5rq4u2O12WCwWuFwu/O53v4PP58Pdd9+N3/72twiFQvD7/XjkkUdw\n+vTpER+32Ww4ffo0YrEYuru78ac//WnUn7lgwQJIJBLs2bMHgUAAfr8f06dPx9SpU/H+++8DAHbt\n2oV//ud/BgDMnDkTZWVl2LZtG1avXp2RtiHKVxzWJspy999/P377299i5cqVKC0txZNPPom///u/\nx7Fjx3DbbbfhnnvugUqlwkMPPYQlS5ZAEAScOnXqqsdnz56Nt99+G9XV1Zg5cybuvfdedHV1Dfsz\nv/Wtb+FrX/saTCYTampqsG7dOvzTP/0Tdu7ciZ/85Cf4zne+g3/5l3+B1WrFj3/84+T33XffffjJ\nT36CT33qU5lqHqK8JOF5zkSUKu+++y727t2Ln/zkJ2KXQpTTOKxNRCkRCASwfft2PPbYY2KXQpTz\nGM5ENGH19fVYvXo1PvnJT+Lmm28WuxyinMdhbSIioizDnjMREVGWYTgTERFlmay5lKqzszelr2c2\na+Fy+VP6mnQ1tnNmsJ0zh22dGWxnwGrVj/hc3vac5XKZ2CVMCmznzGA7Zw7bOjPYzqPL23AmIiLK\nVQxnIiKiLMNwJiIiyjIMZyIioizDcCYiIsoyDGciIqIsw3AmIiLKMgxnIiKiLMNwJiIiyjIMZyIi\noiyTNXtrExERZZOYEENPnxsdfic6A05MN5SjVF+ckZ/NcCYiyhGhaBiekAc9fR64+zxwhzzoDXmh\nkalRqDHDoragSGOBTlEAiUQidrk5QRAEeMM+dPid6PB3oiOQ+JwI5HAskvzaysK5+NriL2WkLoYz\nEZHIwrEIPImw7Q9eT6g3HsB9HvSE4p8DkcA1vZ5SqoBFY0GR2oxCjQWFagsKB93WKjRpfkfZJxgJ\nJoJ3IHw7/E50BJzDtqtKpsTUgimwaYpg0xbBprVivmVOxuplOBMRpUkkFhkSsu4htz3J277I6Ecn\nFsi1MKkMKNeXwKgyDHwoDdArdQhEAugKutAV6EZX0IXuQDecQRfafZeHfT2NXB0PbE0itNUWFGrM\nycdUMmU6miPtwrEIugJduOwf2vvt8HfCHbr6WGKZRAarphCzTTNh1RZiisaaDGKDUi/q6APDmYho\nnKKxaDx0kwHbOyRs+297w75RX0cjV8OoNKBEX5wM28HBG/+sh0KmuK46/eEAuoLdg4K7G10BF7qC\n3ejwd+Kit23Y79MpCq4K7P6et0VthkIqXnTEhBhcwR50+J24HOhEp3+gN9wVdEGAMOTrJZDAojZh\nvmUObNoiWDXx8J2iLYJZZYJMmp1HVzKciYgSorEougM9cHjaRu7phjzwhnxXhcBgapkKRpUBxQVT\nYVQZYFDpYUoGrzERvHoo09xD1So00CrsKNXbr3quf641HtgDod0f5K3eNjh6W4Z9XaPSMDBcngjw\nosSct1llnHDgCYKA3rB3YOh50FxwZ6ALkUHzwP30Sh1mGqdjSqLna9UWwaYpglVTeN1/3IjpmsJ5\n69atOHLkCCQSCWpra7Fo0aLkc/v27cOLL74IpVKJ++67Dxs2bIDP58N3v/tduN1uhMNhfO1rX8Pt\nt9+etjdBRJNPNBZFXzSEvmjf1Z8jVz42wtdFQ0O+NhQLj/ozlVIFTCojppps8dBV6mFUGQYFrwEG\npQFquSpDrXD9JBIJ9Eod9EodphvKrno+JsTgCfXCGehGdyKwnYkg7w660Oy5gHPu5qu+TyqRwqwy\nwpLoaRepLQO3NRYYlHpIJfGreAORYDxw/U5cDgydCw5Gg1e9tlqmRnHB1OTQ8xTNQBBr5OqUt5GY\nxgznw4cPw+FwoK6uDk1NTaitrUVdXR0AIBaLYcuWLdizZw9MJhOeeOIJVFdXY9++fZgxYwa+/e1v\n4/Lly/j85z+P9957L+1vhigfhWMRXOhphbPXC6lEAgni82D9t+PzYpJBzyVuX3kf/Y9hlOeGfk4F\nQRAQEaKJ0BwpJK8OyrFCdbje03hIJVKoZCqoZEpoFVqY1SaoZEoU6c1QQ5McVjYlAteoMkAtU02a\nVdBSiRQmlREmlRHAjKuej8aicPW50R3shrO/15383I0zPedwpufcVd8nl8hgVpsQEsJwBz1XPy+V\nw6ophE07K7EYKz4PPEVrnVSr0McM54MHD6K6uhoAUFFRAbfbDa/XC51OB5fLBYPBAIvFAgBYtmwZ\nDhw4ALPZjFOnTgEAPB4PzGZzGt8CUX5xBXtwzu3AeY8Dze4LaOltRUSIilLL1aE93GODPg+6DQCh\nWBh90T7EhNiE6pBLZPEglatgUOqToTrwedBt+ZXPDf9ZLpUP+4veatWjs/PqxUM0lEwqQ1GiNzxn\nmF/x4WgY3X09V811938uUGpgt8xN9oJt2iLYNFaY1cZkz3oyGzOcnU4nqqqqkvctFgs6Ozuh0+lg\nsVjg8/nQ3NwMu92OQ4cOYenSpdi8eTN2796NlStXwuPx4KWXXkrrmyDKVeFoGC3eVpxzx4P4vOcC\nevrcyeelEilKdNMwxzoD0RAQgwBBEAAIydtX3YcAQUg8IsTnRQc/B+GKrx30OomvgCDEBr3OMF87\n4ueBnysAKFBooZKpoB4xMMcOVWUiSCm3KGQKTNFaMUVrHfZ5/hE0unH/i+//nx2ID40988wzqK2t\nhV6vR0lJCQDgrbfeQnFxMV5++WWcPHkStbW12L1796ivazZrIZendtWc1apP6evR8NjO10YQBHT5\nXTjddQ6nu87jjPMczvW0IBob6BUb1QbcYl+MOYUzMadoBmaay6GS5+ZlLbmM/6Yzg+08sjHD2Waz\nwel0Ju93dHTAah34S2jp0qXYuXMnAGDbtm2w2+04fPgwbrvtNgDAvHnz0NHRgWg0Cpls5PB1uUa/\nzm+8+FdZZrCdRxaOhnGhtxXnPQ6cd1/AebcD7tDAHFu8V1yMGcZyzDSUYbqxHIVq85ChVo+rD0Af\n2zmD2NaZwXYe/Y+TMcN5xYoVeOGFF1BTU4MTJ07AZrNBp9Mln9+0aROeffZZaDQa1NfX44tf/CIu\nX76MI0eOYNWqVWhtbUVBQcGowUyU6wRBQHewB82JID7nceBibxuig+aKDUo9FlsXYIahDDOM5SjT\n29N+KQ0RXb+YIMAfjMAXDMMXiGCqRQutOjNTLGP+lCVLlqCqqgo1NTWQSCR46qmnsHv3buj1eqxc\nuRJr167Fxo0bIZFIsHnzZlgsFqxbtw61tbXYsGEDIpEIfvjDH2bgrRBlTigaRkuyV+xI9IoHegFS\niRSlOjtmGONBPMNQBssVvWIiygxBEBAMReELhOELRuANhOELhuENxD98gYHHfP2PJUJ50EwubphV\nhG8+tGjkH5RCEmHwJLKIUj28wSGTzJgM7RzvFbtw3nMhEcQXcNE7tFdsVOrjIWwsxwxDOUr1dihT\nuPHBZGjnbMG2zozrbedwJApvIJIM0cFBmwzexId30P1o7NqiTiaVoECjQIFaDp1GAZ1GgQJ1/POS\nuVbMshvHXfNIJjSsTTTZhKJhXOi9GA/iRCB7BvWKZRIZSvTFmGkoxwxjGaYbymFRm9grJhqHaDQG\njy80Zg/We0VvNxS+tsvyJAC0iYAtMqqTIVugkQ8JXJ0m8ZhagQKNAmqlLCv+X2Y406SW7BW7HTiX\nCOKL3rYh1+UalQbcYF2IGcYyzDSWo1Rnz8ntAInSIRqLwZ8Mz8jQYeFAGN5E0A7p1QbDCPRd+7X7\naqUMOo0C0ywF0Gnk8Z6tRgGdelC4DnqsQKOAViWHVCp+yF4vhjNNKkN6xYme8ZW94jJ9SXyuONEz\nNqvYK6b8F4sJ8PcNDteB3uzgYePBz/sCEfj7rn2nNqVcigKNAoUGNcwGDZRyyZBebP9QcjJ8E4/J\nZZNvUxKGM+UtQRDQlegV91/OdGWv2KQy4kbrwsR8cRl7xZTzkiE7XLgOvh8cet8fjIxylMdQcpkU\nOo0cFoMKpWpdsveaDNnBQaseuK9UDFy1w7n90TGcKW+EoiE4PBcHriv2ONAb8iafl0tkKNeXYHqi\nVzzTWA6z2iRixUTDi8ZiCPRF4Q/Ge6v+vggCidXD/r4I/MHER9/AZT7987TjC9n44ieTXgW7VZfs\nqQ7utQ4XuINDltKD4Uw5Kd4r7o7vQZ0I4lbvpat7xbZFmJm4rrhEbxf1HFqaPPov3ekPUH+iZxoP\n08T9K0J28GPB0Pj2UpdJ48PDJp0K9qKCIXOyBYk5Wp36ih6tRgGlXMopmyzF31SUE/qiIVzwtCQ3\n+Gh2X0Bv+MpecemQ64rZK6aJCEeiiQ0oIoOC9MpQDV/xNQMhPJ6LVCUANCo5tGo5bCYNtGo5tOr4\noqb4bTm0qngvVpO8PfA1SgVDNt8wnCnrCIIAZ6B7yAYfrb72Ib1is8qEJbZFySBmr5jGKxyJ4bLL\njzanL/lxqdsPfzCCXn8Ykej4TtJSKqTQquQw6VSYVlQwEKCqeKAWJEJVq1YMCtt48KqVub2ymFKP\nv81IdH3REByeliELt7xhX/J5uVSO6YbSxOrp+MKt+BmzRGMLR2K43O1H66AQbuvy4XJ3ALErurdq\npQwWgxomnWpIgGoG9Vy1w4SsdpKuKKb0YThTRgmCgM5A15ANPtqG6RXfZFucDOISXTGPDKQxhSNR\nXOryo62rP4TjgdzpujqENSo5ZhYbUFykRXGRDsVFWtiLdDDplLDZDFxFTKLjbzxKq2CkDxd6W3Au\ncSpTs2e4XnFZfIMPQzmms1dMYwiFo2i/sifs9KGjJ3DVPK9WJcdMuwH2ogIUFxag2Br/bNIpOUdL\nWY3hTCkT7xU7k4u2zrsdaPO2Qxh0YYdFbcZN5lnxYxKN5bDrprFXTMPqC0fR3hWfE24dNBzdOUwI\nF6jlmG03orioYMiHsYAhTLmJvxXpuoWiYRy/fBJ/vXAyOUztCw+cy62QyjGz/zCIxMIto8ogYsWU\njfpCUVzq9iVD+JLTj1anF86e4FXX6+o0CswuMaG4qCDRG9ai2KqDQatgCFNeYTjTuHhCvTjubMQx\nZyNOdp9GKBZOPleoNmO+ZU5y28sSXTFkUm5WQHHBUCQ+J+z0DekNd7mvDmG9VoE5pabkMLQ90RM2\nFPD8a5ocGM40KkEQ0OZrxzFnI445G+DwtCSHqadobbildBGKlcWYbiiHUTXy8WeUvwRBQF84mrz2\nt38ryN5AGO3dA2HsdAev+l6DVoG5ZYN6wkUFmFZUAIOWIUyTG8OZrhKJRXCm5xyOORtx3NmArqAL\nACCVSDHLNAOLiiqxoKgSNm0R98fNE/37MQ/eLrI/aAPBobtaJW8nHg/0RcY8K9dYoMT8cvPAfHCh\nFsVFBdAzhImGxXAmAIA37END1ykcdTagses0gtF4L0cjV+Mm22IsLKpEVeFcaBVakSulkYQj0URw\nDurB9g3tzQ7eKtI3aJer8RzfB8T3ZNaqFdBrFZhi1kCrViSvB+7feKNALccUSzyEdRoeJkI0Hgzn\nSeyyrwPHuuLD1U09zcnh6iK1Bcun3YyFRZWYZZrBeWMR9YWiOH/JgwONHWjv9MZ7sX3hq4aQ/X0R\nhCPj29FKrZRBq5aj0KBJ7lSlTRx00L+xRv92kYN3typQy6HgnsxEacVwnkSisSjOuR045mzAsa4G\ndPidAAAJJJhhLMPCwkostFZiqtbGX7wiEAQBHT0BNLW60dTqQVOrGxc7fVdtoNFPKpEkA9ViUA3d\ntWqYkB38uEYlg0zKHa2IshXDOc8FIgE0dJ3GMWcjGrpOwheJX+qklClxg3UBFhRVYkHhPOiVOpEr\nnXyCoQjOX+pNhLEbTW0eeAMDq9/lMilmFhtQYTdg8ZwpkMSiQw5DUCtl/COKKE8xnPOQM9CNY84G\nHHc24kzPOUSF+HyiSWXE7VOWY2FRJeaYZkIh4zxgpgiCgA5XAGcTIXyu1Y2WTu+QzTQKDSpUTreh\notiImXYDymx6KOTx3i0X3hFNLgznPBATYnB4WpKXO7X52pPPlelLsLBoPhYWVaFEN409rQwJhiI4\n3+bB2UQQD9crrrAbMavYmOgdG2HWq0SsmIiyCcM5R/VFQzjZfSbeQ+5qRG8ofraxQirHgsJ5WFhU\niQVF87lPdQYIgoDLrsCQ4emLV/WK1aicbkaF3YiKYiPKpuh4ihERjYjhnEN6+tzJ3vEp11lEYhEA\ngF6pw63TbsGCokrMs8yGSsZrR9Mp0BfB+UseNLXFF22du6JXrJBLMctuTARxvFds0rFXTETXjuGc\nxQRBwEVvG446G3Dc2YALva3J54oLpiY3Ayk3lEAqYS8sHQRBQHu3H+cSQXy21YNW59BecZFRjaoZ\nlmQQl9rYKyaiiWE4Z5lwNIzTPU2JQG5ET58bACCTyDDPPBsLiyqxsGg+CjUWkSvNT8lecWJ4uqnV\nDV8wknxeKZdidn+vONEzNrJXTEQpxnDOEg5PC/Y66tHYfRqhaAgAUCDXYunUJVhYVIn5ljnQyNUi\nV5lf+nvFTa0eNLXF54tbO31DDmEoMqqxcGYhKuzxhVvsFRNRJjCcs4Ar2IOfHXkZvrAfU7RWLCia\nj0VFVZhhKOPuXCnW3u3H/zZextlWD861DdMrLjWhwm5IrqJmr5iIxMBwFlkkFsHLx1+DL+zH2jmf\nw50lt4pdUt6JxmI4crYL9R9fxIlmV/Jxq0mNhRWFqCg2YpbdCLu1gL1iIsoKDGeRvdn0Ls57HLh5\nyg24w75c7HLyitsXwp+OtOGPf2tFt6cPADCn1IS7bijG/OkWGHk2MBFlKYaziP7acQz1Lf+DqVob\n1s9dww1CUkAQBJxtdaP+41b878kORGMCVEoZPnmjHZ9cYkeJlduUElH2YziLpMPfiR2Nv4FSqsCm\nhY9BLefc5kT0haL4qKEdH3zcipaO+IYs0wq1uHtJCW5dMBUaFf+pE1Hu4G8sEYSiYWw/vgPBaBCf\nr6zBtIIpYpeUs9q7/fjg44v4f8faEeiLQCqR4Oa5VnxySQnmlZk4GkFEOYnhLILfnH4Trd5LuK34\nE1g6dYnY5eSc4RZ4GQuUWHnzdNx5g517VBNRzmM4Z9jBS3/GgUv/i1K9HQ/N/ozY5eSUkRZ43b3E\njiVzrFxpTUR5g+GcQa3eS6g7tQcauRqbFmzgkY3XQBAENLV68MHHFwcWeCkSC7xutKPExgVeRJR/\nGM4ZEogEsf34rxGOhfHFqkdQpCkUu6Ss1r/Aq/7jVlzgAi8immT4Gy4DBEHAzpO70OF34lNld2Cx\ntUrskrLWcAu8bpprxd1c4EVEkwjDOQP+2HoAH3ccRYVxOj47c7XY5WQdLvAiIhqK4Zxm590XsPvM\nO9ApCrBxwaPcK3sQty+ED4+0YT8XeBERDcFwTiNv2IeXj+9ATIjhi1WPwKQyil2S6LjAi4hobAzn\nNIkJMbzaUAdXXw/un3EP5llmi12SqLjAi4jo2vE3Ypq879iPE10nMd8yB6um3y12OaLhAi8iovFj\nOKfBaddZvHNuL0wqI75QuR5SyeSaOx1ugZehQInqm6bjzhuKYTGoRa6QiCi7MZxTzN3nwSsndkIi\nkeBLCzZApywQu6SM8SR28OICLyKiiWE4p1A0FsUrJ15Db8iLNbP/DjON5WKXlHaCIODsRfdVC7zu\nutGOu7nAi4joujCcU+id8+/jbM953GBdiE+W3CZ2OWnX6HDhjVf/gnNtbgADC7yWV02FVs1/WkRE\n14u/QVPkmLMB7zvqYdUUYsP8h/J+odOHR9vw6nunIADxBV432jGv3Jz375uIKBMYzinQFejGqw11\nUEjl+NKCx6CRa8QuKW0EQcCbH57Hfx9oRoFajn/60jLY9EqxyyIiyisM5wkKxyLYfnwH/JEAHp33\nEEr1xWKXlDbhSAy/+l0jDp64DKtJjScfXoyqmYXo7OwVuzQiorzCcJ6g3WfewYXei/jE1JuwfNot\nYpeTNr5gGD/bfQwnL/RgZrEB31yzCIYC9piJiNKB4TwBf778N/yp9QCKC6aiZu4DeTvf2tkTwPO/\nOYJLXX7cNMeKJ/6uEkoF9wgnIkqXa7rwdOvWrVi3bh1qampw9OjRIc/t27cPa9aswfr167Fjx47k\n42+//TY+85nP4MEHH8T+/ftTWnQ2aPd14LWTu6CSKbFpwQYoZfnZizzX5sHTr/4Zl7r8WLW0FH//\nwAIGMxFRmo3Zcz58+DAcDgfq6urQ1NSE2tpa1NXVAQBisRi2bNmCPXv2wGQy4YknnkB1dTVUKhV+\n9rOf4Y033oDf78cLL7yAu+66K93vJWP6oiFsP/5rhKIhbKx6FFMKbGKXlBYfn+7E/337BMLRGB5d\nOQefuqlE7JKIiCaFMcP54MGDqK6uBgBUVFTA7XbD6/VCp9PB5XLBYDDAYrEAAJYtW4YDBw5ArVZj\n+fLl0Ol00Ol02LJlS3rfRQYJgoD/OrUbl3yXcWfJCtw0ZbHYJaXF7/+3Bf/1hzNQKKT4xppFuGFW\nkdglERFNGmOGs9PpRFVVVfK+xWJBZ2cndDodLBYLfD4fmpubYbfbcejQISxduhQAEAwG8ZWvfAUe\njwff+MY3sHz58lF/jtmshVye2uFSq1Wf0tcDgH1N/4PD7R9jlmU6vrysBnJZfk3bR2MCXnn7ON7+\n8BzMehX++UvLMKvUNOr3pKOd6Wps58xhW2cG23lk404WQRCStyUSCZ555hnU1tZCr9ejpGRg2LOn\npwc//elP0dbWhscffxz19fWjLphyufzjLWVUVqs+5Zf4tPS24pWP66CVa/D43PVwdQdS+vpi6wtH\n8X/fPoG/nnGiuKgATz68CEa1bNR2TEc709XYzpnDts4MtvPof5yMGc42mw1OpzN5v6OjA1arNXl/\n6dKl2LlzJwBg27ZtsNvtCAaDuPHGGyGXy1FWVoaCggJ0d3ejsLBwIu9DVP5wANuP/RqRWARPLHgM\nhRqz2CWllNsXwr/tOoLzl3oxv9yMrz2wAFq1QuyyiIgmpTFXa69YsQJ79+4FAJw4cQI2mw063cBh\nBps2bUJXVxf8fj/q6+uxfPly3Hbbbfjoo48Qi8Xgcrng9/thNudumAmCgB2Nr8MZ7Maq8ruxoGi+\n2CWlVJvTh6df/TPOX+rFigVT8X/WLmYwExGJaMye85IlS1BVVYWamhpIJBI89dRT2L17N/R6PVau\nXIm1a9di48aNkEgk2Lx5c3Jx2KpVq7B27VoAwA9+8ANIpbl7XOAHLR/iiPMEZptm4r4ZK8UuJ6VO\nOlz46e5j8PdF8LnbZuDvVkzP2+u1iYhyhUQYPIksolTPPaRqPqOppxnP//UX0CkK8L1bnoRRlT8L\nGA4eb8cr7zYCAL6weh5WLJw27tfgvFFmsJ0zh22dGWznCc45T2a9IS9eOfEaBEHAxqpH8iaYBUHA\nfx9oxpsfnodGJcfXH1iA+dMtYpdFREQJDOcRxIQYfnXiP9HT58ZnZ67GbHOF2CWlRCQaw6vvncL/\nHLuEQoMaT65dDHtRgdhlERHRIAznEfyu+Q846TqDBYXzUV1+p9jlpIQ/GMHP3zyGhmYXpk/V41sP\nLYJRpxK7LCIiugLDeRiNXafxu/P7YFGb8XjlOkglubuYrV+XO4jndx1Ba6cPN8wqwpc/UwWVkntk\nExFlI4bzFVzBHvyq4T8hk0ixacEGFCi0Ypc0YY72Xjy/6wjc3hA+taQE66tnQyrlimwiomzFcB4k\nGovilROvwRv2Ye2cz6HcUCp2SRN25KwTv3jrBELhKGo+NRsrby7hpVJERFmO4TzIm03v4pzbgZts\ni3GHffS9wHNB/ccXseP3pyGXSfHVBxbgprn5eXoWEVG+YTgn/K3zOD5o+RBTtFY8Mm9NTvcuY4KA\nXfVNeO/wBei1CnzzoUWoKDabWlClAAAY+klEQVSKXRYREV0jhjOATn8Xft3wOhRSBTYteAxquVrs\nkq5bKBzF9nca8OdTnZhq0eLJtYthM2nELouIiMZh0odzKBrG9uO/RjAaxOPz16FYN1Xskq6bxx/C\nC28cRVOrB3NKTfj6gwuh03CPbCKiXDPpw3nXmbdw0duGFcVL8YlpN4ldznW73O3Hv75+BB09ASyr\nnIIvfno+FPLcvwSMiGgymtThfOjSX/D/2g6jRFeMh2d/VuxyrtuZiz144Y1j8AbCuP/W6Xjg9hk5\nPWdORDTZTdpwbvO24z9P7YZGrsamBY9BIcvN4d/DjZex/Z1GxGICvrB6Hu5YXCx2SURENEGTMpyD\nkSC2H/81wrEwvlC1HlZtodgljZsgCPjdoQvYtb8JaqUMX31oIRbMyL33QUREV5t04SwIAnaefAOX\n/Z24u/R23GBdIHZJ4xaNxfDa+6ex/29tMOtVePLhxSi16cQui4iIUmTShfOfWg/iLx1HMNNYjs9V\nfFrscsYt0BfBi28dx/Fz3Siz6fCthxfDrOfhFURE+WRShbPD04I3zvw3dIoCbKx6FDJpbh384Ort\nw/O/OYKWDi8WzizEVz5bBY1qUv0nJCKaFCbNb3Zf2I/tx3cgJsTwhar1MKtNYpc0Li0dXjz/myNw\n9fbhrhuK8eg9cyCT8lIpIqJ8NCnCOSbE8GrDf6E76MKnp1djvmWO2CWNy/HzXfj5nuMIhqJ4+K4K\n3PuJMl4qRUSUxyZFOO9z/BHHu05innk2Vs+oFruccfnTkTa8+t4pSKUSfOWzVVg6f4rYJRERUZrl\nfTifdjXh7XPvwaQy4gtV6yGV5MZQsCAI2PPhObxzwAGdRoFvrFmI2SW5NRRPRETXJ6/D2d3Xi1dO\nvAaJRIKNVY9Cr8yNy43CkRh++W4jPmq4DJtZg//z8GJMsWjFLouIiDIkb8M5GovilydeQ2/Iiwdn\n3Y8K03SxS7om3kAYP33jKE5fdKPCbsA31yyCXqsUuywiIsqgvA3n14+/gzM957DYugB3l94udjnX\npKMngOdfP4L2bj9unmfDpvvmQ6nIrcu9iIho4vIynI87G7Gn8T0UqS3YMO/hnFjZ7Gjvxb+8/jf0\n+sO49xNleOiuCkhzoG4iIkq9vAznw+0fQyGVY9PCx6BVaMQu55r8Zv9Z9PrDeOyeOfjkkhKxyyEi\nIhHlZTivnfM5fOGWNZAG1GKXck1C4ShOt7hRYtUxmImICLlxXdE46ZQFmKKzil3GNTvb6kYkGkPl\ndLPYpRARURbIy3DONY0OFwAwnImICADDOSs0NLsgk0owp5SbjBAREcNZdP5gGM3tHswoNkCtzMsl\nAERENE4MZ5GdvNADQQAqyzmkTUREcQxnkTU2x+eb5zOciYgogeEssgZHN5QKKSrsRrFLISKiLMFw\nFpGrtw+XuvyYU2qCXMb/FEREFMdEENHJ/kuoyi0iV0JERNmE4SyiBkc3AM43ExHRUAxnkQiCgIZm\nF3QaBUqn5MY500RElBkMZ5FcdgXg6u3DvHIzT58iIqIhGM4iaWyOD2nz+mYiIroSw1kkDYnFYPO5\nnzYREV2B4SyCmCDgpMOFQoMKNlNunDdNRESZw3AWQctlL3zBCOaXWyDhfDMREV2B4SyChsR8M4e0\niYhoOAxnETQkNx9hOBMR0dUYzhkWjsRwpqUH9qICGHUqscshIqIsxHDOsHNtboQiMe4KRkREI2I4\nZ1hDMy+hIiKi0TGcM6zB0Q2JBJhbynAmIqLhMZwzKNAXwfm2XsyYZoBWLRe7HCIiylIM5ww61dKD\nmCCgkkPaREQ0imsK561bt2LdunWoqanB0aNHhzy3b98+rFmzBuvXr8eOHTuGPBcMBlFdXY3du3en\nruIc1tg/38zzm4mIaBRjhvPhw4fhcDhQV1eHp59+Gk8//XTyuVgshi1btuDf//3f8dprr6G+vh7t\n7e3J51988UUYjcb0VJ6DGh3dUMilmGU3iF0KERFlsTHD+eDBg6iurgYAVFRUwO12w+v1AgBcLhcM\nBgMsFgukUimWLVuGAwcOAACamppw9uxZ3HXXXemrPoe4fSFc7PRhdokRCrlM7HKIiCiLjRnOTqcT\nZvPAHKnFYkFnZ2fyts/nQ3NzM8LhMA4dOgSn0wkAePbZZ/G9730vTWXnnkZHYstOXt9MRERjGPeS\nYUEQkrclEgmeeeYZ1NbWQq/Xo6SkBADw5ptv4oYbbkBpaek1v67ZrIU8xT1Kq1Wf0tebiPPtZwEA\nK24syaq6UiHf3k+2YjtnDts6M9jOIxsznG02W7I3DAAdHR2wWq3J+0uXLsXOnTsBANu2bYPdbsfv\nf/97tLS0YP/+/Whvb4dSqcTUqVNx6623jvhzXC7/RN7HVaxWPTo7e1P6mhPx11Md0KrkMChlWVXX\nRGVbO+crtnPmsK0zg+08+h8nYw5rr1ixAnv37gUAnDhxAjabDTqdLvn8pk2b0NXVBb/fj/r6eixf\nvhzPP/883njjDbz++ut4+OGH8dWvfnXUYM53HT0BON1BzCs3QyrlEZFERDS6MXvOS5YsQVVVFWpq\naiCRSPDUU09h9+7d0Ov1WLlyJdauXYuNGzdCIpFg8+bNsFh4mdCVGps530xERNdOIgyeRBZRqoc3\nsmnI5BdvHcfhxg48/cQnMK2wQOxyUiqb2jmfsZ0zh22dGWznCQ5r08TEBAENzS6YdEpMtWjFLoeI\niHIAwznNLnZ44Q2EUTndAomE881ERDQ2hnOaNTr6t+zkfDMREV0bhnOa9Ydz5XQulCMiomvDcE6j\nSDSGUy09mGrRwqxXiV0OERHlCIZzGp2/5EFfKIr5PCKSiIjGgeGcRg2JIyIrOd9MRETjwHBOo8bm\nbkgAzGM4ExHRODCc06QvFEVTmwflU/UoUCvELoeIiHIIwzlNTl/sQTQmcL6ZiIjGjeGcJo3J+WZe\nQkVEROPDcE6TBkc35DIJZpUYxS6FiIhyDMM5DXr9IVy47MUsuxEqhUzscoiIKMcwnNPg5IUeAMB8\n7gpGRETXgeGcBv3nN/P6ZiIiuh4M5zRocLigUckwfdrIZ3USERGNhOGcYk53AB2uAOaWmiGTsnmJ\niGj8mB4p1n8JFY+IJCKi68VwTrGBIyIZzkREdH0YzikkCAIaHS4YC5QoLioQuxwiIspRDOcUanP6\n4PaFML/cDIlEInY5RESUoxjOKdTg4HwzERFNHMM5hZKLwTjfTEREE8BwTpFoLIZTLS7YTBoUGTVi\nl0NERDmM4ZwizZd6EeiLcpU2ERFNGMM5RZLzzdxPm4iIJojhnCL9+2nPKzOJXAkREeU6hnMKhMJR\nnG31oMymg16rFLscIiLKcQznFDjT6kYkGuMqbSIiSgmGcwo0JIa055dzvpmIiCaO4ZwCjc0uyKQS\nzCk1il0KERHlAYbzBPmCYTjae1FRbIBaKRe7HCIiygMM5wk66eiBAF5CRUREqcNwnqBGR/98MxeD\nERFRajCcJ6jR4YJKIcPMYoPYpRARUZ5gOE+Aq7cPl7r8mFtmglzGpiQiotRgokzAwCVUHNImIqLU\nYThPQCPPbyYiojRgOF8nQRDQ6HBBp1GgxKYTuxwiIsojDOfr1N7th6u3D/PLzZBKJGKXQ0REeYTh\nfJ0amvuPiOSQNhERpRbD+Tr1zzdXcvMRIiJKMYbzdYjFBJx0uFBkVMNm0ohdDhER5RmG83VwXO6F\nvy/CVdpERJQWDOfrkLyEivPNRESUBgzn69DI85uJiCiNGM7jFI5EcfqiG3ZrAYwFSrHLISKiPMRw\nHqezrR6EIzFUstdMRERpwnAep+QRkZxvJiKiNGE4j1NjswtSiQRzS01il0JERHmK4TwOgb4Izl/q\nxYxiPTQqudjlEBFRnmI4j8OpCz2ICQJXaRMRUVpdU/dv69atOHLkCCQSCWpra7Fo0aLkc/v27cOL\nL74IpVKJ++67Dxs2bAAAPPfcc/jLX/6CSCSCL3/5y7jnnnvS8w4yqP/85irONxMRURqNGc6HDx+G\nw+FAXV0dmpqaUFtbi7q6OgBALBbDli1bsGfPHphMJjzxxBOorq5Gc3Mzzpw5g7q6OrhcLjzwwAN5\nEc6NDheUcilmFhvFLoWIiPLYmOF88OBBVFdXAwAqKirgdrvh9Xqh0+ngcrlgMBhgscSHeZctW4YD\nBw7gs5/9bLJ3bTAYEAgEEI1GIZPJ0vhW0svt7UOr04eqGRYo5JwNICKi9BkznJ1OJ6qqqpL3LRYL\nOjs7odPpYLFY4PP50NzcDLvdjkOHDmHp0qWQyWTQarUAgF27duGOO+4YM5jNZi3k8tSGt9WqT9lr\nnWhxAwBuqZya0tfNB2yPzGA7Zw7bOjPYziMb95JjQRCStyUSCZ555hnU1tZCr9ejpKRkyNfu27cP\nu3btwiuvvDLm67pc/vGWMiqrVY/Ozt6Uvd6hY20AgDKrNqWvm+tS3c40PLZz5rCtM4PtPPofJ2OG\ns81mg9PpTN7v6OiA1WpN3l+6dCl27twJANi2bRvsdjsA4MMPP8QvfvELbN++HXp9bv91JAgCGpu7\nUaCWo8yW2++FiIiy35iTpytWrMDevXsBACdOnIDNZoNOp0s+v2nTJnR1dcHv96O+vh7Lly9Hb28v\nnnvuObz00kswmXJ/s46OngC6PH2YV26GVCoRuxwiIspzY/aclyxZgqqqKtTU1EAikeCpp57C7t27\nodfrsXLlSqxduxYbN26ERCLB5s2bYbFYkqu0n3zyyeTrPPvssyguLk7rm0mXxub4EZGVPL+ZiIgy\nQCIMnkQWUarnHlI5n/HzN4/jzyc7sHXzMky1aFPymvmC80aZwXbOHLZ1ZrCdR59z5jVBY4gJAk46\nXDDrVZhi1ohdDhERTQIM5zFc7PDCGwijstwMiYTzzURElH4M5zE0JOabeUQkERFlCsN5DA395zfz\nsAsiIsoQhvMoItEYTrf0YFqhFma9SuxyiIhokmA4j+JcmwehcAyV7DUTEVEGMZxH0X9EJOebiYgo\nkxjOo2h0uCCRAPPKcn+XMyIiyh0M5xEEQxGca/Ng+lQDtGqF2OUQEdEkwnAewemWHkRjAio5pE1E\nRBnGcB5B8vpm7qdNREQZxnAeQaPDBblMill2o9ilEBHRJMNwHobHH0JLhxezS4xQKmRil0NERJMM\nw3kYJx0c0iYiIvEwnIfRP99cOZ2bjxARUeYxnIfR6OiGRiXH9Kkjn7VJRESULgznKzh7AujsCWJe\nmQlSKY+IJCKizGM4X6GB881ERCQyhvMVGvvDmfPNREQkEobzIIIgoLG5G0adEsWFWrHLISKiSYrh\nPEhrpw8efxiV5WZIJJxvJiIicTCcBxmYb+aQNhERiYfhPEhj4vxmHnZBRERiYjgnRGMxnGrpwRSz\nBhaDWuxyiIhoEmM4J5y/1ItgKMpV2kREJDqGc0JySJvXNxMRkcgYzgkNzS5IAMxjOBMRkcgYzgD6\nwlE0tblRNkUPnUYhdjlERDTJMZwBnLnYg0hUwHyu0iYioizAcAbQ2H9EJIe0iYgoCzCcEd98RCaV\nYHaJSexSiIiIGM7eQBgX2nsxy26ESikTuxwiIiKG80mHCwLA+WYiIsoakz6c+4+IrOR+2kRElCUm\nfTg3OFxQKWWYPk0vdilEREQAJnk4d3uCuNztx9xSE+SySd0URESURSZ1Ig0MaXO+mYiIssekDueG\n5BGRnG8mIqLsMWnDWRAENDhcMGgVsFsLxC6HiIgoadKG86UuP9zeEOaVmyGRSMQuh4iIKGnShnNy\nvplD2kRElGUmbTj3zzfP52IwIiLKMpMynGMxAScv9MBqUsNq0ohdDhER0RCTMpyb23sR6ItgPncF\nIyKiLDQpw7nR0X8JFYe0iYgo+0zKcG5InN88j/PNRESUhSZdOIcjUZxtdaPEqoNBqxS7HCIioqtM\nunA+e9GNcCTGIW0iIspaky6cG5LXNzOciYgoO02+cG52QSaVYE6pSexSiIiIhjWpwtkfDKO53YMZ\nxQaolXKxyyEiIhrWNYXz1q1bsW7dOtTU1ODo0aNDntu3bx/WrFmD9evXY8eOHdf0PWI5daEHgsAj\nIomIKLuN2X08fPgwHA4H6urq0NTUhNraWtTV1QEAYrEYtmzZgj179sBkMuGJJ55AdXU1Lly4MOL3\niKl/vplbdhIRUTYbM5wPHjyI6upqAEBFRQXcbje8Xi90Oh1cLhcMBgMslvhOW8uWLcOBAwfQ0tIy\n4veIqdHhglIhRYXdKGodREREoxlzWNvpdMJsHuhpWiwWdHZ2Jm/7fD40NzcjHA7j0KFDcDqdo36P\nWHq8fWhz+jCn1AS5bFJNtRMRUY4Z96ooQRCStyUSCZ555hnU1tZCr9ejpKRkzO8ZidmshVwuG285\no7Ja9cnbxy/0AABuqZw25HGaOLZnZrCdM4dtnRls55GNGc42mw1OpzN5v6OjA1arNXl/6dKl2Llz\nJwBg27ZtsNvt6OvrG/V7huNy+cdd/GisVj06O3uT9w8dawMAlBVphzxOE3NlO1N6sJ0zh22dGWzn\n0f84GXN8d8WKFdi7dy8A4MSJE7DZbEPmjjdt2oSuri74/X7U19dj+fLlY35PpgmCgEaHCzqNAqVT\nxJ33JiIiGsuYPeclS5agqqoKNTU1kEgkeOqpp7B7927o9XqsXLkSa9euxcaNGyGRSLB582ZYLBZY\nLJarvkdMHa4Auj19uHmuFVKJRNRaiIiIxiIRrmVCOANSPbwxeMik/q+t+PXeU3h81VzcdaM9pT9n\nsuPQVGawnTOHbZ0ZbOcJDmvng4bm+PnN87mfNhER5YC8D+eYIOCkw4VCgwo2k0bscoiIiMaU9+Hc\nctkLXzCC+eUWSDjfTEREOSDvw7nBwSFtIiLKLXkfzo3N3E+biIhyS16HczgSw+mLPbAXFcCkU4ld\nDhER0TXJ63A+1+ZGKBxjr5mIiHJKXodzQ/+QNuebiYgoh+R1ODc6XJBIgLmlDGciIsodeRvO/mAY\n5y95MGOaAVr1uA/fIiIiEk3ehvOJc12IxgTONxMRUc7J23A+ciZ+ZGXldIvIlRAREY1PHodzJxRy\nKWbZDWKXQkRENC55Gc4eXwjNlzyYXWKEQi4TuxwiIqJxyctwbnRwVzAiIspdeRrO8f20Od9MRES5\nKC/DWSqVorioAOVTRj7ImoiIKFvl5QXAG+6ZA2uRHl1dXrFLISIiGrf87DlLJJBKeXYzERHlprwM\nZyIiolzGcCYiIsoyDGciIqIsw3AmIiLKMgxnIiKiLMNwJiIiyjIMZyIioizDcCYiIsoyDGciIqIs\nw3AmIiLKMgxnIiKiLCMRBEEQuwgiIiIawJ4zERFRlmE4ExERZRmGMxERUZZhOBMREWUZhjMREVGW\nYTgTERFlmbwM561bt2LdunWoqanB0aNHxS4nbz333HNYt24d1qxZg/fff1/scvJaMBhEdXU1du/e\nLXYpeevtt9/GZz7zGTz44IPYv3+/2OXkJZ/Ph69//et47LHHUFNTgw8//FDskrKWXOwCUu3w4cNw\nOByoq6tDU1MTamtrUVdXJ3ZZeeejjz7CmTNnUFdXB5fLhQceeAD33HOP2GXlrRdffBFGo1HsMvKW\ny+XCz372M7zxxhvw+/144YUXcNddd4ldVt7Zs2cPZsyYgW9/+9u4fPkyPv/5z+O9994Tu6yslHfh\nfPDgQVRXVwMAKioq4Ha74fV6odPpRK4sv9xyyy1YtGgRAMBgMCAQCCAajUImk4lcWf5pamrC2bNn\nGRZpdPDgQSxfvhw6nQ46nQ5btmwRu6S8ZDabcerUKQCAx+OB2WwWuaLslXfD2k6nc8h/cIvFgs7O\nThEryk8ymQxarRYAsGvXLtxxxx0M5jR59tln8b3vfU/sMvLaxYsXEQwG8ZWvfAWPPPIIDh48KHZJ\neem+++5DW1sbVq5ciQ0bNuC73/2u2CVlrbzrOV+Ju5Om1759+7Br1y688sorYpeSl958803ccMMN\nKC0tFbuUvNfT04Of/vSnaGtrw+OPP476+npIJBKxy8orb731FoqLi/Hyyy/j5MmTqK2t5TqKEeRd\nONtsNjidzuT9jo4OWK1WESvKXx9++CF+8YtfYPv27dDr9WKXk5f279+PlpYW7N+/H+3t7VAqlZg6\ndSpuvfVWsUvLK4WFhbjxxhshl8tRVlaGgoICdHd3o7CwUOzS8srHH3+M2267DQAwb948dHR0cDps\nBHk3rL1ixQrs3bsXAHDixAnYbDbON6dBb28vnnvuObz00kswmUxil5O3nn/+ebzxxht4/fXX8fDD\nD+OrX/0qgzkNbrvtNnz00UeIxWJwuVzw+/2cD02D8vJyHDlyBADQ2tqKgoICBvMI8q7nvGTJElRV\nVaGmpgYSiQRPPfWU2CXlpXfffRculwtPPvlk8rFnn30WxcXFIlZFdH2mTJmCVatWYe3atQCAH/zg\nB5BK867vIrp169ahtrYWGzZsQCQSwQ9/+EOxS8paPDKSiIgoy/BPQyIioizDcCYiIsoyDGciIqIs\nw3AmIiLKMgxnIiKiLMNwJiIiyjIMZyIioizDcCYiIsoy/x/kks1+RSFz5AAAAABJRU5ErkJggg==\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%, because 10 neurons do not appear to be enough to capture all the information from the training samples. Let's go back to 50 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":"a2e64620-8401-49dc-8605-3ec13415c29a","executionInfo":{"status":"ok","timestamp":1549820485960,"user_tz":-60,"elapsed":80673,"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":746}},"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(50, 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":0,"outputs":[{"output_type":"stream","text":["_________________________________________________________________\n","Layer (type) Output Shape Param # \n","=================================================================\n","conv2d_26 (Conv2D) (None, 25, 25, 10) 170 \n","_________________________________________________________________\n","max_pooling2d_14 (MaxPooling (None, 12, 12, 10) 0 \n","_________________________________________________________________\n","conv2d_27 (Conv2D) (None, 9, 9, 20) 3220 \n","_________________________________________________________________\n","flatten_18 (Flatten) (None, 1620) 0 \n","_________________________________________________________________\n","dropout_16 (Dropout) (None, 1620) 0 \n","_________________________________________________________________\n","dense_35 (Dense) (None, 50) 81050 \n","_________________________________________________________________\n","dense_36 (Dense) (None, 10) 510 \n","=================================================================\n","Total params: 84,950\n","Trainable params: 84,950\n","Non-trainable params: 0\n","_________________________________________________________________\n","Train on 60000 samples, validate on 10000 samples\n","Epoch 1/10\n","60000/60000 [==============================] - 9s 147us/step - loss: 0.2207 - acc: 0.9325 - val_loss: 0.0653 - val_acc: 0.9785\n","Epoch 2/10\n","60000/60000 [==============================] - 8s 130us/step - loss: 0.0818 - acc: 0.9749 - val_loss: 0.0444 - val_acc: 0.9856\n","Epoch 3/10\n","60000/60000 [==============================] - 8s 130us/step - loss: 0.0631 - acc: 0.9809 - val_loss: 0.0384 - val_acc: 0.9865\n","Epoch 4/10\n","60000/60000 [==============================] - 8s 130us/step - loss: 0.0542 - acc: 0.9840 - val_loss: 0.0361 - val_acc: 0.9893\n","Epoch 5/10\n","60000/60000 [==============================] - 8s 130us/step - loss: 0.0482 - acc: 0.9851 - val_loss: 0.0333 - val_acc: 0.9892\n","Epoch 6/10\n","60000/60000 [==============================] - 8s 131us/step - loss: 0.0449 - acc: 0.9867 - val_loss: 0.0344 - val_acc: 0.9883\n","Epoch 7/10\n","60000/60000 [==============================] - 8s 131us/step - loss: 0.0432 - acc: 0.9873 - val_loss: 0.0332 - val_acc: 0.9893\n","Epoch 8/10\n","60000/60000 [==============================] - 8s 130us/step - loss: 0.0407 - acc: 0.9874 - val_loss: 0.0313 - val_acc: 0.9900\n","Epoch 9/10\n","60000/60000 [==============================] - 8s 134us/step - loss: 0.0385 - acc: 0.9887 - val_loss: 0.0309 - val_acc: 0.9910\n","Epoch 10/10\n","60000/60000 [==============================] - 8s 129us/step - loss: 0.0385 - acc: 0.9887 - val_loss: 0.0320 - val_acc: 0.9910\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 one and beyond\n","\n","After one hour of optimizations, I converged to this network: "]},{"metadata":{"id":"AoubrswNfqVW","colab_type":"code","outputId":"f5aec7f6-dc46-41e3-dcd2-fa736c1f5da6","executionInfo":{"status":"ok","timestamp":1549820830872,"user_tz":-60,"elapsed":130462,"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":1823}},"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":0,"outputs":[{"output_type":"stream","text":["_________________________________________________________________\n","Layer (type) Output Shape Param # \n","=================================================================\n","conv2d_28 (Conv2D) (None, 25, 25, 16) 272 \n","_________________________________________________________________\n","max_pooling2d_15 (MaxPooling (None, 12, 12, 16) 0 \n","_________________________________________________________________\n","conv2d_29 (Conv2D) (None, 9, 9, 32) 8224 \n","_________________________________________________________________\n","max_pooling2d_16 (MaxPooling (None, 4, 4, 32) 0 \n","_________________________________________________________________\n","flatten_19 (Flatten) (None, 512) 0 \n","_________________________________________________________________\n","dropout_17 (Dropout) (None, 512) 0 \n","_________________________________________________________________\n","dense_37 (Dense) (None, 100) 51300 \n","_________________________________________________________________\n","dense_38 (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 74us/step - loss: 0.3611 - acc: 0.8877 - val_loss: 0.0992 - val_acc: 0.9696\n","Epoch 2/40\n","60000/60000 [==============================] - 3s 54us/step - loss: 0.1255 - acc: 0.9606 - val_loss: 0.0579 - val_acc: 0.9817\n","Epoch 3/40\n","60000/60000 [==============================] - 3s 54us/step - loss: 0.0946 - acc: 0.9707 - val_loss: 0.0483 - val_acc: 0.9833\n","Epoch 4/40\n","60000/60000 [==============================] - 3s 54us/step - loss: 0.0764 - acc: 0.9764 - val_loss: 0.0445 - val_acc: 0.9854\n","Epoch 5/40\n","60000/60000 [==============================] - 3s 54us/step - loss: 0.0647 - acc: 0.9794 - val_loss: 0.0358 - val_acc: 0.9884\n","Epoch 6/40\n","60000/60000 [==============================] - 3s 54us/step - loss: 0.0578 - acc: 0.9822 - val_loss: 0.0336 - val_acc: 0.9893\n","Epoch 7/40\n","60000/60000 [==============================] - 3s 54us/step - loss: 0.0524 - acc: 0.9829 - val_loss: 0.0346 - val_acc: 0.9891\n","Epoch 8/40\n","60000/60000 [==============================] - 3s 53us/step - loss: 0.0486 - acc: 0.9847 - val_loss: 0.0298 - val_acc: 0.9908\n","Epoch 9/40\n","60000/60000 [==============================] - 3s 53us/step - loss: 0.0430 - acc: 0.9865 - val_loss: 0.0287 - val_acc: 0.9903\n","Epoch 10/40\n","60000/60000 [==============================] - 3s 53us/step - loss: 0.0427 - acc: 0.9868 - val_loss: 0.0291 - val_acc: 0.9904\n","Epoch 11/40\n","60000/60000 [==============================] - 3s 53us/step - loss: 0.0393 - acc: 0.9874 - val_loss: 0.0241 - val_acc: 0.9926\n","Epoch 12/40\n","60000/60000 [==============================] - 3s 53us/step - loss: 0.0381 - acc: 0.9882 - val_loss: 0.0248 - val_acc: 0.9924\n","Epoch 13/40\n","60000/60000 [==============================] - 3s 53us/step - loss: 0.0355 - acc: 0.9886 - val_loss: 0.0245 - val_acc: 0.9923\n","Epoch 14/40\n","60000/60000 [==============================] - 3s 54us/step - loss: 0.0325 - acc: 0.9895 - val_loss: 0.0271 - val_acc: 0.9913\n","Epoch 15/40\n","60000/60000 [==============================] - 3s 53us/step - loss: 0.0312 - acc: 0.9899 - val_loss: 0.0227 - val_acc: 0.9926\n","Epoch 16/40\n","60000/60000 [==============================] - 3s 53us/step - loss: 0.0311 - acc: 0.9901 - val_loss: 0.0253 - val_acc: 0.9907\n","Epoch 17/40\n","60000/60000 [==============================] - 3s 53us/step - loss: 0.0287 - acc: 0.9911 - val_loss: 0.0266 - val_acc: 0.9926\n","Epoch 18/40\n","60000/60000 [==============================] - 3s 53us/step - loss: 0.0280 - acc: 0.9911 - val_loss: 0.0221 - val_acc: 0.9932\n","Epoch 19/40\n","60000/60000 [==============================] - 3s 53us/step - loss: 0.0277 - acc: 0.9909 - val_loss: 0.0253 - val_acc: 0.9918\n","Epoch 20/40\n","60000/60000 [==============================] - 3s 53us/step - loss: 0.0258 - acc: 0.9917 - val_loss: 0.0212 - val_acc: 0.9928\n","Epoch 21/40\n","60000/60000 [==============================] - 3s 53us/step - loss: 0.0251 - acc: 0.9917 - val_loss: 0.0199 - val_acc: 0.9939\n","Epoch 22/40\n","60000/60000 [==============================] - 3s 53us/step - loss: 0.0247 - acc: 0.9917 - val_loss: 0.0222 - val_acc: 0.9931\n","Epoch 23/40\n","60000/60000 [==============================] - 3s 53us/step - loss: 0.0233 - acc: 0.9925 - val_loss: 0.0208 - val_acc: 0.9936\n","Epoch 24/40\n","60000/60000 [==============================] - 3s 54us/step - loss: 0.0230 - acc: 0.9927 - val_loss: 0.0222 - val_acc: 0.9929\n","Epoch 25/40\n","60000/60000 [==============================] - 3s 54us/step - loss: 0.0211 - acc: 0.9933 - val_loss: 0.0254 - val_acc: 0.9917\n","Epoch 26/40\n","60000/60000 [==============================] - 3s 53us/step - loss: 0.0200 - acc: 0.9930 - val_loss: 0.0246 - val_acc: 0.9923\n","Epoch 27/40\n","60000/60000 [==============================] - 3s 53us/step - loss: 0.0206 - acc: 0.9930 - val_loss: 0.0227 - val_acc: 0.9932\n","Epoch 28/40\n","60000/60000 [==============================] - 3s 53us/step - loss: 0.0219 - acc: 0.9929 - val_loss: 0.0233 - val_acc: 0.9933\n","Epoch 29/40\n","60000/60000 [==============================] - 3s 53us/step - loss: 0.0197 - acc: 0.9936 - val_loss: 0.0227 - val_acc: 0.9934\n","Epoch 30/40\n","60000/60000 [==============================] - 3s 53us/step - loss: 0.0210 - acc: 0.9937 - val_loss: 0.0224 - val_acc: 0.9937\n","Epoch 31/40\n","60000/60000 [==============================] - 3s 53us/step - loss: 0.0193 - acc: 0.9932 - val_loss: 0.0229 - val_acc: 0.9928\n","Epoch 32/40\n","60000/60000 [==============================] - 3s 53us/step - loss: 0.0189 - acc: 0.9936 - val_loss: 0.0262 - val_acc: 0.9931\n","Epoch 33/40\n","60000/60000 [==============================] - 3s 53us/step - loss: 0.0178 - acc: 0.9944 - val_loss: 0.0199 - val_acc: 0.9940\n","Epoch 34/40\n","60000/60000 [==============================] - 3s 53us/step - loss: 0.0189 - acc: 0.9938 - val_loss: 0.0209 - val_acc: 0.9937\n","Epoch 35/40\n","60000/60000 [==============================] - 3s 53us/step - loss: 0.0182 - acc: 0.9937 - val_loss: 0.0231 - val_acc: 0.9935\n","Epoch 36/40\n","60000/60000 [==============================] - 3s 53us/step - loss: 0.0179 - acc: 0.9946 - val_loss: 0.0228 - val_acc: 0.9931\n","Epoch 37/40\n","60000/60000 [==============================] - 3s 53us/step - loss: 0.0178 - acc: 0.9941 - val_loss: 0.0226 - val_acc: 0.9930\n","Epoch 38/40\n","60000/60000 [==============================] - 3s 53us/step - loss: 0.0174 - acc: 0.9946 - val_loss: 0.0210 - val_acc: 0.9934\n","Epoch 39/40\n","60000/60000 [==============================] - 3s 53us/step - loss: 0.0163 - acc: 0.9946 - val_loss: 0.0221 - val_acc: 0.9929\n","Epoch 40/40\n","60000/60000 [==============================] - 3s 53us/step - loss: 0.0181 - acc: 0.9943 - val_loss: 0.0246 - val_acc: 0.9935\n"],"name":"stdout"}]},{"metadata":{"id":"liMqdVECgyYW","colab_type":"code","outputId":"89725bc0-e1fd-4048-bd7b-5ac3d94793e1","executionInfo":{"status":"ok","timestamp":1549820991652,"user_tz":-60,"elapsed":826,"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.98)"],"execution_count":0,"outputs":[{"output_type":"display_data","data":{"image/png":"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\nQS6EEELo2P8Hi/PwWhEIISQAAAAASUVORK5CYII=\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.3%. \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 went back to 100 neurons in the dense sub-network, after checking that the performance was improving (a little bit) and that overfitting did not become a problem\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 one! 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 that 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 predicions of the network for the whole testing sample, and we get the predicted and true digits for this sample: "]},{"metadata":{"id":"OZeKWdchh0w3","colab_type":"code","outputId":"b16262ab-0c9b-482c-c4e8-bb457c3fd346","executionInfo":{"status":"ok","timestamp":1549821834889,"user_tz":-60,"elapsed":1212,"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":52}},"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":0,"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":"4d2794f1-c24b-40a3-ce5f-1949d0154c82","executionInfo":{"status":"ok","timestamp":1549821949148,"user_tz":-60,"elapsed":605,"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":0,"outputs":[{"output_type":"stream","text":["number of misclassified digits: 65\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":"79c04ed4-fb2b-4015-da56-1b615fa56712","executionInfo":{"status":"ok","timestamp":1549822875017,"user_tz":-60,"elapsed":3545,"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":1398}},"cell_type":"code","source":["plot_img_results(mispred_img, mispred_true, mispred_pred, 0, len(mispred_img))"],"execution_count":0,"outputs":[{"output_type":"display_data","data":{"image/png":"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\nf/HFF0a3CQoKklntZitTpkzBFYyM2rVrl8wffvihzBUqVJB5+vTpMjdp0qRwCkbS/fv3ZR40aJDM\n6nfHzs5OZvX0oz5fv359mX///XeZy5Ytm3+FJQNqXSQkJMj80ksvydy5c2eZ161bJ3OpUqUKuHSU\nW7/++qvM6vdT1bhxY5nff/99mWNjY2VWh4zM1adPH5lXrVpl8f6WYM8MERERaRobM0RERKRpxW6Y\nKTU1VebnnntOZrX7zdfXV2a1m41dqYVv4sSJMmdkZMg8YcIEmdW6CwwMlPmjjz6SuX379gVVxGLn\n9u3bBo9XrFgh88iRI2VWh42Cg4NlXrZsmczqsJH6XevYsaPMH3zwgczqMCLlr5SUFJnVc6Mpv/zy\ni8zqOZOsT50BeOTIEZnVc6jq2WeflVn9PVD17t1b5pIlTU+EHjJkiMzqUH/p0qWzKXHesWeGiIiI\nNI2NGSIiItK0Yrdonno1/r1792Ru1aqVzBxasq7t27fLrHZ5LlmyRGZ7e3uZy5UrJ7O6CNu1a9cK\nqojFWt++fQ0e//DDDzK//vrrMqtDQupsCVPatGkjszpERYVj27ZtRp8/cOCAzEePHpXZ29u7wMtE\nuVOtWjWZ27ZtK/OLL74oc8OGDWUeOnSo0eOMGjVK5rlz58pcooTt9YPYXomIiIiILMDGDBEREWka\nGzNERESkacVuarZ6rYU6Lv/222/LvGjRokItExl67bXXZN6yZYvMDg4OOe7777//yvzXX3/JrF6P\nQeZRp2A3atRI5sdX4f3uu+9kVleLzQt1TL558+YyqyvTUt7pdDqZ1VWX1RXO1RWYy5cvXzgFowKR\nnp4us3p9248//mh0+9WrV8usLq9gi9gzQ0RERJrGxgwRERFpWrGYmv3ff/8V2mtdvHhR5uTkZJmb\nNm0qM29SaejUqVMGj9WhCnOGllTqVO7IyEiZDx48mMvSFV9jxoyRWV0Rdu/evQbb5dfNH9Vp9eoQ\nMKdpFxx1CMnUMggcWtK28+fPy6yunK4OLanfserVq8ts60NLKvbMEBERkaaxMUNERESaViyGmUzd\nZNDJyUlm9YaGefHNN9/IrHbpqTfOmz17tszOzs758rpa9viV9OrKlJZSu8RPnjwp85UrV2R+5pln\ncn384kRd2ffw4cMy59ew0uPUmRPqa3B2YeG7dOmStYtAeZCUlCTzjBkzZF61apXR7WvXri3zP//8\n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\ntXVWokQJlChRwuJrDxb9q1ChQpqvxR7OUl8zZszAhx9+iMGDB+PGjRuoWLEi3n33XfTo0SPN8jtb\nfQGZ/4wVMIxUC5qQTZs3b0ZISAj+85//ZOkCTJQ9IiIiMGDAAISHh+fYcBtlHOvLfFhn5pKX68tp\n75khIiIisgcbM0RERGRqHGYiIiIiU2PPDBEREZkaGzNERERkamzMEBERkamxMUNERESmxsYMERER\nmRobM0RERGRqbMwQERGRqbExQ0RERKbGxgwRERGZGndLJKJcc+nSJckPdpEHgLCwMMlZtTM1EeVd\n7JkhIiIiU2NjhoiIiEyNw0xElKOuXr0qeenSpZKvXbsm+YUXXpC8Zs0ayc8//3z2Fo6ITIk9M0RE\nRGRqbMwQERGRqXGYiYhy1IoVKyRPnz5dcoECBSTrISf9daL86K+//pL8yiuvSF61apXk0qVL52iZ\nnA17ZoiIiMjU2JghIiIiU8uTw0x37961eNy/f3/J27dvl/zII9bbcp988onkJ554wuoxPj4+kkuU\nKJGhchLlZYZhSI6Li5McHh6e7rn6M1WxYsWsLRiRyejPw6+//iq5SZMmkvfu3Sv5woULkp966inJ\njz76aDaVMPexZ4aIiIhMjY0ZIiIiMrUChu4LziN+++03i8cNGjSQnJKSItnWMJMt+twWLVpIHjFi\nhOR27dpJLlasmORChQo59Fxkv+XLl0v+97//LTkhIUGy3uvnypUrkvWP/1dffSW5V69eWV7O/ObY\nsWOSvby8rB6j3389a8nDw0OyrlOi/O6zzz6THBAQIFn/vdHDulOnTpX85ptvSo6Pj5c8fvx4yfpv\nm76+s2PPDBEREZkaGzNERERkanlyNlP58uUtHi9cuDDdc/bs2SN5y5Yt6R5/4MABq1kbNGiQ5KFD\nh0rWd6BT5lWuXFny4cOHJY8aNUry+++/L/mnn36S3Lt3b8kNGzbMriLmGz/88IPkwMDADF/n9u3b\nkvVwlaenZ4avSZQXfPfdd1a/roeWtEmTJkneuHGjZD3Ee/r0acl65hSHmYiIiIhyCBszREREZGps\nzBAREZGp5cmp2Rlx8eJFyc8884xkveFdZqZ1jx49WvLs2bMzUkSy4c8//5Rco0YNybq+tJMnT0rW\n98noKf21a9fOwhLmbfpXiF6dtG3btpKvXr2a7rn2bCi5cuVKyXo838XFxb7CksXP+dtvvy158+bN\n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\nlHVmrjpzhvoCgM8++wwFChTA008/bfH1ihUr4ttvv7VZfmesL+Cf+yEBOPT7/YECRk6NQ+QBERER\nGDBgAMLDw1G1atXcLg6lg/VlLqwv82GdmUteri+nvWeGiIiIyB5szBAREZGpcZiJiIiITI09M0RE\nRGRqbMwQERGRqbExQ0RERKbGxgwRERGZGhszREREZGpszBAREZGpsTFDREREpsbGDBEREZkaGzNE\nRERkamzMEBERkamxMUNERESmxsYMERERmVrB3C5AfpSQkCB5586dFt/r2bNnTheHKNfoz0KHDh0k\n//e//5V86NAhyRUqVMiZglGG6TodOnSo5DFjxkhu1KhRjpaJ8j72zBAREZGpsTFDREREpsZhplww\nYMAAycOHD8/FkhDlrgULFkjev3+/5AIFCkgeNWqU5E8//VRywYL89eUsDMOQrIfON2zYILlevXqS\nOcxEWY09M0RERGRqbMwQERGRqbGfNhvpu/pDQ0Ml6+7xpk2b5miZiHLbjh07JO/bty/d4/XwhB5+\nIudx584dyS+++KJkFxcXyZypSdmJPTNERERkamzMEBERkalxmCmLXblyRfKwYcMknzp1ymrmjIy0\n3b59W/Lhw4clf/vtt+meq2dYrFixQrK7u7vk06dPS27Tpo1kT09Pu8oXGRkpuVKlSpI/++wzu87P\nj5YsWSI5PDzc6jG6jvRia3rYgnLX3bt3Jes60r766ivJderUyfYymUFcXJxk/R4WLlxYcsmSJS3O\n4fBq+tgzQ0RERKbGxgwRERGZWgFD98VThly6dEny2LFjJdetW1fyhAkTJOvuRHqY7np95ZVXJOsZ\nYbY89thjkvVQRWa6afU+QTExMTaPq1atmuSzZ89m+PnyooiICMkvvfSS5AsXLkhOSUmR3LFjR8m7\ndu3K5tJRRughVh8fH8llypSRrD8Hjz76aM4UzMn16tVLsr4toX379pKfffZZi3Patm2b/QUzOfbM\nEBERkamxMUNERESmxsYMERERmRrnBWfQ33//LVlPS9y7d6/k1atXS+Z9MvbT907o6ZwTJ06UrDfr\nfOSR/2+TlypVSnLp0qUzXIb4+HjJrVu3lqynhwPA448/LvnQoUMZfr68rly5cpIvXrwoWd/LVLRo\nUcmvv/56zhSMHJKYmChZ3weoP4Off/65ZN4n87DY2FjJ+nfGM888I7lr164W5yxfvlxyQEBANpbO\n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\ntm7dKnnu3LmSv/vuO8kBAQGSly5dKrly5crZWzgiIgfn7+9v8fFZs2ZJfv755yU7OTlle5lsxZ4Z\nIiIiMjQ2ZoiIiMjQnJRSyt6FcDSLFy+W3K9fP8kpKSn2KA79n4SEBMl9+/aVvGbNGsnVqlWTXKJE\nCclRUVGSq1atKvnkyZNZXk7KPnfv3pX8999/S163bp3kJ598UvKbb75pdr6rq2s2lo7ImK5cuSK5\ndu3akj09PSXrw/kFCxbMmYLZgD0zREREZGhszBAREZGhcTbT/7l27Zrk9957T/Kj3dRkP+PHj5e8\ncuVKyaNHj5b8v//9T3L+/Pktnrtw4ULJSUlJkvPl48fBUezfv1/yH3/8IXnq1KmSz5w5Y/FcfeQ8\nODjY7HseHh5ZVUTD0ofLDx48KDk6Ojrdc2fPni25bdu2FrM+c9ARZ73Q455++mnJpUqVkvzTTz9J\nfvHFFyXv3r1bsouLS/YWzkrsmSEiIiJDY2OGiIiIDI2zmf7PoUOHJNevX1/ynj17JDdu3DhHy0TA\njRs3JOuzVF577TXJ4eHhkvWhJd2FCxcku7u7S/7tt98kP/fcc5kqK1nn6NGjkr/++mvJy5Ytk3zp\n0iXJtg5V6L/S9CEqIO8MM+lDRrt27TL73vr16yVHRkbadF3986XPLtTFxsZKrlChgk3XJ/ubMGGC\n5LFjx0ouVKiQ5KtXr0ouUKBAzhQsHeyZISIiIkNjY4aIiIgMjY0ZIiIiMjTORf0/cXFxFh/Xp/Tq\n91e4ublJPnDggOTSpUtnQ+nyrrfffluyPmXwiy++kJzafTKp0e+pWLJkieRPP/00I0WkVPz333+S\n9enwkyZNkpzafRc6/V619u3bS9bvcerRo4fke/fuSS5cuLANJTa2+/fvSx4yZIjkffv2Zeq6lSpV\nkjxjxgzJL7/8ssXjTSZTpp6P7Ev/nasvgdGqVSvJjriSNntmiIiIyNDYmCEiIiJD4zDT/1m+fLnF\nx3fu3ClZH57Qp4ueO3dOMoeZMk8fztu4caNkfXgiM9MB9WEprvCcefoQ7bRp0yTPnz9f8vXr1yU3\nb95ccqNGjSSHhIRI1oeH9A1D9e7tU6dOSdaHtPr37y+5XLlyVr4KY9JX8w0KCpKc2aEl3dmzZyWn\nNrSk06fz6ssmODs7Z1mZKPvoS2CMHDlScs+ePSXrv4sdZdNJ9swQERGRobExQ0RERIaWp4eZ9K5v\n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\nZauuVbRoUcn79++XXKNGDZvKZCv2zBAREZGhsTFDREREhma4PvLk5GR7F+Ex8+fPl/zzzz9LPnHi\nhD2Kk2vpdb98+XKLx3h4eEj+66+/JOvdruvXr5ec2tCSPvwxevRoyU88wfa/tfTZLvpotj60Z+vQ\nUkpKisVr6sPPlH169uwped++fZL12TOvv/56ThYpV7p//77Z1++//77klStXStY/D6kNLT399NOS\n161bZ/FxFxcXyV988YVka4eWdEuWLJGc3UNLOv5mJiIiIkNjY4aIiIgMzXDDTJR36Qs16Rujbd68\nWXLr1q0l612cdevWTff677zzjuRJkyZluJx5md49/vHHH0vWZ5Dpi1jaKjQ0VPLJkyclHz58OMPX\npLTps5NWrVolWd+YVZ9VQ5mnzwICgJkzZ9p0fvXq1SXrQ0upDfvEx8dLXr16tU3P1b59e7Ovg4KC\nbDo/q7BnhoiIiAyNjRkiIiIyNA4zZaP8+fNLfvLJJ+1YktxBn1Xk6uoquW3bthaP1xcw1Bfv0vXv\n31+yvs8JZUxqs/k++ugjyfqiWtbQhxe3b98u+fr16xkpImnu3bsnWd9j7tSpU5L79esnWd9vq3fv\n3pILFy6cXUXMM/TZmkOHDrXqHH02oD7sN3v2bMmpzcC8ffu25LFjx0q2ZhauvliovuAeYL/3Antm\niIiIyNDYmCEiIiJD4zBTFvjzzz8lX7x4UbJ+h39qwxyUtfQ9mFLbA6thw4aS582bJ5l7A2XeoUOH\nLD7erFkzm64TExMjuWXLlpJTG1rSh0vc3Nxseq7c7vjx42ZfjxgxQvLevXslP7pQ20P6wmy6+vXr\nS9b33po4caLkZ555xrbC5mG7du2SrA/5pUXfh3Du3LnpHq/vlxYZGSn50aGi9OhDjO7u7jadm13Y\nM0NERESGxsYMERERGZqT0jc4oQzR7yLfvXu35J9++kmyvg8GZUzfvn0lL126VLLezanfoX/z5k2L\n1zl48KBkvaucMk+fwafn2NhYycWLF7d47pkzZyQ3b95csj50mBq9TuvVq2ddYXMxfWaMvujdo/Sf\n7YcffmjxGP3xsLAwyfoCbP/8849kfaaLPiuqatWqaRU5z9OH8/z8/My+d/To0XTP12d4piYxMVFy\nZv706zOkHh3Ot3XRvazCnhkiIiIyNDZmiIiIyNDy3GwmfeaRvh+FrkyZMpJLly4t2WQySdb3hVm8\n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\n/BxvzHTp0gXbt2/HokWLZAfW0NBQjB8/Hn369IGPjw+Sk5MRGhqKYcOGmZ3btWtXs51yDx48iG7d\nusHPzw/16tXDkCFDcPXqVfn+6NGj0aNHj1TL8uWXX6JTp07w9/eHq6sr/Pz80KlTJyxbtszi8efO\nnYOnpye+++47dO3aFbVr10aTJk2wadMmOcbSa0lOTsacOXMQHBwMb29vNG/e/LH/1S1fvhzNmzdH\nnTp10L9/f9y4ccPs++m9Fkuv7d69e3jzzTetPscSR6qv48ePo1mzZqhcuTKcnZ3h7+8PT09P/Pbb\nbxaP/+abb+Dt7Y09e/YgODgYXl5eaNeuHf744w85xtPTE+Hh4QgODkbPnj0BADdu3EBYWBiaNm0K\nb29vdOzYEXv27JFzTCYTxo4diwYNGqB+/fqYPHnyY7/4g4ODMWfOHIvlio+Px7BhwzBkyBAULlwY\nrq6uCAkJQXJyMv78889UX781HKm+ctPny9b3ni0cqc7+++8/jBkzBmPGjLGq7JGRkfD09MSePXvQ\nvn17eHl5oUWLFma9FoGBgZg9ezY6deqE4OBgAA+2qJg4cSICAwNRu3ZttGrVyuyPVkpKCmbOnIkm\nTZrA19cXYWFhSEhIMHvu3r17Y9SoUamWbcGCBXjppZfQpk0b5M+fHzVr1sSGDRvQvHlzq15bahyp\nvnLTZ2zJkiXw8/NDaGgoChYsiMqVK2P58uXo2rVrqueYUXYQEBCgPv30U/k6JCRE+fv7q61bt6rk\n5GR5bOjQoWbndenSRYWFhSmllDp9+rSqXbu2WrVqlTKZTOrKlSuqd+/eKjQ01KoyJCQkqBo1aqhN\nmzaZPb5582ZVvXp1de/evcfO+ffff5WHh4dq27atOnnypEpISFBLlixRnp6e6u+//071tcycOVM1\nb95c/fHHHyopKUlFRUWpunXrqg0bNiillIqKilIeHh7qu+++UyaTSUVGRqpGjRopDw8Pq17Lo65c\nuaJ8fHxUdHR0hs5/lCPUl1JKzZgxQwUHB6szZ86o5ORk9csvvygfHx+1b98+i8evX79eeXh4qIED\nB6r//vtP3b59W7377ruqadOmUm4PDw/Vpk0bdfr0aZWSkqKUUqpbt27qzTffVFevXlUJCQlq+fLl\nqmbNmio2NlYppdScOXOUv7+/OnHihEpISFBffvml8vHxUSEhIVa/Ft3169fVlClTVJMmTdT169cz\n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\n8HCzGQjpqVOnDuLj4zF+/HjcvHkTCQkJWLZsGWJjYzN1r9RDjlBfQO75fGXmvWctR6mzjPrqq69w\n7tw5xMfHY+7cuXBzc8MLL7xg8dhChQqhc+fOmDt3Lk6cOIHk5GRERUWhY8eOiIiIAPCgzvbu3YtD\nhw7BZDIhIiLC5pljffr0wdatW7FlyxaYTCbs2LEDP/zwA7p3757p1+so9ZVbPmMA0KtXLxw9ehTh\n4eFISEhAVFQU1q5da319WX2rcRZavny58vHxUfXq1VNXr161eNf3pUuX1Ouvv668vb1V48aNVXh4\nuBo4cKDcCa6UUj///LPq3Lmz8vLyUvXr11dvv/22zDhRSqn3339fvf7662mWZdWqVap58+bqueee\nUy1atFBr1qxJ9diHd4KvXLlSde3aVXl5eakmTZqoiIgIOcbSa0lKSlIzZ85UTZs2VbVq1VKBgYFq\n9uzZcqe4UkotXrxYBQQEKG9vb9W3b1+1fPlyszvBrXktV65cUR4eHmr37t1pHmcrR6mva9euqTFj\nxqhmzZqpWrVqqWbNmqmFCxeqpKQki8c/nM20Y8cOFRQUpGrVqqXat2+vTp8+Lcd4eHg8VufXrl1T\nQ4cOVfXq1VM+Pj7qpZdeMqvje/fuqZEjR6rnn39ePf/882rChAnqgw8+MJvNFBQUpGbPnp3qa/nz\nzz9Vnz59lI+Pj6pbt67q3Lmz2rlzZ6rH28JR6kup3PP5svW9ZytHqbP3339f1apVS9X6f+3deUCU\n1fs28NsQFXdzywVBJFAUNKGUNHchNfcdQUUp6+ueipppGrnvO+rPHffSNBdEc09T0axcszDRVFxy\nQUXW5/3D17t7cAZmYGDmwPX56xJmHg4cZjie+znn1Kihubi4aG5ublqNGjU0Hx8fvY9/tZppx44d\nWps2bbQaNWpozZs351VJmvb6yh9Ne/kamjBhgubt7a15eHhoH374oRYWFsafT0pK0qZMmaLVq1dP\ne+edd7TPP/9cmzdvns5qpsDAQG3UqFFp/lzXr1+vNWvWTKtevbrWrFkzbfv27Wk+3ljW0l+alnNe\nY5qmaREREVqrVq206tWraw0aNDBp9RkOmjTBzZs3qWnTprRy5crXbk4D67N161YaPXo0XbhwgfLm\ntZrbw8AAvL7Uc/LkSerZsydFRESQg4ODpZsD6cjJrzGrvWcGAAAAwBgYzAAAAIDSUGYCAAAApWFm\n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\nX7du3aKkpCQiynx/ERHFxMRQ7969+Wa7rBzI6JMd/XXmzBmdGwuJiI4cOUJ16tRJ83nW2F+vhIeH\nU7NmzTL03MzKjj5zdXV9beVWdHR0umVva+uz8+fPU8OGDXV+PkQv/+hm1exnalndX8nJyTRt2rTX\nbiUw5n3f2vrrjTfeIGdnZ72/e8aWcy0ymLGzs6Po6GiKjY3VO8tBROTk5ERnzpyhf/75h+Lj42n+\n/Pn8gyN6eUf5vXv3aM6cOfT06VN6/PgxTZgwgXr16mXUiLBQoUJUr149Wr58OV27do2SkpIoMjKS\ndu/ene5eH0uWLKEHDx5QbGwshYaGkr29PdWoUUPvY6tUqUL169enqVOn0vXr1yk5OZn27dtHrVq1\nojNnzhDRy7vHd+zYQX/88QfFx8fTqlWrdO5oT0+pUqXoxx9/pAkTJtDDhw/p+fPntGDBArp27Rr5\n+/sbfR1DrKG/XklKSqLz58+btHx57dq1dPPmTYqLi6OFCxdSwYIF6YMPPtD72EKFClGnTp1o4cKF\ndPHiRUpOTqbTp09T+/btaffu3UT0sr+OHDlCkZGRlJCQQLt37za4As6Q8ePHU82aNWnUqFE6U7fm\nYC39dfbsWRo2bBj9+eeflJCQQHPmzKF///2XunbtmubzrLG/iF6+ed+9e5eqVatm8nPTYy19FhgY\nSL/++iutWrWK4uPj6fTp07Rlyxbq0aNHms+ztj5zcXEhOzs7CgkJoZiYGEpMTKQ9e/bQiRMn9O4Z\nZCpr6C8bGxuKjo6msWPHUlRUFCUmJtL+/fvp22+/pcDAwDSfa239RfRyKX14eDjt2rWLEhISaN++\nfbR///50f/desUiZyc/Pj2bMmEFNmzblH0Zqffv2pStXrlCrVq2oSJEiFBQUpPM/uooVK9KSJUto\n9uzZtGrVKipYsCB5enrSsmXLeLrryy+/pBs3btDq1av1fo3p06fTnDlzqE+fPnT//n0qVaoUBQUF\npfuL0KZNG/Lz86Nbt26Rk5MThYaGpvkHafr06TRp0iTq3LkzJSYmkoODA02dOpWnOocOHUqxsbG8\n42/r1q3po48+4vttiF7exNa6devXaqREL19YK1eupOnTp1OLFi0oLi6O3NzcKCwsjJycnNL8Xoxh\nLf1F9PJGscTERCpZsqTR7e/SpQv179+foqKiqFy5crRkyZI0Z0JGjx5NefPmpaCgIHr27BmVL1+e\nBg0axPc9+fv70507d2jIkCH0/Plzaty4MfXs2ZO2bdvG1+jTpw+VLVuWJk+e/Nr179y5QwcOHCBb\nW9vX6uXvvvsurVixwujvTR9r6a/AwECKiYkhf39/evHiBbm7u9Pq1aupRIkSabbf2vrrlbt37xIR\nmfS7Zyxr6TMvLy+aN28ezZ07l2bMmEElS5akAQMGpPufImvrs3z58tGKFSto2rRp1KpVK0pOTiZ7\ne3sKCQmhFi1apPm9GMNa+mvy5Mk0c+ZMCgwMpH///ZfKly9P48ePT/M2CSLr6y+il3/3nj59SnPm\nzOH9gKZMmWL0LHweLb2aCrCtW7fS6NGj6cKFC6/tuAjW5+TJk9SzZ0+KiIjItnIbZBz6Sz3oM7Xk\n5P6y2ntmAAAAAIyBwQwAAAAoDWUmAAAAUBpmZgAAAEBpGMwAAACA0jCYAQAAAKVhMAMAAABKw2AG\nAAAAlIbBDAAAACgNgxkAAABQGgYzAAAAoDQMZgAAAEBpGMwAAACA0jCYAQAAAKVhMAMAAABKy2vp\nBgAAQM6xaNEizlu2bOF88OBBSzQHzCQxMZFzdHQ056NHj+o8zs7OjrOXlxfnMmXKcC5SpIjZ24eZ\nGQAAAFAaBjMAAACgtDyapmmWbgQAAKgrISGBc61atTjHxMRwPnPmDGdZcihYsGAWtw4yKikpifPi\nxYs5DxkyhHPqIUSePHn0Xuutt97i7OPjw3nlypWZbicRZmYAAABAcRjMAAAAgNKwmgmUtH79es4D\nBgzg/PDhQ84ODg6cT506xfnBgwecT58+ne7X6tChA+fChQub3liAHO7SpUucGzZsyHnJkiWcnZyc\nOMvXo1zxApZ37tw5zqNGjeK8b98+vY8PDAzU+bcsM3300Uec7e3tzdVEvTAzAwAAAErDYAYAAACU\nhjITWLXk5GTOgwcP5izvrJfeeOO/8fmNGzc4u7q6cpabP8XFxaXbBnm3/fbt23U+V7Ro0XSfD5DT\nydLtoUOH9D7Gz8+PM0pL1uXWrVucP/zwQ8737t3j3KRJE87r1q3jLFemWRJmZgAAAEBpGMwAAACA\n0lBmAquWkpLC+dixYxm+zpMnTzL83CNHjnCOiorS+ZzcIAwy5/Lly5xHjBjBedeuXXofLzdb27hx\nI2e5ggKyxxdffMH5ypUrnAsUKMA5ODg4W9sEabt//z7nuXPncn769CnnhQsXcv74448529jYZHHr\nTIeZGQAAAFAaBjMAAACgNAxmAAAAQGk4aBKUsXPnTs6ylnv48GHO8j6Kd999V+91unbtytnZ2Zmz\nr68v5xcvXuh9rjwsjwj3zGTWxIkTOX/99dec5QF38i3K0CF2cnfRv//+24wtBEPkTrHe3t6c4+Pj\nOa9YsYJz7969s6VdYJjclkLunL506VLOffv25fx///d/2dMwM8DMDAAAACgNgxkAAABQGpZmgzLk\nkluZf/31V86FChXiLEtIktxVuG7dupwNlZbatGmT7jUhbXI35m7dunGOjIzkLH+20dHRnJ89e6b3\nmqVKleJcs2ZNzrIf8+XLp/McuUM0GEeW/A4ePMhZLp+XpaX//e9/nHv27JnFrQNTDB06lLMsIQ0f\nPpzzhAkTsrVN5oJXNgAAACgNgxkAAABQGspMinv8+DFnueqjePHilmiORcgSgyHyZyMPwjt79my6\nz50zZw7nwoULm9a4XEaWeORhoNOmTeMcExPDuXTp0pzlAXfyANCWLVtyrly5MudKlSpxXrZsGWd5\nqKgseRDpHlYqd6cFw2RpbtGiRZx/++03zrVr1+Y8cOBAvc+F7CNLg3LV2fr16/U+PjAwkLNcEaoS\n/KYBAACA0jCYAQAAAKXl6jKTPMTw7t27nOW0nNyQ7a+//uIsyxPdu3fnPHr0aM6Gpuvk6oyrV6/q\nfO7OnTsmfW25MqdLly6cp06dqvdr51YRERGcZdnCELnh3ptvvpklbcopZOlBHib4/PlzvY9/7733\nOMsSnlxZZgw5lS5fR3IllHw9EhEFBARwLl++vElfL7eS5cLt27dztrW15RwSEsJZlvkg+8gN8eSh\nvM2aNUv3uU2aNOEsN6bs1KkT50mTJnEuUqRIhtuZVTAzAwAAAErDYAYAAACUluvOZpLT0W3btuV8\n+fJlzjVq1ODcokULzoZWP6xbt46zi4sL58aNG3OWZ/rs2rWLc+oShiwVyTKVvFbFihU5Ozo6cs6b\nN1dXDV8jyxxykz1ZvpNkSUKeE4QVGURXrlzhvHLlSp3PPXjwgLP8OcvXi3xM586dOctShTHkVLos\nf8jNwORbmoODg87zL1y4wFnVVRtZ5d69e5zlzzM8PJzzv//+y/mnn37iLM9mAsvo168fZ1PPVDLm\n/LN69epx3rNnD2e5Uakl4V0aAAAAlIbBDAAAACgt15WZevXqxVlu8CU33ZIbo8kSg9wkSm4CtmXL\nFs516tTRm+UKGrnBVOopOpSKMufp06ec5Sqz3bt36328XFmzf/9+ztYydWpJckNGucIv9c/Gy8sr\n29okX4PNmzfnfP/+fc758+fnfOnSJZ3npy47wX/kCpgGDRrofYx835Pn+UD2kaVWWTKXrwdDpSIf\nHx/O8oy03r17c75165bex8jfD1lqln9TLQkzMwAAAKA0DGYAAABAabmupiE35ho5ciTnEydOcJYb\n1+3bt4+z3DBKnvkiN7SrUKECZ0NTfZB1ZKnIUGkpX758nGX/orSkS05ny9fNjz/+qPM4+XM2ZkPC\nP//8k7PcfKts2bKcL168yNnNzY3z3r17OcvSkjRs2DDOKCulTa7uPHnyJOchQ4Zwlpuu+fr6Zvhr\nydWF58+f51yiRAnO8uwtIpTdX4mPj+e8dOlSzrKf5PuaXKk7fvx4zlWrVuVsaJWmPC9NboAoV6/9\n/fffRrY8+2BmBgAAAJSGwQwAAAAoLdetZpLnucjzd+RqDVke2rZtG2e5gZ6c0gPLkmVB2Udy5Yvs\nr7lz53L+5JNPsrh16pKrGuQmWY0aNdJ5XJUqVdK91sOHDznLDfRKlizJWa5ECwsL4+zv768329jY\ncI6KiuJsjVPg1kqe4WZnZ8f5448/1vtxU8kyltz4U/5uSXIDUiLdFYk5XVxcHGf5+09E9M0333C+\nefOm3uf379+f87x58zLcDlkONHQGk+xXJyenDH8tc8LMDAAAACgNgxkAAABQWq64VTw5OZlz69at\nOcs75eWKDLlSSa52MWalBhhHrpSR06vGkiUkWVqSU6SS7Gu5kmLQoEEmf21DAgMDOb/zzjtmu66l\nyNVF8swwebYYkW7ZyNPTk/PmzZs5V69eXe915UoWmeWGbPL8Jnn206hRozifPn06rW8FDJArOs1F\nbq4mV4nK0pK8u0H2rzxrLreZMmUKZ1lWSouHhwfnWbNmmaUda9as0fvxJk2acLbGVYKYmQEAAACl\nYTADAAAASssVZaYJEyZwvnDhAudffvmFs1xVceTIEc7u7u6c5dTowoULzd7OnE5uLiinUQ1Na5qT\nLD+Z2ndyc6m0VrG9//77nHNCmUmeXebn58f5999/13mcnB6X5zTJs2Lkqgh5dpIhsvQgVyDK1S5t\n2rThLMtYYDz5mpSlA1M3q9uxYwfnMWPGcJbvt5KLiwtneV6Qt7e3SV83J5Gvt9TGjRvHOSIigvPP\nP//MWZ4RaOoqMLlh4ogRI/Q+Rr725EpCa4GZGQAAAFAaBjMAAACgtFxRZpJlDHn3viwtSfb29pwD\nAgI4nzp1Kgtal7PJzcxk6eXZs2eWaI7R5Hkm8lwiWTrJ6Sqq4qgAAATKSURBVOT5SJUqVeK8bNky\nnce99dZbep9fqlSpDH9tuclehw4dON++fZuzPCvNmNIVvE6+H65du5azoTJTbGwsZ7lyTZ63ZYj8\nHYqMjOScVnklt0q9l61cxSdX28qVgXIFoFy1W7hwYc5yFemAAQM4y/OeihcvzlmWlMuUKWP8N2AB\nmJkBAAAApWEwAwAAAErLFWUmaeXKlZwTEhI4P3r0iLOcypZ3cH/33XdZ3LqcR64ykT/vrPoaX3zx\nBef27dtn+Jpy1ZI8qys3kWeXyZxV5GtQ9qMsd12/fp1zgQIFsrxNOUFKSorOv2XZXa4UM7SC7OjR\no5wHDx7M2VBpSZ7lNGTIEM5fffUVZ/n6MnT+T24jf7dTv+fI1UZVq1bl3KNHD84HDx7kfOXKFc5y\nU1LZH3I1b+XKlTkfPnyYs7zlwtphZgYAAACUhsEMAAAAKC1XlJnkNLXc4Gvx4sWc5ZR1s2bNOJ87\nd47z22+/nVVNzLFq1qzJWa5Qked8pD4fSW5S5+bmlu7X2Lt3L+dy5cplqJ1gGXfu3OEsV1ds27aN\n84wZMzijtGQcWVqQ73lEumdmyTOt5DlKcuM0Q6s4ZXlXrrCR5V1DK93gdfPmzeN87do1nc8NHDhQ\n73NkCVGeffXee++l+/XkeWshISGcVSotSZiZAQAAAKVhMAMAAABKy6Ol3p0HwIyePn3KWW7YVKJE\nCc7x8fE6zxk1ahRnOfUqz3OR09oyW+OZIaBLbpIWFBTEeefOnZzr16/PWZaDVZ0Cz24rVqzgLH/G\nRESurq6c5WaDcmO2/fv3c75//z7nhg0bcpYrmzw8PDLZYpDCw8N1/i3f4+SqJ0n+KZeroRwdHTnL\n99ZOnTpxlu/HqsLMDAAAACgNgxkAAABQGgYzAAAAoDTcMwMWd+bMGZ1/G1pWuGTJEs6p7wMAdXz+\n+eec5W7bfn5+nOVBeWA6ea9a27ZtdT4nd4qV2yJMmzaNs9yh9/Hjx5zlLsEFCxY0T2MhXXKpvby3\nLPV75ytyF+bg4GC9H89pMDMDAAAASsNgBgAAAJSGMhNYXOoDIXft2sVZLiX89NNPOZcvXz7rGwaZ\nIg8rbN68OWd5kJ0sLYWFhWVPwwAgx8HMDAAAACgNgxkAAABQWq44aBLUIg/0/Prrry3YEjCV3OVZ\nrkiSh73KVWm9evXKnoYBQI6GmRkAAABQGgYzAAAAoDSsZgKATJGrlr744gvOS5cu5SwPLvTy8sqe\nhgFAroGZGQAAAFAaBjMAAACgNKxmAoBMuXz5MmdHR0fOR48e5ezu7p6dTQKAXAYzMwAAAKA0DGYA\nAABAaVjNBAAAAErDzAwAAAAoDYMZAAAAUBoGMwAAAKA0DGYAAABAaRjMAAAAgNIwmAEAAAClYTAD\nAAAASsNgBgAAAJSGwQwAAAAoDYMZAAAAUBoGMwAAAKA0DGYAAABAaRjMAAAAgNIwmAEAAAClYTAD\nAAAASsNgBgAAAJSGwQwAAAAoDYMZAAAAUBoGMwAAAKA0DGYAAABAaRjMAAAAgNIwmAEAAAClYTAD\nAAAASsNgBgAAAJSGwQwAAAAoDYMZAAAAUBoGMwAAAKA0DGYAAABAaRjMAAAAgNIwmAEAAAClYTAD\nAAAASsNgBgAAAJT2/wCfuuarW2GzbQAAAABJRU5ErkJggg==\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 procedure 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 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 how its most important layers work: 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 over 99.3% in the recognition of handwritten digits. \n","\n","Now, you can try and tune the network further and join the contest! \n","\n","What's your highest accuracy? ? 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","We will also learn about other kinds of deep neural networks for 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://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\nHTVqlOQTJ06kuhwTJkxI9b5ZhTrZlqnRGGoXhnp5OvGl6tatW6dz6chc6rpippbvy8bL+qUrdU2l\nJ0+eGN1m6tSpks+ePStZPcdGjx6dbmVS10VTu88/++wzydu2bZPcvXt3yba2tulWjpTglRkiIiLS\nNYDKok8AACAASURBVDZmiIiISNfYmCEiIiJdy9b3zKgLSpoaWt2gQQOT+1+7di3Z91CHuKn3cyxa\ntMjscmYlN2/elFyvXj3JkZGRGf7ev/32m9Hnd+zYkepjDh8+XHL+/PlTfZysws3NTfLhw4cl//vv\nv5LVYabqUO6ffvrJ4Fju7u6St2/fLlldHI8yxhtv/O//c03d+2TqeUoZdUi7g4OD5OjoaMnnzp0z\nuq86G7D6W5SeTN0zs3XrVsnq/TOdOnXKkHIkh1dmiIiISNfYmCEiIiJds9E4vu4169evl+zt7Z2m\nY7Vs2VLyhg0bJKtdXNnJzJkzJY8dO9aCJUkffn5+kpctW2bwGi/DJ+/hw4eSHz16ZPBahw4dJKvD\nuSdPnixZvbTu6OiYEUXMltRFQtWhw6rEC4POmzdPstpNReaLi4uTPHDgQMlql/z7778v2cnJKXMK\n9l9ffPGFZPU8LFasmGR1yo3MxL84IiIi0jU2ZoiIiEjX2M2UDHO7CtRLrtOnT5ecXbuTXjl06JDB\n465du0q+c+dOZhcnQ12/ft3gcYkSJSxUkqwnNDRUcvv27SWroyvUWaTZ5ZQ25nQzJaYu8lq+fPl0\nLxNZntrNNGXKFMlqN1NmjEw1hldmiIiISNfYmCEiIiJdy9aT5pmSeFSFObLrJHjJadKkicHjrDzC\nR51ECgCGDBlioZJkPXXq1JH8+++/S65bt65k9ftfsmSJ5IoVK2Zw6bKe+vXrSza3m0kdnbh58+Z0\nLxNRUnhlhoiIiHSNjRkiIiLSNXYzGbFw4UKztlMnxCN65513LF2EbEFdm+n//u//JKtrOfXo0UOy\nOqKOo5zMo3abx8fHS068fpZq//79ktVJDmvUqGF0e3Ugrdq1r67zo05aamdnl1yxKRvjlRkiIiLS\nNTZmiIiISNfYzWTEwYMHzdpuwYIFGVwSshajR4+WrHZVNGvWTHLt2rUztUwEFClSRLLaBaJ2T3z4\n4YeS165dmzkF07ncuXNL/uGHHyTHxMRITjx6T11na8aMGZJr1aolWV1vS62vcePGSX777bclt23b\nVnKBAgXM/wCU7fDKDBEREekaGzNERESka1yb6b/Uu+nz5ctndJvES95zorzkHT161OBxgwYNLFQS\nwNXVVXKvXr0k9+/fX3KePHmM7psrVy7JWXniP3OpXQoqU+dOZuvZs6fkdevWSVa7Nrp165apZcoK\nXrx4IVn9jgFg06ZNRvdJSEiQrHZfRUdHG91e7b5P/JtLmS8sLEyyOmLzjTf+dy0kMDBQcqdOnTKn\nYInwygwRERHpGhszREREpGsczfRf5kyUx26llFPXzgEM19VR13I5cOBAqt+jVKlSkocOHWpyu759\n+0rmyIi0CQ4Oljxq1CjJaldeelK7NKpVq2Z0m3///VfyrVu3JKuXw8+cOSOZ3UwplyPH//7JWLFi\nhcFrw4cPlzxmzBjJalezqa4ldV+125csIzw8XHL37t0lq+dSx44dJbdv3z5zCpYEXpkhIiIiXWNj\nhoiIiHSN3UzJ4N30aZN45I+Hh4fkX375RbI6GZc6SVfhwoUld+7cOdn3UC+DUsZRu2jUHBQUZHT7\nkJAQyadOnZKsdi8m/ltRB1qqE1mqz6v7mHpeHU1D6SfxOlf169eXfPjwYck7duyQfOHCBcn37t2T\nrP7Oql1ZlL4S306hTmio1tn48eMlq7/N5cuXl6xOJGpra5uu5UwN/vITERGRrrExQ0RERLrGxgwR\nERHpGmcA/q8jR45IVmepvXLliuRy5cplapmIsrpDhw5JLlu2rMFrS5cuTdGx1GHX6vBtdTFKdeZn\na5mtmCgjqdMUlCxZ0uA1c2Yzf++99yRPnjxZsrUtrMsrM0RERKRrbMwQERGRrrGbiYiIKBvYuXOn\nweMNGzZIVrugXFxcJKtds9Y8bJ5XZoiIiEjX2JghIiIiXWM3ExEREekar8wQERGRrrExQ0RERLrG\nxgwRERHpGhszVuqTTz6Br6+vpYtBZpo9ezY8PT0tXQwyE+tLf/ibqC+ZfY5ZpDFz/PhxHD161BJv\nbeDx48eYMGECGjZsCDc3N3h6emLp0qXQ4z3Rnp6eqFq1Ktzc3Az+u3r1apqPbS31lfizubm5oWrV\nqrr9R+nevXsYNmwYXF1dERoamm7HtZb6AoA///wT3bt3h7u7O+rWrYsJEyYgOjra0sVKsfj4eMye\nPRteXl54++230b59+9fm7EgLa6mzrPSbCADXr1+Hr68vXF1dERkZmW7HtZb6ev78OWbPno3mzZvD\n3d0dbdu2xYEDByxdrFRLy2+iRRozq1atwrFjxyzx1gZGjhyJq1evYuPGjfjzzz8xadIkzJs3D4GB\ngZYuWqpMnjwZp0+fNvgv8Xo3qWEt9ZX4s508eRLVq1dHx44dLV20FDtx4gTatWuXIesDWUt9RURE\noG/fvmjTpg2OHTuGn376CeHh4di2bZuli5ZiixYtwrZt2/Dtt98iNDQUQ4YMQUBAQLo1Qq2lzrLS\nb+LevXvRrVs3FC9ePN2PbS319fXXX2P79u2YO3cuwsLCMHToUIwYMQIXL160dNFSLK2/iZnemOne\nvTtCQkKwbNkyeHh4AAB8fX3x5Zdfol+/fqhRowbi4+Ph6+uLTz75xGDfHj164NNPP5XHx44dg7e3\nNzw8PFC7dm2MHDkSd+/eldfHjRuH3r17myzL+++/jylTpsDJyQm2trZo1KgRypcvj/PnzxvdfsuW\nLXB3d8fBgwfh5eUFNzc3tG3bFhcuXJBtXF1dsXLlSnh5eaFPnz4AgPv378Pf3x9NmjSBu7s7OnTo\ngIMHD8o+sbGxmDhxIurVq4c6depg2rRpr/2fkJeXF+bPn5/Mt5v+rKm+Elu9ejWePXuGgQMHGn09\nNDQUrq6uOHjwINq1awc3Nzc0b97c4P+oPD09MW/ePHTq1AleXl4AXv7fzpQpU+Dp6Ynq1aujVatW\nBv8AJyQkYM6cOWjcuDFq1aoFf39/xMTEGLy3n58fAgICTJb933//xYIFC9C/f3+zP685rKm+fvjh\nB3h4eMDX1xcODg4oU6YM1qxZgx49ehjd3lrrS9M0rF27Fn379kXVqlVhb2+P9957D02aNMHq1atN\nfn5zWVOdZaXfxAcPHmDt2rX44IMPTG6TGtZUXz///DN69OiBKlWqwN7eHi1atECzZs2wfv16o9tb\n6zkGpMNvomYBTZs21b799lt57OPjo9WtW1cLDg7W4uPj5bnRo0cb7Ne9e3fN399f0zRNu3z5sla9\nenVt/fr1WmxsrHbnzh3Nz89P8/X1TVWZoqOjte3bt2s1atTQfv/9d6PbbN68WXNxcdGGDh2q/fPP\nP9qjR4+0YcOGaU2aNJFyu7i4aG3atNEuX76sJSQkaJqmad7e3trAgQO1u3fvajExMdqaNWu0KlWq\naBEREZqmadr8+fO1unXraufOndNiYmK01atXazVq1NB8fHzMLn/Tpk21/v37a61atdJq1qypdejQ\nQdu7d2+qvgtjx7a2+rpz545Wo0YN7cSJEya3OXbsmObi4qL5+PhoERER2tOnT7WpU6dq7u7u2uPH\nj+WzNWnSRAsLC5P6GjNmjNa5c2ctIiJCi4uL00JCQrQqVarI38XWrVu1atWqaUeOHNFiY2O14OBg\nrWbNmlrTpk1T/Dn+/vtvzcXFRTt27FgqvgXjrKW+WrRooU2bNk0bOXKkVqtWLSlXbGys0e2ttb5e\n1VHiv7XFixdrDRo0MPv7SIq11JlK77+Jrxw+fFhzcXHRrl+/nqrvwRhrqa969eppCxcuNHhu8uTJ\nWseOHY1ub63nmCq1v4lWcwOwk5MTvLy88MYb5hUpMDAQlStXRvfu3WFnZ4fChQtj7NixCA0NRURE\nRIre28/PD+7u7pgxYwZmzZqV7NLmAwYMQMGCBZE3b1589NFHuHXrFk6fPi2vN2zYEBUqVICNjQ0u\nXLiA48ePw9/fH4UKFYK9vT169uwJV1dXbN68GQAQFBSEtm3bonLlyrC3t4evry9KlCiRos/g4uKC\ncuXKYc2aNTh48CCaN2+OIUOG4M8//0zRccxlyfoCgPnz56NOnTqoWbNmstv6+PjA2dkZjo6OGDx4\nMGJiYnDo0CF53c3NDR4eHrCxscGDBw+wc+dODB8+HM7OzsiRIweaN28OT09PudQeFBSExo0bo169\nerCzs4OXl5f8H5q1skR9RUVFYcuWLXj//fdx5MgRTJkyBWvXrsXSpUuT3M/a6uvevXsA8Nrl7/z5\n88trGYG/iWn7TcxslqivFi1aYP369Th16hTi4uJw9OhRhISE4P79+0nuZ23nWHqwmlWjnJ2dU7R9\neHg4Tp48CTc3N4PnbW1tERkZiVKlSpl9rOXLlyM6Ohr79++Hv78/Jk2ahNatW5vcvnz58pJfLc51\n69YtuLu7AzD8LOHh4QCAdu3aGRxD0zRUqFABAHDz5k2DRb4AoEKFCvj333/N/gyLFy82ePzRRx8h\nJCQEgYGBqFGjhtnHMZcl6+vOnTvYtGkT1q5da9b2an3ly5cPb775Jm7duiXPqZ/l2rVrSEhIwKBB\ng2BjYyPPa5om9Xvr1i3Ur1/f4D0qVKiAy5cvm/0ZMpsl6kvTNDRp0kRu0K5fvz66dOmCrVu3YvDg\nwSb301N9qe+Z3vibmLbfxMxmifoaO3YsbG1tMWTIEMTExKBhw4bo2rVrsjen6+kcM5fVNGbs7OyS\n3SYhIUFyrly58O6772LRokXp8v4ODg5o3bo1/vjjDyxbtizJEzc+Pv6159TWuL29veScOXMCAH77\n7TeTNzbFxcW91ppXP2tqlSpVCrdv307zcYyxZH0FBQWhaNGiZjfSEteXpmkG37f6WV7VV2BgIKpU\nqWL0eLGxsRlSXxnJEvVVpEgRvPXWWwbPmfM3aW31VahQIQAv78FQ3b9/HwULFjT7OCnF30SeY8lx\ndHTE+PHjMX78eHlu+vTpyd70bG3nWHqwmm6mxHLmzInnz5/L44SEBIOhdWXKlMHFixcNvrCYmBiz\n//G+e/cuPD09ERYWZvB8bGwsbG1tk9z32rVrkl9dDnRycjK6bZkyZQAA586dM3j++vXrckNbsWLF\ncOPGDYPXL126lPyHUI41adIkPHr0yOD58PBwlC5d2uzjpEVG15cqODg4RcOx1fp68OABHj16ZLK+\nnJ2dYWtr+1p93bx5Ey9evACQ9vqyBplRX66urgZdDcDL8yW57gJrq6+SJUuicOHCOHnypMHzJ06c\nyNRL6fxN5DmW2IkTJ14bIn7o0CHUqVMnyf2s7RxLDxZpzDg4OCAiIgKPHz822qIHgHLlyuHEiRO4\nceMGYmJiMG/ePPnigJd3lN+9exdz5szBkydP8PDhQ0yaNAm9e/c2q0VYuHBhlChRAt988w2uXbuG\n+Ph4HDt2DLt27ULLli2T3HfJkiX4999/8fjxYyxevBjOzs6oVq2a0W3Lly+Phg0bYvr06fI+e/fu\nRZs2bXDixAkAL+8e37FjBy5duoSYmBisXLnS4I725BQqVAi//vorJk2ahPv37+PZs2eYP38+rl69\nCh8fH7OPY4o11NcrL168wJkzZ0z+H4IxP/74IyIjIxEdHY0FCxbA0dERjRo1Mrpt7ty50blzZyxY\nsADnzp1DfHw8wsLC0KFDBwQFBQF4WV+HDh3C8ePHERsbi6CgIJw6dcrs8mQ0a6mvvn374uTJk1i5\nciViYmIQFhaGjRs3omfPnknuZ231ZWNjg969e2P58uU4c+YMYmNjsWvXLhw5ckRG56SVNdRZVvpN\nzGjWUF8A8Mcff2D06NH466+/EBsbizlz5uDevXvo1q1bkvtZ2zmWHizSzeTt7Y2ZM2eiWbNm8mUk\n1q9fP1y8eBFt2rRB3rx50b9/f4PWZsmSJbFkyRLMnj0bK1euhKOjI2rVqoVly5bJ5a5x48bh+vXr\nWLVqldH3+O677zB79mx069YN0dHRcHJywscffww/P78ky9+uXTt4e3vj5s2bKFeuHBYvXpxk3/mM\nGTPw1VdfoUuXLoiLi0Pp0qUxffp0+b+6kSNH4vHjxzK7Zdu2bfH+++9L3zLwchhi27ZtMWTIkNeO\n7+DggBUrVmDGjBlo1aoVoqOjUaVKFaxZswblypVL8rOYw1rqC3h5aT8uLi5Fl/e7du2KwYMHIzw8\nHE5OTliyZAly585tcvuAgADkyJED/fv3x9OnT1G8eHEMGzZM+vh9fHwQFRWFESNG4NmzZ2jatCl6\n9eqFrVu3yjH8/PxQtGhRTJs2zeh7+Pn5ISwsTP5PtF+/frCxsUHt2rWxfPlysz+bMdZSXx4eHvju\nu+8wd+5czJw5EwULFsSQIUOSbWBbY331798fMTEx+Pjjj3Hv3j2ULVsWc+fORfXq1ZP8LOayljrL\nKr+Jr16/efOmnGMtW7aEjY0NPvjgA0yZMiXJz5Mca6mvvn374vbt2/Dx8cHz58/h5uaGVatWIX/+\n/EmW3xrPsbT+Jtpomk6ndrSALVu2ICAgAGfPnkWOHFZzuxGZEBoail69eiEkJCTTutso9Vhf+sPf\nRH3JyueY1d4zQ0RERGQONmaIiIhI19jNRERERLrGKzNERESka2zMEBERka6xMUNERES6xsYMERER\n6RobM0RERKRrbMwQERGRrrExQ0RERLrGxgwRERHpGhszREREpGtcGYyILObmzZuSX62Y/EpwcLDk\n9FqdmoiyJl6ZISIiIl1jY4aIiIh0jd1MRJSpbt++LXnx4sWS79y5Y7DdBx98IHnFihWS33333Ywr\nHBHpEq/MEBERka6xMUNERES6xm4mIspUy5Ytkzx16lTJNjY2Btup3U6JXyMiUvHKDBEREekaGzNE\nRESka2zMEBERka5l2Xtmnjx5Irlnz56Sd+zYIfmNN4y35dasWSO5SJEiJt+jTp06kvPkyZOqchJl\nVZqmSY6OjpYcEhJi1v7qOVW8ePH0KxgZFRUVJTkyMlKyOjPzvn37JNeuXdtg/7x582Zg6ciY8PBw\nyYMHDza6Ta9evST36NEjw8tkKbwyQ0RERLrGxgwRERHpmo2mXgvOQi5evCi5WrVqkhMSEiSb6mYy\nRd0XABo2bCh5yJAhkps3by7Z0dFRsr29fYrej8yzdOlSyf/3f/8nOSYmxmA7deFC9ZK6egps2rRJ\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