{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "5W1bW-n6PVzG" }, "source": [ "# Convolutional neural networks" ] }, { "cell_type": "markdown", "metadata": { "id": "7dEbCloFPVzH" }, "source": [ "The goal of this exercise is to train a convolutional neural network on MNIST and better understand what is happening during training.\n", "\n", "## Training a CNN on MNIST" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "UJfB78VpPVzH", "outputId": "f9035eca-50a9-4f19-e20b-5819269ffac8" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2.7.0\n" ] } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "import tensorflow as tf\n", "\n", "print(tf.__version__)" ] }, { "cell_type": "markdown", "metadata": { "id": "7RKuEkJMPVzI" }, "source": [ "**Tip:** CNNs are much slower to train on CPU than the DNN of the last exercise. It is feasible to do this exercise on a normal computer, but if you have a Google account, we suggest to use `colab` to run this notebook on a GPU **for free** (training time should be divided by a factor 5 or so). \n", "\n", "Go then in the menu, \"Runtime\" and \"Change Runtime type\". You can then change the \"Hardware accelerator\" to GPU. Do not choose TPU, it will be as slow as CPU for the small networks we are using." ] }, { "cell_type": "markdown", "metadata": { "id": "EK_CcQ5APVzI" }, "source": [ "We import and normalize the MNIST data like last time, except we do not reshape the images: they stay with the shape (28, 28, 1):" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "1LpWnnptPVzI", "outputId": "8831d580-4cfc-4b32-8c80-9de59b9b314f" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Training data: (60000, 28, 28) (60000,)\n", "Test data: (10000, 28, 28) (10000,)\n" ] } ], "source": [ "# Fetch the MNIST data\n", "(X_train, t_train), (X_test, t_test) = tf.keras.datasets.mnist.load_data()\n", "print(\"Training data:\", X_train.shape, t_train.shape)\n", "print(\"Test data:\", X_test.shape, t_test.shape)\n", "\n", "# Normalize the values\n", "X_train = X_train.reshape(-1, 28, 28, 1).astype('float32') / 255.\n", "X_test = X_test.reshape(-1, 28, 28, 1).astype('float32') / 255.\n", "\n", "# Mean removal\n", "X_mean = np.mean(X_train, axis=0)\n", "X_train -= X_mean\n", "X_test -= X_mean\n", "\n", "# One-hot encoding\n", "T_train = tf.keras.utils.to_categorical(t_train, 10)\n", "T_test = tf.keras.utils.to_categorical(t_test, 10)" ] }, { "cell_type": "markdown", "metadata": { "id": "wa2wXHs2PVzI" }, "source": [ "We can now define the CNN defined in the first image:\n", "\n", "* a convolutional layer with 16 3x3 filters, using valid padding and ReLU transfer functions,\n", "* a max-pooling layer over 2x2 regions,\n", "* a fully-connected layer with 100 ReLU neurons,\n", "* a softmax layer with 10 neurons.\n", "\n", "The CNN will be trained on MNIST using SGD with momentum.\n", "\n", "The following code defines this basic network in keras:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "HiuI8RyrPVzJ", "outputId": "3a5e4f29-4d90-41e1-aa15-51d0a40f3686" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2023-01-13 13:22:48.271866: I tensorflow/core/common_runtime/pluggable_device/pluggable_device_factory.cc:305] Could not identify NUMA node of platform GPU ID 0, defaulting to 0. Your kernel may not have been built with NUMA support.\n", "2023-01-13 13:22:48.272182: I tensorflow/core/common_runtime/pluggable_device/pluggable_device_factory.cc:271] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 0 MB memory) -> physical PluggableDevice (device: 0, name: METAL, pci bus id: )\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Metal device set to: Apple M1 Pro\n", "\n", "systemMemory: 16.00 GB\n", "maxCacheSize: 5.33 GB\n", "\n", "Model: \"sequential\"\n", "_________________________________________________________________\n", " Layer (type) Output Shape Param # \n", "=================================================================\n", " conv2d (Conv2D) (None, 26, 26, 16) 160 \n", " \n", " activation (Activation) (None, 26, 26, 16) 0 \n", " \n", " max_pooling2d (MaxPooling2D (None, 13, 13, 16) 0 \n", " ) \n", " \n", " flatten (Flatten) (None, 2704) 0 \n", " \n", " dense (Dense) (None, 100) 270500 \n", " \n", " activation_1 (Activation) (None, 100) 0 \n", " \n", " dense_1 (Dense) (None, 10) 1010 \n", " \n", " activation_2 (Activation) (None, 10) 0 \n", " \n", "=================================================================\n", "Total params: 271,670\n", "Trainable params: 271,670\n", "Non-trainable params: 0\n", "_________________________________________________________________\n", "None\n" ] } ], "source": [ "# Delete all previous models to free memory\n", "tf.keras.backend.clear_session()\n", "\n", "# Sequential model\n", "model = tf.keras.models.Sequential()\n", "\n", "# Input layer representing the (28, 28) image\n", "model.add(tf.keras.layers.Input(shape=(28, 28, 1)))\n", "\n", "# Convolutional layer with 16 feature maps using 3x3 filters\n", "model.add(tf.keras.layers.Conv2D(16, (3, 3), padding='valid'))\n", "model.add(tf.keras.layers.Activation('relu')) \n", "\n", "# Max-pooling layerover 2x2 regions\n", "model.add(tf.keras.layers.MaxPooling2D(pool_size=(2, 2)))\n", "\n", "# Flatten the feature maps into a vector\n", "model.add(tf.keras.layers.Flatten())\n", "\n", "# Fully-connected layer\n", "model.add(tf.keras.layers.Dense(units=100))\n", "model.add(tf.keras.layers.Activation('relu')) \n", "\n", "# Softmax output layer over 10 classes\n", "model.add(tf.keras.layers.Dense(units=10))\n", "model.add(tf.keras.layers.Activation('softmax')) \n", "\n", "# Learning rule\n", "optimizer = tf.keras.optimizers.SGD(learning_rate=0.1, momentum=0.9, nesterov=True)\n", "\n", "# Loss function\n", "model.compile(\n", " loss='categorical_crossentropy', # loss function\n", " optimizer=optimizer, # learning rule\n", " metrics=['accuracy'] # show accuracy\n", ")\n", "\n", "print(model.summary())" ] }, { "cell_type": "markdown", "metadata": { "id": "P-6yKh-oPVzJ" }, "source": [ "Note the use of `Flatten()` to transform the 13x13x16 tensor representing the max-pooling layer into a vector of 2704 elements.\n", "\n", "Note also the use of `padding='valid'` and its effect on the size of the tensor corresponding to the convolutional layer. Change it to `padding='same'` and conclude on its effect.\n", "\n", "**Q:** Which layer has the most parameters? Why? Compare with the fully-connected MLPs you obtained during exercise 5." ] }, { "cell_type": "markdown", "metadata": { "id": "KfyIUao0PVzJ" }, "source": [ "**A:** conv layers have relatively few parameters (10 per filter). The main bottleneck is when going from convolutions to fully-connected." ] }, { "cell_type": "markdown", "metadata": { "id": "uJfDdJkVPVzJ" }, "source": [ "Let's now train this network on MNIST for 10 epochs, using minibatches of 64 images:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "YcU-WPo9PVzJ", "outputId": "369fd514-db33-4d31-d257-51d37e42a857" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2023-01-13 13:22:54.571613: W tensorflow/core/platform/profile_utils/cpu_utils.cc:128] Failed to get CPU frequency: 0 Hz\n", "2023-01-13 13:22:54.746875: I tensorflow/core/grappler/optimizers/custom_graph_optimizer_registry.cc:112] Plugin optimizer for device_type GPU is enabled.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/10\n", "844/844 [==============================] - ETA: 0s - loss: 0.1484 - accuracy: 0.9542" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2023-01-13 13:23:05.518595: I tensorflow/core/grappler/optimizers/custom_graph_optimizer_registry.cc:112] Plugin optimizer for device_type GPU is enabled.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "844/844 [==============================] - 12s 11ms/step - loss: 0.1484 - accuracy: 0.9542 - val_loss: 0.0638 - val_accuracy: 0.9810\n", "Epoch 2/10\n", "844/844 [==============================] - 9s 10ms/step - loss: 0.0491 - accuracy: 0.9853 - val_loss: 0.0557 - val_accuracy: 0.9843\n", "Epoch 3/10\n", "844/844 [==============================] - 8s 10ms/step - loss: 0.0287 - accuracy: 0.9909 - val_loss: 0.0535 - val_accuracy: 0.9862\n", "Epoch 4/10\n", "844/844 [==============================] - 8s 10ms/step - loss: 0.0203 - accuracy: 0.9932 - val_loss: 0.0672 - val_accuracy: 0.9837\n", "Epoch 5/10\n", "844/844 [==============================] - 8s 10ms/step - loss: 0.0146 - accuracy: 0.9951 - val_loss: 0.0565 - val_accuracy: 0.9887\n", "Epoch 6/10\n", "844/844 [==============================] - 8s 10ms/step - loss: 0.0120 - accuracy: 0.9959 - val_loss: 0.0860 - val_accuracy: 0.9845\n", "Epoch 7/10\n", "844/844 [==============================] - 8s 10ms/step - loss: 0.0113 - accuracy: 0.9964 - val_loss: 0.0673 - val_accuracy: 0.9882\n", "Epoch 8/10\n", "844/844 [==============================] - 9s 10ms/step - loss: 0.0053 - accuracy: 0.9983 - val_loss: 0.0575 - val_accuracy: 0.9895\n", "Epoch 9/10\n", "844/844 [==============================] - 8s 10ms/step - loss: 0.0067 - accuracy: 0.9978 - val_loss: 0.0577 - val_accuracy: 0.9895\n", "Epoch 10/10\n", "844/844 [==============================] - 8s 10ms/step - loss: 0.0054 - accuracy: 0.9984 - val_loss: 0.0755 - val_accuracy: 0.9877\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# History tracks the evolution of the metrics during learning\n", "history = tf.keras.callbacks.History()\n", "\n", "# Training procedure\n", "model.fit(\n", " X_train, T_train, # training data\n", " batch_size=64, # batch size\n", " epochs=10, # Maximum number of epochs\n", " validation_split=0.1, # Perceptage of training data used for validation\n", " callbacks=[history] # Track the metrics at the end of each epoch\n", ")" ] }, { "cell_type": "markdown", "metadata": { "id": "O-fPEh7LPVzK" }, "source": [ "As in the previous exercise, the next cells compute the test loss and accuracy and display the evolution of the training and validation accuracies:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "RnynqmFSPVzK", "outputId": "13a07860-516c-41f9-ac6b-cb9d1baac936" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Test loss: 0.08646804094314575\n", "Test accuracy: 0.9837000370025635\n" ] } ], "source": [ "score = model.evaluate(X_test, T_test, verbose=0)\n", "print('Test loss:', score[0])\n", "print('Test accuracy:', score[1])" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 391 }, "id": "1CSNyOosPVzK", "outputId": "40096207-7e0c-4d9a-9ece-4cb208d950a2" }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA34AAAFzCAYAAABhKNvjAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABr4UlEQVR4nO3dd3iU1dbG4d8i9KIgIiAdpYiUQRG7YgcbiliwYm/Yu+fY9fgd27EX7NhQQRQVxd4bRYYiXVGidBRQasj+/liJhBggbeadmTz3dc2VZOrKMOSdZ/bea1sIAREREREREclclaIuQERERERERBJLwU9ERERERCTDKfiJiIiIiIhkOAU/ERERERGRDKfgJyIiIiIikuEU/ERERERERDJc5agLKE9bbrllaNmyZdRliIhIgo0ZM2ZhCKFB1HWUlpk9BRwKzA8hdCzicgPuAw4GlgP9Qwhj8y7rmXdZFvBECOH/NvV4Oj6KiFQcGzpGZlTwa9myJaNHj466DBERSTAz+znqGsroGeBBYNAGLu8FtMk77Qw8AuxsZlnAQ8ABQDYwysyGhxB+2NiD6fgoIlJxbOgYqameIiIiSRZC+AxYvJGr9AYGBfcNUNfMGgPdgRkhhB9DCKuBwXnXFRER2SgFPxERkdTTBJhd4OfsvPM2dL6IiMhGKfiJiIikHivivLCR8/95B2ZnmdloMxu9YMGCci1ORETST0at8RMRidKaNWvIzs5m5cqVUZeSMapXr07Tpk2pUqVK1KUkWzbQrMDPTYHfgKobOP8fQggDgYEA3bp1+0c41Ou1/FXg16uIpAEFPxGRcpKdnU2dOnVo2bIl3pRRyiKEwKJFi8jOzqZVq1ZRl5Nsw4EBZjYYb+6yJIQwx8wWAG3MrBXwK3AccHxpHkCv1/JVwV+vIpIGFPxERMrJypUr9Sa6HJkZ9evXJxOnKZrZS0APYEszywZuAKoAhBAeBUbgWznMwLdzODXvshwzGwCMxLdzeCqEMKk0Nej1Wr4y+fUqIplBwU9EpBzpTXT5ytTnM4TQbxOXB+D8DVw2Ag+GZZapz29U9HyKSCpTcxcRkQyxaNEiYrEYsViMRo0a0aRJk79/Xr169UZvO3r0aC688MJNPsZuu+1WXuVKBafXq4hIcmnET0QkQ9SvX59x48YBcOONN1K7dm0uv/zyvy/PycmhcuWi/+x369aNbt26bfIxvvrqq3KpVUSvVxGR5NKIn4hIBuvfvz+XXnop++yzD1dddRXfffcdu+22G127dmW33XZj6tSpAHzyyScceuihgL8JP+200+jRowetW7fm/vvv//v+ateu/ff1e/ToQd++fWnfvj0nnHACPjsRRowYQfv27dljjz248MIL/75fkU3R61VEJHE04icikggXXwx5oxnlJhaDe+8t8c2mTZvGBx98QFZWFkuXLuWzzz6jcuXKfPDBB1x77bUMHTr0H7eZMmUKH3/8McuWLaNdu3ace+65/2hR//333zNp0iS23nprdt99d7788ku6devG2WefzWeffUarVq3o12+jS9kkVej1qteriGQ8Bb98IcBXX0GtWn6wEhHJEEcffTRZWVkALFmyhFNOOYXp06djZqxZs6bI2xxyyCFUq1aNatWqsdVWWzFv3jyaNm263nW6d+/+93mxWIxZs2ZRu3ZtWrdu/Xc7+379+jFw4MAE/naSafR6FZEKZe1amDcPfv0V5syBww9P2EMp+OUzg2OPhX32geeei7oaEUl3pRjpSJRatWr9/f11113HPvvsw7Bhw5g1axY9evQo8jbVqlX7+/usrCxycnKKdZ386XOSZvR6FZHyNGUKfPklbL45bLUVNGjgX+vVg0oVaKXZihUe6LKz/Wv+qeDPc+Z4+Mv3119Qs2ZCylHwKygWK/+pLiIiKWTJkiU0adIEgGeeeabc7799+/b8+OOPzJo1i5YtW/Lyyy+X+2NIxaHXq0iaCAEmToQhQ/z0ww9FXy8rC7bccl0Q3NTXunV9cCbVhACLF/8zxBX+/vff/3nbOnWgaVNo0gT222/d902a+PdVqyasbAW/grp0gXffhZUroXr1qKsRESl3V155Jaeccgr33HMP++67b7nff40aNXj44Yfp2bMnW265Jd27dy/3x5CKQ69XkRQWAowdC0OHetibPt1H8/bcEx54AA48EFatgvnzYcGCor9+/71//eOPoh+jcmUPgcUNipttVvaguGYNzJ274UCXf1q5cv3bmUHDhh7gWrXy56FgoMv/vk6dstVXBpZJ0xy6desWRo8eXfo7ePVVOOYYGD0adtyx/AoTkQph8uTJbLfddlGXEbk///yT2rVrE0Lg/PPPp02bNlxyySWlvr+inlczGxNC2HQ/fwGKPj7q9eqS8XoVyRi5ufDdd+vC3qxZPoq3zz7Qty8ccYSHn5JavRoWLtxwQCx83tKlRd9P1aqbDooNGsDy5RsepZs3z0NtQdWqrQtuhYNc/veNG0OhplJR2dAxUiN+BeU3dYnHFfxERErp8ccf59lnn2X16tV07dqVs88+O+qSRDZIr1eRTVi71hsgDh3qp+xsDzj77w/XXQe9e0P9+mV7jKpVYeut/VQcq1ZtOCQW/Dp9un/9888N31e9eutCXJcuRYe7+vVTc8ppCSn4FbTNNt7VU+v8RERK7ZJLLinTiIlIMun1KlKEnBz47DMf1Rs2zKc+VqsGBx0E//kPHHaYr7+LSrVqHswKde/doOXLPQDmh8KaNdeFugQ1UklFCn4FVarkSV/BT0REREQqkjVr4KOPPOy9/rpPvaxRAw45BI46yr9GuD6tTGrWhBYt/FSBKfgVFov5dg65uRWr3ayIiIiIVCyrVsH773vYGz7cu1DWru0jekcdBT17+mw4yQgKfoV16QIPP+yLVVu3jroaEREREZHys3w5jBzpYe/NN2HZMt9vr3dvb9BywAHqbp+hFPwKy2/wMm6cgp+IiIiIpL8//4QRIzzsvf22h7/69b2b/VFH+X5yCdw/TlKD5jIW1rGjT/GMx6OuRESkRHr06MHIkSPXO+/ee+/lvPPO2+D181v8H3zwwfxRxD5KN954I3fddddGH/f111/nhwKb9V5//fV88MEHJaxeKhq9XkUSbMkSeOEFOPJI38Lg2GPh00/h5JPhgw+8YcsTT0CvXgp9FYSCX2E1a0K7dmrwIiJpp1+/fgwePHi98wYPHky/fv02edsRI0ZQt5Qd2gq/kb755pvZf//9S3VfUnHo9SqSAIsXw9NPw6GH+r51J57o++6deaaHvt9+g0ce8RG+ypr4V9Eo+BUlFlPwE5G007dvX9566y1WrVoFwKxZs/jtt9948cUX6datG9tvvz033HBDkbdt2bIlCxcuBOC2226jXbt27L///kydOvXv6zz++OPstNNOdOnShaOOOorly5fz1VdfMXz4cK644gpisRgzZ86kf//+DBkyBIAPP/yQrl270qlTJ0477bS/a2vZsiU33HADO+ywA506dWLKlCmJfGokBen1KlJO5s+HgQN9q4WGDeG002DiRBgwwPffmz0b7r8f9trLN1uXCktRvyixGLz0kn9qssUWUVcjImno4ovL//OjWAzuvXfDl9evX5/u3bvz7rvv0rt3bwYPHsyxxx7LNddcwxZbbMHatWvZb7/9GD9+PJ07dy7yPsaMGcPgwYP5/vvvycnJYYcddmDHHXcEoE+fPpx55pkA/Pvf/+bJJ5/kggsu4PDDD+fQQw+lb9++693XypUr6d+/Px9++CFt27bl5JNP5pFHHuHiiy8GYMstt2Ts2LE8/PDD3HXXXTzxxBNlfYqklPR61etVUlBOjoe6efPWP82du/73kyd7N/pttoHLLvMGLTvumBEbjkv5SuiIn5n1NLOpZjbDzK4u4vL2Zva1ma0ys8uLuDzLzL43s7cSWec/dOniX7XOT0TSTMHpc/nT5l555RV22GEHunbtyqRJk9ab5lbY559/zpFHHknNmjXZbLPNOPzww/++bOLEiey555506tSJF154gUmTJm20lqlTp9KqVSvatm0LwCmnnMJnn3329+V9+vQBYMcdd2TWrFml/ZUljen1KhXOmjXw668wdiy88w488wz8979wySVw/PE+BbNjR1+TV6WKbzC+ww6+Dq9/f7jqKnjsMfjmG2/Q0qYNXHutf3IzfTr83/9Bt24KfVKkhI34mVkW8BBwAJANjDKz4SGEgn/BFwMXAkds4G4uAiYDmyWqziIV7Oy5zz5JfWgRyQwbG+lIpCOOOIJLL72UsWPHsmLFCurVq8ddd93FqFGjqFevHv3792flypUbvQ/bwBuG/v378/rrr9OlSxeeeeYZPvnkk43eTwhho5dXq1YNgKysLHJycjZ6XUksvV71epUyWL160yNz+adFi4q+j1q1oFEjn6rZti3suad/n39ewVPt2sn9/SRjJHKqZ3dgRgjhRwAzGwz0Bv4OfiGE+cB8Mzuk8I3NrClwCHAbcGkC6/yn/P9oGvETkTRTu3ZtevTowWmnnUa/fv1YunQptWrVYvPNN2fevHm888479OjRY4O332uvvejfvz9XX301OTk5vPnmm5x99tkALFu2jMaNG7NmzRpeeOEFmjRpAkCdOnVYtmzZP+6rffv2zJo1ixkzZrDtttvy3HPPsffeeyfk95b0pNerpLQ1a3x93KxZ8PPPMGfOP4PcvHm+NKgotWuvC27t28Pee68Lb4UDnTZJlyRIZPBrAswu8HM2sHMJbn8vcCVQpxxrKj41eBGRNNWvXz/69OnD4MGDad++PV27dmX77bendevW7L777hu97Q477MCxxx5LLBajRYsW7Lnnnn9fdsstt7DzzjvTokULOnXq9Peb5+OOO44zzzyT+++//+8mGQDVq1fn6aef5uijjyYnJ4eddtqJc845JzG/tKQtvV4lMjk5kJ3twS7/9NNP677Pzva1cwXVqbMuuHXo4DPDNhTmatZM+q8ksjG2qakNpb5js6OBg0IIZ+T9fBLQPYRwQRHXvRH4M4RwV97PhwIHhxDOM7MewOUhhEM38DhnAWcBNG/efMeff/65fH6Ba66Bu+/2DS+1t4mIFMPkyZPZbrvtoi4j4xT1vJrZmBBCt4hKSjvdunUL+Xvg5dPrNTH0vKaQtWt9+4KCYa5guJs926+Tz8zX1LVsCa1a+deCp8aNoUaNpP8aIiW1oWNkIkf8soFmBX5uCvxWzNvuDhxuZgcD1YHNzOz5EMKJha8YQhgIDAQ/sJWt5AJiMR/i/+GHdWv+RERERCQ15Ob69MvCI3X5P//yi4/qFbT11h7idtvtn+GueXN92C8ZLZHBbxTQxsxaAb8CxwHHF+eGIYRrgGsACoz4/SP0JVR+Z89x4xT8RERERJItBG+QUtQ0zPx1d6tXr3+bhg090HXvDsccs364a94cqldP8i8hkjoSFvxCCDlmNgAYCWQBT4UQJpnZOXmXP2pmjYDReNfOXDO7GOgQQliaqLqKrU0bH87XOj8RERGRxFqyBN54wzccLxjsCnd1bdDAQ1zXrnDkketPy2zeXOvqRDYioRu4hxBGACMKnfdoge/n4lNAN3YfnwCfJKC8jcvKgs6d1dlTREokhLDB9vJScolahy5Or9fypddrCf35JwwfDq+84nvarV4N9epB69a+l91hh60brWvVClq0UPdLkTJIaPBLe7EYvPyyTzXQgVFENqF69eosWrSI+vXr6810OQghsGjRIqpralZC6PVavvR6Lably+Htt/391dtv+4je1lvDeefBscfCzjvrPZdIgij4bUwsBo895ouDW7SIuhoRSXFNmzYlOzubBQsWRF1KxqhevTpNm250YoiUkl6v5U+v1w1YuRLefdfD3ptvwl9/+Vq800/3sLf77lCpUtRVimQ8Bb+NyW/qMm6cgp+IbFKVKlVo1apV1GWIFIter5JQq1fD++972HvjDVi6FOrXhxNO8LC3996+rEZEkkbBb2M6dfLpBuPGQe/eUVcjIiIikrpycuCjjzzsDRsGv/8OdetC377eYXPffaFKlairFKmwFPw2plYt7+6pBi8iIiIi/7R2LXz2mYe9oUNh4UKoUweOOMJH9g44QHvjiaQIBb9NicVg1KioqxARERFJDbm58OWXHvaGDIF58/zD8sMO87DXs6f2yxNJQQp+mxKLeZvhP/7w6QoiIiIiFU0I8O23HvZefRV+/dXD3SGHeNg75BDtoSeS4hT8NiW/wcv48bDXXpGWIiIiIpI0IcDYsR72XnnFN1SvWtVH9O64w0f46tSJukoRKSYFv00p2NlTwU9EREQyWQgwYYKHvZdfhpkzoXJlOPBAuPlmb3a3+eZRVykipaDgtymNGkGDBh78RERERDLRDz+sG9mbMsW3Wth3X7jmGjjySNhii6grFJEyUvDbFDMf9VNnTxEREckk06evG9mbONHf8+y9N1x0ERx1lH/wLSIZQ8GvOGIxuO8+WLNG+8+IiIhI+po3DwYNgpdegu+/9/N23x3uv9/322vcONr6RCRhFPyKIxaD1at96kOnTlFXIyIiIlJ8IcDHH8Njj/nG6mvWwM47wz33wNFHQ9OmUVcoIkmg4FccBRu8KPiJiIhIOli0CJ55BgYOhGnToF49GDAAzjoL2rePujoRSbJKUReQFtq29b1q1OBFREREUlkI8MUXcOKJ0KQJXH65r9UbNMj33rvnHoU+kQpKI37FUbkydOyo4CciIiKp6Y8/4Lnn4NFHvUPnZpvBmWfC2Wf7exgRqfAU/IorFvN58SF41ysRERGRKIUA333na/cGD4YVK2CnneDJJ+HYY6FWragrFJEUoqmexRWL+Vz5X3+NuhIRERGpyJYt85G9rl1hl118772TToIxYzwInnaaQp+I/ING/IqrYIMXdb8SERGRZBs71kf3XngB/voLunSBRx6B44/3qZ0iIhuh4FdcnTv713Hj4NBDIy1FREREKoi//vJpnI89BqNGQY0acNxxvnave3ctPxGRYlPwK646dWDbbdXgRURERBJvwgQPe889B0uXwvbb+ybrJ50EdetGXZ2IpCEFv5Lo0kXBT0RERBJjxQoYMsTX7331FVSrBn37wjnnwO67a3RPRMpEwa8kYjEYOtQXVdepE3U1IiIikgmmTPHRvWefhd9/9/2D774bTjkF6tePujoRyRAKfiWR3+Bl/Hj/5E1ERESkNFat8m2iHn0UPv0UqlSBI4/00b0ePTS6JyLlTsGvJAp29lTwExERkZKaORMGDoSnnoKFC6FVK7j9djj1VGjYMOrqRCSDKfiVRJMmPuVC6/xERESkuNasgeHDfTrn++9DVhYcfrh35jzgAKikbZVFJPEU/ErCzEf9FPxERERkU37+GR5/HJ58EubOhWbN4Oab4fTTYeuto65ORCoYBb+S6tIFHnoIcnKgsp4+ERERKSQEuPVWuOEG//ngg33tXq9ePtonIhIBzS0oqVjMF2RPmxZ1JSIiIpJqQoDrroPrr4d+/WDWLHjrLTj0UIU+EYmUgl9JFWzwIiIiIpIvBLj6arjtNjjzTN98vXnzqKsSEQEU/EqufXuoWlXBT0RESs3MeprZVDObYWZXF3F5PTMbZmbjzew7M+tY4LKLzGyimU0ys4uTWrhsWAhw+eVwxx1w7rm+TYOatohICtFfpJKqUgU6dlTwExGRUjGzLOAhoBfQAehnZh0KXe1aYFwIoTNwMnBf3m07AmcC3YEuwKFm1iZZtcsGhAAXXwz33AMXXui9ABT6RCTF6K9SaeR39gwh6kpERCT9dAdmhBB+DCGsBgYDvQtdpwPwIUAIYQrQ0swaAtsB34QQlocQcoBPgSOTV7r8Q24uDBgA998Pl14K996rzddFJCUlNPgVYypLezP72sxWmdnlBc5vZmYfm9nkvKksFyWyzhLr0gUWLIA5c6KuRERE0k8TYHaBn7PzzisoDvQBMLPuQAugKTAR2MvM6ptZTeBgoFnCK5ai5eb6tM6HH4Yrr4S77lLoE5GUlbDgV8ypLIuBC4G7Cp2fA1wWQtgO2AU4v4jbRie/wUs8HmkZIiKSlopKBoWnkPwfUM/MxgEXAN8DOSGEycB/gfeBd/GAmFPkg5idZWajzWz0ggULyqt2ybd2rTdwGTgQrr0W/u//FPpEJKUlcsRvk1NZQgjzQwijgDWFzp8TQhib9/0yYDL//DQ0Ol26+Fet8xMRkZLLZv1RuqbAbwWvEEJYGkI4NYQQw9f4NQB+yrvsyRDCDiGEvfAPUKcX9SAhhIEhhG4hhG4NGjRIwK9Rga1dC6edBk895Xv13XqrQp+IpLxE7kBe1FSWnUt6J2bWEugKfLuBy88CzgJonqyWyZtvDq1aKfiJiEhpjALamFkr4FfgOOD4glcws7rA8rwPTs8APgshLM27bKsQwnwza45PB901mcVXeDk5cMop8OKLcPPNvmefiACwZo2/Pf7iCxg/3j8jSUXbbw99+kCbCtYaK5HBrzhTWTZ+B2a1gaHAxfkHvH/cYQgDgYEA3bp1S163lfwGLyIiIiUQQsgxswHASCALeCqEMMnMzsm7/FG8icsgM1sL/ACcXuAuhppZfXy2zPkhhN+T+xtUYGvWwIknwiuvwO23+559IhXY0qXw9dce9L78Er79FpYv98saN4bq1aOtryhr1/oWm1df7Y36+/TxU+fOmT9wn8jgt8mpLBtjZlXw0PdCCOG1cq6t7GIxeP11+PNPqF076mpERCSNhBBGACMKnfdoge+/Bor8LDqEsGdiq5MirVkD/frB0KFw552+Z59IBTN79rqQ98UXMGGC9ziqVAm6doUzzoA99oDdd4ett4662g375Rd/G//aaz5T++aboXXrdSFw550zc0eWRAa/TU5l2RAzM+BJYHII4Z7ElVgGXbr4dg4TJsCummUjIiKSsVavhmOP9XeK//uf79knkuHWroWJE9eFvC+/9MAEPuaxyy5w/fUe8nbeGerUibbekmje3LfcvPBCmD8fhg/3EHjffd6ct3FjOPJID4F77eXbeGeChAW/4kxlMbNGwGhgMyDXzC7GO4B2Bk4CJuR1NAO4Nu8T0tRQsLOngp+IiEhmWrUK+vaFt96CBx7wPftEMtDy5fDdd+tC3ldf+VRO8NG7PfaAyy7zr507Q+VEDh8l0VZb+UjlGWfAkiXw9tseAp95xndq2WILOOwwD4EHHAA1akRdcekl9J+sGFNZ5uJTQAv7gqLXCKaO5s2hbl2t8xMREclUK1f6u7133oFHHoFzzom6oowWgp8ycYpdKpo3b/3RvLFjvXcR+Nq3fv3WTdts2TLz17+B9288/ng/LV8O773nIfCNN+DZZ6FWLTj4YP+zcPDBsNlmUVdcMhmS1SNgpgYvIiIimWrFCujdGz74AB5/3IcDJGGWLvWgMWkSDBrk0+uk/IQAU6euvz5vxgy/rFo16N4drrjCg96uu0K9etHWmwpq1oQjjvDT6tXwySceAl9/HV59FapW9RHAPn3g8MNhyy2jrbc4FPzKIhaDxx7zSdBZWVFXIyIiIuVh+XKf2/Xxx75XX//+UVeU0bKz4ZBDPPQ1aQL77OO7ZPz735kznTDZVq2CMWPWH9FbtMgvq1/fA95ZZ/nXHXbw8CcbVrUqHHignx56CL75xkPga6/51NBKlWDvvT0EHnEENC1qPmMK0H+nsojF/BPB6dOhffuoqxEREZGy+vNPOPRQ+PxzH3o68cSoK8po48f7lLmlS2HECB9tuuACuOkm+OgjeOEFaNZs0/dT0f3+u6/Jyw95333n4Q98r7rDDvOQt8ce0LZtxZi2mShZWT79dffdvRHMuHHrQuAFF/hp553XdQjddtuoK15Hs6jLoksX/xqPR1uHiIiIlN2yZdCrl797fv55hb4Ee/99DyLgOfvAA70z5DPP+NP//ff+VmvYsEjLTFkrV/o2BB07egOSQw/1ILJqFZx/vgeRuXNh2jR4+mk4/XRo106hrzyZ+TYWt9ziI9aTJ8N//uOTAa+6ykN3585w443+IUdI3o7jRVLwK4sOHby/q9b5iYiIpLclS+Cgg3w36pde8gVnkjBPP+0jfa1a+bS5/M/S851wgge/bbbxUZPzzvNJVuI++8yfsxtugEaNfC+6jz/2l/G338Ldd/t2BA0bRl1pxdK+PVxzDYwaBT//DPfe6+slb77Z/73atIErr/TXfG5u8utT8CuLqlU9/Cn4iYiIpK8//vDhplGj4JVX4Oijo64oY4XgYeW003wt3+efb3g91Lbb+rTFK67wpqo77eT7ylVkS5Z4c9m99/aGIyNHev+hf/0LevTwhiSSGpo3h4sugk8/hTlzYOBAD3733utTmps1891hPvpoXTfVRFPwKyt19hQREUlfixfD/vv78NLQoT68JAmxerX3ybn5Zjj1VG+Ksal2+FWrwh13eMBZuNDD36OPRj9lLgrDhsF223mT2csu8xB84IFRVyXF0bAhnHmm7wyzYIGvXd11Vx/53m8/v/zUU+HNN/3/SaIo+JVVLOYTqOfOjboSERERKYlFi/xd14QJ/q768MOjrihjLVniyycHDfLg9+STvlqmuA480Fsq7L03nHsu9O3rmb0i+O03OOoo/0xiq618Kuddd/mecpJ+8vcKHDLEQ+CwYd7Vdtgw/zdevjxxj63gV1axmH9VgxcREZH0sWAB7Luvd2N44w1/5yUJMXu2N3H57DNv3HLddaVrMNKwoXf+vOsuHxmJxXyqaKbKzfXRvQ4dfHT09tt9NnK3blFXJuUlf6/AQYNg/nxfYly3buIeT8GvrNTZU0REJL3Mm+cLzKZNg7fegp49o64oY40bB7vsAr/8Au++C6ecUrb7q1TJpzl+9ZXvPdejh48grl1bHtWmjmnT/HOJs87ygDthAlx9dclGSSW9VK2a+FCv4FdW9er56k2t8xMREUl9c+Z4WvjpJx8+2n//qCvKWO++C3vu6fueffmlz6otL926wdix3v3zhhs8JM2eXX73H5U1a3xkr3Nnf2v5+OPe/KNNm6grk0yg4Fce1OBFREQk9f36q4e+2bO9y8I++0RdUcZ6/HHfV27bbb11fceO5f8Yder4FLlBgzwEpvuef/nTOK+91p+7yZPhjDN8lFOkPOilVB5iMZg6NbGrMUVERKT0Zs/2ziC//eYtIvfaK+qKMlIIvrXAWWfBAQf4ur6tt07sY550Unrv+ffXXz59dZddvHPpsGHe+KNx46grk0yj4FceYjFfgVvRN5cRERFJRT//7KFvwQJ4/33YffeoK8pIq1Z5CPvPf7x1/fDhPiqXDPl7/l1+ue/51707TJqUnMcui5EjfTT0nns8LP/wgzf7EEkEBb/ykN/ZU9M9RUREUstPP3no+/133+l6l12irigj/f6798h54QUPfo89lvxGJFWrwp13+trC+fN92uRjj6Xmnn+LFsHJJ/tzVq2aj4w+8oi3+hdJFAW/8tCype9Aqs6eIiIiqWPmTA99S5fChx/67t9S7mbN8kHUL7/04HfNNaXbrqG8HHQQjB/vs3nPOQeOPtqDaSoIAV580Tdif+kl+Pe/fdxgzz2jrkwqAgW/8mDmK4o14iciIpIapk3z0Ld8ubdF3GGHpD78woXegj8VR5vK05gxPog6Zw68955vTJ0KGjb0/j133unbNHbpAl98EW1NP//s20WecAK0auUNaW65BapXj7YuqTgU/MpLLOYjfrm5UVciIiJSsU2Z4t07V6+Gjz9etyQjwX79FR56yLctaNTIW/J36wbPPefr3zLN22/7qFr16j7a16NH1BWtr1IlX/P31Vc+DXTvvaPZ82/tWrj/fth+e5/See+9XlOnTsmtQ0TBr7zEYt6WaebMqCsRERGpuCZN8gSSm+uhL8HvrmfM8FGlXXeFpk1hwABvHHrVVfDAA95d8uSTfVXIzTf72rNM8OijcPjhPmXxm2+gQ4eoK9qwnXbyrp/HH79uz7/s7OQ89sSJPg32oot8OufEif59VlZyHl+kIAW/8qIGLyIiItGaMMH35qtUCT75xIdYylkIvn7sxht9+mCbNnDllb7x9m23eVfGyZP9+wEDPIeOHAldu3roaN4cTjstfdsC5OZ6qD33XDj4YH+aGzWKuqpNq1PHR14L7vn3+uuJe7xVq+D66/3ffeZMX/s4YoR/ACASFQW/8tKhA1SurOAnIiIShXjcQ1/Vqp5G2rcvt7vOzfVRrSuv9KDXpYuP3m2+Ofzvf944dPRo33h7u+3Wv60ZHHigv+mfPBlOPx1eftk/L95nH19/luyph6W1cqWPmt1xhwe/YcOgdu2oqyqZk07y4NeqFRx5JJx/fvnv+ffFF/7ve8st0K+f/7sff3y0DW9EQMGv/FSv7geZdP0IT0REJF2NHevz92rWhE8/hbZty3yXOTneE2bAAGjWzKdy/u9/vl/cY495M5PPPoOLLy7+KE779r4GMDvbw9PMmb5nW9u2cN993nw0VS1e7Buyv/wy/Pe//ntUrhx1VaXTpo2vsbvsMnj4Ydh5Zx+pLaslS3zz+D339DD57rs+wrjllmW/b5HyoOBXnmIxjfiJiIgk06hR3k2lTh0PfdtsU+q7WrkS3nrLp2I2bOh3+9RTHgyee87X5737rm+03bBh6UuuVw+uuAJ+/BFefRUaN/YA2bSpf021dgE//gi77QbffQeDB/vIZ7qPXlWtCnfd5Z0/583zJjwDB5a+C+sbb/jM4sceg0su8bV8Bx1UvjWLlJWCX3mKxbyl14IFUVciIiJSMRx9NNSt66GvVasS33zZMnjlFTjuOGjQAA47DIYOhV69/OuCBfDaa3DiiR7YylPlytC3r08N/O47b5by0EM+InXEET5jNertIEaN8tHO+fPhgw/g2GOjrae89ezpk7X22APOPhuOOaZke/7NnesvwSOOgC22gK+/hnvuSb8psFIxKPiVp/wGL5ruKSIiknhz5/rmaBddBC1aFPtmixbB00970GrQwMPMxx/7Oqx33vGw9/zz0KcP1KqVwPoL2Gknf8yff4Z//cu3R9hnH39r8fTTPhqZbG+84Vsg1KrlgSZTNxlv1MhHcu+4wxu+xGL+/G9MCPDkk76m8803vZnPmDHQvXsyKhYpHQW/8tSli3/VdE8REZHEy/+gtRj79BXcY69hw3WdNc8919fq/fabT9Pr2dOnAUZl6629Kcgvv8ATT3hjmdNO826gN9zgWTcZHnzQm5907Oihr1275DxuVCpV8um3X30FVar4/oS33FJ0450ZM/x1dMYZvldjPO6NfapUSX7dIiWh4FeettzSJ+gr+ImIiCRefvDL/+C1kKL22Pv1V9+OYPRomDXLG7bsuWfq7atWo4Z3AB0/Hj78EHbZxYNI8+a+L+CYMYl53Nxc3/T8ggt82uvHH5dtPWO62Wkn7xXUr59vx7Dffuv2/FuzxhvbdOrk1xk40J+fTA/FkjnStB9TCuvSRVM9RUREkmHcOG+5mbf4LgRvqvHaa34aP96vtsMOcOutPnWz8HYLqc7MG5buuy9Mn+6bwj/9tDeb2WMPbwbTu3f5dNjM32x+yBAPfv/7X+oF4mTYbDOfdnvggd6ls0sXuOkmn9o5bpyPhD74oI/OiqQTjfiVt1jMN2yJYjK+iIhIRRKPk9s5xrff+ihe27Y+9e6mm/zN+z33+B57Y8b4url0C32FtWkD99/vI1D33ONf+/b1LSbuvhv++KP0971wIey/vze0uece316iIoa+gk4+2Uf2Wrb0IDxvnj8/r72m0CfpScGvvMViPiF80qSoKxEREclYYcVKhk9pQ/uvn2KXXTystG4Njz7q6/U+/9zb6hd3j710svnm/rvNmOEhpGVLn56ZP5112rSS3d+MGb5dw5gx3uH0kkvSf7uG8tK2ra/7e/ll3+uvT5+oKxIpPQW/8pa/wFzr/ERERBJi8mToue8qeue+TuUaVXn2Wd9uYORIb8nfqFHUFSZHVpZPO/zkEx+Z6tsXHn/c15wdeqhvv7Cp7SC+/trXQC5e7BvW9+2blNLTSrVqvs1D3bpRVyJSNgp+5a11a9+8RcFPRESkXP3xh69p69QJvo1X514uIv7ePE4+ufz32Es3XbvCM8/4dhA33OD77x1wgD9Xjz/u6/cKe+01Xzu4+eYeAHfbLelli0gSJTT4mVlPM5tqZjPM7OoiLm9vZl+b2Sozu7wkt01ZlSr5KmAFPxERkXKxdq13UMxf43b66TD9hJu4qNaTVGm/TdTlpZRGjeDGG307iGee8S0GzjrLe+D861/e1RTg3nt9dC8W89DXpk10NYtIciQs+JlZFvAQ0AvoAPQzsw6FrrYYuBC4qxS3TV35nT1zc6OuREREJK198YW32D/7bGjf3rdheOwxaDDtSx/OqqTJS0WpVg1OOcWngH76qe9Ld/vtvh5wt918Hd+RR/r0zgYNoq5WRJIhkX8tuwMzQgg/hhBWA4OB3gWvEEKYH0IYBawp6W1TWiwGy5b5BkEiIiJSYtnZcPzxvsfeggXw0ku+0foOO+AL1+LxYm3cXtGZeeh77TVv4nLBBTBlClx6qTdyqVEj6gpFJFkSGfyaALML/Jydd16ibxs9NXgREREplRUrfM+9du08rFx3nQeV444r0Gnyl19gyZINbtwuRWvd2rufLl7s2z9U9O0aRCqaRAa/ohoBb6K3VMlva2ZnmdloMxu9YMGCYheXUB07+tQTBT8REZFiCcGDXocOHvZ69fLAd/PNUKtWoSvnH18V/EREii2RwS8baFbg56bAb+V92xDCwBBCtxBCtwapMkm9Rg1fiKDgJyIiskkTJvjm4Ucd5Y2xP/wQhgzZyB588bgP/3XqlMwyRUTSWiKD3yigjZm1MrOqwHHA8CTcNjXEYn5gEhERkSItXuxrzmIx+P57eOAB/7rvvpu4YTwO22zjKVFERIolYcEvhJADDABGApOBV0IIk8zsHDM7B8DMGplZNnAp8G8zyzazzTZ020TVmhBduvgahMWLo65EREQkpaxdC488Am3bwsMPe8fO6dNhwACoXLkYd6DGLiIiJVacP6+lFkIYAYwodN6jBb6fi0/jLNZt00r+ASkeh332ibQUERGRVPHpp3DhhTB+PPToAffdB507l+AOli2DmTOhf/8EVSgikpm0+U2i5C841zo/ERERfv4ZjjnGw94ff8Crr/oeciUKfeCJEdTYRUSkhBI64lehNWwIjRsr+ImISIW2fDnccQf897/ej+Wmm+CKK8qwf1z++nkFPxGRElHwS6RYTMFPREQqpBB8VO/yy2H2bB/tu/NOaN68jHccj0PdutCs2SavKiIi62iqZyLFYjB5MqxeHXUlIiIiSROP+5TOY4+FLbaATz6Bl18uh9CXf+exWIHd3EVEpDgU/BKpSxdYswZ++CHqSkRERBJu4UI491zYYQeYNMk7d44ZA3vvXU4PsHatb/qnaZ4iIiWm4JdI+Z09Nd1TREQyWE6O78HXpg08/rhvyzB9OpxzDmRlleMDzZjhiwYV/ERESkxr/BJp222hZk0FPxERyVgffggXXeQjfPvt59szbL99gh5MjV1EREpNI36JlJXlfaoV/EREJMP89BP06QP77++DcK+9Bu+/n8DQBx78srKgQ4cEPoiISGZS8Eu0/M6eIURdiYiISJn99Rf8+9+w3XYwciTceqsvZT/yyCT0W4nH/YGrV0/wA4mIZB4Fv0SLxWDJEvjll6grERERKbUQ4MUXoV07uO02OOoomDoV/vWvJOaweFzTPEVESknBL9HyD1Ca7ikiImlq/HjYc0844QRo2BC++AJeeAGaNk1iEYsWQXa2gp+ISCkp+CVap04+90XBT0RE0tTChTBtmnfs/O472H33CIpQYxcRkTJRV89Eq1UL2rZV8BMRkbS1774wa5Y3qo6Mgp+ISJloxC8Z8hu8iIiIpKlIQx948GvUyOeaiohIiSn4JUMs5h+V/vFHxIWIiEgqMLOeZjbVzGaY2dVFXF7PzIaZ2Xgz+87MOha47BIzm2RmE83sJTOrGC0ux43TaJ+ISBko+CVDLOZfx4+PtAwREYmemWUBDwG9gA5APzMrvDHdtcC4EEJn4GTgvrzbNgEuBLqFEDoCWcBxyao9MqtX+54RCn4iIqWm4JcM6uwpIiLrdAdmhBB+DCGsBgYDvQtdpwPwIUAIYQrQ0szy5zhWBmqYWWWgJvBbcsqO0JQpsGaNgp+ISBko+CVDo0aw1VYKfiIiAtAEmF3g5+y88wqKA30AzKw70AJoGkL4FbgL+AWYAywJIbyX8Iqjlt/YJX8GjYiIlJiCXzKYqcGLiIjksyLOC4V+/j+gnpmNAy4AvgdyzKwePjrYCtgaqGVmJxb5IGZnmdloMxu9YMGCcis+EvE4VKvmXbJFRKRUFPySJRaDSZN8nYKIiFRk2UCzAj83pdB0zRDC0hDCqSGEGL7GrwHwE7A/8FMIYUEIYQ3wGrBbUQ8SQhgYQugWQujWoEGDBPwaSTRuHHTsCJW1C5WISGkp+CVLLOahb8qUqCsREZFojQLamFkrM6uKN2cZXvAKZlY37zKAM4DPQghL8Smeu5hZTTMzYD9gchJrT74QfMRP6/tERMpEwS9Z8tcl5K9TEBGRCimEkAMMAEbioe2VEMIkMzvHzM7Ju9p2wCQzm4J3/7wo77bfAkOAscAE/Dg+MMm/QnLNmQMLFyr4iYiUkeZMJEubNlC9uk9XOemkqKsR+Ye1a6FSJV+SKiLFY2aHAiNCCLkluV0IYQQwotB5jxb4/mugzQZuewNwQ8mrTVNq7CIiUi404pcslStDp05q8CIpKTcXDjkEunWDdO8BIZJkxwHTzewOM9su6mIyUn7w69w52jpERNKcgl8y5Xf2DIWbt4lE66mnYORIf3nuv7/PqhKRTQshnAh0BWYCT5vZ13ndNOtEXFrmGDcOWrSAunWjrkREJK0p+CVTLAaLF0N2dtSViPxt3jy44grYe2945x2YNs3D36JFUVcmkh7ymq4MxTdibwwcCYw1swsiLSxTqLGLiEi5UPBLpvz1CZruKSnkkktg+XJ47DE48EB44w1vPqvwJ7JpZnaYmQ0DPgKqAN1DCL2ALsDlkRaXCVas8E+jFPxERMpMwS+ZOnXyzhnq7Ckp4t134aWX4NproV07Py8//E2eDAcc4IPUIrJBRwP/CyF0DiHcGUKYDxBCWA6cFm1pGWDiRF+ErMYuIiJlpuCXTHXqwDbbaMRPUsLy5XDeedC+PVx99fqXHXQQvP46TJrk4e/33yMpUSQd3AB8l/+DmdUws5YAIYQPoyoqY+R/UKoRPxGRMlPwS7b8Bi8iEbvpJvjpJ5/iWa3aPy/v2ROGDfMP3BX+RDboVaDgVg5r886T8jBuHNSuDa1aRV2JiEjaU/BLtlgMZs6EpUujrkQqsHgc7r4bTj8d9tprw9c7+GB47TUYP96ngP7xR9JKFEkXlUMIq/N/yPu+aoT1ZJZ43LdxqKS3KyIiZaW/pMmWv05h/PhIy5CKa+1aOOssqF8f7rhj09c/5BAPf/G4h78lSxJfo0gaWWBmh+f/YGa9AW2IUh5C8GOlpnmKiJQLBb9kyw9+avAiEXnkEfjuO/jf/2CLLYp3m0MPhaFDfdaVwp/Ies4BrjWzX8xsNnAVcHbENWWGWbN8dowau4iIlIuEBj8z62lmU81shpldXcTlZmb3510+3sx2KHDZJWY2ycwmmtlLZlY9kbUmzdZbw5Zbap2fROLXX72D54EHQr9+JbvtYYfBq6/C2LHe/EWzlUUghDAzhLAL0AHoEELYLYQwI+q6MoIau4iIlKtiBT8zq2VmlfK+b2tmh5tZlU3cJgt4COiFHxD7mVmHQlfrBbTJO50FPJJ32ybAhUC3EEJHIAs4rti/VSoz84OYgp9E4IILICfHR/3MSn773r3hlVdgzBhv/qLwJwJmdghwHnCJmV1vZtdHXVNGGDfO/1B17Bh1JSIiGaG4I36fAdXzAtmHwKnAM5u4TXdgRgjhx7zF7oOB3oWu0xsYFNw3QF0za5x3WWWghplVBmoCvxWz1tQXi8GECf4OXCRJ3njDu3TecAO0bl36+znySHj5ZRg1Cnr1gmXLyq9GkXRjZo8CxwIXAIbv69ci0qIyRTwObdpArVpRVyIikhGKG/wsbzPaPsADIYQj8VG8jWkCzC7wc3beeZu8TgjhV+Au4BdgDrAkhPBekYWZnWVmo81s9IIFC4r560QsFoNVq2Dq1KgrkQpi2TIYMMCb4116adnvr08fGDwYvv1W4U8qvN1CCCcDv4cQbgJ2BZpFXFNmiMc1zVNEpBwVO/iZ2a7ACcDbeedV3tRtijgvFOc6ZlYPHw1sBWwN1DKzE4t6kBDCwBBCtxBCtwYNGmyipBSRv1Bd0z0lSf79b1/fN3AgVNnoJO3iO+ooeOkl+OYb3/bhzz/L535F0szKvK/LzWxrYA1+7JKyWLLENxpVYxcRkXJT3OB3MXANMCyEMMnMWgMfb+I22az/qWdT/jldc0PX2R/4KYSwIISwBngN2K2Ytaa+du18x2x19pQkGDUKHngAzjsPdt65fO/76KPhxRfh668V/qTCetPM6gJ3AmOBWcBLURaUEfK3PNKIn4hIudnUqB0AIYRPgU8B8pq8LAwhXLiJm40C2phZK+BXvDnL8YWuMxwYYGaDgZ3xKZ1zzOwXYBczqwmsAPYDRhfzd0p9Var4YnWN+EmC5eT4nn2NG8N//pOYxzjmGN9u6/jjfc+/ESO0JEcqhrzj4YchhD+AoWb2FlA9hKANT8pKHT1FRMpdcbt6vmhmm5lZLeAHYKqZXbGx24QQcoABwEhgMvBK3mjhOWZ2Tt7VRgA/AjOAx/GuaIQQvgWG4J+eTsirc2BJf7mUlt/ZMxSe/SpSfu69119mDzwAm22WuMc59lh4/nn44gvf8++vvxL3WCKpIoSQC9xd4OdVCn3lJB73jUabFG4NICIipVXcqZ4dQghLgSPwsNYcOGlTNwohjAghtA0hbBNCuC3vvEdDCI/mfR9CCOfnXd4phDC6wG1vCCG0DyF0DCGcFEJYVdJfLqXFYrBgAcyZE3UlkqFmzfIOnocf7p04E61fP3juOfjsM9/zb/nyxD+mSAp4z8yOMivNBimyQfG4Hyf1tIqIlJviBr8qefv2HQG8kbfuTkNVZaEGL5JAIfiavkqV4MEHk/fe6fjjYdAg+PRThT+pMC4FXgVWmdlSM1tmZtrhsixycnzLI03zFBEpV8UNfo/hC9ZrAZ+ZWQtAB7ay6NzZvyr4SQK88gq88w7ceis0S3Jj+RNOgGeegY8/9tHGFSuS+/giyRRCqBNCqBRCqBpC2Czv5wROrK4Apk+HlSsV/EREyllxm7vcD9xf4KyfzWyfxJRUQWy+ue+irc6eUs5+/x0uugi6dfO9+6Jw0kk+6ti/P/Tu7ZvH16gRTS2SWl5/HXr0gLp1Iy6knJjZXkWdH0L4LNm1ZAw1dhERSYhiBT8z2xy4Acg/wH0K3AxoEXtZxGIa8ZNyd/XVsHChj/hlZUVXx8kne/g79VQ44ggPf9WrR1ePRO+RR3wK8uWXw513Rl1NuSnY6Kw60B0YA+wbTTkZIB6HypVhu+2irkREJKMUd6rnU8Ay4Ji801Lg6UQVVWF06eJTWrT5mZSTL77wTdovvhi6do26GjjlFHjySXj/fQ9/K1du8iaSoe6+20PfYYfBLbdEXU35CSEcVuB0ANARmBd1XWktHocOHXy/WxERKTfFDX7b5HXZ/DHvdBPQOpGFVQixmA+JTJgQdSWSAVavhrPPhhYt4Kaboq5mnVNPhSeegJEjvbuowl/FEgLcfLOP8h1zDAwdmvEjv9l4+JPSisc1zVNEJAGKNdUTWGFme4QQvgAws93xjdWlLAp29tx11ygrkQxwxx3www/w9tupt4H6aadBbi6ceSYcdRS89po+zK8IQvCpx3fcsW70N8rpx4lgZg+wrst1JSAGaPF2aS1YAL/9puAnIpIAxQ1+5wCD8tb6AfwOnJKYkiqQZs2gXj2t85MymzbNO3gecwwcfHDU1RTtjDM8/J19toe/oUMV/jJZbi5ceCE89BCce65vK1KpuHNM0svoAt/nAC+FEL6Mqpi0p8YuIiIJU9yunnGgi5ltlvfzUjO7GBifwNoyn5mP+qmzp5RBCHDOOT597r77oq5m4846a129ffvCkCEKf5lo7Vof3X36aZ/ieccdGb0P9xBgZQhhLYCZZZlZzRCCdrEsDQU/EZGEKdHnryGEpSGE/P37Lk1APRVPLAbjx/s7JZFSGDTI98z773+hUaOoq9m0s8/27o5vveUjlKtXR12RlKc1a3wvx6efhhtuyPjQB/AhUHCzkhrABxHVkv7icdh6a2jQIOpKREQyTlkm3mT2oTxZunTxHa6nT4+6EklDCxfCZZfB7rv7CEu6OOccnwI4fLjCXyZZudJHcl9+2QPfjTdmfOgDqB5C+Ls1c973NSOsJ72psYuISMKUJfiFTV9FNqlggxeRErrsMli6FB57LP3WT513HjzwgO/vd9xxPlIk6Wv5cjj8cA/zDz4IV1yx6dtkiL/MbIf8H8xsR9T8rHRWrfIOVQp+IiIJsdE1fma2jKIDnrH+1BYpre22gypVPPgdd1zU1Uga+fBDn+b5r3/B9ttHXU3pDBjga/4uvNBf/oMH+38HSS9Ll8Khh8KXX/oUz/79o64oqS4GXjWz3/J+bgwcG105aWzyZMjJUfATEUmQjQa/EEKdZBVSYVWt6u/aNeInJbBihU+X3HZbD37p7IILvAPkxRdDv37w0ksKf+lk8WLo1QvGjoUXX4RjK1jkCSGMMrP2QDv8Q9EpIQSNX5eGGruIiCRUmk0Oy1Dq7CkldNttMGMGPPoo1MiAsfeLLoJ77vEtHk44QdM+08X8+bDPPv651dChFS/0AZjZ+UCtEMLEEMIEoLaZnRd1XWkpHvc/aG3bRl2JiEhGUvBLBbEYzJ3rJ5FNmDTJO3iefDLst1/U1ZSfSy6Bu++GV1+FE0/0GV+Sun79Ffbe2/tSvfWWr++roM4MIfyR/0MI4XcgjVotpZB4HDp2hKysqCsREclIxd3AXRIpf1pLPJ4e/fglMrm5vhfe5pt7SMo0l17qa/4uv9yb1Tz3HFTWX6mUM2uWf+iwYAGMHAl77hl1RZGqZGYWQgjg+/gBVSOuKf2E4EPHffpEXYmISMbSW6pUkB/8xo2Dgw6KtBRJbY8/Dl99Bc88A1tuGXU1iXHZZR5wr7zStwIYNEjhL5VMm+ah788/4YMPoHv3qCuK3EjgFTN7FG+Gdg7wTrQlpaFff/UFo1rfJyKSMHo7lQrq1YMWLdTgRTZqzhy46irYd1+f5pnJrrjCw9/VV68Lf5r9Fb0JE+CAA/zf5pNP9B49z1XAWcC5eHOX7/HOnlISauwiIpJwCn6pIhZT8CtHIcDatZk1UnTxxb5B9qOPVohNsbnqKv93vOYa/30ffzwzGtmkq9GjfUJC9eoe+tq3j7qi1BBCyDWzb4DW+DYOWwBDo60qDeUHv86do61DRCSDqblLqojFfA7V8uVRV5L2fvvNp6I1buwhae3aqCsquxEj4JVX4N//hjZtoq4mea6+2juYvvCCb10xcKA6fkbhyy/9/9Rmm8Hnnyv0AZhZWzO73swmAw8CswFCCPuEEB6Mtro0NG4ctGrlC5hFRCQhFPxSRSzm86cmToy6krT2zjs+U+jbb2GbbeDcc6FrV/joo6grK72//oLzzoMOHXzdW0Vz7bXw6afQsiWcfbZve/nyy/7fRRLvww/hwAO979Rnn0Hr1lFXlDKmAPsBh4UQ9gghPABkwMdMEYnHNc1TRCTBFPxSRcEGL1Jiq1f7urCDD4att/bNpL/+2rcGWLrURyuOPBJmzoy60pK74Qb4+Wd47DGoWkF7Be61F3zxBQwfDtWqwXHHQbdu3lHSeylKIrz9NhxyiIe9zz6DZs2iriilHAXMBT42s8fNbD98jZ+U1F9/+b4gCn4iIgml4JcqWrb0eVQKfiX200/eTv6uu3xk7NtvoV07XxfWty9Mngy33grvv++jZldf7WEwHXz/Pdx7r2/hsMceUVcTLTM47DD/L/Lcc/D779Czpze7+eabqKvLPEOGwBFH+LZqn3wCDRtGXVFqCSEMCyEcC7QHPgEuARqa2SNmdmCkxaWbiRP9E5xYLOpKREQymoJfqjBTg5dSGDLEp3JOnerfP/SQN58oqEYN+Ne/fAnlccf55udt28JTT6X2dMG1az3wbbkl/N//RV1N6sjK8g3ep06FBx6AH36AXXf1kDJpUtTVZYZBg+DYY2HnnX2qZ/36UVeUukIIf4UQXgghHAo0BcYBV0dbVZpRR08RkaRQ8EslsRiMH5/aaSRFrFjh6/eOPtobTXz/PRx11MZvs/XW8OyzPiLYujWcfjrstJNPIUxFDz7onRTvu893/JD1Va0KAwb49N1bb4WPP4ZOneCUU3yDcSmdRx/153CffXwqrXptFF8IYXEI4bEQwr5R15JWxo3zGS8tW0ZdiYhIRlPwK2DhwojXC8VivtYhHReiJdGUKbDLLv4G9YorvMtgq1bFv3337t6l8IUXYP58nyZ67LG+ji5VzJ7tHTx79YJjjom6mtRWu7aP6P74o2/+/sorPqJ70UX+7yvFd889/oHKIYfAW29BrVpRVyQVQjzu2zhUhH1qREQipOCXJzfXA0D37h4IVq+OoIj89Q2a7rlBzz4LO+7oWzaMGAF33AFVqpT8fszg+OM9RF5/vTcNad/ev//rr/KvuyRC8JGs3Fx4+GG9Fyqu+vXhzju9R0T//j7tt3Vr/zdNlzWdUQkBbrnFg3PfvvDaa/+cMi2SELm5PtNF0zxFRBJOwS9Pbq6PECxb5uuHWrb06WMLFiSxiA4dfMdxBb9/+PNPOPlkf0Pfvbt/QNyrV9nvt1YtuOkmXy92xBH+5rddO3j++ehm3A4b5kH0pps086k0mjb1/f4mTfIur7fc4gHwnntg5cqoq0s9IcA113hAPvlkeOmlits9ViLw00/+B16NXUREEk7BL0/lynDOOd4o4p13fNbJddd5+/IzzoAJE5JQRLVqsN12Cn6FjBvno3wvvOBh6IMPfL1eeWre3N/wfvGF71d20kmw226+HjCZliyBCy7w90AXX5zcx8407dr5tM/Ro/31c9ll0KYNPPkk5OREXV1qyP/A67//9b9/Tz/tfwtFkkaNXUREkkbBr5BKlbxF/Lvv+ohB//7w4oseBPff39e9JHQkSJ09/xaCT9fbZRf/QPijj3xUIisrcY+5++7w3Xf+Bvjnn/2xTzoJfv01cY9Z0L/+BXPn+oiV3oCXjx139CYlH37oHxiccYZvUTB0aMXeA3DtWjjzTO+MeumlPq24ko4IkmzjxvkLr2PHqCsREcl4OsxvRIcO3kAkO9vb6U+d6vuItWvnHReXLUvAg8ZivoAtqXNMU8/vv3uXzgEDfPP1ceNg772T89iVKnngnzbNp8DlNwu59VbvJpoo33zjb74HDPBuo1K+8vf7GzbM/4379vVpwx98EHVlybdmjX+g8dRT/mHKXXdpLalEJB73P7A1akRdiYhIxkto8DOznmY21cxmmNk/9jUyd3/e5ePNbIcCl9U1syFmNsXMJpvZromsdWO22AKuusq7Bg4e7PuqXXCBryW67DJfolBu8tc55E9/qYC+/tr35nvzTX9D+uab0KBB8uuoUwf+8x/fAL5nT5/6u912HgTLe6RozRrfs69JEw+YkhhmvpZzwgQf1Z0/Hw44wEfzR42KurrkWLXKt0F56SX/QOummxT6JELxuKZ5iogkScKCn5llAQ8BvYAOQD8z61Doar2ANnmns4BHClx2H/BuCKE90AWYnKhai6tKFW/7//XXfjr4YN9jbdttfXTq88/LIRDkHwAr4HTP3Fzv0rnnnj4i8+WXHqyjnn7WurVPC/z4Y9/T7NhjffRx7Njye4x77vEw8uCDHjglsbKy1o3q3nuvv/fs3t3/H0+O/C9N4ixfDocfDm+84VM8r7oq6oqkQvvjD59Tr8YuIiJJkci31N2BGSGEH0MIq4HBQO9C1+kNDAruG6CumTU2s82AvYAnAUIIq0MIfySw1hLbZRf/xHzWLLjySvjkE9hrL+jWDZ57zj9VL5X69X0osYIFv/nzPUhfdRX06eOhqnv3qKtaX48eXtdjj/k2EN26+Sbwc+eW7X5nzoQbb4Qjj4Tehf+HSEJVq+bNTX780f8N3nvPlxqddhr88kvU1ZWvZcu8E+7773uDmwEDoq5IKrzx4/2rRvxERJIikcGvCTC7wM/ZeecV5zqtgQXA02b2vZk9YWYpuZVw06Zw++2+4fZjj/kasJNP9jb8N99cyg2kK1iDl48+8uP+p5/6msqXX4a6daOuqmhZWT4lc/p0b4gxaJAvT7njjtKF/RB8w+wqVXwERqJRpw7ccIMHwIsu8g6ybdr4v3EmLLf9/Xefzvrll/67nXZa1BWJsO44p+AnIpIUiQx+Ra0aKTwRckPXqQzsADwSQugK/AX8Y40ggJmdZWajzWz0ggjfodWs6YFg0iTvINi1q7+RbN7c32SVaMleLOZDShm+6VhOjjeW2H9/D3rffQdnn50e640239zXH06a5NM+r7oKtt8eXn+9ZNN9X3zRR2D+8x9f3yfRatDAp91OmwYnnOBTubfZxj/ESUgzpySYPx/22cffYw8dCv36RV2RSJ543BfNN24cdSUiIhVCIoNfNtCswM9Ngd+KeZ1sIDuEkL+L2hA8CP5DCGFgCKFbCKFbgyg6gBRiBgceCCNG+Fqh00/3EaxYzLsKDh/ubdQ3KhbzK02alISKo5Gd7c/HLbfAKaf4XmudOkVdVcm1bevNZ0aO9GmDRx7pzUKKs+/j4sVwySWw884+6iepo0UL73g5YYJ/MHHDDR4A77uvDNO4I/Dbb/7BxLRp/rdHU4klpeQ3dkmHT/tERDJAIoPfKKCNmbUys6rAccDwQtcZDpyc191zF2BJCGFOCGEuMNvM2uVdbz/ghwTWmhDt2/s+dNnZPhVwxgx/49WuHdx//0ZGEPIXumfodM+33vJfcexYXw/59NNQKyUn8hbfgQf6e5gHHvDfKxaD886DhQs3fJsrrvDwN3BgYvcmlNLr0AFee823gejYES6+2MP+M88U4wOciM2a5Y2SsrN9X9KDDoq6IpECcnJg4kQ1dhERSSILCdzB2MwOBu4FsoCnQgi3mdk5ACGER83MgAeBnsBy4NQQwui828aAJ4CqwI95l/2+scfr1q1bGD16dIJ+m7LLyfE9xO69F776CjbbzKeBXnCBd478W26uz3085ZSMWvi1ejVcfTX8739+rH/5ZX8TnWkWL/ZGIQ8/vG7t2Pnn+zq+fJ9+6s1irrwS/vvfqCqVkgjB9/y75hoYM8ZD4W23ecOUtWv9lJPzz+8Lf03WZc895x8uvfuujypnGjMbE0LoFnUd6SLljo8//ODz4wcN8k0lRUSk3GzoGJnQ4JdsKXdg24jvvvNpY6+84m/Sevf20YS99sqb9bLHHv7N559HXWq5mDkTjjvOp3QOGAB33gnVq0ddVWL98INP5XzvPR/lvece71y6apXPblq92j/wrlkz6kqlJELwtXL/+pdPoUxFWVnQrJl/0JSpAyrpHvzMrCe+bVEW8EQI4f8KXV4PeArYBlgJnBZCmJg3E+blAldtDVwfQrh3Y4+XcsfHF1/0hbTxOHTuHHU1IiIZZUPHyMpRFCO+VcELL/gU0Ece8W6Wr7/ub9IuvhiO69SNai885aN/UW9kV0Yvv+yNbypV8mlzRx4ZdUXJ0aGDj7a8/bZ3hzzkEN8IvmVLmDrVL1PoSz9m0LevbwT/8ss+pbJyZQ9b+V8Lfr+hr6W9bFPXSfM/FxVCgX1uD8DXtI8ys+EhhIJLGq4FxoUQjjSz9nnX3y+EMBWIFbifX4Fhyay/XMTjPg2iffuoKxERqTAU/CLWpAncequPHrzwgk8D7d8frqxzO+cuq8u5o36h4c4tI66ydFas8BA7cKDvezh4sDfNqEjM4NBDfQ3ggw96d8h33/XOilpzld4qV/YBC5FS+HufWwAzy9/ntmDw6wDcDhBCmGJmLc2sYQhhXoHr7AfMDCH8nKS6y0887p+OVa0adSUiIhWGPhtOETVqwBlneBfB99+Hnbqs4iZupPkezejf3/ffWry4ZFsFROmHH3xUc+BA3+rgs88qXugrqGpVH/WbPt3XOD74YNQViUiEirPPbRzoA2Bm3YEWeOfrgo4DXtrQg6TKdkdFisczdx6yiEiK0ohfijHz9vH7716NabW344GuT/P0kF149lm/vFYt3xuweXMPUvnf5//cpMn6TUSSLQTv0jlgANSurW6ChTVo4KOgIlKhFWef2/8D7jOzccAE4Hsg5+878G7ZhwPXbOhBQggDgYHga/zKVnI5mjcP5s7Vxu0iIkmm4JeqatSg7XZZPNDoP9zy3nA++gh+/hl++WXd6fvvfXPmgsxg6603HA6bN/eGoYnYNmnZMjjnHF+zv+++8Pzz2pdXRKQIm9znNoSwFDgVIK8D9k95p3y9gLGFpn6mh3jcvyr4iYgklYJfKuvSBT7/nLp1oU+foq+yYgXMnr1+IMwPiGPGeFe/1avXv02dOv8cKSz4c5Mmvn6pJMaOhWOPhR9/9E3Zr7lGe9OJiGzA3/vc4s1ZjgOOL3gFM6sLLA8hrAbOAD7LC4P5+rGRaZ4pTcFPRCQSCn6pLBbz4bNFi6B+/SKvUqOG74W3of3wcnN9VLBgMCwYDkeN+ucm45UqefjbWDjcfHO/bgi+1eAVV/g0xk8+8U2jRUSkaCGEHDMbAIxk3T63kwrucwtsBwwys7V405fT829vZjXxjqBnJ7348hCP+0FmA8c1ERFJDAW/VJa/8D0e97mTpVCpEjRq5Kfu3Yu+zvLlPmpYeCrpL7/At9/CkCGwZs36t9lsMw+DVar4aN+hh8Izz+g4LiJSHCGEEcCIQuc9WuD7r4E2G7jtciB9/9qqsYuISCQU/FJZ/jSYMgS/4qhZ0zcYb9eu6Mtzc30tfsGRwvzTnDm+BcWFFyZm3aCIiGSQlSth8mQ4/PCoKxERqXAU/FLZVlt5p5Zx4yIto1Ilb9LSuDHsvHOkpYiISDr74QdYu1br+0REIqB9/FJdLBZ58BMRESkXauwiIhIZBb9UF4v5J6SrVkVdiYiISNnE476+YNtto65ERKTCUfBLdV26QE6Ohz8REZF0Fo9Dp07a70dEJAIKfqkuv/OZpnuKiEg6C8GPZZrmKSISCQW/VLfNNlCr1rp1ESIiIulo9mz44w8FPxGRiCj4pbqsLOjcWSN+IiKS3tTYRUQkUgp+6SC/s2fhXdRFRETSRX7w69w52jpERCooBb900KsXLFkCZ57payRERETSTTzuyxfq1Im6EhGRCknBLx0cdhjcdBM8+yxcfXXU1YiIiJScGruIiESqctQFSDFddx3Mmwd33AENG8Kll0ZdkYiISPH8+SfMnAknnRR1JSIiFZaCX7owg/vvh/nz4bLLYKut4MQTo65KRERk0yZM8KUKGvETEYmMgl86ycqC55+HxYvh1FNhyy2hZ8+oqxIREdm4/MYu+XvTiohI0mmNX7qpVg2GDYNOneCoo+Dbb6OuSEREZOPicahbF5o3j7oSEZEKS8EvHW22GbzzDjRuDIccAlOmRF2RiIjIho0b59s4mEVdiYhIhaXgl64aNoSRI6FyZTjoIMjOjroiERGRf8rN9TV+Wt8nIhIpBb90ts02PvL3++++1u/336OuSEREZH0zZ8Jffyn4iYhETMEv3XXtCm+8AdOn+35/y5dHXZGIiMg6auwiIpISFPwywT77wAsvwFdfwXHHQU5O1BWJiIi4ceO8K/X220ddiYhIhabglyn69oWHHoI334Szz/b9kkRERKIWj0O7dlC9etSViIhUaNrHL5Ocey7MnQs33+zNX/7zn6grEhGRii4ehz32iLoKEZEKT8Ev09x4I8ybB7ff7uHvoouirkhERCqqxYth9mw1dhERSQEKfpnGzKd8LlgAF18MW20F/fpFXZWIiFRE48f7VzV2ERGJnNb4ZaKsLG/2svfecMop8N57UVckIiIV0bhx/lUjfiIikUto8DOznmY21cxmmNnVRVxuZnZ/3uXjzWyHQpdnmdn3ZvZWIuvMSNWr+zYPHTpAnz4walTUFYmISEUTj/vMk0aNoq5ERKTCS1jwM7Ms4CGgF9AB6GdmHQpdrRfQJu90FvBIocsvAiYnqsaMt/nmvsH7VlvBwQfD1KlRVyQiIhVJPK7RPhGRFJHIEb/uwIwQwo8hhNXAYKB3oev0BgYF9w1Q18waA5hZU+AQ4IkE1pj5GjeGkSN97d9BB8Fvv0VdkYiIVARr1sCkSVrfJyKSIhIZ/JoAswv8nJ13XnGvcy9wJZC7sQcxs7PMbLSZjV6wYEGZCs5Ybdr4yN+iRdCzJ/zxR9QViYhIpps6FVav1oifiEiKSGTwsyLOK7yreJHXMbNDgfkhhDGbepAQwsAQQrcQQrcGDRqUps6KYccdYdgwmDIFDj8cVqyIuiIREclkauwiIpJSEhn8soFmBX5uChSeZ7ih6+wOHG5ms/Apovua2fOJK7WC2H9/eP55+OIL3+IhJyfqikREJFPF41C1KrRrF3UlIiJCYoPfKKCNmbUys6rAccDwQtcZDpyc191zF2BJCGFOCOGaEELTEELLvNt9FEI4MYG1VhzHHAP33+8dP889F0LhQVgREZFyEI/D9ttDlSpRVyIiIiRwA/cQQo6ZDQBGAlnAUyGESWZ2Tt7ljwIjgIOBGcBy4NRE1SMFDBgA8+bBrbdCw4b+VUREpDzF43DIIVFXISIieRIW/ABCCCPwcFfwvEcLfB+A8zdxH58AnySgvIrt5pth7ly47TYPfxdcEHVFIiKSKebOhfnztb5PRCSFJDT4SQozg0cegYUL4aKLfK+/Y4+NuioREckEauwiIpJyErnGT1Jd5crw4ouwxx5w0knwwQdRVyQiIpkgHvevCn4iIilDwa+iq1EDhg+H9u3hyCNh9OioKxIRkXQXj0OzZlCvXtSViIhIHgU/gbp14d13oX59OPhgmD496opERCSdxeMQi0VdhYiIFKDgJ27rreG993x7hwMPhDlzoq5IRETS0YoVMHWqpnmKiKQYBT9Zp21bGDECFiyAnj1hyZKoKxIRkXQzaRKsXavgJyKSYhT8ZH077QSvvQaTJ0Pv3rByZdQViYhIOlFjFxGRlKTgJ/904IHw7LPw6adw/PH+ya2IiEhxxONQqxZss03UlYiISAEKflK0fv3g3nth2DA47zxf+yciIrIp8Th07gyV9BZDRCSVaAN32bCLLoJ58+D226FRI7jppqgrEhGRVBaCB79+/aKuREREClHwk4277TYPfzffDA0b+uifiIhIUX7+2RuDaX2fiEjKUfCTjTODxx7zTp8DBkCDBnD00VFXJSIiqUiNXUREUpYm4MumVa4MgwfDbrvBiSfCRx9FXZGIiKSieNw/MOzUKepKRESkEAU/KZ6aNeHNN6FNGzjiCBg7NuqKREQk1cTjsO22ULt21JWIiEghCn5SfPXqwciR/rVXL5gxI+qKREQklYwbp2meIiIpSsFPSqZJEw9/a9fCQQfB3LlRVyQiIqlg6VL48UcFPxGRFKXgJyXXvj28/baHvl69YNGiqCsSEZGoTZjgXxX8RERSkoKflM7OO8PQoTBxIrRsCZdc4m28RUSkYsrv6BmLRVqGiIgUTcFPSq9nTxg9Gnr3hgcegG228U17R4+OujIREUm2eNzXgDdtGnUlIiJSBAU/KZsuXeD55+Gnn3zU7+23YaedoEcPeOstyM2NukIREUmG/MYuZlFXIiIiRVDwk/LRrBnceSfMng133eUL/A87DLbfHh5/HFaujLpCERFJlLVrfY2f1veJiKQsBT8pX5tvDpddBjNnwgsvQI0acNZZ0KIF3HILLFwYdYUiIlLeZsyAFSsU/EREUpiCnyRGlSpw/PEwZgx8+CF06wbXXw/Nm8N558H06VFXKCIi5UWNXUREUp6CnySWGey7r6/9mzjRm788+SS0awd9+sBXX0VdoYiIlFU8DpUrQ4cOUVciIiIboOAnybP99h76fv4Zrr0WPvkEdt8ddt3Vt4ZYuzbqCkVEksLMeprZVDObYWZXF3F5PTMbZmbjzew7M+tY4LK6ZjbEzKaY2WQz2zW51Rdh3Djf47VatagrERGRDVDwk+Rr1AhuvdUbwTzwAMyfD337Qtu28OCD8NdfUVcoIpIwZpYFPAT0AjoA/cys8FDZtcC4EEJn4GTgvgKX3Qe8G0JoD3QBJie+6k2Ix7W+T0QkxSn4SXRq1YIBA2DaNBgyBLbaCi64wDuE/utfMGdO1BWKiCRCd2BGCOHHEMJqYDDQu9B1OgAfAoQQpgAtzayhmW0G7AU8mXfZ6hDCH0mrvCiLFsGvvyr4iYikOAU/iV5WFhx1FHz9NXz5pe8BePvt0LIlnH46TJoUdYUiIuWpCTC7wM/ZeecVFAf6AJhZd6AF0BRoDSwAnjaz783sCTOrVdSDmNlZZjbazEYvWLCgvH+HApWqsYuISDpQ8JPUsttu8NprMHUqnHEGvPQSdOwIBx8MH30EIURdoYhIWRW1w3nhP27/B9Qzs3HABcD3QA5QGdgBeCSE0BX4C/jHGkGAEMLAEEK3EEK3Bg0alFft/5Qf/DTiJyKS0hT8JDW1aQMPPQS//AI33+zbQuy3H+y4o+8PuGZN1BWKiJRWNtCswM9Ngd8KXiGEsDSEcGoIIYav8WsA/JR32+wQwrd5Vx2CB8HojBvna7e32irSMkREZOMU/CS1bbklXHeddwJ9/HHfIPjEE6F1a7j7bli6NOoKRURKahTQxsxamVlV4DhgeMEr5HXurJr34xnAZ3lhcC4w28za5V22H/BDsgovkhq7iIikBQU/SQ/Vq/vUz0mT4M03Ydtt4fLLvRHM5Zd7h1ARkTQQQsgBBgAj8Y6cr4QQJpnZOWZ2Tt7VtgMmmdkUvPvnRQXu4gLgBTMbD8SA/ySt+MJWr4YfflDwExFJAwkNfsXYp8jM7P68y8eb2Q555zczs4/z9ieaZGYX/fPepUKqVAkOPRQ+/hhGjfK1f/fe6yOAJ54I338fdYUiIpsUQhgRQmgbQtgmhHBb3nmPhhAezfv+6xBCmxBC+xBCnxDC7wVuOy5v7V7nEMIRBS9LuilTfOq9GruIiKS8hAW/Yu5T1Atok3c6C3gk7/wc4LIQwnbALsD5RdxWKrpu3bz5y8yZvg3EG2/ADjv4WsB33lEjGBGRRBs3zr9qxE9EJOUlcsSvOPsU9QYGBfcNUNfMGocQ5oQQxgKEEJbhU2EKt7oWcS1awD33+HTPO+7wjqAHH+wbwl9xBXz+OeTkRF2liEjmicehWjX/eysiIiktkcGvOPsUbfI6ZtYS6Ap8SxGStk+RpL66dT3o/fgjDBrk0z/vuw/22ss7zp1yCgwdCsuWRV2piEhmiMd9y53KlaOuRERENiGRwa84+xRt9DpmVhsYClwcQiiyfWPS9imS9FG1Kpx0EowcCQsXwiuvQK9e8NZb0Levdwrt2RMeflhNYURESisEdfQUEUkjiQx+m9ynaGPXMbMqeOh7IYTwWgLrlEy22WZw9NHw3HMwbx58+qmvB5w5E84/H5o393WBN94IY8dqXaCISHHNmeMfrqmxi4hIWkhk8NvkPkV5P5+c191zF2BJCGGOmRnwJDA5hHBPAmuUiqRyZZ/2edddMG0aTJ4M//0v1KoFt9zim8M3awbnnuvNYVaujLpiEZHUpcYuIiJpJWHBr5j7FI0AfgRmAI8D5+WdvztwErCvmY3LOx2cqFqlAjKD9u3hyiu9+cvcufDMM7Dzzj46ePDBPiX0qKPg2WdB60dFRNYXj/vXzp2jrUNERIoloauxQwgj8HBX8LxHC3wfgPOLuN0XFL3+TyQxGjTw5i+nnOIjfR9/7BvFDx8Or73mQXG33eDww/3Urp2fJyJSUcXj3lW5bt2oKxERkWJI6AbuImmpenVvBpPf/GXMGLj+eli+HK66CrbbzoPf5Zf7mkFtFSEiFZEau4iIpBUFP5GNMVu/+csvv3gg3GYbeOAB6NEDttrKu4i++iosLbL5rIhIZlm+3NdKq7GLiEjaUPATKYmCzV8WLoQhQ+Cww/znY47xdYEHHQQPPgg//xx1tSIiiTFxIuTmasRPRCSNKPiJlFadOuuav8yb501iLr7YA98FF0DLlv5p+PXXw+jR/iZJRCQT5Dd2UfATEUkbCn4i5SErC/bYA+64A6ZM8dOdd/o+grfdBjvtBE2bwtln+0by2dkKgiKSvuJxqF0bWrWKuhIRESmmhHb1FKmw2rVb1wBm0SIYMcI7hL74Igwc6NepXt3XCm67LbRp41/zT82aQSV9LiMiKSq/sYv+TomIpA0FP5FEq1/fm7+cdBKsWgVff+0jgjNm+Gn6dHj3Xb8sX7Vq0Lr1uiBYMBg2b+4jjCIiUcjN9eB30klRVyIiIiWg4CeSTNWqeSfQHj3WPz83F379dV0QzA+FM2bABx/AihXrrlulyoZDYYsWUFn/rUUkgWbNgmXLtL5PRCTN6B2iSCqoVMmndzZrBvvss/5lubkwZ07RofCTT+Cvv9Zdt3JlX3NTcNpofjBs2dJDo4hIWaixi4hIWlLwE0l1lSpBkyZ+2nvv9S8LAebOXX/aaP73n38Of/657rpZWT4iWHg9YZs2HharVk3u7yUi6Ske9z1OO3aMuhIRESkBBT+RdGYGjRv7ac89178sBJg/v+hQ+PXX6282X6mSrx1s3Bhq1lx3qlGj7D9rPaJIZonHoW1bqFUr6kpERKQEFPxEMpUZNGzop913X/+yEHwD+oKhcPp0WLDA1xMuWgTLl/tpxYp1X0ujatWyh8i6dX20c7PNyvy0iEgZxeO+RY2IiKQVBT+RisgMGjTw0667Fu82ubneeTQ/EBYMhcX5uajL5s0r+vKi9jisWhUOOgiOOgoOPxzq1Svf50RENm3JEvjpJzjjjKgrERGRElLwE5HiqVTJR+Fq1PAtKhIlBFi9ev0g+Ouv8PrrMHQovPmmN7HZbz/o2xeOOAK23DJx9YjIOuPH+1c1dhERSTvaeVVEUouZb3tRty5svbU3oNl7b/jf/+Dnn+Hbb+GSS3xq6plnQqNGHgIfecQb3YhI4qijp4hI2lLwE5H0YQbdu8Mdd/jaxLFj4aqrIDsbzjvPg+Jee8H99/t5IlK+4nEf8W/SJOpKRESkhBT8RCQ9mUHXrnDbbTBlCkyYADfcAL//Dhdd5Hsi7ror3HWXr0kSkbIbN85H+8yirkREREpIwU9E0l/+nmI33OABcMoUD4SrVsEVV0Dr1tCtG9x+O0ybFnW1IukpJwcmTtQ0TxGRNKXgJyKZp107uPZanwo6c6ZPDc3K8vPatYPOneHmm+GHH6KuVCR9TJ8OK1cq+ImIpCkFPxHJbK1b+6jft996c5j//Q823xxuvBG23x622w6uu87XLoUQdbUiqUuNXURE0pqCn4hUHM2bw8UXw+ef+xYRDz0EjRvDf/4DsRi0aQNXXw2jRikEihQWj0OVKtChQ9SViIhIKWgfPxGpmBo39k6g550H8+fDG2/AkCFw993w3/9Cixa+WfxRR8Euu/g+hqkgBPjrL1i0CBYu3PDX5ct9S4wttlh3ql9//Z+32MJHP1Pld5PUNm6cj5BXrRp1JSIiUgoKfiIiW23lewKeeSYsXgzDh3sIfPBBuOce3yaiTx/fMH6PPXy9YHkIAf78s+jgtrFQt2pV0fdnBvXqecCrWdMb3SxeDEuXbriG/NsUDoRFhcSCp7p1obIOIRVKPA777x91FSIiUko6aouIFLTFFtC/v5+WLIG33oKhQ+GJJzwIbrUVHHmkh8C99/apb+AhbunS4gW3gtdZs6boOsw8fNWvD1tuCS1bemfS/J+33HLd9/lf69UrOpSuWQN//OGPu3jxxk+LFnkTj0WL/DYbs/nmmw6IhYNkvXrrnjNJHwsWwJw5Wt8nIpLGFPxERDZk883hhBP89OefMGKEh8Dnn4fHHvMg07jxujCXk1P0/VSqtH5I22Yb34h+QwGufn0fUSuvkcUqVaBBAz+VxNq1Hv42FRTzv//pJ//6+++Qm7vh+735Zm+oI+lDjV1ERNKegp+ISHHUrg3HHOOnFStg5EgYNgyWLYPddttwgNtyy/RdR5eVtW7UsSRyc330c0MBca+9ElOvJE5Wlo9wK/iJiKQtBT8RkZKqUQOOOMJP8k+VKvmIZd26vp2GpL999vGTiIikrTT8CFpERERERERKQsFPREREREQkwyn4iYiIiIiIZDgFPxERERERkQyn4CciIiIiIpLhEhr8zKynmU01sxlmdnURl5uZ3Z93+Xgz26G4txUREREREZHiSVjwM7Ms4CGgF9AB6GdmHQpdrRfQJu90FvBICW4rIiIiIiIixZDIEb/uwIwQwo8hhNXAYKB3oev0BgYF9w1Q18waF/O2IiIiIiIiUgyJDH5NgNkFfs7OO6841ynObUVERERERKQYEhn8rIjzQjGvU5zb+h2YnWVmo81s9IIFC0pYooiIiIiISOZLZPDLBpoV+Lkp8Fsxr1Oc2wIQQhgYQugWQujWoEGDMhctIiIiIiKSaRIZ/EYBbcyslZlVBY4Dhhe6znDg5LzunrsAS0IIc4p5WxERERERESmGyom64xBCjpkNAEYCWcBTIYRJZnZO3uWPAiOAg4EZwHLg1I3dNlG1ioiIiIiIZDILocilc2nJzBYAP5fxbrYEFpZDORWJnrOS03NWMnq+Si7Tn7MWIQTN7y8mHR8jo+es5PSclZyes5LL9OesyGNkRgW/8mBmo0MI3aKuI53oOSs5PWclo+er5PScSXnTa6rk9JyVnJ6zktNzVnIV9TlL5Bo/ERERERERSQEKfiIiIiIiIhlOwe+fBkZdQBrSc1Zyes5KRs9Xyek5k/Km11TJ6TkrOT1nJafnrOQq5HOmNX4iIiIiIiIZTiN+IiIiIiIiGU7BL4+Z9TSzqWY2w8yujrqeVGdmzczsYzObbGaTzOyiqGtKF2aWZWbfm9lbUdeSDsysrpkNMbMpea+3XaOuKdWZ2SV5/y8nmtlLZlY96pokvekYWTI6RpaOjo8lp2NkyVT046OCH/6HBngI6AV0APqZWYdoq0p5OcBlIYTtgF2A8/WcFdtFwOSoi0gj9wHvhhDaA13Qc7dRZtYEuBDoFkLoCGQBx0VblaQzHSNLRcfI0tHxseR0jCwmHR8V/PJ1B2aEEH4MIawGBgO9I64ppYUQ5oQQxuZ9vwz/Q9Mk2qpSn5k1BQ4Bnoi6lnRgZpsBewFPAoQQVocQ/oi0qPRQGahhZpWBmsBvEdcj6U3HyBLSMbLkdHwsOR0jS6VCHx8V/FwTYHaBn7PRH+hiM7OWQFfg24hLSQf3AlcCuRHXkS5aAwuAp/Om/zxhZrWiLiqVhRB+Be4CfgHmAEtCCO9FW5WkOR0jy0DHyGK7Fx0fS0rHyBLQ8VHBL58VcZ7anRaDmdUGhgIXhxCWRl1PKjOzQ4H5IYQxUdeSRioDOwCPhBC6An8BWl+0EWZWDx+NaQVsDdQysxOjrUrSnI6RpaRjZPHo+FhqOkaWgI6PCn75soFmBX5uSgUb+i0NM6uCH9BeCCG8FnU9aWB34HAzm4VPldrXzJ6PtqSUlw1khxDyPykfgh/kZMP2B34KISwIIawBXgN2i7gmSW86RpaCjpElouNj6egYWTIV/vio4OdGAW3MrJWZVcUXeg6PuKaUZmaGzymfHEK4J+p60kEI4ZoQQtMQQkv8NfZRCKFCfdJUUiGEucBsM2uXd9Z+wA8RlpQOfgF2MbOaef9P90OL/aVsdIwsIR0jS0bHx9LRMbLEKvzxsXLUBaSCEEKOmQ0ARuIdfp4KIUyKuKxUtztwEjDBzMblnXdtCGFEdCVJhroAeCHvDeePwKkR15PSQgjfmtkQYCzeWfB7YGC0VUk60zGyVHSMlGTRMbKYdHwEC0HT9EVERERERDKZpnqKiIiIiIhkOAU/ERERERGRDKfgJyIiIiIikuEU/ERERERERDKcgp+IiIiIiEiGU/ATSTIzW2tm4wqcri7H+25pZhNLcP1aZvZ+3vdfmJm2eBERkUjo+CiSWHoRiyTfihBCLOoi8uwKfGNm9YC/Qgg5URckIiIVlo6PIgmkET+RFGFms8zsv2b2Xd5p27zzW5jZh2Y2Pu9r87zzG5rZMDOL5512y7urLDN73Mwmmdl7ZlajiMfaJm9T4eeB44ExQJe8T1i3Ss5vLCIismk6PoqUDwU/keSrUWgqy7EFLlsaQugOPAjcm3feg8CgEEJn4AXg/rzz7wc+DSF0AXYAJuWd3wZ4KISwPfAHcFThAkIIM/M+VR0DdAcGAaeHEGIhhPnl96uKiIgUm46PIglkIYSoaxCpUMzszxBC7SLOnwXsG0L40cyqAHNDCPXNbCHQOISwJu/8OSGELc1sAdA0hLCqwH20BN4PIbTJ+/kqoEoI4dYN1DIqhLCTmQ0FLgwh/Frev6+IiEhx6Pgoklga8RNJLWED32/oOkVZVeD7tRSxltfMHs1b5N4mb0pLT+BtM7ukBLWKiIgki46PImWk4CeSWo4t8PXrvO+/Ao7L+/4E4Iu87z8EzgUwsywz26y4DxJCOAe4CbgFOAJ4O28ay//KVL2IiEhi6PgoUkbq6imSfDXyPkXM924IIb9ldTUz+xb/UKZf3nkXAk+Z2RXAAuDUvPMvAgaa2en4J5fnAnNKUMfe+NqFPYFPS/OLiIiIlCMdH0USSGv8RFJE3hqGbiGEhVHXIiIikip0fBQpH5rqKSIiIiIikuE04iciIiIiIpLhNOInIiIiIiKS4RT8REREREREMpyCn4iIiIiISIZT8BMREREREclwCn4iIiIiIiIZTsFPREREREQkw/0/I7rdJoHJEuoAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(15, 6))\n", "\n", "plt.subplot(121)\n", "plt.plot(history.history['loss'], '-r', label=\"Training\")\n", "plt.plot(history.history['val_loss'], '-b', label=\"Validation\")\n", "plt.xlabel('Epoch #')\n", "plt.ylabel('Loss')\n", "plt.legend()\n", "\n", "plt.subplot(122)\n", "plt.plot(history.history['accuracy'], '-r', label=\"Training\")\n", "plt.plot(history.history['val_accuracy'], '-b', label=\"Validation\")\n", "plt.xlabel('Epoch #')\n", "plt.ylabel('Accuracy')\n", "plt.legend()\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "siSHxHbAPVzK" }, "source": [ "**Q:** What do you think of 1) the final accuracy and 2) the training time, compared to the MLP of last time?\n", "\n", "**Q:** When does your network start to overfit? How to recognize it?\n", "\n", "**Q:** Try different values for the batch size (16, 32, 64, 128..). What is its influence?" ] }, { "cell_type": "markdown", "metadata": { "id": "D3-fo1h9PVzK" }, "source": [ "**A:** A CNN, even as shallow as this one, is more accurate but much slower (on CPU) than fully-connected networks. A network overfits when the training accuracy becomes better than the validation accuracy (learning by heart, not generalizing), which is the case here. When the batch size is too small, learning is unstable: the training loss increases again after a while. 128 is actually slightly better than 64." ] }, { "cell_type": "markdown", "metadata": { "id": "g9JYJ5_HPVzK" }, "source": [ "**Q:** Improve the CNN to avoid overfitting. The test accuracy should be around 99%.\n", "\n", "You can:\n", "\n", "* change the learning rate\n", "* add another block on convolution + max-pooling before the fully-connected layer to reduce the number of parameters,\n", "* add dropout after some of the layers,\n", "* use L2 regularization,\n", "* use a different optimizer,\n", "* do whatever you want.\n", "\n", "**Beware:** training is now relatively slow, keep your number of tries limited. Once you find a good architecture that does not overfit, train it for 20 epochs and proceed to the next questions." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "hWmi4i2wPVzK", "outputId": "686abdee-cae5-4d83-9523-203cc0508e0f" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model: \"sequential\"\n", "_________________________________________________________________\n", " Layer (type) Output Shape Param # \n", "=================================================================\n", " conv2d (Conv2D) (None, 26, 26, 32) 320 \n", " \n", " max_pooling2d (MaxPooling2D (None, 13, 13, 32) 0 \n", " ) \n", " \n", " dropout (Dropout) (None, 13, 13, 32) 0 \n", " \n", " conv2d_1 (Conv2D) (None, 11, 11, 64) 18496 \n", " \n", " max_pooling2d_1 (MaxPooling (None, 5, 5, 64) 0 \n", " 2D) \n", " \n", " dropout_1 (Dropout) (None, 5, 5, 64) 0 \n", " \n", " flatten (Flatten) (None, 1600) 0 \n", " \n", " dense (Dense) (None, 150) 240150 \n", " \n", " dropout_2 (Dropout) (None, 150) 0 \n", " \n", " dense_1 (Dense) (None, 10) 1510 \n", " \n", "=================================================================\n", "Total params: 260,476\n", "Trainable params: 260,476\n", "Non-trainable params: 0\n", "_________________________________________________________________\n", "None\n" ] } ], "source": [ "# Delete all previous models to free memory\n", "tf.keras.backend.clear_session()\n", "\n", "# Sequential model\n", "model = tf.keras.Sequential()\n", "\n", "model.add(tf.keras.layers.Input((28, 28, 1)))\n", "\n", "model.add(tf.keras.layers.Conv2D(32, (3, 3), activation='relu', padding='valid'))\n", "model.add(tf.keras.layers.MaxPooling2D(pool_size=(2, 2)))\n", "model.add(tf.keras.layers.Dropout(0.5))\n", "\n", "model.add(tf.keras.layers.Conv2D(64, (3, 3), activation='relu', padding='valid'))\n", "model.add(tf.keras.layers.MaxPooling2D(pool_size=(2, 2)))\n", "model.add(tf.keras.layers.Dropout(0.5))\n", "\n", "model.add(tf.keras.layers.Flatten())\n", "\n", "model.add(tf.keras.layers.Dense(150, activation='relu'))\n", "model.add(tf.keras.layers.Dropout(0.5))\n", "\n", "model.add(tf.keras.layers.Dense(10, activation='softmax'))\n", "\n", "# Learning rule\n", "optimizer = tf.keras.optimizers.SGD(learning_rate=0.01, momentum=0.9, nesterov=True)\n", "\n", "# Loss function\n", "model.compile(\n", " loss='categorical_crossentropy', # loss\n", " optimizer=optimizer, # learning rule\n", " metrics=['accuracy'] # show accuracy\n", ")\n", "\n", "print(model.summary())" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "7XAuZb7xPVzK", "outputId": "33013185-7809-424a-8246-09b916d0379a" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/20\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2023-01-13 16:34:47.484625: I tensorflow/core/grappler/optimizers/custom_graph_optimizer_registry.cc:112] Plugin optimizer for device_type GPU is enabled.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "844/844 [==============================] - ETA: 0s - loss: 0.4580 - accuracy: 0.8508" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2023-01-13 16:34:59.803391: I tensorflow/core/grappler/optimizers/custom_graph_optimizer_registry.cc:112] Plugin optimizer for device_type GPU is enabled.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "844/844 [==============================] - 13s 15ms/step - loss: 0.4580 - accuracy: 0.8508 - val_loss: 0.0935 - val_accuracy: 0.9745\n", "Epoch 2/20\n", "844/844 [==============================] - 12s 15ms/step - loss: 0.1463 - accuracy: 0.9556 - val_loss: 0.0614 - val_accuracy: 0.9837\n", "Epoch 3/20\n", "844/844 [==============================] - 12s 14ms/step - loss: 0.1087 - accuracy: 0.9669 - val_loss: 0.0516 - val_accuracy: 0.9857\n", "Epoch 4/20\n", "844/844 [==============================] - 12s 14ms/step - loss: 0.0924 - accuracy: 0.9719 - val_loss: 0.0447 - val_accuracy: 0.9873\n", "Epoch 5/20\n", "844/844 [==============================] - 12s 14ms/step - loss: 0.0810 - accuracy: 0.9744 - val_loss: 0.0431 - val_accuracy: 0.9863\n", "Epoch 6/20\n", "844/844 [==============================] - 12s 14ms/step - loss: 0.0740 - accuracy: 0.9767 - val_loss: 0.0411 - val_accuracy: 0.9883\n", "Epoch 7/20\n", "844/844 [==============================] - 11s 13ms/step - loss: 0.0683 - accuracy: 0.9788 - val_loss: 0.0385 - val_accuracy: 0.9887\n", "Epoch 8/20\n", "844/844 [==============================] - 13s 15ms/step - loss: 0.0634 - accuracy: 0.9798 - val_loss: 0.0374 - val_accuracy: 0.9897\n", "Epoch 9/20\n", "844/844 [==============================] - 12s 14ms/step - loss: 0.0592 - accuracy: 0.9819 - val_loss: 0.0370 - val_accuracy: 0.9890\n", "Epoch 10/20\n", "844/844 [==============================] - 13s 15ms/step - loss: 0.0556 - accuracy: 0.9827 - val_loss: 0.0347 - val_accuracy: 0.9898\n", "Epoch 11/20\n", "844/844 [==============================] - 12s 15ms/step - loss: 0.0539 - accuracy: 0.9829 - val_loss: 0.0314 - val_accuracy: 0.9907\n", "Epoch 12/20\n", "844/844 [==============================] - 13s 15ms/step - loss: 0.0507 - accuracy: 0.9841 - val_loss: 0.0304 - val_accuracy: 0.9907\n", "Epoch 13/20\n", "844/844 [==============================] - 13s 15ms/step - loss: 0.0495 - accuracy: 0.9845 - val_loss: 0.0316 - val_accuracy: 0.9907\n", "Epoch 14/20\n", "844/844 [==============================] - 12s 14ms/step - loss: 0.0460 - accuracy: 0.9859 - val_loss: 0.0311 - val_accuracy: 0.9917\n", "Epoch 15/20\n", "844/844 [==============================] - 13s 15ms/step - loss: 0.0439 - accuracy: 0.9859 - val_loss: 0.0293 - val_accuracy: 0.9908\n", "Epoch 16/20\n", "844/844 [==============================] - 12s 14ms/step - loss: 0.0434 - accuracy: 0.9863 - val_loss: 0.0290 - val_accuracy: 0.9912\n", "Epoch 17/20\n", "844/844 [==============================] - 13s 15ms/step - loss: 0.0420 - accuracy: 0.9858 - val_loss: 0.0287 - val_accuracy: 0.9912\n", "Epoch 18/20\n", "844/844 [==============================] - 12s 14ms/step - loss: 0.0394 - accuracy: 0.9873 - val_loss: 0.0273 - val_accuracy: 0.9913\n", "Epoch 19/20\n", "844/844 [==============================] - 12s 15ms/step - loss: 0.0403 - accuracy: 0.9874 - val_loss: 0.0283 - val_accuracy: 0.9920\n", "Epoch 20/20\n", "844/844 [==============================] - 12s 15ms/step - loss: 0.0386 - accuracy: 0.9874 - val_loss: 0.0286 - val_accuracy: 0.9917\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "history = tf.keras.callbacks.History()\n", "\n", "model.fit(\n", " X_train, T_train,\n", " batch_size=64, \n", " epochs=20,\n", " validation_split=0.1,\n", " callbacks=[history]\n", ")" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "RVzhZPvlPVzK", "outputId": "ff2d43a5-eaf7-44cf-b3e7-fc32857f7486" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Test loss: 0.022637275978922844\n", "Test accuracy: 0.9929000735282898\n" ] } ], "source": [ "score = model.evaluate(X_test, T_test, verbose=0)\n", "print('Test loss:', score[0])\n", "print('Test accuracy:', score[1])" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 391 }, "id": "XJU4yRGjPVzK", "outputId": "ea09ed11-55d9-44d4-a6b0-9ac9bca493f3" }, "outputs": [ { "data": { "image/png": "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7dq1u75mTg7stlttQBs2bNfApoFEROqWnQGvuFjX4ImIiEhGcM4PFFHXAA5r1sQPb1995R8brXt33/2vb19/XVd0t8DddoOqqrpHFFy50j/v7NlNH2EQfBe+IJjttx8cd1z8FreiotZ3TZRIKmVnwCspgX//O+wqREREJMts3OgHvHjrLVi6tPGj8DVmyIT27WsD20knxb+2q0OHxL6XeCHw66/jj+BYWJhe3SRFWqvsDXjqoikiIiJJtny5D3PBMnu2H+8NfOgpKNh5wIrOnesexKKubZ06+fDWvXtqA1SHDrUjOopI+sjOgFdc7L9eqqnxg66IiIhIq7RihQ9V8+bVBqGgNatjx8S+1vbt8MknPsi9+aa//fRTvy8/3w8C8pOfwKGHwiGH+KHbRSQJtm+HJUtg7lxYuND3cd6+3Y/UEyzNuW/mLxLNyfH9iIP16KUx24cMgXHjkvb2szPdBJOdr1zp+w6IiGSQUaNGce2113LCCSfs2HbrrbeyaNEi7rzzzrjHT548mbKyMr75zW/y6KOP0qVLl52OueGGGygsLOSqq66q83WfffZZBgwYwODBgwG4/vrrOeKIIzj22GMT88ZEWsA53+Vx9my/fPihv12+vO7HdOlS/zD1PXv6Yd/rEt3d8q234J13agct2W03H+QuvdTfHnign6VJRBJs9Wp/6dXcubXLxx/Hny8jN7d2CUJXfdui7wdzVgTBb/v2XZfGbh8zRgEv4YKAV1GhgCciGWfcuHFMnTp1p4A3depUbrnllgYfO23atGa/7rPPPsspp5yyI+D9+te/bvZzibRETY3/Uj46zM2ZUxuucnJg0CA49lgfrA48EPbf3/+9FwxCEjsgyTvv+M490cx8N8royaVLS+Gzz3btbrnvvvCd7/gwd+ih0K+frjeTVs45P1Tr+vX+lyu4dc43lwdLQUFifhmqq2HRotoQF4S6L76oPaZbN986dv75cMABfhk82PcnzqJfSAU8EZEMM2bMGK677jq2bNlCXl4eS5cuZdmyZTz66KNcccUVbNq0iTFjxvCrX/1ql8f26dOHWbNmUVRUxM0338xDDz1Er169KC4uZvjw4YCf327KlCls3bqVvffem4cffpg5c+bw3HPP8frrr3PTTTfx1FNPceONN3LKKacwZswYpk+fzlVXXUVNTQ0HHXQQd911F3l5efTp04fx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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(15, 6))\n", "\n", "plt.subplot(121)\n", "plt.plot(history.history['loss'], '-r', label=\"Training\")\n", "plt.plot(history.history['val_loss'], '-b', label=\"Validation\")\n", "plt.xlabel('Epoch #')\n", "plt.ylabel('Loss')\n", "plt.legend()\n", "\n", "plt.subplot(122)\n", "plt.plot(history.history['accuracy'], '-r', label=\"Training\")\n", "plt.plot(history.history['val_accuracy'], '-b', label=\"Validation\")\n", "plt.xlabel('Epoch #')\n", "plt.ylabel('Accuracy')\n", "plt.legend()\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "DKrb_1p0PVzK" }, "source": [ "## Analysing the CNN\n", "\n", "Once a network has been trained, let's see what has happened internally.\n", "\n", "### Accessing trained weights\n", "\n", "Each layer of the network can be addressed individually. For example, `model.layers[0]` represents the first layer of your network (the first convolutional one, as the input layer does not count). The index of the other layers can be found by looking at the output of `model.summary()`.\n", "\n", "You can obtain the parameters of each layer (if any) with:\n", "\n", "```python\n", "W = model.layers[0].get_weights()[0]\n", "```\n", "\n", "**Q:** Print the shape of these weights and relate them to the network." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "kq2iR9wgPVzK", "outputId": "7a7d43a4-1eb2-4a0b-fef3-d050180a97ed" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "W shape : (3, 3, 1, 32)\n" ] } ], "source": [ "W = model.layers[0].get_weights()[0]\n", "print(\"W shape : \", W.shape)" ] }, { "cell_type": "markdown", "metadata": { "id": "IaYDjpKJPVzK" }, "source": [ "**Q:** Visualize with `imshow()` each of the 16 filters of the first convolutional layer. Interpret what kind of operation they perform on the image.\n", "\n", "*Hint:* `subplot()` is going to be useful here. If you have 16 images `img[i]`, you can visualize them in a 4x4 grid with:\n", "\n", "```python\n", "for i in range(16):\n", " plt.subplot(4, 4, i+1)\n", " plt.imshow(img[i], cmap=plt.cm.gray)\n", "```" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 687 }, "id": "wOG_-reKPVzK", "outputId": "17e54d61-1daf-4ba3-db3a-ede72d5663e8" }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(12, 12))\n", "for i in range(16):\n", " plt.subplot(4, 4, i+1)\n", " plt.imshow(W[:, :, 0, i], cmap=plt.cm.gray)\n", " plt.xticks([]); plt.yticks([])\n", " plt.colorbar()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "CkMI8SohPVzK" }, "source": [ "### Visualizing the feature maps\n", "\n", "Let's take a random image from the training set and visualize it: " ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 385 }, "id": "FH-qoSWlPVzK", "outputId": "6a2d632d-8fa6-4ad4-ffc3-24f952494260" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "idx = 31727 # or any other digit\n", "x = X_train[idx, :, :, :].reshape(1, 28, 28, 1)\n", "t = t_train[idx]\n", "\n", "print(t)\n", "\n", "plt.figure(figsize=(6, 6))\n", "plt.imshow(x[0, :, :, 0] + X_mean[:, :, 0], cmap=plt.cm.gray)\n", "plt.colorbar()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "CpQlLk4bPVzK" }, "source": [ "This example could be a 1 or 7. That is why you will never get 100% accuracy on MNIST: some examples are hard even for humans...\n", "\n", "**Q:** Print what the model predict for it, its true label, and visualize the probabilities in the softmax output layer (look at the doc of `model.predict()`):" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 352 }, "id": "CwRyWej7PVzK", "outputId": "0b53717b-cdc0-4dfc-e1c3-86c18f2b5242" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2023-01-13 16:38:56.701873: I tensorflow/core/grappler/optimizers/custom_graph_optimizer_registry.cc:112] Plugin optimizer for device_type GPU is enabled.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Predicted digit: 1 ; True digit: 1\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Predict probabilities\n", "output = model.predict([x])\n", "\n", "# The predicted class has the maximal probability\n", "prediction = output[0].argmax()\n", "print('Predicted digit:', prediction, '; True digit:', t)\n", "\n", "plt.figure(figsize=(12, 5))\n", "plt.bar(range(10), output[0])\n", "plt.xlabel('Digit')\n", "plt.ylabel('Probability')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "_1GG8MzXPVzK" }, "source": [ "Depending on how your network converged, you may have the correct prediction or not. \n", "\n", "**Q:** Visualize the output of the network for different examples. Do these ambiguities happen often?" ] }, { "cell_type": "markdown", "metadata": { "id": "nGvkNX-1PVzK" }, "source": [ "Now let's look inside the network. We will first visualize the 16 feature maps of the first convolutional layer.\n", "\n", "This is actually very simple using tensorflow 2.x: One only needs to create a new model (class `tf.keras.models.Model`, not Sequential) taking the same inputs as the original model, but returning the output of the first layer (`model.layers[0]` is the first convolutional layer of the model, as the input layer does not count):\n", "\n", "```python\n", "model_conv = tf.keras.models.Model(inputs=model.inputs, outputs=model.layers[0].output)\n", "```\n", "\n", "To get the tensor corresponding to the first convolutional layer, one simply needs to call `predict()` on the new model:\n", "\n", "```python\n", "feature_maps = model_conv.predict([x])\n", "```\n", "\n", "**Q:** Visualize the 16 feature maps using `subplot()`. Relate these activation with the filters you have visualized previously." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 707 }, "id": "72WqcVTaPVzK", "outputId": "e25a4bb2-4109-4d72-ac3c-c62b05ac5119" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(1, 26, 26, 32)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2023-01-13 16:38:57.307504: I tensorflow/core/grappler/optimizers/custom_graph_optimizer_registry.cc:112] Plugin optimizer for device_type GPU is enabled.\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "model_conv = tf.keras.models.Model(inputs=model.inputs, outputs=model.layers[0].output)\n", "\n", "feature_maps = model_conv.predict([x])\n", "print(feature_maps.shape)\n", "\n", "plt.figure(figsize=(12, 12))\n", "for i in range(16):\n", " plt.subplot(4, 4, i+1)\n", " plt.imshow(feature_maps[0, :, :, i], cmap=plt.cm.gray)\n", " plt.xticks([]); plt.yticks([])\n", " plt.colorbar()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "nIyO4ZW4PVzK" }, "source": [ "**Q:** Do the same with the output of the first max-pooling layer.\n", "\n", "*Hint:* you need to find the index of that layer in `model.summary()`." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 707 }, "id": "viTa5aREPVzK", "outputId": "06c867f7-0abc-4431-ea0d-1056795b0dfd" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2023-01-13 16:38:57.915228: I tensorflow/core/grappler/optimizers/custom_graph_optimizer_registry.cc:112] Plugin optimizer for device_type GPU is enabled.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "(1, 13, 13, 32)\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "model_pool = tf.keras.models.Model(inputs=model.inputs, outputs=model.layers[1].output)\n", "\n", "pooling_maps = model_pool.predict([x])\n", "print(pooling_maps.shape)\n", "\n", "plt.figure(figsize=(12, 12))\n", "for i in range(16):\n", " plt.subplot(4, 4, i+1)\n", " plt.imshow(pooling_maps[0, :, :, i], cmap=plt.cm.gray)\n", " plt.xticks([]); plt.yticks([])\n", " plt.colorbar()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "gZBc_aIkPVzK" }, "source": [ "**Bonus question:** if you had several convolutional layers in your network, visualize them too. What do you think of the specificity of some features?" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 707 }, "id": "VMciQKBmPVzK", "outputId": "0edd64df-ad7c-43b7-a866-0200fe706093" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2023-01-13 16:38:58.542516: I tensorflow/core/grappler/optimizers/custom_graph_optimizer_registry.cc:112] Plugin optimizer for device_type GPU is enabled.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "(1, 11, 11, 64)\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "model_conv = tf.keras.models.Model(inputs=model.inputs, outputs=model.layers[3].output)\n", "\n", "feature_maps = model_conv.predict([x])\n", "print(feature_maps.shape)\n", "\n", "plt.figure(figsize=(12, 12))\n", "for i in range(16):\n", " plt.subplot(4, 4, i+1)\n", " plt.imshow(feature_maps[0, :, :, i], cmap=plt.cm.gray)\n", " plt.xticks([]); plt.yticks([])\n", " plt.colorbar()\n", "plt.show()" ] } ], "metadata": { "accelerator": "GPU", "colab": { "name": "10-CNN-solution.ipynb", "provenance": [], "toc_visible": true }, "kernelspec": { "display_name": "Python 3.9.9 ('tf')", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.9" }, "vscode": { "interpreter": { "hash": "0623a8ec4bd597eab065752ed1de30aa39c6d40efdfbc7bcfd7fe40f99c37f5e" } } }, "nbformat": 4, "nbformat_minor": 4 }