{ "cells": [ { "cell_type": "code", "metadata": { "id": "wYPtaNt_UsA1", "colab_type": "code", "colab": {} }, "source": [ "import tensorflow as tf" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "fuv_vsZULIwS", "colab_type": "code", "colab": {} }, "source": [ "from sklearn.preprocessing import StandardScaler\n", "from math import sqrt\n", "\n", "def normalisation(trainData, testData):\n", " scaler = StandardScaler()\n", " if not isinstance(trainData[0], list):\n", " #encode each sample into a list\n", " trainData = [[d] for d in trainData]\n", " testData = [[d] for d in testData]\n", " \n", " scaler.fit(trainData) # fit only on training data\n", " normalisedTrainData = scaler.transform(trainData) # apply same transformation to train data\n", " normalisedTestData = scaler.transform(testData) # apply same transformation to test data\n", " \n", " #decode from list to raw values\n", " normalisedTrainData = [el[0] for el in normalisedTrainData]\n", " normalisedTestData = [el[0] for el in normalisedTestData]\n", " else:\n", " scaler.fit(trainData) # fit only on training data\n", " normalisedTrainData = scaler.transform(trainData) # apply same transformation to train data\n", " normalisedTestData = scaler.transform(testData) # apply same transformation to test data\n", " return normalisedTrainData, normalisedTestData\n", " " ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "178VekCPVirA", "colab_type": "code", "colab": {} }, "source": [ "from sklearn.utils import shuffle\n", "from sklearn.datasets import load_iris\n", "irisDataset = load_iris()\n", "\n", "irisData, irisLabels = shuffle(irisDataset.data, irisDataset.target)\n", "oneHotLabels = tf.keras.utils.to_categorical(irisLabels, 3)\n", "irisLabels = oneHotLabels\n", "\n", "trainSize = int(0.8 * len(irisData))\n", "irisTrainData = irisData[:trainSize]\n", "irisTrainLabels = irisLabels[:trainSize]\n", "\n", "irisTestData = irisData[trainSize:]\n", "irisTestLabels = irisLabels[trainSize:]\n", "\n", "from sklearn.preprocessing import StandardScaler\n", "scaler = StandardScaler()\n", "scaler.fit(irisTrainData)\n", "irisTrainData = scaler.transform(irisTrainData)\n", "irisTestData = scaler.transform(irisTestData)\n" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "nE3H2mbEDUqx", "colab_type": "code", "outputId": "8784492e-d00c-46ea-9ca4-4027a38774c8", "colab": { "base_uri": "https://localhost:8080/", "height": 644 } }, "source": [ "model = tf.keras.Sequential([\n", " tf.keras.layers.Dense(2, input_dim = 4, activation = tf.nn.relu),\n", " tf.keras.layers.Dense(3, activation=tf.nn.softmax),\n", "])\n", "\n", "model.compile(optimizer=tf.keras.optimizers.SGD(),\n", " loss=tf.keras.losses.CategoricalCrossentropy(),\n", " metrics=['accuracy'])\n", "model.summary()\n", "\n", "print('# Fit model on training data ')\n", "history = model.fit(irisTrainData, irisTrainLabels, batch_size=10, epochs=10)\n", "print('\\nhistory dict:', history.history)" ], "execution_count": 88, "outputs": [ { "output_type": "stream", "text": [ "Model: \"sequential_40\"\n", "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "dense_87 (Dense) (None, 2) 10 \n", "_________________________________________________________________\n", "dense_88 (Dense) (None, 3) 9 \n", "=================================================================\n", "Total params: 19\n", "Trainable params: 19\n", "Non-trainable params: 0\n", "_________________________________________________________________\n", "# Fit model on training data \n", "Epoch 1/10\n", "12/12 [==============================] - 0s 1ms/step - loss: 1.0935 - accuracy: 0.4333\n", "Epoch 2/10\n", "12/12 [==============================] - 0s 1ms/step - loss: 1.0569 - accuracy: 0.5000\n", "Epoch 3/10\n", "12/12 [==============================] - 0s 1ms/step - loss: 1.0248 - accuracy: 0.5583\n", "Epoch 4/10\n", "12/12 [==============================] - 0s 1ms/step - loss: 0.9946 - accuracy: 0.6500\n", "Epoch 5/10\n", "12/12 [==============================] - 0s 1ms/step - loss: 0.9676 - accuracy: 0.6667\n", "Epoch 6/10\n", "12/12 [==============================] - 0s 1ms/step - loss: 0.9410 - accuracy: 0.7167\n", "Epoch 7/10\n", "12/12 [==============================] - 0s 1ms/step - loss: 0.9141 - accuracy: 0.7500\n", "Epoch 8/10\n", "12/12 [==============================] - 0s 1ms/step - loss: 0.8881 - accuracy: 0.7500\n", "Epoch 9/10\n", "12/12 [==============================] - 0s 1ms/step - loss: 0.8626 - accuracy: 0.7750\n", "Epoch 10/10\n", "12/12 [==============================] - 0s 1ms/step - loss: 0.8374 - accuracy: 0.7917\n", "\n", "history dict: {'loss': [1.0935248136520386, 1.056907057762146, 1.0248489379882812, 0.9946410655975342, 0.9676133990287781, 0.9409933686256409, 0.914093554019928, 0.8880672454833984, 0.8625567555427551, 0.8373876214027405], 'accuracy': [0.4333333373069763, 0.5, 0.5583333373069763, 0.6499999761581421, 0.6666666865348816, 0.7166666388511658, 0.75, 0.75, 0.7749999761581421, 0.7916666865348816]}\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "qqZyyJ_5GRUH", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 364 }, "outputId": "300825d7-d608-4e30-f8c4-dd08ee9a755d" }, "source": [ "model2 = tf.keras.Sequential([\n", " tf.keras.layers.Dense(2, input_dim = 4, activation = tf.nn.relu),\n", " tf.keras.layers.Dense(8, activation = tf.nn.relu),\n", " tf.keras.layers.Dense(3, activation=tf.nn.softmax),\n", "])\n", "\n", "model2.compile(optimizer=tf.keras.optimizers.SGD(),\n", " loss=tf.keras.losses.CategoricalCrossentropy(),\n", " metrics=['accuracy'])\n", "history2 = model2.fit(irisTrainData, irisTrainLabels, batch_size=10, epochs=10)" ], "execution_count": 89, "outputs": [ { "output_type": "stream", "text": [ "Epoch 1/10\n", "12/12 [==============================] - 0s 1ms/step - loss: 1.0448 - accuracy: 0.4333\n", "Epoch 2/10\n", "12/12 [==============================] - 0s 1ms/step - loss: 1.0310 - accuracy: 0.5250\n", "Epoch 3/10\n", "12/12 [==============================] - 0s 1ms/step - loss: 1.0167 - accuracy: 0.5583\n", "Epoch 4/10\n", "12/12 [==============================] - 0s 1ms/step - loss: 1.0013 - accuracy: 0.6083\n", "Epoch 5/10\n", "12/12 [==============================] - 0s 1ms/step - loss: 0.9853 - accuracy: 0.6167\n", "Epoch 6/10\n", "12/12 [==============================] - 0s 1ms/step - loss: 0.9683 - accuracy: 0.6333\n", "Epoch 7/10\n", "12/12 [==============================] - 0s 1ms/step - loss: 0.9501 - accuracy: 0.6500\n", "Epoch 8/10\n", "12/12 [==============================] - 0s 1ms/step - loss: 0.9315 - accuracy: 0.6583\n", "Epoch 9/10\n", "12/12 [==============================] - 0s 1ms/step - loss: 0.9126 - accuracy: 0.6750\n", "Epoch 10/10\n", "12/12 [==============================] - 0s 1ms/step - loss: 0.8932 - accuracy: 0.6833\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "IWK19vz05AmD", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 297 }, "outputId": "9f451c56-feea-42fa-b4f5-4a85e8ca8465" }, "source": [ "import matplotlib.pyplot as plt\n", "\n", "loss1, = plt.plot(history.history['loss'], label = 'loss model1')\n", "acc1, = plt.plot(history.history['accuracy'], label = 'acc model1')\n", "\n", "loss2, = plt.plot(history2.history['loss'], label = 'loss model2')\n", "acc2, = plt.plot(history2.history['accuracy'], label = 'acc model2')\n", "plt.legend([loss1, (loss1, acc1), (loss1, acc1, loss2), (loss1, acc1, loss2, acc2)], ['Loss model1', 'Acc model1', 'Loss model2', 'Acc model2'])\n", "plt.xlabel('Batch #')\n", "plt.ylabel('Loss & acc')\n" ], "execution_count": 90, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "Text(0, 0.5, 'Loss & acc')" ] }, "metadata": { "tags": [] }, "execution_count": 90 }, { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } } ] }, { "cell_type": "code", "metadata": { "id": "PMakzBkmIma6", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 52 }, "outputId": "fb52ec8c-452d-4338-fab3-14f0074b34b9" }, "source": [ "test_loss1, test_acc1 = model.evaluate(irisTestData, irisTestLabels, verbose=2)\n", "test_loss2, test_acc2 = model2.evaluate(irisTestData, irisTestLabels, verbose=2)\n" ], "execution_count": 91, "outputs": [ { "output_type": "stream", "text": [ "1/1 - 0s - loss: 0.7677 - accuracy: 0.9000\n", "1/1 - 0s - loss: 0.8057 - accuracy: 0.8000\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "vPhTiqgqKM4x", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 589 }, "outputId": "46930b27-6f44-41c7-f06f-3502cf8a3235" }, "source": [ "# CNN example\n", "\n", "# load data\n", "mnist = tf.keras.datasets.mnist\n", "(trainImages, trainLabels), (testImages, testLabels) = mnist.load_data()\n", "\n", "# normalise\n", "trainImages, testImages = trainImages / 255, testImages / 255\n", "\n", "# transform labels into one-hot encoding\n", "trainLabels1hot = tf.keras.utils.to_categorical(trainLabels, 10)\n", "testLabels1hot = tf.keras.utils.to_categorical(testLabels, 10)\n", "\n", "\n", "class_names = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']\n", "plt.figure(figsize=(10,10))\n", "for i in range(25):\n", " plt.subplot(5,5,i+1)\n", " plt.xticks([])\n", " plt.yticks([])\n", " plt.grid(False)\n", " plt.imshow(trainImages[i], cmap=plt.cm.binary)\n", " plt.xlabel(class_names[trainLabels[i]])\n", "plt.show()\n" ], "execution_count": 107, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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AC8UiuGt3AwYMECzvbqviDuzx16ROfzGOpLLXq1TxJ1FF54dZT9OHTFihObw6p1RDcX8+OOPkfzcVFm5cmXMc4cffngaK8mf8CaHv/76q+Z69epptmd6IjXsocU2bdrE9Znu3btrDs/ORXwGDhzoHNtDWiVKlHDOnX322ZofeeQRzaVKlYp5/b///lvzpEmTnHOrV6/WbK9ib6/iLCLSqlWrmNePCk96AACAF+j0AAAAL9DpAQAAXij07/TYKy2/8sorzjl7BV17Z9nTTz/daWe/P2JP5wuvCoz42KsYi/z3ezy29957T7O9wy/S77jjjou6hP/affujjz7SbK8yG37HwGZP3bWnRiM17Hu0ePHimO1atGihuUePHimtKVPZK48///zzzjn795X9Do+IyLvvvhvX9b/55hvNV1xxheY5c+bE/Ezbtm019+7dO66fEyWe9AAAAC/Q6QEAAF4o9MNbtkMOOcQ5HjZsmOaOHTtqtqdGh4+3bt2qObzxXXiVYOTstttuc47tKY3hzQULwpCWXV9ezmWajRs35vkzCxcudI53796t+dNPP9W8Zs0ap92OHTs0v/HGGzl+XsSdUnv88cdrDk/J/eeffzSHlztAcoWHSvr06ZNju1NOOcU5tjcgzW0lfcRmf2/Wr18fs529ErKIyLp16zQPHTpUs/16gYjI0qVLNf/xxx+aw6962LsaXHnllZpz29i7oOBJDwAA8AKdHgAA4IWMGt4Ku+iiizTXqVNHc8+ePZ129mrNffv21WyvOikicuedd2pmI0PXhAkTNC9YsMA5Zz8abdmyZdpqipddX/gx7tFHH53uclLKHi4K/2/t3Lmz5vCGhbGEh7fs4cBixYppLl26tNOuQYMGmq+99lrNxx57rNPOHg6tWrWq5po1azrt7BW769evH0/pyINEVl0++OCDnWP7/iExxYsX11ylShXnnD2ElZWV5ZyLdyay/XvNXi3/559/dtpVqlRJ84UXXhjXtQsKnvQAAAAv0OkBAABeoNMDAAC8kNHv9NiOOOIIzePGjXPOffDBB5o7dOig+cUXX3Taff3115onT56c5AoLN/udCntapYg79nzppZemrSZbeOf3AQMG5NjOXjVWROThhx9OVUmRsFdxrV27tnPuyy+/zPP1DjzwQOfY3lX5sMMO03zCCSfk+dphL7/8smb7/QWR/35/BMll78xdpEiRuD4Tayo7EmevMB5eOuCCCy7Q/Ntvvznn7Hda7e+o/ftORKRixYqaL7vsMs3hd3rsc4UNT3oAAIAX6PQAAAAveDO8ZQtvQnjVVVdpvu666zTbq7yKiEybNk3zlClTNIdXGYarZMmSmtO5qrU9pHX//fc75wYNGqS5Vq1amsPLGey7774pqi56d9xxR9Ql5Im9wnPYJZdcksZK/GAvPfHxxx/H9Rl7SYp69eolvSb8H3uFcpHcV2iOl/07burUqZrDU94L83AyT3oAAIAX6PQAAAAveDO8tWjRIs1vvfWWc2727Nmaw0NaNns2yqmnnprE6jJbOldhth/J20NYY8eOddrZMxjeeeed1BeGlGrdunXUJWScs846S/Pvv/8es509zGJvKorCx56Fm9tK9czeAgAAKODo9AAAAC/Q6QEAAF7IqHd6Vq5c6Rw/88wzmu33Nn799de4rle0qPuvx55uvc8+9Bdt9u7adhZxVw59+umnk/pzn3jiCef4vvvu07x582bNV155pdNuxIgRSa0DyDQbNmzQnNsqzF27dtWcyUs8+ODss8+OuoSU4zc3AADwAp0eAADghUI5vGUPT40aNUrzs88+67TLzs7O87WPO+44zXfeeadzLp1Trwub3KY32vfr5ptvds5de+21mvfff3/NM2fOdNq9/vrrmhcuXKj5xx9/dNrZm2iec845mm+66abc/wegULM3Az7xxBMjrKTw6tixo3NsD1Pv2rUr5udOOumklNWE9Ip35e3CjCc9AADAC3R6AACAFwrs8NbatWs1L1261DnXrVs3zStWrMjztcMbtfXu3VuzvVIvM7SSY+fOnZqfe+4555y9Ona5cuU0r1q1Kq5rhx+tN2/eXPPAgQPzVCcKr927d0ddQqFkr2A+efJk55w9TF2iRAnN4aHiqlWrpqg6pNu3334bdQkpx291AADgBTo9AADAC3R6AACAFyJ9p2fjxo2aO3fu7Jyzx5oTHWc8+eSTNffs2VNzeNXJUqVKJXR9/B97mnCTJk2cc1999VXMz9nT2e33uMIqVaqk2d7hN9krPKNwmjFjhuYOHTpEV0ghs2nTJs25ff+qV6+u+fHHH09pTYjOKaecojm8sn6m4EkPAADwAp0eAADghZQPb82aNcs5HjRokObZs2drXrNmTULXL126tObwar/2isplypRJ6PqIT82aNTXbm7uKiLz00kua7Q1Bc9OjRw/n+MYbb9Rct27dREoEAOTiiCOO0Gz/PRt+xcQ+rly5cuoLSyKe9AAAAC/Q6QEAAF6g0wMAALyQ8nd6xo8fn+txLIcddpjmCy+80DlXpEgRzb169dJcvnz5REpEklWrVs05HjBgQI4ZyItzzz1X87hx4yKsJHPUr19fc3hLl+nTp6e7HBQg/fr109ypU6eY55599lnN9u/tgoonPQAAwAt0egAAgBdSPrz18MMP53oMAPGwV1pm1eXkOOCAAzRPnTo1wkpQ0LRp00bzmDFjnHOTJ0/WbL+yMHToUKddQVwqhic9AADAC3R6AACAFyLdcBQAABQ8ZcuW1RyeLWnvdvD8889rDs/OLYizuXjSAwAAvECnBwAAeIFODwAA8ALv9AAAgJjs93tERJ555pkcc2HAkx4AAOAFOj0AAMALJgiC+Bsbs15EVqeuHOSgdhAElZN9Ue5lZLifmYN7mVmSfj+5l5GJeS/z1OkBAAAorBjeAgAAXqDTAwAAvJDxnR5jTLYxZrExZoExZk7U9SB/jDHnGGNWGmO+Mcb0iboe5I8xpogxZr4xZkLUtSBxxpjXjDHrjDFLoq4F+WeM6WGMWWKMWWqMuSXqepIp4zs9e50eBMHRQRA0jroQJM4YU0REnhORc0XkMBFpb4wpeJu7IC96iMjyqItAvg0TkXOiLgL5Z4xpKCLXi0gTETlKRC4wxtSJtqrk8aXTg8zQRES+CYLguyAIdojIGBFpFXFNSJAxpqaInC8iQ6KuBfkTBME0EdkYdR1IigYiMisIgr+CINgpIlNFpE3ENSWND52eQEQmGWPmGmNuiLoY5EsNEfnROl6z95+hcHpKRHqLyO6oCwGglojIKcaY/Y0xpUXkPBGpFXFNSePDNhRNgyD4yRhTRUQmG2NW7P1/JQAiYoy5QETWBUEw1xhzWtT1ANgjCILlxphHRGSSiGwVkQUisivaqpIn45/0BEHw097/Xici42XPEAkKp5/E/X8cNff+MxQ+J4tIS2NMtuwZpmxujBkZbUkARESCIHg1CIJjgyA4VUR+F5FVUdeULBnd6THGlDHG7PdvFpGzZM+jOxROs0WkrjHmIGNMcRG5TETej7gmJCAIgr5BENQMgiBL9tzHz4IguDLisgCIyN6RETHGHCh73ucZFW1FyZPpw1tVRWS8MUZkz//WUUEQfBRtSUhUEAQ7jTHdRORjESkiIq8FQbA04rIA7xljRovIaSJSyRizRkTuCYLg1WirQj68bYzZX0T+EZGuQRBsirqgZGEbCgAA4IWMHt4CAAD4F50eAADgBTo9AADAC3R6AACAF+j0AAAAL9DpAQAAXsjTOj2VKlUKsrKyUlQKcpKdnS0bNmwwyb4u9zIac+fO3RAEQeVkX5f7mX58NzNLKr6b3Mto5HYv89TpycrKkjlz5iSnKsSlcePGKbku9zIaxpjVqbgu9zP9+G5mllR8N7mX0cjtXjK8BQAAvECnBwAAeIFODwAA8AKdHgAA4AU6PQAAwAt0egAAgBfo9AAAAC/Q6QEAAF6g0wMAALxApwcAAHghT9tQAOnSo0cP53jw4MGaGzZsqHnChAlOu9q1a6e2MABAUjVv3jzmuc8++yypP4snPQAAwAt0egAAgBfo9AAAAC94+U7PH3/84Rz/+eefmj/88EPN69atc9r17NlTc4kSJVJUnb+ys7M1v/766845Y4zmZcuWaV6xYoXTjnd6Co5Vq1Zp3rFjh3Nu+vTpmm+66SbN9n1OVOvWrTWPGTPGOVe8ePF8X993//zzj3P85Zdfau7bt2+O/xyw3Xrrrc7xjBkzNF999dUp/dk86QEAAF6g0wMAALyQ0cNb33//veZBgwZpth+liYgsXrw4ruv9+uuvmu0p1EiOypUra27WrJlz7r333kt3OYjDkiVLnOPhw4drfvPNNzXv3r3baffTTz9ptoe0kjG8Zf9Z6dKli3Puqaee0ly2bNl8/ywfbd682Tk+7bTTNB9wwAGa7b8vw+fgnz59+mh+8cUXnXPFihXT3KJFi5TWwZMeAADgBTo9AADAC4V+eMuevWM/uhYRGTlypOZt27ZpDoLAaXfggQdq3m+//TTbs4RERMaNG6fZnnFSv379vJaNHJQpU0Yzs7AKh379+jnH9uzHgsAebhMRufbaazU3bdo03eVkPHtIi+Et2GbOnKk5PJvT/i62a9cupXXwpAcAAHiBTg8AAPACnR4AAOCFQvFOT3iK5B133KF57Nixmrds2RLX9Q499FDn+OOPP9ZsjzWG39VZv3695g0bNsT1sxC/TZs2aV64cGGElSBeZ555pnMc652eKlWqOMedOnXSbE9n32ef2P8/zF7hd+rUqXmqE8B/mzZtmnP8wAMPaB49erTmihUrJnR9+xr20jB16tRx2j322GMJXT8RPOkBAABeoNMDAAC8UCiGt8aPH+8cv/LKK3m+hv04bfLkyc65WrVqaf7666/zfG0kx19//aV59erVcX1m9uzZzrE9JMm099S78cYbnWN7s0+bveKqSGLTl+3h64YNGzrn7BWec6vnuOOOy/PPRWLsZUJQMN1www3Osb1JsL1kS6LLO9jDZRs3btQ8ZMgQp91RRx2V0PUTwZMeAADgBTo9AADAC3R6AACAFwrFOz329g+5ycrKco6bNGmi+ZFHHtFsv8MTZm9rgfSqXr265o4dOzrn7rnnnhw/E/7n5cuX19ytW7ckVoecFC3q/hWS23crv+ylJX7//fe4PhOup0SJEkmtCbHNnTvXOT7xxBMjqgSxlCpVyjk2xmj++++/83y9BQsWOMc//PBD0q6dLDzpAQAAXqDTAwAAvFAohrfC09tefvllzWeddZbm8CqP4VVg47F27do8fwbJd9dddznHsYa3kNnGjBmj2f7e28sb5GbgwIFJr8l34SFNe0jZXlX922+/TVtNiJ/9d+uSJUuccw0aNNAc7zTyrVu3arZfIwmfO+GEEzRfcskl8RWbAjzpAQAAXqDTAwAAvFAohrfsWT0iIgMGDEjZz7I3NUTBEQRB1CUgRUaOHKn54Ycfds7ZQyT2ZsC5OfroozWHV4JG/tnDWSIip5xyiuYPPvgg3eUgDj/++KNme0eD8FDlc889p7ly5cpxXfu2227THJ5pXaNGDc0F5XcrT3oAAIAX6PQAAAAv0OkBAABeKBTv9CRq8ODBmu2pc+H3Q+yVIsNT+Gwnn3yyZlYXTS/7HtkZ0crOznaOX3/9dc2ffPJJXNeYPn265njvbdmyZZ1je6rseeedpzm84izgg8WLFzvHbdq00bx+/XrNN998s9OuWbNmcV3/scce0zxs2LCY7e688864rpdOPOkBAABeoNMDAAC8UCiHt+zVWJcuXao5vPrqhx9+mOPncxvesoWnyg8dOlRzkSJF4isWyDD2o/OWLVs65+wNBlPp1FNPdY5vuOGGtPxcxO+3336LuoSMtnPnTufYXvrh2muvdc7Zv/Ps33czZsxw2j344IOae/bsqXnjxo1OuzfffDPHa19zzTVOu86dO8f+HxARnvQAAAAv0OkBAABeKLDDW//884/m+fPnO+cuvvhizT///LPm0qVLO+3s4amTTjpJ80cffeS0s2d22Xbt2uUcv/POO5p79OihuXjx4jl+HvBNIitnJ/KZ8Mq/EydO1GzP3kJ03n///ahLyGj2ZrwiIp06ddKc2yzIunXrap49e7Zzzj62799PP/3ktLN/79obe7/22mv/q+zI8aQHAAB4gU4PAADwAp0eAADghQLzTk94B2X7vZuLLroo5ufsHddPP/1051zTpk0121Pumjdv7rQLr175r3Xr1jnHffr00XzggQdqbt26tdOuRIkSMetFYuJ972PatGmau3XrlqpyvHbEEUdonjJlinPOXpH5nHPO0VyyZMmEftarr76q2V5hHQWH/fcuu6yn1tixYzV37NjROWe/W1q+fHnn3KhRozRXqFBBs71DuojI1KlTNdvv9+S2zMuGDRs016pVy2ln//1wyCGHSEHAkx4AAOAFOj0AAMALkQ5v2dPS77nnHufcoEGDYn7u3HPP1dy9e3fN4Ud69sZq9jTWRYsWOe3s4ajevXtrDg97vffee5ovv/xyzWeeeabTzr6G/SgxrFGjRjHPwRXvhqNvv/225mXLlmk+7LDDUlOY52rXru0c9+/fP6nXt4evGd4qmOyhflv4lYXVq1drDv+5QXxeeuklzeGhJPu7F16ROZZnn33WObZXNg+v1hzL7t27NYdfMSkoQ1o2nvQAAAAv0OkBAABeSPvwlr3K8V133aX50Ucfddrtu+++mh966CHnXPv27TXbQ1rh1SXtoa958+ZpPvTQQ512L7zwgmb78dyWLVucdl9++aXmN954Q3N45dHwcJfNfhT8/fffx2wHV5cuXTTbj3hz8/LLL2t+6qmnkl4TUu/jjz+OugT8D0WL5vxrJDzjZ/v27ekoJ6O1atVKc5s2bZxz4eGueNgzr0TcDbxt4dWfGzZsmGO7mjVr5rmGdONJDwAA8AKdHgAA4AU6PQAAwAtpf6fHfs/Cfo+nTJkyTjv7vY2zzjrLOTdz5kzNQ4cO1WzvtCwism3bNs32lPjwSpaxxkLLli3rHNsrzNp59OjRTjv7fZ+wJ598MuY5xNagQYOoS/CKvZxE+L2aFi1aaC5VqlRSf254l+ZbbrklqddH8tnvmdSvX1/zihUrnHb2e3XPP/986gvLQD169Mj3NTZv3qx53LhxMc/VqVNHc7t27fL9cwsKnvQAAAAv0OkBAABeSPvw1sCBA3P85zt37nSO7RWZ7VVZRUS+/vrruH7Wvffeq7lv376aixQpEtfn42VPoc/pGPlnLz/wzDPPaP7mm29ifubpp5/O8fMiBXOl0KhNnz5d84MPPqh50qRJTrvs7GzNiUyTFXE3ALaHpXv27Om027p1a46fL126tHOc7GE2JObss8/W/PPPPzvnnnjiiXSXgxzYQ4v2ci0iIlWrVtX82Wefpa2mdOJJDwAA8AKdHgAA4IW0D28dcMABmtetW6c5vFrnwoULY17j/PPP13zqqadqbt26tdMuKytLc7KHtBCdww8/XPO3334bYSWZxR4CDG+2a7OHnvfbb7+EftbkyZM1z507V3Num8medtppmm+66SbnXHijQ0QvfC+LFy8eUSWwN3t95ZVXNO+zj/vcw95wtDCsrpwInvQAAAAv0OkBAABeoNMDAAC8kPZ3eqZNm6b53Xff1Wzvgi4iUqVKFc3XXnutc65ChQqaGSf2jz3uHN7hHqmXytV07e+9iEjLli0120sQlCxZMmU1IDns1X1F3L/vwzuEI7XOPPNMzfb7PVdddZXTzl7mJVPxpAcAAHiBTg8AAPBC2oe37Cmu9qO18GM2IJbDDjssxywismzZsnSXkzHszXvtVa+HDx+e72vbmxeKuCsqn3LKKZqvv/56p90RRxyR75+N9Bk7dqzm8BBk+LuK9OnQoYPmu+66S7M9fOwLnvQAAAAv0OkBAABeoNMDAAC8kPZ3eoD8ql27tubctktA3jRq1Eizvfvy8ccf77Tr37+/Znu3dBF3K5izzjpLc6tWrZx29nY0yBzNmjXTvHz5cudcqVKl0l0O9urXr1+O2Uc86QEAAF6g0wMAALzA8BaA/1KiRAnNnTt3ds6Fj4F/jRkzJuoSgFzxpAcAAHiBTg8AAPACnR4AAOAFOj0AAMALdHoAAIAX6PQAAAAv0OkBAABeoNMDAAC8QKcHAAB4wQRBEH9jY9aLyOrUlYMc1A6CoHKyL8q9jAz3M3NwLzNL0u8n9zIyMe9lnjo9AAAAhRXDWwAAwAt0egAAgBcyutNjjKlljPncGLPMGLPUGNMj6pqQOGPMa8aYdcaYJVHXgvwxxpQ0xnxljFm497t5b9Q1IXF8NzOPMaaIMWa+MWZC1LUkU0Z3ekRkp4j0DILgMBE5QUS6GmMOi7gmJG6YiJwTdRFIiu0i0jwIgqNE5GgROccYc0LENSFxw4TvZqbpISLLoy4i2TK60xMEwS9BEMzbm/+QPTewRrRVIVFBEEwTkY1R14H8C/b4c+9hsb3/YVZFIcV3M7MYY2qKyPkiMiTqWpItozs9NmNMlog0EpFZ0VYCQEQfny8QkXUiMjkIAr6bQMHwlIj0FpHdUReSbF50eowx+4rI2yJySxAEW6KuB4BIEAS7giA4WkRqikgTY0zDqGsCfGeMuUBE1gVBMDfqWlIh4zs9xphisqfD80YQBO9EXQ8AVxAEm0Tkc+GdEKAgOFlEWhpjskVkjIg0N8aMjLak5B1g9VoAACAASURBVMnoTo8xxojIqyKyPAiCJ6KuB8AexpjKxpjye3MpETlTRFZEWxWAIAj6BkFQMwiCLBG5TEQ+C4LgyojLSpqM7vTInh7rVbKnp7pg73/Oi7ooJMYYM1pEZohIPWPMGmNMp6hrQsKqicjnxphFIjJb9rzTk1FTY33CdxOFBdtQAAAAL2T6kx4AAAARodMDAAA8QacHAAB4gU4PAADwAp0eAADgBTo9AADAC0Xz0rhSpUpBVlZWikpBTrKzs2XDhg0m2dflXkZj7ty5G4IgqJzs63I/04/vZmZJxXeTexmN3O5lnjo9WVlZMmfOnORUhbg0btw4JdflXkbDGLM6FdflfqYf383MkorvJvcyGrndS4a3AACAF+j0AAAAL9DpAQAAXqDTAwAAvECnBwAAeCFPs7cAAEjEqlWrNJ999tmad+/e7bRbvTolExwBEeFJDwAA8ASdHgAA4AWGtwAASde9e3fneOzYsZp/++03zRdeeGHaagJ40gMAALxApwcAAHih0A9vLVu2TPOECROccy+99JLmJk2aaG7UqFHM691yyy2aixcvnowSASBjrV27VvNFF12keebMmU47Y/5vb9YjjjhC86uvvprC6gAXT3oAAIAX6PQAAAAv0OkBAABeKJTv9Njv6vTq1Uvzn3/+GfMz3333neYxY8bEbNe4cWPNzZs3T7REoECyvyP2FGIRkRIlSmieN2+e5j/++MNpN3LkSM2nn366c65GjRp5rumAAw7Q3KpVK+ec/X1EwWCvrCzi/h08a9asmJ97+OGHNdv3df/9909idfhfgiDQ3L59e+fcxIkTNdvvy9asWTP1haUJT3oAAIAX6PQAAAAvFMrhrbZt22q+++67Nec2vBWviy++WHP48f9ZZ52V7+sDURo4cKDmRx99NN/X+89//pPva9gefPBB5/jwww/XfNlll2kOP5Y/6KCDkloHYrNXUxYR+fDDD+P6nD1EEh4WRfps27ZN8xdffOGcs4eyP/roI83XXXdd6gtLE570AAAAL9DpAQAAXiiUw1sVK1bUfO+992q+7bbbnHb2Y7wDDzxQ8w8//BDz2ps2bdJsP94TYXgrU61evVqz/WdGRGT06NGaX3jhhZjXOP/88zUPHTo0idUl19tvv53nz1SqVMk5tlfTjVf9+vWd4xUrVmi2v3Pz58932i1evDjHfOSRRzrtGN5KLXvG1uWXX+6cs2cD2caPH+8ch2fmIRqlS5fWfOihhzrnfvrpJ83r1q1LW03pxJMeAADgBTo9AADAC3R6AACAFwrlOz22Ll26aH7xxRedcwsXLtRctmzZPF+7W7duiReGAuWTTz5xjt955x3N9ns79vslIu7O0LkJ7yhdUE2aNEnzypUrnXP16tXL8TP2OwAiItWqVUtqTfY02fD7Qvb7VrYPPvjAOb7ggguSWhNcr7/+uubwO5H2+2z238GJrM6N9Oratatz/Pnnn2u237vLJDzpAQAAXqDTAwAAvFDoh7ds/fv3d44feOABzQsWLMjz9bZv357vmpBenTp10rxkyRLNX331VVyfDw+DXnHFFZrDm1/aU3dLliyZpzqjcsghh+SYo2QPVcUazhJx/x1n0gqxBdWJJ56o2f77Mysry2n3xBNPaGZIq3Bp0qRJzHPjxo3T/Mgjjzjnkj3EnU486QEAAF6g0wMAALxApwcAAHgho97pueSSS5zjpk2bara3kLCXs89N+B2hRJbwR/LZuzz37dvXOffaa69ptrcrCb+P06dPH80NGzbUXKpUKaedvX0JErdjxw7n+Oabb9Y8fPjwuK7x5Zdfam7UqFFyCoN67733nONZs2ZptpduaNeundMu/J1BZrDfaX3//fedc507d053OUnDkx4AAOAFOj0AAMALGTW8NXLkSOd40aJFmuMd0rKdcsop+a4JyXffffdpHjJkiHPOHjaxlyzYd999U18YHJ999pnm8Hcz1k70xYsXd44HDx6suUGDBkmsDiLuCuTTpk2L6zMVKlRwjmvWrJnnn/v0009rDq/wbHv88cfzfG0kX3h4ujDjSQ8AAPACnR4AAOCFQjm8ZW+EdtFFF2n+5ptvnHY7d+7M189p2bJlvj6PvPnrr780h1cAHTFihGb70fjpp5/utDv77LM1F5ZVkjOJvfK1fS/i/S6GN3itVauW5iJFiuSzOoTZ/07nzZvnnAuCIMfPnHrqqXFd216pWcS9t/awZW6rcNvXWLNmjXOO1Z+RCJ70AAAAL9DpAQAAXqDTAwAAvFAo3+lZvny55u+//15zft/hCXvyySed42eeeSap14fr/vvv1/zwww875y699FLN9uravLdTsIwdO1ZzIt9HexVYEZHzzz9f83HHHaf5wgsvdNq1bt1a8xFHHJHnn+urqVOnag5PWbffwaldu7bm/fffP+b17N3Yv/jiC+dceMXnf4WXk7Df1Vm5cqXm8Ir7Y8aMybE+IDc86QEAAF6g0wMAALxQKIe37GnqgwYN0nzHHXc47f7+++98/Zyff/45X59H3jz00EMxz7Vv314zQ1oF18UXX6zZHoaeM2eO0279+vV5vvbs2bNzzCIiAwYM0HzLLbdoDv+dUKVKlTz/3Ezyxx9/OMf26wFh1atX13zVVVdprlu3rtNu1apVmu2/j999912nXeXKlTWfeeaZmnv27Om027Jli2Z7SQp79WggUTzpAQAAXqDTAwAAvFAoh7ds9gaT4ceusR6HhmeVdOvWTbP9aBXp1aRJE83h4Qv7HpUqVUqz/Zgc0TvppJM0T5w4UXN4U8kNGzZoXrt2reZ33nnHaffqq69qjrVCsIjI7t27Ndur+IZXGf70008177OPf/+fLzyjyh4KDLvhhhs033333Zrt+yUi0qtXL80ffvih5rJlyzrt2rZtq9neSPTrr7922nXp0iXHa7Ro0cJpx4wtJMK/bz0AAPASnR4AAOAFOj0AAMALhf6dHtu5554bV7vwuwH27uwDBw7UbK8uKuLuBsx4cvxmzZqluVGjRs654sWLa/7Pf/6j2d6FWcS9L/bKrDNnznTaNWjQIH/FIiUOPPDAXI//Ff4ON2vWTPOzzz6r2f4zlZspU6Y4x4899pjm3r17x3WNTLJo0aK429rv8djsJUNEYt+L8ArM9r2cMWOG5qZNm8aswX7nyH4PCOl15JFHRl1C0vCkBwAAeIFODwAA8EJGDW/Fa8eOHc6xPXRis4deRESKFCmSspoKu19++UWzvUmkiMiPP/6oObyJ65VXXqm5YsWKmu0p6iLuPbJXlf39998TrBiFgf3n47LLLtN8xhlnOO3sjTNzYw9l+yi8jIc91G9v2hpmD/VnZ2fHvIa9XIA9nCXirtx8+eWX5/j58DVym1KP9DnkkEOiLiFpeNIDAAC8QKcHAAB4wcvhrf79+8fVrlOnTs5xzZo1U1FORjjmmGM0b9682Tlnb0JoD1fk5qmnnop5zl6FuWHDhvGWiEKuaNH/++vK/vMmEv/w1qGHHprUmgo7Y0yePxMe5revYc8OC8/QszeAPuiggzSHV4kuV65cnmsC4sWTHgAA4AU6PQAAwAt0egAAgBcifafnt99+09yxY0fnnD091Z7emCh7SvXLL78c12fatGmT75/rC3u3+/vuu88517179xxzmP2+hT29VUQkKytL80MPPaQ5vJMzUs/+Lr3yyivOufr162tu165dUn/url27NC9cuDCuzxQrVsw5Pv7445NaU2HTsmVL59h+3y68grK9arL979teMiJs+PDhmsNT0StXrqz5nnvu0VyjRo3/VTYitn379qhLSBqe9AAAAC/Q6QEAAF6IdHjLHur44IMPnHP28Eb48ad9XKdOHc1z586NeQ37Me6WLVti1nTbbbdprl69esx2cPXt21dzeEhh3rx5mj/99NOY17BXVw6v6mxvNmjfc6Ter7/+6hyfc845msMbWIZX/M2vtWvXarZX6v3ss8/i+nx4A9pTTjklOYUVUuFV5suUKaN569atzrmTTz5ZcyJT28NDz23bttV83nnn5fl6iM7EiROd49xeUyjoeNIDAAC8QKcHAAB4ocAMb33//ffOuZkzZ2o+7bTTnHP2TB778XV4Zc/cZhnY7Bkn9saWJUuWjOvzcPXq1SvqEpBE4U0fw0NaNvt7XK9ePc2lSpWK+Zlt27ZptoehRdwhrdyGpW377bef5sGDB8f1GV8ce+yxzvGoUaM02/+uRUSmTJkS1zWvueYazUceeaTmRo0aOe3CG5AielWrVnWODz/8cM1Lly5NdzlpwZMeAADgBTo9AADAC3R6AACAFyJ9p+fEE0/MMYuIXH311Zpvuukm51x2dnaOOV4VKlRwjpcvX57nawC+aNGihXM8duzYmG3t9zjsXL58+Zifsae5z58/P5ESnfd4xo8fr5n3SHJ3wQUX5Jjhh/ASBrHevZs8ebJzzJR1AACAAo5ODwAA8EKkw1u28HRJe4OzP//8M+bn7Mfho0ePjtmuXLlymj/55JNESgS8dMYZZzjH7du315zbdy7RoapY7JW+w9PoL774Ys2+byoKJOroo4/WPGfOHM25/Q4ubHjSAwAAvECnBwAAeIFODwAA8EKBeacnrESJEppvv/32uD5jL6kOIDkOOugg53jo0KGaW7Zs6Zyzdz8/9NBDNb///vsxr29vAxPWvHlzzfa2FuEtDgDk35133ql5yZIlmtu1axdFOSnBkx4AAOAFOj0AAMALBXZ4C0DBZA89X3bZZc658PG/evXqldKaAORfVlaW5hkzZkRXSArxpAcAAHiBTg8AAPACnR4AAOAFOj0AAMALdHoAAIAX6PQAAAAv0OkBAABeoNMDAAC8QKcHAAB4wQRBEH9jY9aLyOrUlYMc1A6CoHKyL8q9jAz3M3NwLzNL0u8n9zIyMe9lnjo9AAAAhRXDWwAAwAt0egAAgBcyutNjjClpjPnKGLPQGLPUGHNv1DUhf4wx2caYxcaYBcaYOVHXg8Tw3cwsxpjyxpi3jDErjDHLjTEnRl0TEmOMec0Ys84YsyTqWlIho9/pMcYYESkTBMGfxphiIvKFiPQIgmBmxKUhQcaYbBFpHATBhqhrQeL4bmYWY8xwEZkeBMEQY0xxESkdBMGmqOtC3hljThWRP0VkRBAEDaOuJ9mKRl1AKgV7enR/7j0stvc/mdvLAwoJvpuZwxhTTkROFZEOIiJBEOwQkR1R1oTEBUEwzRiTFXUdqZLRw1siIsaYIsaYBSKyTkQmB0EwK+qakC+BiEwyxsw1xtwQdTFIHN/NjHGQiKwXkaHGmPnGmCHGmDJRFwXkJOM7PUEQ7AqC4GgRqSkiTYwxGfe4zjNNgyA4RkTOFZGuex/FohDiu5kxiorIMSLyQhAEjURkq4j0ibYkIGcZ3+n5197x5c9F5Jyoa0HigiD4ae9/rxOR8SLSJNqKkF98Nwu9NSKyxnpS95bs6QQBBU5Gd3qMMZWNMeX35lIicqaIrIi2KiTKGFPGGLPfv1lEzhKRjJxhkOn4bmaOIAh+FZEfjTH19v6jFiKyLMKSgJgy+kVmEakmIsONMUVkTwdvXBAEEyKuCYmrKiLj90z8kaIiMioIgo+iLQkJ4ruZWbqLyBt7Z259JyIdI64HCTLGjBaR00SkkjFmjYjcEwTBq9FWlTwZPWUdAADgXxk9vAUAAPAvOj0AAMALdHoAAIAX6PQAAAAv0OkBAABeoNMDAAC8kKd1eipVqhRkZWWlqBTkJDs7WzZs2GCSfV3uZTTmzp27IQiCysm+Lvcz/fhuZpZUfDe5l9HI7V7mqdOTlZUlc+bMSU5ViEvjxo1Tcl3uZTSMMatTcV3uZ/rx3cwsqfhuci+jkdu9ZHgLAAB4gU4PAADwAp0eAADgBTo9AADAC3R6AACAF+j0AAAAL9DpAQAAXsjTOj0AACTiu+++09y3b1/N48ePd9otWrRIc/369VNfGLzCkx4AAOAFOj0AAMALDG8BAJLuyy+/dI7POecczZUqVdLctWtXp13VqlVTWxi8xpMeAADgBTo9AADAC3R6AACAF3inBwXG66+/rvnjjz92zi1cuFDzypUrY17jhBNO0PzBBx9oLleuXDJKRAG1detWzaeddprmn376yWlnv2eSlZWV6rK8M2HCBM1t27Z1znXp0kXzAw88oLl06dKpLwzYiyc9AADAC3R6AACAFxjeQlpt2LDBOb7uuus0v//++5rLly/vtDvppJM0165dW/PUqVOddtOnT9dsD3UtX748wYqRTj///LNzvH79+hzbVahQwTn+/PPPNc+ZM0dzeEXf/fffP78lIuTrr7/W3K5dO83NmjVz2j3++OOa99mH/7+NaPAnDwAAeIFODwAA8IKXw1v2Y1YRkR07dmi2h0FGjhwZ8xr2Y/Nly5YlsbrMdvbZZzvH2dnZmu+44w7Nt99+u9OuYsWKOV5vxYoVznGTJk00r1q1SvPAgQOddnfffXd8BSNhixcv1vzMM88451avXp3jZ+x7llu7Pn36OMexhi+rV6/uHNvfdSTm77//do6vv/56zUceeaTmcePGOe0Y0ir4Nm7cqHns2LGaH3zwQaddeFbkv+6//37nuF+/fkmsLjn4UwgAALxApwcAAHiBTg8AAPBCRr3TE56+bL9TMG3aNM3jx4932u3evTvH6xljYv6sb775RnODBg2cc0yPdk2ePFnz/PnznXOXXnqp5oceeijP1w5PSb7llls033fffZqHDh3qtOOdntSzp5EPGTIkrs+UKFHCOb7qqqs0f/rpp5offvjhuK7XsWNH55gp6/l31113OcezZs3SbE9fL1u2bNpqQmJmzJjhHN92222a7fsa/l0Y63dj+M+G/ech/HdwVHjSAwAAvECnBwAAeKHADm/98ssvmtu3b++c++6773L8zObNm53jP//8U3MQBJobN27stJs7d26e69u1a5fmv/76K8+f98k///yjuW7dus65yy67LKk/65JLLtFsD2+Fp9lu2bJFM4/hk2fAgAGaBw0aFLNdhw4dNFeuXFlzr169nHb2uQULFmgOL31gr9xcpUoVzfafByRu+/btmsNLedgbvNasWTNdJSFB9qr4N9xwg3POXn7F/h61bt3aadeqVSvNI0aM0BxepmDmzJma7eUiihcvnteyk4YnPQAAwAt0egAAgBfo9AAAAC8UmHd6PvnkE+fYXtr8hx9+yPf17WnklSpVcs7ZY5z2Ls/h6a4//vhjjtc+7LDD8l1fJmvevLnm8JT10qVLJ/Vnhac8/+vXX391jkeNGqW5S5cuSa3BZ1u3btW8bds2zVlZWU67Bx54QHO1atViXs9eGsJeCn/dunVOuzJlymi+5557NJcsWTKOqvG/2O9n2e9Kirj3EgVfy5YtNYe3ULLflZs4cWJc16tTp47m8O/xNWvWaLZ/Bx911FHxFZsCPOkBAABeoNMDAAC8UGCGt8LTW+Md0rKHM8LXOP744zXXq1cv5jXsVVqffvppzbGGs0Tcx/Wvv/56XLX6Kp1DDAcffLDmww8/XPPSpUudduHdvJEc9hTx//znP5rDj9HtXdKff/55zeFlJ+wVYidMmKC5YsWKTrv+/ftrvummm/JaNv6HSZMmaT755JOdc8ccc0y6y0E+lCpVKuY5eyp6Muy3336aw6+VRIUnPQAAwAt0egAAgBciHd6yH5naKzf+LwceeKBme2ipadOm+a7Jfts8N/ZjwILy2A4ixYoVyzEjPY4++mjNJ554oubw8Ja9eai9Ie2tt97qtFu9enWOP8de+VlEpHv37nmuFbmbPn26Zvvv50WLFiV0vSlTpmi2/85s2LBhQtdDYuzdCewsIlKhQgXN9ir29ixKEZHhw4drtnc0OOCAA5x29izZGjVqJFhxcvGkBwAAeIFODwAA8AKdHgAA4IVI3+l5/PHHNdsruYaFp0jaK64m8h7P77//7hzbU2unTZsWVx3nn39+nn8uUs/eDTq8s7qNndVTw15Cwp6uGmavfN6mTRvN4XcMjDGar7vuOs3hXZ+RfG+88YbmBg0aaLaXhQgbNmyYZnu5ARH37117GYtHH33UadetW7c814r42e/X2d8vEZEnnnhCs/37ec6cOTGvN3bsWM32khUFFU96AACAF+j0AAAAL0Q6vHXDDTdoXr9+vXOufPnymu1pbyL/PS0ur1588UXn2F7N1RaeSjlu3Lik1YDUyM7O1rxixYqY7c4555y4rmdvRrtw4ULn3IwZMzS3bdtWc26rf/skvMloIuxh5F69emmuVatWvq+N3L322mua7b+Dw5v67tixQ/O9996r+eWXX3baxdrMskOHDk47ewPLeL+niJ+9mvmWLVucc7Nnz9ZsDzWHh8HsDX4L24bbPOkBAABeoNMDAAC8EOnw1sUXX5xjToUPPvhA88CBA2O2s1fx7dy5s3OOIa2CwZ6hFV5B+//9v/8X1zW6dOmi2d4wcf78+U67jRs3ag5vgmvPALNXLLVnsPhm165dmu0VfcOzsmK54IILnGP7e4vUWrJkiXP8zz//aC5aNPavinnz5mm2h6Nym8lz6aWXav7iiy+ccw899FCO10Ny2LO3wjsh2H+ftmvXLuY17BmXDG8BAAAUQHR6AACAF+j0AAAAL0T6Tk862buih6ff2QYPHqzZnlKPxG3btk3zunXrnHP2Dr2zZs3S/Nlnn8V1vaVLlyZUk/25zZs3x2x37bXXag6vwr3//vtrPuiggxKqI9Ncdtllmt9++23NuX3nbPG2Q/KtXbs25rnclmE4/PDDNd9///15/rk33nijc8yu6+lzwgknOMeLFy+O63P9+vVLRTlpwZMeAADgBTo9AADACxk9vGU/got3ymyzZs1SVU5Gs4ecBgwY4Jx7//33Nee2SnJuypUrp3nffffVbC8xIOJOs7Vdf/31znGsKev43+zNQu1Ve0VE3nrrLc32UNWxxx7rtDvyyCM1Dx06VHN4+BMFQ82aNWOey21j2fxeG+llL1sQ7+/MwoYnPQAAwAt0egAAgBcyanjL3vhOxF1d137UHp4h8vTTT2uuW7duiqrLbK1bt9Y8adIk51zJkiU1h1fctWc92TPswpsa2ptX2o/D69ev77RbuXKl5oMPPljzE0884bSzh8iQN59++qnmu+++O2a7Bx54QHO3bt2cc++++65me3irsK3umkmiGs6YOnWqc2yvdI70KlWqlGb79+Rpp53mtCtevHi6Sko6nvQAAAAv0OkBAABeoNMDAAC8UOjf6fnrr780jxw50jkXfrfkX5dffrlzfOWVV2reZx/6gYmw/13b79+IiLzzzjuaGzVqlND1d+7cqfmOO+7QHN5lvWrVqprffPNNzbzDk7gpU6Y4xzfffHPMtvau6GeccYbmX3/91Wk3cODAHD8f/rOD9Ennatj20hIvvPCCc+6qq65KWx2+W758uXP86quvaq5SpYrmm266yWlXmL+n/IYHAABeoNMDAAC8UCiHt/744w/N9kq79nBG2FNPPaU5PH2WIa3kKl++vHN8xBFH5Pkaf//9t3Pctm1bzRMmTNBsT4cXERkzZoxmVlpOjvAw8aZNmzSHp7LaSxLYQxj2PRNxN3m1p0pXqlQpX7UiceHlAqpVq6bZfnUgvEFovOw/D/aK6NnZ2U67ESNGJHR9xMf+7p1zzjnOOft1gUGDBmm+5JJLUl9YmvDbHgAAeIFODwAA8EKhHN6yH8HlNqRVp04dzbnNOEH+1atXT/OCBQucczfccIPm3377zTl31FFHabZXULYfrYq4Ky2fcMIJmp9//nmnXaKzwxBbePg3t9XN7SEMe9Xl8PevQoUKmu0h6vAsEaSPPZwl4m7YfNttt8X83BVXXKH522+/1bxo0SKn3YMPPqjZHpaePHmy044hztTq3bu35vDs1/bt22vu2bNn2mpKJ570AAAAL9DpAQAAXqDTAwAAvFAo3ulZsWKFcxzeMftfhx56qHP80UcfpawmuOx7dNdddznnHnvsMc27d+92zsW6Ry1btnSO7XsenmaJ1Fq/fn3Mc5UrV3aOzzzzTM3Tpk2L+blhw4ZpvvDCCxMvDikTXtrjX+H3e7p27Zpju/Bu6fZ7Xf3799dcmHfsLiw++eQTza+//rrm0qVLO+3spUEyFU96AACAF+j0AAAALxSK4a3w5oRjx47NsV337t2d49q1a6esJsR233335XqMwqVBgwYxz4WXjLBXV65YsaLm8FCJvRkpCj77/sUa9kLBEV7lul27djm2Gz58uHPcqlWrVJVUYPCkBwAAeIFODwAA8AKdHgAA4IUC+07PkiVLNNu7qod17txZc4sWLVJaE+Cja665xjnesWOH5vD7Wo0bN9ZsLztw6623pqg6ACIi27Zt02wvEyLi7qxu75jepk2b1BdWwPCkBwAAeIFODwAA8EKBHd6yV42cOHGic86eit6jRw/N9k7fAJLD3hFdxN2l2c4AojN06FDNzz//vHPupJNO0jxixIi01VQQ8aQHAAB4gU4PAADwQoEd3jrrrLM0h99Ef/LJJzUzpAUA8M1XX33lHD/44IOaw5s+X3/99ZpLlCiR2sIKOJ70AAAAL9DpAQAAXqDTAwAAvFBg3+mxV1fetWtXhJUAAFCwNGnSxDles2ZNRJUULjzpAQAAXqDTAwAAvGCCIIi/sTHrRWR16spBDmoHQVA52RflXkaG+5k5uJeZJen3k3sZmZj3Mk+dHgAAgMKK4S0AAOAFOj0AAMALGd3pMcbUM8YssP6zxRhzS9R1ITHGmFrGmM+NMcuMMUuNMT2irgmJM8bcuvc+LjHGjDbGlIy6JiTGGFPeGPOWMWaFMWa5MebEqGtC4owxPfZ+L5dm2u9Mb97pMcYUEZGfROT4IAh4sawQMsZUE5FqQRDMM8bsJyJzRaR1EATLIi4NeWSMqSEiX4jIYUEQbDPGjBORiUEQDIu2MiTCGDNcRKYHQTDE2DovWAAAEr1JREFUGFNcREoHQbAp6rqQd8aYhiIyRkSaiMgOEflIRLoEQfBNpIUlSUY/6QlpISLf0uEpvIIg+CUIgnl78x8islxEakRbFfKhqIiUMsYUFZHSIvJzxPUgAcaYciJyqoi8KiISBMEOOjyFWgMRmRUEwV9BEOwUkaki0ibimpLGp07PZSIyOuoikBzGmCwRaSQis6KtBIkIguAnEXlMRH4QkV9EZHMQBJOirQoJOkhE1ovIUGPMfGPMEGNMmaiLQsKWiMgpxpj9jTGlReQ8EakVcU1J40WnZ+/j1pYi8mbUtSD/jDH7isjbInJLEARboq4HeWeMqSAirWTPL8zqIlLGGHNltFUhQUVF5BgReSEIgkYislVE+kRbEhIVBMFyEXlERCbJnqGtBSKSMXtBedHpEZFzRWReEARroy4E+WOMKSZ7OjxvBEHwTtT1IGFniMj3QRCsD4LgHxF5R0ROirgmJGaNiKwJguDfp65vyZ5OEAqpIAheDYLg2CAIThWR30VkVdQ1JYsvnZ72wtBWoWeMMbLnvYHlQRA8EXU9yJcfROQEY0zpvfe1hex5RwuFTBAEv4rIj8aYenv/UQsRYXJBIWaMqbL3vw+UPe/zjIq2ouTJ+Nlbe8eWfxCRg4Mg2Bx1PUicMaapiEwXkcUisnvvP+4XBMHE6KpCoowx94rIpSKyU0Tmi8h1QRBsj7YqJMIYc7SIDBGR4iLynYh0DILg92irQqKMMdNFZH8R+UdEbguC4NOIS0qajO/0AAAAiPgzvAUAADxHpwcAAHiBTg8AAPACnR4AAOAFOj0AAMALdHoAAIAXiualcaVKlYKsrKwUlYKcZGdny4YNG0yyr8u9jMbcuXM3BEFQOdnX5X6mH9/NzJKK7yb3Mhq53cs8dXqysrJkzpw5yakKcWncuHFKrsu9jIYxZnUqrsv9TD++m5klFd9N7mU0cruXDG8BAAAv0OkBAABeoNMDAAC8QKcHAAB4gU4PAADwAp0eAADgBTo9AADAC3R6AACAF/K0OCEAAPBL+/btneOZM2dqHjNmjObjjz8+bTUliic9AADAC3R6AACAFxjeClm1apXmLl26OOfeeOMNzdWqVUtbTUjMlClTNDdv3tw5FwRBju2aNWuW6rIAoFDJzs6OeXzllVdqXrZsmdOuWLFiqSwrITzpAQAAXqDTAwAAvECnBwAAeCEl7/T88ccfmv/880/nXLly5TSXLl06FT8+XyZOnKh56tSpzrkhQ4Zo7tu3r+aiRXk1qqAYNmyY5sGDB2suUqSI027Xrl2ab731Vs3XXHON065r166auc9A8j300EPOcb9+/TTfcccdmh9++OG01QSRH3/8UfPcuXNjtvvmm28079y50znHOz0AAAARodMDAAC8kJLn9Y888ojm8KPLxx57TLM9rFBQHHvssTHPDRgwQLO9QmWdOnVSWRJyYQ9niYiMGDFC8+LFi+O6ht2uV69ezrnWrVtrrl27dgIVIi9Wr17tHD/55JOan3/+ec3//POP087+Po4aNSpF1SFZ7Fcg7GFoERFjjOannnpKc926dZ12nTp1SlF1EBHZtGmT5vD3zWb/HVmiRImU1pQMPOkBAABeoNMDAAC8kPbpKPfee6/mgw8+WHOrVq3SXUqO1q5dG3UJEPfRqojIggULNHfs2FHz+vXrnXbbt2/P8Xr169d3ju3ZW19//XXCdSL/XnvtNc3hIW976Pill17SbM8sEXGHnu+++27N4fuO6Ngze1544QXNuf2dW7VqVc0nnnhiagqDsu9R+NWUWC6//HLN++xT8J+jFPwKAQAAkoBODwAA8AKdHgAA4IW0v9NjT1Xs0KGD5smTJzvtGjdunK6SnFWjH3/88bg+M27cOM32CqJI3Lvvvqv55Zdfds7Zfz7s93HCKy3HcvvttzvHu3fv1nz99dfnqU7k3Y4dO5xj+3s2cOBAzeF3enr37q25fPnymufNm+e0s9/p2W+//fJVK1JjxowZmvv06RPXZ+x3fw477LCk1wSX/f0bPXp0hJWkDk96AACAF+j0AAAAL6RkeOuggw6Kq92WLVs029NMRUTeeOMNzRUqVEhOYTHYU5a/+uqrlP4suEaOHKn56quvjuszQRBotoe64v1MWLzXQOKGDh3qHN95552an376ac3du3eP63qTJk1yju2pzTVq1EikRCRZdna2c3zzzTfH9bkzzjhD8+mnn57MkhDyyiuvOMf2ptqZiic9AADAC3R6AACAF+j0AAAAL6TknR57KvrPP//snLOnlto+/vhj5/jtt9/WfN111yWttpzY7wMccsghmr/99tuYn2nXrl1Ka8pU9js8IiI9evTQbE8/L1mypNOuSpUqmu0lBjZu3BjzZ9nXCE9jtt8ni3faO/LGvjd33XWXc65t27aab7zxxriuZ+/AHn4XAQXPhRde6BwvXbo0x3blypVzju3lJUqVKpX8wjxnv1/XrVs355y9tESjRo00z58/P/WFpQlPegAAgBfo9AAAAC+kZHjLHi4IT1O0p6Lntrv1c889p/miiy5yzu2///75LdFh7/Kb25AWEmOvtByelh5raKlJkybO8aeffqp52LBhmnNbTfnBBx/U3KZNG+ecfQ0kj71L88knn6zZHp4UcVfaLVo0vr+GrrzySs3fffedc65Xr155qhOpt2TJEufYGJNju/Dw5plnnpmymgo7e2h/wYIFzrlVq1ZpDi+9MnbsWM2bNm2Kef3BgwdrPu+88zTXqVMn78UWUDzpAQAAXqDTAwAAvJDyDUfDb+afdNJJmnMb3lq0aJHmH3/80TkX7/CW/Sb6Sy+9FLPdm2++Gdf1EJ/w0NEtt9wSs609w8oe0nrmmWfi+llHHnmkc2zPHMxtVtAll1yi2d7cdPbs2XH9XOTsrbfe0rxy5UrNn3/+udOuYsWKcV1v1KhRmmfOnKk5PBuP4a2C4bbbbournb3qcng1fsRm/y7s1KmTc84e3gqzfw/brwSEN2K2d1NYs2ZNwnUWZDzpAQAAXqDTAwAAvECnBwAAeCHl7/SE2e/0DB8+PK7PzJgxwzk++uijNX/55Zc5ZhF3et99992Xpzpz0qBBA82p3vm9MBs4cKBzvHXr1pht+/Xrp7lv375xXb9p06aazz33XOecvbp2bvbdd1/N4dWfkTj7O12vXj3N9vc+N7/++qtzfOutt2retWuX5vBKsvHedyTfTTfdpNleniLsqKOO0mwvXcL3L3727yD7vVeR3N+RLVu2rOYDDzwwqTXl9vd7QcSTHgAA4AU6PQAAwAtpH96yNw+dMmWKZntqaljXrl1zPY4lCALNsVYDzYtly5Zpth/jhqcO+sheHdQeVhRxhyV2796d75+V7NVB7T8ndq3Iu48++kizPaRcrFixmJ+xN38Nr5y9fv16zV26dNHcp0+ffNWJxIVX+7X/LgwPT9puuOEGzZUrV05+YZ4pUaKEc9ywYcOkXt9eFuKAAw5wztn3+b333tNsLxlSUPGkBwAAeIFODwAA8ELah7dsPXv21Dx69OiU/qxkDG/Z7NVhfR3esjcUtIclfv/9d6ddrE1Fo2QPwW3fvl1zQay1ILM3gg1r1apVzHMff/yx5s6dO2tevXq1065u3bqaH3roIc32bBSk12uvveYc//LLLzm2s2caieT+5wEFj73zQVZWlnPOHt46/fTT01VSUvCkBwAAeIFODwAA8AKdHgAA4IVI3+lJNft9APudnvPOO89pV758ec333ntv6gvLEDfffLNme/ffwsDeDZyd1RNXpUoV59heXbddu3aaw8sY2FPRw1NvbfbyFPZO0Uivp556SvOrr77qnIv1vuQnn3ziHFevXj35hSFy1apVi7qEPOFJDwAA8AKdHgAA4IVCObxlT6WrVauW5l69ejnt2rdvH9f15s+fr5nhreQbNGhQ1CXIihUrnOPevXvn2C48NZPNEHN3xBFHOMcvvfSSZnsYxN4kWMT9btqbhx577LFOO3s6O9LLHrIeMmSI5vCq5UWL/t+vEXvFfYaz/BAe4i7oeNIDAAC8QKcHAAB4IdLhrUMOOUTzNddc45z77rvvNIdX9rzppps0hx+vp8ukSZM0h1cgrlChQrrLKdDs4ch0soe0wqvBbtiwQXPVqlU127O6wufwv1199dU5ZntTVxGRW265RfPatWs1v/322047hhfT55tvvnGOL7zwQs0rV66M+blbb71V8yOPPJL8wpBvX3/9tebw7ytbqVKlNNt/b9u7J4iI3H777ZrtmZh2FhH566+/NPfv319z27ZtnXYtW7aMWVOy8aQHAAB4gU4PAADwAp0eAADghUjf6bF3Sg7v3FvQrVmzRvOOHTsirCQ69nsa4Wmstg4dOmi23/NIhvBKv/b133333Zifs98nmzBhguZ69eolsTr8a+rUqc7xM888o9ke6z/uuOPSVhNc4WUdcnuPx2a/+4P0Cf/e+fbbbzW/8sorzrkXX3xR87Zt22Jes3jx4prLlCmjObf3gOz3cypXrhyzxs2bN2s+4IADnHa80wMAAJBkdHoAAIAXCuWKzMlmbzhqb572yy+/xPX5vn37Oscvv/yyZnu10kxjD0ssWrRI85YtW2J+5vTTT3eO7c0K7Wnl4WEme1Vne1ht+/btTjt781D78Wy/fv2cdm3atIn5s5B84dXRa9SooTnW6thIr9yGMGynnXaac3z44YenoBrkxF7eoUePHs65sWPH5vl64WEm++/jhg0baj7qqKPyfO3chJeoSSee9AAAAC/Q6QEAAF7I3LGXPDjooIM02yvCXnTRRU47+9Gibfjw4c6xPTMlk4e3WrRoofmdd97RbA8dibjDXeFZPEWKFNE8ffr0uH6uPVPM/ryIyKmnnqrZfoSa7Flj+N/mzJmj+bfffnPODR48WPO+++6btpoQ21133RVXO3tFfBFWoE+nUaNGac7LcNb555+v2d6Y++STT3baFStWLB/VFQ486QEAAF6g0wMAALxApwcAAHghc184SdDxxx+v+b333nPO2SuPhneTtdnvMjRr1iyJ1RVc9v9Oe/q6iDuF/7777sv3z7KnWdrv8IiIvPTSS5rLlSuX75+FvPn77781X3/99ZrtKeoiIldddVXaakJsS5Ys0bx169aY7QYMGKD54osvTmVJyIX9nunQoUOdc9WrV9d86aWXOuc6duyY2sIKEZ70AAAAL9DpAQAAXmB4KxfhzQ+feOIJzY8++qjmCy64wGnXuHHj1BZWwIWHMu69917NBx98sHPu/7d3x6B1VmEYx/8PLRZcRRerRlBMiuAgdLE6OISqRcFJg1twUqhLRJcO3dxc3FQ6iIrgog7qIOgiQUQLrUUpYrFCqGCEQgZRX4eE601JMb33tsd+5/9bcnJzuTzkhfBwvi/fGf89jh9wOD8/v+19KysrO37GoUOHpgurmRrfcj958uSOa9j+tGy1s7q6OlpfvHjxsu/bt2/faD3+1F5dW3Nzc6P1pbcRaHfc6ZEkSV2w9EiSpC5YeiRJUhe8p+cKLC0t7bjW7l16um7L03Y1e+PHS4yfzLywsNAijv7D8vLyaH38+PFtP9vY2BitFxcXr1km6Wpyp0eSJHXB0iNJkrrg5S1JM7O+vj5aHzt2bLTeu9c/Nf93586dax1Buurc6ZEkSV2w9EiSpC645yxpZtbW1lpHkKTLcqdHkiR1wdIjSZK6YOmRJEldsPRIkqQuWHokSVIXLD2SJKkLqardvzn5FfCxndfWHVV186w/1Fk24zyHw1kOy8zn6Sybuewsr6j0SJIkXa+8vCVJkrpg6ZEkSV3oovQk2ZPkmyQftc6i6SQ5nOT7JGeTvNQ6jyaX5GiSU0lOJ3mhdR5NLsmbSS4kOdU6i6Yz9Fl2UXqAo8CZ1iE0nSR7gNeAR4ADwNNJDrRNpUkkuRd4FjgI3AccSXJX21SawgngcOsQmokTDHiWgy89SfYDjwGvt86iqR0EzlbVj1X1B/Au8ETjTJrMArBaVRtV9SfwOfBk40yaUFV9AfzWOoemN/RZDr70AK8CLwJ/tw6iqd0K/Dz2/fmt13T9OQU8mOSmJDcCjwK3Nc4kaeAGXXqSHAEuVNXXrbNI+ldVnQFeAT4FPga+Bf5qGkrS4A269AAPAI8n+YnNSyEPJ3mrbSRN4Re27wbs33pN16GqeqOq7q+qh4B14IfWmSQN26BLT1W9XFX7q2oOeAr4rKqeaRxLk/sKuDvJnUluYHOmHzTOpAkluWXr6+1s3s/zdttEkoZu0KVHw7J1w+vzwCds/jfee1V1um0qTeH9JN8BHwLPVdXvrQNpMkneAb4E7klyPsly60yazNBn6TEUkiSpC+70SJKkLlh6JElSFyw9kiSpC5YeSZLUBUuPJEnqgqVHkiR1wdIjSZK6YOmRJEld+AfkPEpeuVbTRgAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "code", "metadata": { "id": "SkRpc-iEKWl6", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 641 }, "outputId": "c0a9da88-eaa5-4a4b-9ef1-6a5ad671ee18" }, "source": [ "modelANN = tf.keras.Sequential([\n", " tf.keras.layers.Flatten(input_shape=(28, 28)),\n", " tf.keras.layers.Dense(128, activation='relu'),\n", " tf.keras.layers.Dense(32, activation='relu'),\n", " tf.keras.layers.Dense(10, activation='softmax')\n", "])\n", "\n", "modelANN.summary()\n", "\n", "modelANN.compile(optimizer=tf.keras.optimizers.SGD(),\n", " loss=tf.keras.losses.CategoricalCrossentropy(),\n", " metrics=['accuracy'])\n", "historyANN = modelANN.fit(trainImages, trainLabels1hot, batch_size=128, epochs=10)" ], "execution_count": 169, "outputs": [ { "output_type": "stream", "text": [ "Model: \"sequential_93\"\n", "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "flatten_43 (Flatten) (None, 784) 0 \n", "_________________________________________________________________\n", "dense_190 (Dense) (None, 128) 100480 \n", "_________________________________________________________________\n", "dense_191 (Dense) (None, 32) 4128 \n", "_________________________________________________________________\n", "dense_192 (Dense) (None, 10) 330 \n", "=================================================================\n", "Total params: 104,938\n", "Trainable params: 104,938\n", "Non-trainable params: 0\n", "_________________________________________________________________\n", "Epoch 1/10\n", "469/469 [==============================] - 1s 3ms/step - loss: 1.3553 - accuracy: 0.6321\n", "Epoch 2/10\n", "469/469 [==============================] - 1s 3ms/step - loss: 0.5515 - accuracy: 0.8579\n", "Epoch 3/10\n", "469/469 [==============================] - 1s 3ms/step - loss: 0.4170 - accuracy: 0.8850\n", "Epoch 4/10\n", "469/469 [==============================] - 1s 3ms/step - loss: 0.3636 - accuracy: 0.8974\n", "Epoch 5/10\n", "469/469 [==============================] - 1s 3ms/step - loss: 0.3323 - accuracy: 0.9046\n", "Epoch 6/10\n", "469/469 [==============================] - 1s 3ms/step - loss: 0.3095 - accuracy: 0.9105\n", "Epoch 7/10\n", "469/469 [==============================] - 1s 3ms/step - loss: 0.2919 - accuracy: 0.9160\n", "Epoch 8/10\n", "469/469 [==============================] - 1s 3ms/step - loss: 0.2769 - accuracy: 0.9204\n", "Epoch 9/10\n", "469/469 [==============================] - 1s 3ms/step - loss: 0.2639 - accuracy: 0.9243\n", "Epoch 10/10\n", "469/469 [==============================] - 1s 3ms/step - loss: 0.2523 - accuracy: 0.9276\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "s7c0p13izzCz", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 780 }, "outputId": "d498fb3a-15b6-4e60-9916-1ed601c00903" }, "source": [ "# input image dimensions\n", "img_rows, img_cols = 28, 28\n", "trainImages = trainImages.reshape(trainImages.shape[0], img_rows, img_cols, 1)\n", "testImages = testImages.reshape(testImages.shape[0], img_rows, img_cols, 1)\n", "input_shape = (img_rows, img_cols, 1)\n", "\n", "modelCNN = tf.keras.Sequential([\n", " tf.keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),\n", " tf.keras.layers.Conv2D(64, (3, 3), activation='relu'),\n", " tf.keras.layers.MaxPooling2D(pool_size=(2,2)),\n", " tf.keras.layers.Dropout(0.25),\n", " tf.keras.layers.Flatten(),\n", " tf.keras.layers.Dense(128, activation='relu'),\n", " tf.keras.layers.Dropout(0.5),\n", " tf.keras.layers.Dense(10, activation='softmax')\n", "])\n", "\n", "modelCNN.summary()\n", "\n", "modelCNN.compile(optimizer=tf.keras.optimizers.SGD(),\n", " loss=tf.keras.losses.CategoricalCrossentropy(),\n", " metrics=['accuracy'])\n", "\n", "historyCNN = modelCNN.fit(trainImages, trainLabels1hot, batch_size=128, epochs=10)" ], "execution_count": 167, "outputs": [ { "output_type": "stream", "text": [ "Model: \"sequential_91\"\n", "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "conv2d_77 (Conv2D) (None, 26, 26, 32) 320 \n", "_________________________________________________________________\n", "conv2d_78 (Conv2D) (None, 24, 24, 64) 18496 \n", "_________________________________________________________________\n", "max_pooling2d_36 (MaxPooling (None, 12, 12, 64) 0 \n", "_________________________________________________________________\n", "dropout_10 (Dropout) (None, 12, 12, 64) 0 \n", "_________________________________________________________________\n", "flatten_41 (Flatten) (None, 9216) 0 \n", "_________________________________________________________________\n", "dense_185 (Dense) (None, 128) 1179776 \n", "_________________________________________________________________\n", "dropout_11 (Dropout) (None, 128) 0 \n", "_________________________________________________________________\n", "dense_186 (Dense) (None, 10) 1290 \n", "=================================================================\n", "Total params: 1,199,882\n", "Trainable params: 1,199,882\n", "Non-trainable params: 0\n", "_________________________________________________________________\n", "Epoch 1/10\n", "469/469 [==============================] - 135s 289ms/step - loss: 1.0480 - accuracy: 0.6678\n", "Epoch 2/10\n", "469/469 [==============================] - 138s 295ms/step - loss: 0.4497 - accuracy: 0.8621\n", "Epoch 3/10\n", "469/469 [==============================] - 136s 289ms/step - loss: 0.3690 - accuracy: 0.8874\n", "Epoch 4/10\n", "469/469 [==============================] - 136s 289ms/step - loss: 0.3260 - accuracy: 0.9012\n", "Epoch 5/10\n", "469/469 [==============================] - 136s 290ms/step - loss: 0.3031 - accuracy: 0.9090\n", "Epoch 6/10\n", "469/469 [==============================] - 136s 291ms/step - loss: 0.2810 - accuracy: 0.9152\n", "Epoch 7/10\n", "469/469 [==============================] - 139s 297ms/step - loss: 0.2654 - accuracy: 0.9210\n", "Epoch 8/10\n", "469/469 [==============================] - 136s 290ms/step - loss: 0.2526 - accuracy: 0.9242\n", "Epoch 9/10\n", "469/469 [==============================] - 136s 291ms/step - loss: 0.2392 - accuracy: 0.9280\n", "Epoch 10/10\n", "469/469 [==============================] - 136s 289ms/step - loss: 0.2303 - accuracy: 0.9301\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "Qnso7WQ8zI61", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 299 }, "outputId": "a3bbb765-db29-4edf-df2e-1577739985c7" }, "source": [ "import matplotlib.pyplot as plt\n", "\n", "loss1, = plt.plot(historyANN.history['loss'], label = 'loss ANN')\n", "acc1, = plt.plot(historyANN.history['accuracy'], label = 'acc ANN')\n", "\n", "loss2, = plt.plot(historyCNN.history['loss'], label = 'loss CNN')\n", "acc2, = plt.plot(historyCNN.history['accuracy'], label = 'acc CNN')\n", "plt.legend([loss1, (loss1, acc1), (loss1, acc1, loss2), (loss1, acc1, loss2, acc2)], ['Loss ANN', 'Acc ANN', 'Loss CNN', 'Acc CNN'])\n", "plt.xlabel('Batch #')\n", "plt.ylabel('Loss & acc')" ], "execution_count": 170, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "Text(0, 0.5, 'Loss & acc')" ] }, "metadata": { "tags": [] }, "execution_count": 170 }, { "output_type": "display_data", "data": { "image/png": "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If+Mw4cPs2TJEkaNGsX06dO5+OKL2b17N4WFhYhIYEA7gFtuuYWnnnoKgOuvv56MjAxaWnwjJldUVJCbm9snMYXy9tEVwHvAOBEpEZFvishNInKTv8i9wBDgdyKyRUT67uGAE5SeFE1mcrROVKOUCiljDIsXL2bevHns3buXzZs384tf/IIjR44AMHToUB5++GFcLlenx1utVp588sk+jyuUdw1dY4wZYYyxG2MyjTF/MMb8rzHmf/37bzDGJBtjpvpfnT7o0F9m5qawsbCSwfaAnVIqtLZs2cKsWbPIz89n8eLFVFX5bnZ85JFHmDBhAvn5+YGB6t5++22mTp3K1KlTmTZtWodhqd966y3sdjs33XRTYNuUKVM477zzAEhLS2PBggU8/fTTncZy22238Zvf/KbDUBanKqIHnWtvZl4Kf/v4IPsqGhiVFvrmoVKqa7c9sYhSb9/eGJJuSWPZDZ2P+9+dr33tazz66KPMnTuXe++9l5///OcsW7aMBx54gP379xMVFUV1tW+8soceeojHHnuM2bNnU19fj9PpDDrXp59+yvTp07v9vDvuuIOLLrqIb3zjGx32ZWdnc+655/LMM8/wxS9+8YS/S1fCftfQQFHgn9Bexx1SSrWpqamhurqauXPnAvD1r3+d9evXA5Cfn8+1117Ln//858CoobNnz+aHP/whjzzyCNXV1Z2OJtqTkSNHctZZZ7F8+fJO99911108+OCDeL3ek/xWHWmLwG9kaiypcQ4+LKxkyczscIejVEQ7mV/u/e3VV19l/fr1vPLKK9x///1s27aNO++8k0suuYTXXnuN2bNn88YbbzB+/PjAMRMnTuS5557r8dx33303V155ZSABtTdmzBimTp3KqlWr+uy7aIvAT0SYkZOiHcZKqYDExESSk5N55513AHjmmWeYO3cuXq+X4uJizj//fH75y19SU1NDfX09e/fuZfLkydxxxx0UFBSwc+fOoPPNnz+flpYWHn/82Ig6W7duDZy/zfjx45kwYULQxPbtLV26lIceeqjPvqcmgnZm5qVQXNnEoZqmcIeilAqDxsZGMjMzA69f//rXPP3009x+++3k5+ezZcsW7r33XjweD1/96leZPHky06ZN43vf+x5JSUksW7YsMK+x3W7noosuCjq/iPDCCy+wZs0aRo0axcSJE7nrrrsYPnx4h1iWLl1K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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } } ] } ], "metadata": { "colab": { "name": "annKeras.ipynb", "provenance": [], "collapsed_sections": [] }, "kernelspec": { "name": "python3", "display_name": "Python 3" } }, "nbformat": 4, "nbformat_minor": 0 }