diff --git a/01_materials/labs/lab_1.ipynb b/01_materials/labs/lab_1.ipynb index 667fd306e..bb69c0e34 100644 --- a/01_materials/labs/lab_1.ipynb +++ b/01_materials/labs/lab_1.ipynb @@ -31,7 +31,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -45,9 +45,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "(1797, 8, 8)" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "digits.images.shape" ] @@ -63,9 +74,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "(1797, 64)" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "digits.data.shape" ] @@ -81,9 +103,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "(1797,)" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "digits.target.shape" ] @@ -99,9 +132,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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JkyYoJ6eHm3dulWLFi1Sc3Ozfv3rXyd7ibjALFy4UL/5zW+0cuVKfelLX9K2bdu0ZMkSdXV1afny5cle3nmhkI0aP368xo8fP+C2WCymlpYW3XPPPcrNzU3OwnBBmjRpktavXz/gtltuuUX/+Mc/tH79ev3qV79SVlZWklaHC01LS4vWrVunxx9/XD/84Q8lSRUVFTpy5IhWrVql73//+8rLy0vyKgcvZd+yjkd3d7eWLVumsrIy5eTkKC8vT9ddd51efPHFs27zzDPP6JJLLlFWVpYuv/zyM7413N7ergULFmj8+PHKzMxUaWmpamtrh/ytu//+7/+Wc07f/e53h3Q/GBrpNo+SdNFFFykjI0PDhg0b8n0hWKk8j01NTXLOac6cOQNunzNnjj766CP9/ve/D2xfiZTWr5CPHTum9957Tw8++KAKCwvV09Oj7du36/bbb1dDQ4PuvffeAfffsmWLduzYoRUrVmjEiBFas2aN7rrrLoXDYc2aNUvSx8M2ZcoUZWRk6LHHHlM0GtWePXu0atUqxWIxNTQ0nHNNJSUlkj5+tTsYfX19amxs1MSJE3XjjTcOalvYkA7z6JzTiRMn1NXVpT/84Q9qbGzUsmXLFA6n9aEkLaXyPP7f//2fLrroIo0dO3bA7ZMnT+7/fkpyKaqhocFJcnv37o17m+PHj7ve3l43b948V15ePuB7ktzw4cNde3v7gPtPmjTJTZw4sf+2BQsWuJEjR7qDBw8O2P6JJ55wklxLS8uAzOrq6gH3i0ajLhqNxr3mk373u985SW716tWD3hZD70KZx9WrVztJTpILhULukUceiXtbJE66z+PXvvY1d+mll57xe5mZme573/vep2ZYlNZvWUvSCy+8oKlTp2rkyJEKh8OKRCJat26d/va3v51235tvvlkXX3xx/5+HDRumO++8U/v379c777wjSXr55Zc1bdo0FRQU6Pjx4/1ft9xyiyRp165d51zP/v37tX///kE/jnXr1ikcDquqqmrQ28KOVJ/Hqqoq7d27V9u2bdNDDz2k//zP/9SiRYvi3h62pPI8nutzw1P1M8XTupA3b96sO+64Q4WFhdqwYYP27NmjvXv3au7cueru7j7t/p98++PU244cOSJJOnTokF566SVFIpEBX1dccYUk6d133w38cbz77rvasmWLbr311jOuEakhHeZx7Nix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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Selecting 9 random indices\n", "random_indices = np.random.choice(len(digits.images), 9, replace=False)\n", @@ -131,11 +175,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeQAAAH2CAYAAAChsP9pAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8ekN5oAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAj/ElEQVR4nO3db2yT9f7G8atbyxQZ6yZE3Bjr0kVBI8yYqMiPOCQxwiFhKtEQExj6gBNEDkSTc04MboACGg3zgXNqzHYSMBLisqGSGP8wTJRETJx6jCiLlowsm4iHbYgDxr6/B4bFiUDH99766fZ+JXtgvXv127uf9rLtbe+Qc84JAACkVEaqFwAAAChkAABMoJABADCAQgYAwAAKGQAAAyhkAAAMoJABADCAQgYAwAAKGQAAA9K2kOvr6xUKhfT5558HkhcKhbR69epAsv6YWVVVddnX//7773X//fcrNzdX48eP12233abdu3cHt0AEhnmEJcxjekrbQh7tEomEZs+ere+++061tbXatWuXJk+erPLycr311lupXh7GGOYRlozWeQynegH4a1u3btXJkyf13nvvqaCgQJJ0zz336KabbtK6det07733KiOD/57CyGAeYcloncf0W/EQ9Pb26vHHH1dpaalycnKUl5en2bNnq6mp6YLXeeWVV3TdddcpKytLN9xwg958883ztuno6NDKlSs1depUjRs3TsXFxdqwYYP6+voCW/snn3yiWbNmDQybJGVmZmrBggVqa2vTZ599FthtYWQwj7CEebRnVL9DPnXqlH755Rc98cQTKigo0OnTp/XBBx/ovvvuU11dnZYtWzZo+927d2vv3r3auHGjrrrqKtXU1Gjp0qUKh8NasmSJpN+H7dZbb1VGRoaeeuopxeNx7d+/X08//bQSiYTq6uouuqZYLCbp949cLub06dPKy8s77/KsrCxJ0ldffaXbb789yT0BC5hHWMI8GuTSVF1dnZPkDhw4kPR1+vr63JkzZ9wjjzzibr755kH/TpK78sorXUdHx6Dtp0+f7kpKSgYuW7lypZswYYI7fPjwoOs///zzTpL75ptvBmVWVlYO2i4ej7t4PH7JtZaXl7toNOp6enoGXT537lwnyW3evPmSGRg5zCPzaAnzmJ7zOKo/spakXbt2ac6cOZowYYLC4bAikYhef/11ffvtt+dtO3/+fF1z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oVBIq1evDiTrj5lVVVWXff3vv/9e999/v3JzczV+/Hjddttt2r17d3ALRGCYR1jCPKantC3k0S6RSGj27Nn67rvvVFtbq127dmny5MkqLy/XW2+9lerlYYxhHmHJaJ3HpH6pCyNv69atOnnypN577z0VFBRIku655x7ddNNNWrdune69994R+X8sAYl5hC2jdR7Tb8VD0Nvbq8cff1ylpaXKyclRXl6eZs+eraampgte55VXXtF1112nrKws3XDDDXrzzTfP26ajo0MrV67U1KlTNW7cOBUXF2vDhg2B/FzcOZ988olmzZo1MGySlJmZqQULFqitrU2fffZZYLeFkcE8whLm0Z5R/Q751KlT+uWXX/TEE0+ooKBAp0+f1gcffKD77rtPdXV1WrZs2aDtd+/erb1792rjxo266qqrVFNTo6VLlyocDmvJkiWSfh+2W2+9VRkZGXrqqacUj8e1f/9+Pf3000okEqqrq7vommKxmKTfP3K5mNOnTysvL++8y7OysiRJX331lW6//fYk9wQsYB5hCfNokEtTdXV1TpI7cOBA0tfp6+tzZ86ccY888oi7+eabB/07Se7KK690HR0dg7afPn26KykpGbhs5cqVbsKECe7w4cODrv/88887Se6bb74ZlFlZWTlou3g87uLx+CXXWl5e7qLRqOvp6Rl0+dy5c50kt3nz5ktmYOQwj8yjJcxjes7jqP7IWpJ27dqlOXPmaMKECQqHw4pEInr99df17bffnrft/Pnzdc011wz8c2Zmph588EG1trbqyJEjkqR33nlH8+bNU35+vvr6+gb+FixYIEnat2/fRdfT2tqq1tbWS6579erV6urq0rJly/TDDz+os7NT69ev16effipJafn9CJhH2MI82pKeq05SQ0ODHnjgARUUFGj79u3av3+/Dhw4oIcffvgvT+M4ZcqUC1527NgxSVJnZ6fefvttRSKRQX833nijJOnnn38OZO3z589XXV2dPv74Y8XjcU2ZMkUNDQ3atGmTJA367gTpgXmEJcyjPaP6O+Tt27eruLhYO3fuHHQWllOnTv3l9h0dHRe87Oqrr5YkTZo0STNnztQzzzzzlxn5+fm+yx6wfPlyPfTQQzp06JAikYhKSkq0ZcsWhUIhzZ07N7DbwchgHmEJ82jPqC7kUCikcePGDRq2jo6OCx5F+OGHH6qzs3PgY5mzZ89q586disfjA+exXLRokfbs2aN4PK7c3Nxhvw/hcFgzZsyQJHV1denVV1/V4sWLVVRUNOy3jWAxj7CEebQn7Qv5o48++ssj8hYuXKhFixapoaFBq1at0pIlS9TW1qZNmzbp2muv1aFDh867zqRJk3TXXXdp/fr1A0cRHjx4cNCh/Rs3btT777+vO+64Q2vWrNH111+v3t5eJRIJ7dmzR7W1tRc9CXVJSYkkXfJ7kp9++kkvvPCC5syZo+zsbB08eFDPPfecMjIy9NJLLyW5dzDSmEdYwjymmVQfVXa5zh1FeKG/H3/80Tnn3NatW10sFnNZWVluxowZ7rXXXnOVlZXuz3ddknv00UddTU2Ni8fjLhKJuOnTp7sdO3acd9tHjx51a9asccXFxS4Sibi8vDx3yy23uCeffNKdOHFiUOafjyIsKipyRUVFl7x/x44dc3fffbebPHmyi0Qibtq0ae6xxx5zR48eHfK+wvBjHmEJ85ieQs45NxLFDwAALmxUH2UNAEC6oJABADCAQgYAwAAKGQAAAyhkAAAMoJABADAgqR8G6e/vV3t7u7Kzswf9qgsgSc459fT0KD8/f0R+1J15xMUwj7BkKPOYVCG3t7ersLAwkMVh9Gpra7vor/AEhXlEMphHWJLMPCZVyNnZ2QOBEydO9F+Zh3fffdc7Y/Pmzd4ZXV1d3hnPPvusd8bf/vY37wxf3d3dKiwsHJiT4WZpHv/5z396Z9TW1npnLFy40Dvj5Zdf9s6IRqPeGb7G8jwuXbrUO+Prr7/2zhgtr21BGMo8JlXI5z6GmThxYsoHbvz48d4ZmZmZ3hlBfBQWxH1J9ePxRyP1cZ2leczKykrp7Z8TiUS8M4LYl6l+PP5oLM5jEHPAa9vwSGYeOagLAAADKGQAAAygkAEAMIBCBgDAAAoZAAADKGQAAAygkAEAMIBCBgDAAAoZAAADKGQAAAygkAEAMIBCBgDAAAoZAAADKGQAAAxI6vSLQUkkEt4Zy5cv986orq72zmhsbPTOCOK+BLFPLZzDNhWampq8M1588UXvjCDm4D//+Y93RlVVlXdGEM+tsaq+vt474/jx4ybWsXbtWu+MnJwc74yysjLvjJHEO2QAAAygkAEAMIBCBgDAAAoZAAADKGQAAAygkAEAMIBCBgDAAAoZAAADKGQAAAygkAEAMIBCBgDAAAoZAAADKGQAAAygkAEAMIBCBgDAAAoZAAADwiN5Y9Fo1Dujq6vLOyM3N9c7o7S01DujqanJO6OlpcU7I91O4h2U//3vf94ZRUVF3hnV1dXeGUE8t4I4MX0Q92Wsam5u9s6IxWLeGUG8HgQxBxUVFd4ZiUTCO2Mk8Q4ZAAADKGQAAAygkAEAMIBCBgDAAAoZAAADKGQAAAygkAEAMIBCBgDAAAoZAAADKGQAAAygkAEAMIBCBgDAAAoZAAADKGQAAAygkAEAMIBCBgDAgPBI3lgQJ1Hfu3evd0ZVVZV3RmlpqXfGrFmzvDOCOKl5ECckT0fl5eXeGWvXrvXOaGxs9M4I4kTsXV1dJtYRi8W8M9JREK8p9fX13hlNTU3eGZWVld4Zhw8f9s5It3nkHTIAAAZQyAAAGEAhAwBgAIUMAIABFDIAAAZQyAAAGEAhAwBgAIUMAIABFDIAAAZQyAAAGEAhAwBgAIUMAIABFDIAAAZQyAAAGEAhAwBgAIUMAIAB4VQvYKjKysq8M5qbm70zglBVVZXqJYxp0WjUOyOIx3DFihXeGTk5Od4ZQWhsbPTOWLt2rXdGOqqoqPDOaGlp8c7Ytm2bd0YQz62ioiLvjPr6eu+MkXyd5h0yAAAGUMgAABhAIQMAYACFDACAARQyAAAGUMgAABhAIQMAYACFDACAARQyAAAGUMgAABhAIQMAYACFDACAARQyAAAGUMgAABhAIQMAYACFDACAAeFUL2AsC+Jk4mVlZd4ZuHxr1671zgjiMYzFYt4ZFRUV3hmJRMI7Y6yKRqPeGfX19d4ZVlRXV3tnNDY2emeMJN4hAwBgAIUMAIABFDIAAAZQyAAAGEAhAwBgAIUMAIABFDIAAAZQyAAAGEAhAwBgAIUMAIABFDIAAAZQyAAAGEAhAwBgAIUMAIABFDIAAAZQyAAAGBBO9QKGKoiTVgehuLjYO6O5udk7w8r+SEctLS3eGeXl5SYyghDE/jh+/Lh3Bi5fEPs/Go16ZwShoqLCO6Oqqso7YyTxDhkAAAMoZAAADKCQAQAwgEIGAMAAChkAAAMoZAAADKCQAQAwgEIGAMAAChkAAAMoZAAADKCQAQAwgEIGAMAAChkAAAMoZAAADKCQAQAwgEIGAMCAcKoXMFTFxcXeGcuXL/fO6Orq8s7Ytm2bd0YsFvPOGKtKS0u9M4LY/y+++KJ3RhBmzZrlnVFdXe2/EFy2iooK74wgnhdlZWXeGUG8xgaRcfz4ca/rd3d3J70t75ABADCAQgYAwAAKGQAAAyhkAAAMoJABADCAQgYAwAAKGQAAAyhkAAAMoJABADCAQgYAwAAKGQAAAyhkAAAMoJABADCAQgYAwAAKGQAAA5I6H7JzTtLQzus4XE6ePOmdce7+pFpvb693hoXH5NwaRmq/WprHvr6+VC8hMGfPnvXOOHHihHeG7+M6lufxzJkz3hmnTp3yzvj111+9M4J4rQ+C7+Pa09MjKbl5DLkktjpy5IgKCwu9FoXRr62tTVOnTh3222EekQzmEZYkM49JFXJ/f7/a29uVnZ2tUCgU2AIxOjjn1NPTo/z8fGVkDP+3IMwjLoZ5hCVDmcekChkAAAwvDuoCAMAAChkAAAMoZAAADKCQAQAwgEIGAMAAChkAAAMoZAAADPh/i4j7hsoFi6AAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Selecting 9 random indices of images labelled as 9\n", "random_indices = np.random.choice(np.where(digits.target == 9)[0], 9, replace=False)\n", @@ -176,7 +231,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -202,11 +257,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "X_train shape: (1437, 64)\n", + "y_train shape: (1437,)\n", + "X_test shape: (360, 64)\n", + "y_test shape: (360,)\n" + ] + } + ], "source": [ "print(f'X_train shape: {X_train.shape}')\n", "print(f'y_train shape: {y_train.shape}')\n", @@ -240,10 +306,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Before one-hot encoding: 6\n", + "After one-hot encoding: [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n" + ] + } + ], "source": [ + "import tensorflow as tf;\n", + "\n", "from tensorflow.keras.utils import to_categorical\n", "\n", "print(f'Before one-hot encoding: {y_train[0]}')\n", @@ -273,11 +350,93 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
Model: \"sequential\"\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1mModel: \"sequential\"\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
+       "┃ Layer (type)                     Output Shape                  Param # ┃\n",
+       "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
+       "│ dense (Dense)                   │ (None, 64)             │         4,160 │\n",
+       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
+       "│ dense_1 (Dense)                 │ (None, 64)             │         4,160 │\n",
+       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
+       "│ dense_2 (Dense)                 │ (None, 10)             │           650 │\n",
+       "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
+       "
\n" + ], + "text/plain": [ + "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n", + "┃\u001b[1m \u001b[0m\u001b[1mLayer (type) \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m Param #\u001b[0m\u001b[1m \u001b[0m┃\n", + "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n", + "│ dense (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m4,160\u001b[0m │\n", + "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", + "│ dense_1 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m4,160\u001b[0m │\n", + "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", + "│ dense_2 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m) │ \u001b[38;5;34m650\u001b[0m │\n", + "└─────────────────────────────────┴────────────────────────┴───────────────┘\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
 Total params: 8,970 (35.04 KB)\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m8,970\u001b[0m (35.04 KB)\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
 Trainable params: 8,970 (35.04 KB)\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m8,970\u001b[0m (35.04 KB)\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
 Non-trainable params: 0 (0.00 B)\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "from tensorflow.keras.models import Sequential\n", "from tensorflow.keras.layers import Input, Dense\n", @@ -310,7 +469,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "metadata": { "collapsed": false }, @@ -340,11 +499,38 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/5\n", + "\u001b[1m36/36\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.3394 - loss: 3.9005 - val_accuracy: 0.7639 - val_loss: 0.7798\n", + "Epoch 2/5\n", + "\u001b[1m36/36\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - accuracy: 0.8232 - loss: 0.5636 - val_accuracy: 0.8542 - val_loss: 0.4936\n", + "Epoch 3/5\n", + "\u001b[1m36/36\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4ms/step - accuracy: 0.9035 - loss: 0.3225 - val_accuracy: 0.8889 - val_loss: 0.4306\n", + "Epoch 4/5\n", + "\u001b[1m36/36\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4ms/step - accuracy: 0.9258 - loss: 0.2609 - val_accuracy: 0.8958 - val_loss: 0.3415\n", + "Epoch 5/5\n", + "\u001b[1m36/36\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4ms/step - accuracy: 0.9353 - loss: 0.2003 - val_accuracy: 0.8993 - val_loss: 0.3231\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "model.fit(\n", " X_train, # Training data\n", @@ -368,11 +554,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4ms/step - accuracy: 0.9319 - loss: 0.2305 \n", + "Loss: 0.24\n", + "Accuracy: 92.78%\n" + ] + } + ], "source": [ "loss, accuracy = model.evaluate(X_test, y_test)\n", "\n", @@ -391,11 +587,29 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 8ms/step\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeQAAAH2CAYAAAChsP9pAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8ekN5oAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA3LElEQVR4nO3de3RV9ZnG8SdXQkJCuASBgAnghbQFZKoCCiSIaGkpFy8siywTpuPQYltDkdQLl+AFqNqKMwNlygiRlsGpygCCWKUmERGWOAhihy6QZQIYQQuGxCDk9s4frJwxJkDI3sn5Hfh+1spaurP3u3/7nPech33J3mFmZgIAAEEVHuwBAAAAAhkAACcQyAAAOIBABgDAAQQyAAAOIJABAHAAgQwAgAMIZAAAHEAgAwDgAE+BnJeXp7CwsMBPZGSkevTooSlTpuiTTz7xa4znlJqaqqysrGYvP2vWLI0ZM0bJyckKCwvzVKvO11+TsLAwJSQk6IYbbtDq1as91z6frKwspaamNnv506dP66mnntJ3vvMdxcXF6bLLLtPo0aP1zjvv+DfIFkI/No5+DJ5Q78lDhw5pwoQJ6t27t+Li4tS+fXsNHDhQ//Zv/6bq6upmjylUe7KsrExPPPGEMjIy1LVrV7Vr1079+vXTr3/9a506dcrz2HzZQ16xYoW2bdumN954Q/fee69Wr16tYcOGqaKiwo/yLeqZZ57RsWPHNHbsWEVHR/tW94477tC2bdv0zjvvaOnSpSorK9OkSZP0n//5n76toyXce++9evDBBzV+/Hi98sorWrx4sT7//HOlp6fr3XffDfbwmoR+bIh+DK5Q7cmKigolJCRo9uzZWr9+vV544QUNHTpUP//5z/WTn/zEU+1Q7MmDBw9q0aJF+od/+Af9/ve/1/r163XHHXcoNzdXY8aMkec7UZsHK1asMEm2Y8eOetNnz55tkuyPf/zjWZetqKjwsuqAlJQUy8zMbPbyNTU1gf+Oi4vzVKuOJLvvvvvqTSsqKjJJNnz4cM/1zyUzM9NSUlKateypU6csIiLCJk+eXG96SUmJSbJf/OIXPoyw5dCPjaMfg+di6MnGTJw40SIjI+3UqVPNWj5Ue/LLL7+0L7/8ssH0p556yiTZli1bPI2tRc4hDx48WJJUXFws6cwhgnbt2mnPnj265ZZbFB8fr5EjR0qSKisr9fjjj6tv375q06aNkpKSNGXKFH3++ef1alZVVSknJ0ddu3ZVbGyshg4d6su/kMPDW+c0ekpKipKSknT06NF608vKyvTAAw+oV69eio6OVnJysrKzsxv8y3nx4sUaPny4unTpori4OPXr109PPvmkqqqqfBtjeHi4wsPD1b59+3rTExISFB4erpiYGN/W1Zrox4box+AKpZ5sTFJSksLDwxUREeFbzVDoybi4OMXFxTWYfv3110s6c4jfi0hPS5/FRx99JOnMm1ansrJSY8eO1dSpU/Xggw+qurpatbW1GjdunLZs2aKcnBzdcMMNKi4u1ty5c5WRkaH33ntPbdu2lXTm0NXKlSv1wAMPaNSoUfrwww912223qby8vMH6684PFBUVtcTmNcuJEyd0/PjxwAdRkk6ePKn09HQdPnxYDz/8sPr376+//vWvmjNnjvbs2aPNmzcrLCxMknTgwAFNmjQp0JS7d+/WE088ob/97W9avnz5Odedm5urefPmKT8/XxkZGWedLyoqStOmTdNzzz2nm2++WTfddJOOHz+uhx9+WO3bt9e9997ry2vR2ujHhujH4Aq1njQz1dTUqLy8XK+//rry8vI0Y8YMRUb6FyGh0JNn8+abb0qSvv3tb1/wsvV42b2uOxyzfft2q6qqsvLyctuwYYMlJSVZfHy8HTlyxMzOHCKQZMuXL6+3/OrVq02Svfzyy/Wm79ixwyTZkiVLzMxs7969JsmmT59eb75Vq1aZpAaHY/r06WN9+vS54O3x8xDhtGnTrKqqyiorK23fvn02duxYi4+Pt/feey8w34IFCyw8PLzB4ayXXnrJJNmrr77aaP2amhqrqqqylStXWkREhB0/fjzwu8YOx8ybN88iIiKsoKDgvGOvra21OXPmWHh4uEkySXb55Zfb+++/3/QXIEjox8bRj8FzsfTkggULAq9/WFiYPfLII01etjGh3JPftHv3bmvbtq1NmDDhgpf9Jl8C+Zs//fr1s7fffjswX12znThxot7yd999tyUmJlplZaVVVVXV++natatNnDjRzMyWLFlikuq9UWZmVVVVFhkZ6dv5ET+/AL/5ExUVZRs2bKg334033mj9+/dvsO3l5eUWFhZmOTk5gXl37txpP/zhD61jx44Nam/fvj0wn5fzI2Zmjz32mMXGxtqjjz5q+fn5tm7dOhs1apR17tzZdu7c2ey6rYF+bBz9GDwXS09++umntmPHDvvzn/9sv/rVryw6Otp+9rOfNbteKPfk13388cfWs2dPu+qqq+zYsWOe6/lyvGHlypVKS0tTZGSkLrvsMnXr1q3BPLGxsUpISKg37ejRoyotLT3r1aR///vfJUnHjh2TJHXt2rXe7yMjI9WpUyc/NsF3EydO1MyZM1VVVaU9e/booYce0l133aWdO3fqyiuvlHRm+z/66CNFRUU1WqNu+w8ePKhhw4bp6quv1rPPPqvU1FTFxMTo3Xff1X333aevvvrKlzHv3btXc+bM0ZNPPqkHHnggMH306NH61re+pV/+8pfKz8/3ZV0tiX5siH4MrlDvya5duwZq33LLLerQoYMefPBB/eM//qMGDhzYrJqh2JNfV1xcrBEjRigyMlJ/+ctf1LFjR881fQnktLQ0XXvtteecp+44/9d17txZnTp10muvvdboMvHx8ZIUaKgjR44oOTk58Pvq6upAI7omKSkp8JoMGTJEaWlpSk9P1/Tp07VhwwZJZ7a/bdu2Zz2/0blzZ0nS2rVrVVFRoTVr1iglJSXw+127dvk65t27d8vMdN1119WbHhUVpQEDBqiwsNDX9bUU+rEh+jG4LraerLuIad++fc0O5FDsyTrFxcXKyMiQmamgoEA9evTwpW6LXNTVVGPGjNELL7ygmpoaDRo06Kzz1Z1kX7Vqlb773e8Gpv/pT3/y9MfprWnYsGG655579Pzzz2vbtm0aMmSIxowZo/nz56tTp07q1avXWZet+6C2adMmMM3MtGzZMl/H2L17d0nS9u3blZ6eHph++vRp7dy507emcxX9SD+6xtWerDsyccUVV/hWMxR6UjqzN56RkaGamhoVFBTU+weAV0EN5LvuukurVq3S97//fd1///26/vrrFRUVpcOHDys/P1/jxo3ThAkTlJaWpsmTJ2vRokWKiorSzTffrA8//FBPP/10g0M80v83Sd2VjOdSWFgY+POBmpoaFRcX66WXXpIkpaenB66CLCgo0IgRIzR37lzl5uY2a3sfe+wx/dd//Zdmz56tzZs3Kzs7Wy+//LKGDx+u6dOnq3///qqtrdXBgwf1+uuva8aMGRo0aJBGjRql6Oho/ehHP1JOTo5OnTql3/3ud/riiy+atN5HH31Ujz76qP7yl7/U+2L7pqFDh+q6665Tbm6uTp48qeHDh+vEiRP613/9V3388cf6wx/+0KztDhX0I/3ommD35Ny5c3X06FENHz5cycnJKi0t1WuvvaZly5bpzjvvrBf+l0JPfvbZZxoxYoQ+/fRTPffcc/rss8/02WefBX7fo0cPb/9Q9HIC+mx/9P5NmZmZFhcX1+jvqqqq7Omnn7YBAwZYTEyMtWvXzvr27WtTp061/fv3B+Y7ffq0zZgxw7p06WIxMTE2ePBg27ZtW6N/9J6SktLkk/bp6emNXmAgyfLz8wPzvfLKKybJli5det6aauSP3uvMnDnTJFlhYaGZnflD81mzZtnVV19t0dHR1r59e+vXr59Nnz49cAVm3frrXqPk5GSbOXOmbdq0qcE4G7tgYe7cuQ3mO5vS0lJ75JFHLC0tzWJjY61Lly6WkZFx1qsZXUI/No5+DJ5Q78n169fbzTffbJdddplFRkZau3bt7Prrr7d/+Zd/saqqqnrzXgo9mZ+ff9bPpySbO3fuebf9XMLMvN7r69KQk5Oj1atXa//+/SF9QwJcHOhHuIae9I6nPTVRfn6+Zs+eTaPBCfQjXENPesceMgAADmAPGQAABxDIAAA4gEAGAMABBDIAAA5o0o1BamtrVVJSovj4+EZv74ZLm5mpvLxc3bt3b5Xn+dKPOBf6ES65kH5sUiCXlJSoZ8+evgwOF69Dhw61yu0M6Uc0Bf0IlzSlH5sUyHU3MD906FCjt2ELNT/5yU8819izZ4/nGg8//LDnGj/4wQ881/CqrKxMPXv2DPRJS3OpHzdu3Oi5xuLFiz3XGDZsmOcaDz30kOcapaWlnmskJiZ6Wj5U+3HLli2exzJp0iTPNfwwbdo0zzX86EcXXEg/NimQ6w7DJCQkBP0L0A9ne5TZhYiIiPBcIzY21nMNl96P1jpc51I/+vEeRkZ6v6X812+q31x+vJa1tbVOjEMKvX6Mi4vzbSzB5ko/uqQp7w0XdQEA4AACGQAABxDIAAA4gEAGAMABBDIAAA4gkAEAcACBDACAAwhkAAAcQCADAOAAAhkAAAcQyAAAOIBABgDAAQQyAAAOIJABAHCA9+e+XYBdu3Z5rjF+/HjPNYqLiz3XSE9P91wjMzPTcw0/nj+L5luxYoXnGoWFhZ5rTJ8+3XONa665xnON7OxszzWysrI81whFBQUFnmucOHHC+0B8MG/ePM81/Piu96OnWxN7yAAAOIBABgDAAQQyAAAOIJABAHAAgQwAgAMIZAAAHEAgAwDgAAIZAAAHEMgAADiAQAYAwAEEMgAADiCQAQBwAIEMAIADCGQAABxAIAMA4AACGQAAB0S25soWLVrkuUZxcbHnGnPnzvVcY9euXZ5ruPIwcTSfHz3tx4Pp/XiYe3p6uhPjuFRlZ2d7rpGbm+u5Rmlpqecaqampnmv48V1/zTXXeK7RmthDBgDAAQQyAAAOIJABAHAAgQwAgAMIZAAAHEAgAwDgAAIZAAAHEMgAADiAQAYAwAEEMgAADiCQAQBwAIEMAIADCGQAABxAIAMA4AACGQAABxDIAAA4ILI1V+bHQ6tTUlI81xg4cKDnGnl5eZ5r3H///Z5rILj86Onx48d7rvH88897rpGVleW5RmJioucalypXXjs/xpGRkeG5xhdffOG5RqhhDxkAAAcQyAAAOIBABgDAAQQyAAAOIJABAHAAgQwAgAMIZAAAHEAgAwDgAAIZAAAHEMgAADiAQAYAwAEEMgAADiCQAQBwAIEMAIADCGQAABxAIAMA4IDI1lxZbm6u5xp+PDz7/vvv91yjuLjYc40RI0Z4roHgKi0t9Vxj7dq1nmv4wY9tQejbtWuX5xoFBQWeayxatMhzjVDDHjIAAA4gkAEAcACBDACAAwhkAAAcQCADAOAAAhkAAAcQyAAAOIBABgDAAQQyAAAOIJABAHAAgQwAgAMIZAAAHEAgAwDgAAIZAAAHEMgAADiAQAYAwAGRwR7AhcrOzvZcw4+HZxcXF3uuMX78eM81vvjiC881EhMTPde4VPnxEPUTJ054H4gP/Phc+PH5RPP58R768b3kR09nZGR4rpGbm+u5RlZWlucaTcUeMgAADiCQAQBwAIEMAIADCGQAABxAIAMA4AACGQAABxDIAAA4gEAGAMABBDIAAA4gkAEAcACBDACAAwhkAAAcQCADAOAAAhkAAAcQyAAAOIBABgDAAZHBHkAw7Nq1K9hD8I0f2+LHg8AvVRdTL6WmpgZ7CJe0vLw8zzWmTJnifSA+aN++veca11xzjRM1WhN7yAAAOIBABgDAAQQyAAAOIJABAHAAgQwAgAMIZAAAHEAgAwDgAAIZAAAHEMgAADiAQAYAwAEEMgAADiCQAQBwAIEMAIADCGQAABxAIAMA4AACGQAAB0QGewDB4MdDq4uLiz3XGDdunOcaGRkZnmug+caPH++5RmlpqecafsjKygr2EC5pfvRBSkqK5xp+fD+uXbvWc41LEXvIAAA4gEAGAMABBDIAAA4gkAEAcACBDACAAwhkAAAcQCADAOAAAhkAAAcQyAAAOIBABgDAAQQyAAAOIJABAHAAgQwAgAMIZAAAHEAgAwDggCY9D9nMJEllZWUtOpjWUlVVFewhSPJnHC68J3VjqOuTluZSP3711Veea1RXV/swEu++/PJLzzVceE9CtR9PnTrleSy1tbWea1ws30uuuJB+DLMmzHX48GH17NnT+8hwUTt06JB69OjR4uuhH9EU9CNc0pR+bFIg19bWqqSkRPHx8QoLC/NtgLg4mJnKy8vVvXt3hYe3/FkQ+hHnQj/CJRfSj00KZAAA0LK4qAsAAAcQyAAAOIBABgDAAQQyAAAO8BTIeXl5CgsLC/xERkaqR48emjJlij755BO/xnhOqampysrKavby+/bt0+23364OHTooNjZWgwYN0vr16z2N6euvSVhYmBISEnTDDTdo9erVnuo2RVZWllJTU5u1bFFRUYOxf/3ne9/7nr+D9Rn92LhQ7cc6FRUVmjNnjq666iq1adNGnTp10ogRI7R//35/BtmCLoaelKQPP/xQd955p5KSktSmTRulpqZq2rRpza4Xyj35yCOPaODAgerYsaNiYmLUu3dv/fM//7OKi4s9j61JNwY5nxUrVqhv37766quv9NZbb2nBggUqLCzUnj17FBcX58cqWkRRUZGGDBmibt26aenSpWrXrp1+97vfafz48XrxxRd1++23N7v2HXfcoRkzZsjM9PHHH2v+/PmaNGmSzEyTJk3ycSv8061bN23btq3B9LVr1+rXv/61JkyYEIRRXTj6saFQ7EfpzM1KRowYoZKSEj344IPq37+/Tpw4oXfeeUcnT54M9vCaLFR7UpLy8/P1gx/8QMOGDdPSpUvVuXNnHTx4UO+//76nuqHak6WlpfrRj36ktLQ0xcfH63//93/1+OOPa/369frrX/+qTp06Nb+4ebBixQqTZDt27Kg3ffbs2SbJ/vjHP5512YqKCi+rDkhJSbHMzMxmLTt16lSLiYmxw4cPB6ZVV1dbWlqa9ezZ02pqappVV5Ldd9999aYVFRWZJBs+fHizajZVZmampaSk+FozIyPDYmNj7cSJE77W9Rv92LhQ7sf777/f4uLi7MCB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tm3bpiFDhmjMmDGaP3++OnXqpF69ep112boP6tcv+DEzLVu2zLfxfdPKlStVVVWlH//4xy22DtfQj271Y7du3TRkyBBt3bpVZWVlgb3HkydPqrCwMHCl8sUs2D05YcIEPfLII9q0aVO9+xBs2rRJZubrexAKPXk2H330kQ4fPqyxY8d6K+TlePfZ/sbumzIzMy0uLq7B9Orqahs9erR17NjR5s2bZ5s2bbLNmzdbXl6eZWZm2po1awLzTp48OXDO4PXXX7ff/va31r17d0tISGj2BQtHjx61nJwcW7dunb355pu2ZMkSS01Ntd69ezc4QZ+fn2+SbO7cueetq0b+xs7M7ODBgxYTE2MjR440M7Mvv/zSBg4caD169LDf/OY39sYbb9if//xnW7Zsmd15552B8x579+616Ohoy8jIsFdffdXWrFljo0aNsiuvvNIkWX5+fmAdfl3U1bdvX09/+xoM9GPjQrkft27datHR0TZ48GD77//+b1u7dq0NGzbMoqKi7J133jnv8sEW6j1pZvazn/3MwsPD7Ze//KW98cYbtnjxYuvQoYMNHDjQTp8+HZjvUujJ3bt320033WRLliyx1157zV5//XX7zW9+Yz169LCkpCQrKio677af83XxsrDXZjM7c3L86aeftgEDBlhMTIy1a9fO+vbta1OnTrX9+/cH5jt9+rTNmDHDunTpYjExMTZ48GDbtm1bo3/0npKS0qST9seOHbNbbrnFkpKSLCoqyi6//HL7+c9/bp9//nmDeV955RWTZEuXLj1v3bM1m5nZzJkzTZIVFhaa2ZmGmzVrll199dUWHR1t7du3t379+tn06dMDV2DWrb/uNUpOTraZM2fapk2bmtRsc+fObTDfuWzdutUk2Zw5c5o0vyvox8aFej9u2bLF0tPTLTY21mJjY+2mm26yrVu3NmnZYAv1njQ784+ChQsX2hVXXGFRUVHWrVs3++lPf2pffPFFvfkuhZ48cuSITZ482fr06WOxsbEWHR1tvXv3tp/85Cd28ODB8273+YSZfe0PuXBWOTk5Wr16tfbv36+YmJhgDweXOPoRrqEnvQudqyKCLD8/X7Nnz6bR4AT6Ea6hJ71jDxkAAAewhwwAgAMIZAAAHEAgAwDgAAIZAAAHNOlOXbW1tSopKVF8fHyLPxMTocfMVF5eru7du7fK7QzpR5wL/QiX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xcXpsssu0+jRo/XOO+94HluTbgxyPitWrFDfvn311Vdf6a233tKCBQtUWFioPXv2KC4uzo9VtIiioiINGTJE3bp109KlS9WuXTv97ne/0/jx4/Xiiy/q9ttvb3btO+64QzNmzJCZ6eOPP9b8+fM1adIkmZkmTZrk41b4r3fv3lq1alW9aYmJicEZTDPQjw3Rj8EVqj0pSc8884z69++vsWPHavny5b7VDdWevPfee7Vq1So99NBDuummm3T8+HEtXLhQ6enp2rp1q66//vrmFzcPVqxYYZJsx44d9abPnj3bJNkf//jHsy5bUVHhZdUBKSkplpmZ2axlp06dajExMXb48OHAtOrqaktLS7OePXtaTU1Ns+pKsvvuu6/etKKiIpNkw4cPb1bNpsrMzLSUlJRmL5+enm7f/va3/RtQK6IfG0c/Bk+o96SZ1eu7uLg4T7XqhGpPnjp1yiIiImzy5Mn1ppeUlJgk+8UvfuFpbC1yDnnw4MGSpOLiYklnDhG0a9dOe/bs0S233KL4+HiNHDlSklRZWanHH39cffv2VZs2bZSUlKQpU6bo888/r1ezqqpKOTk56tq1q2JjYzV06FC9++67nsa5detWDRgwQMnJyYFpERERGj16tA4dOuS5/telpKQoKSlJR48erTe9rKxMDzzwgHr16qXo6GglJycrOzu7wS0ZFy9erOHDh6tLly6Ki4tTv3799OSTT6qqqsq3MV6s6MeG6MfgCpWelNQqN1eRQqMnw8PDFR4ervbt29ebnpCQoPDwcMXExHiq78sh62/66KOPJElJSUmBaZWVlRo7dqymTp2qBx98UNXV1aqtrdW4ceO0ZcsW5eTk6IYbblBxcbHmzp2rjIwMvffee2rbtq2kM4cJVq5cqQceeECjRo3Shx9+qNtuu03l5eUN1l93fqCoqOic46ysrFTHjh0bTG/Tpo0k6YMPPgh8cLw6ceKEjh8/Xq/eyZMnlZ6ersOHD+vhhx9W//799de//lVz5szRnj17tHnz5sCdfw4cOKBJkyYFmnL37t164okn9Le//e28h5Fyc3M1b9485efnKyMj47xjPXDggDp27KiysjKlpKTorrvu0qxZswLvRaihHxuiH4MrVHqyNYVCT0ZFRWnatGl67rnndPPNNwcOWT/88MNq37697r33Xm8vgpfd67rDMdu3b7eqqiorLy+3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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Get the predictions for the test data\n", "predictions = model.predict(X_test)\n", @@ -806,14 +1020,59 @@ "metadata": {}, "outputs": [], "source": [ - "# Your code here" + "# Your code here\n", + "from tensorflow.keras import initializers\n", + "from tensorflow.keras import optimizers\n", + "\n", + "input_dim = 64\n", + "hidden_dim = 64\n", + "output_dim = 10\n", + "\n", + "# try different stddev values: [1e-3, 0.1, 1.0, 10.0]\n", + "stddevs = [1e-3, 0.1, 1.0, 10.0]\n", + "\n", + "# pick an index to select which stddev to use (0..3)\n", + "idx = 3 # valid indices: 0,1,2,3. set this to try different initializations\n", + "if not 0 <= idx < len(stddevs):\n", + " raise IndexError(f'idx ({idx}) out of range. Choose a value between 0 and {len(stddevs)-1}')\n", + "stddev = stddevs[idx]\n", + "\n", + "normal_init = initializers.TruncatedNormal(stddev=stddev, seed=42)\n", + "\n", + "print(f'Using TruncatedNormal initializer with stddev = {stddev}')\n", + "\n", + "model = Sequential()\n", + "model.add(Dense(hidden_dim, input_dim=input_dim, activation=\"tanh\",\n", + " kernel_initializer=normal_init))\n", + "model.add(Dense(hidden_dim, activation=\"tanh\",\n", + " kernel_initializer=normal_init))\n", + "model.add(Dense(output_dim, activation=\"softmax\",\n", + " kernel_initializer=normal_init))\n", + "\n", + "model.compile(optimizer=optimizers.SGD(learning_rate=0.1),\n", + " loss='categorical_crossentropy', metrics=['accuracy'])\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "history = model.fit(X_train, y_train, epochs=15, batch_size=32)\n", + "\n", + "plt.figure(figsize=(12, 4))\n", + "plt.plot(history.history['loss'], label=\"Truncated Normal init\")\n", + "plt.legend();\n", + "\n", + "history" ] } ], "metadata": { "file_extension": ".py", "kernelspec": { - "display_name": ".venv", + "display_name": "dsi_participant", "language": "python", "name": "python3" }, @@ -827,7 +1086,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.12" + "version": "3.9.19" }, "mimetype": "text/x-python", "name": "python", diff --git a/01_materials/labs/lab_2.ipynb b/01_materials/labs/lab_2.ipynb index a45b46e9e..3afc5151e 100644 --- a/01_materials/labs/lab_2.ipynb +++ b/01_materials/labs/lab_2.ipynb @@ -22,7 +22,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 60, "metadata": {}, "outputs": [], "source": [ @@ -36,9 +36,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 61, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "sample_index = 45\n", "plt.figure(figsize=(3, 3))\n", @@ -58,7 +69,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 62, "metadata": {}, "outputs": [], "source": [ @@ -91,7 +102,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 63, "metadata": {}, "outputs": [], "source": [ @@ -101,18 +112,43 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 64, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "array([0., 0., 0., 1., 0., 0., 0., 0., 0., 0.])" + ] + }, + "execution_count": 64, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "one_hot(n_classes=10, y=3)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 65, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 0., 0., 0., 1.],\n", + " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.]])" + ] + }, + "execution_count": 65, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "one_hot(n_classes=10, y=[0, 4, 9, 1])" ] @@ -143,7 +179,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 66, "metadata": { "collapsed": false }, @@ -164,9 +200,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 67, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[9.99662391e-01 3.35349373e-04 2.25956630e-06]\n" + ] + } + ], "source": [ "print(softmax([10, 2, -3]))" ] @@ -181,9 +225,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 68, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[9.99662391e-01 3.35349373e-04 2.25956630e-06]\n", + " [2.47262316e-03 9.97527377e-01 1.38536042e-11]]\n" + ] + } + ], "source": [ "X = np.array([[10, 2, -3],\n", " [-1, 5, -20]])\n", @@ -199,18 +252,36 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 69, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.0\n" + ] + } + ], "source": [ "print(np.sum(softmax([10, 2, -3])))" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 70, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "softmax of 2 vectors:\n", + "[[9.99662391e-01 3.35349373e-04 2.25956630e-06]\n", + " [2.47262316e-03 9.97527377e-01 1.38536042e-11]]\n" + ] + } + ], "source": [ "print(\"softmax of 2 vectors:\")\n", "X = np.array([[10, 2, -3],\n", @@ -227,9 +298,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 71, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1. 1.]\n" + ] + } + ], "source": [ "print(np.sum(softmax(X), axis=1))" ] @@ -251,9 +330,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 72, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.01005033585350145\n" + ] + } + ], "source": [ "def nll(Y_true, Y_pred):\n", " Y_true = np.asarray(Y_true)\n", @@ -279,9 +366,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 73, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4.605170185988091\n" + ] + } + ], "source": [ "print(nll([1, 0, 0], [0.01, 0.01, .98]))" ] @@ -295,9 +390,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 74, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.010050335853503449\n" + ] + } + ], "source": [ "# Check that the average NLL of the following 3 almost perfect\n", "# predictions is close to 0\n", @@ -329,7 +432,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 75, "metadata": { "collapsed": false }, @@ -350,8 +453,8 @@ " \n", " def forward(self, X):\n", " # Compute the linear combination of the input and weights\n", - " Z = None\n", - " return None\n", + " Z = np.dot(X, self.W) + self.b\n", + " return softmax(Z)\n", " \n", " def predict(self, X):\n", " # Return the most probable class for each sample in X\n", @@ -363,10 +466,12 @@ " def loss(self, X, y):\n", " # Compute the negative log likelihood over the data provided\n", " y_onehot = one_hot(self.output_size, y.astype(int))\n", - " return None\n", + " y_pred = self.forward(X)\n", + " return nll(y_onehot, y_pred)\n", "\n", " def grad_loss(self, X, y_true, y_pred):\n", - " # Compute the gradient of the loss with respect to W and b for a single sample (X, y_true)\n", + " # Compute the gradient of the loss with respect to W and b for a \n", + " # single sample (X, y_true)\n", " # y_pred is the output of the forward pass\n", " \n", " # Gradient with respect to weights\n", @@ -377,7 +482,8 @@ " \n", " return grad_W, grad_b\n", " \n", - "# Raise an exception if you try to run this cell without having implemented the LogisticRegression class\n", + "# Raise an exception if you try to run this cell without having implemented the \n", + "# LogisticRegression class\n", "model = LogisticRegression(input_size=64, output_size=10)\n", "try:\n", " assert(model.forward(np.zeros((1, 64))).shape == (1, 10))\n", @@ -388,7 +494,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 76, "metadata": { "collapsed": false }, @@ -411,11 +517,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 77, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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UlKShg8f7tDyGRkZuummm7R69Wq98MILWrlypYYMGaL4+HgNHTq0zHXNmjVLmzdv1qxZs/Tuu+/qP//5j3r16qUhQ4bo999/14IFC/TKK6/o66+/LpLWDxw4oO7du2v+/PlatWqVYmNj9b//+7/q1auXTb958+bpscceU5s2bfTJJ5/oueee0+TJk4tch1JQUKC7775bL7/8svr27auvvvpKL7/8spKTkxUVFaW//vrL4edX2hqlf86d7N69u7p06aIVK1Zo5MiRevvtt4tsSB5//HHFxsbqjjvu0IoVKzR79mzt2bNHkZGROn78eIn1FO4My3oNTuHpdi1btizT8sCVLj8/X+vWrVN4eHix32oHBQUpLCxMa9euVX5+vkPr37p1q7y9vdW9e3dt3bpVW7duLXLa6ZAhQ1SlShUtXbpUCQkJ+v777xUVFaVTp045NNYNN9yghQsXSpKee+4563gXb4vtKW0N9vZNv//+uyIjI7VmzRq9+OKL+vzzz3XHHXfoySeftHsq2cyZM7Vq1SolJCTo/fffV5UqVRQdHW1z2vCxY8dUp04dvfzyy1q1apVmzZold3d33Xzzzdq/f3+RdT777LM6ePCg3n33Xb377rs6duyYoqKiLvtLnB49emjatGmS/tn/Fb6mPXr0KHaZ0mzzz549q65du+r48eOaNWuWkpOTlZCQoIYNG+r06dMl1vTll1/Kzc1Nt912m93HL+e9PHfunDp16qRFixZp9OjRWrlypZ555hklJibqf/7nf6x/DBuGod69e+u9997Tv/71L3366ae65ZZbFB0dXarXdf78+erevbsKCgo0d+5cffHFFxo9erQ1WD3//PO6//77Jcn6mpd0apWjn8ELX/MlS5bo7Nmz6t69u7Kysqx9CoNIWa7tOHDggDZt2qSHHnrI7vWZUVFROnLkiH7++WeH1+0yBiqNAQMGGD4+PjZtnTp1MiQZ33zzTZH+koyJEycWaQ8ODjYGDBhgnX/88ceN6tWrG0eOHLHp99prrxmSjD179pRYV6dOnYxOnTpZ5w8dOmRIMtq2bWvk5+db2xMSEgxJxv/8z//YLB8bG2tIMrKysuyuv6CgwDh//ryxYcMGQ5Lx448/GoZhGPn5+Ya/v79x88032/Q/cuSIUbVqVSM4ONjatmzZMkOS8fHHH9v03b59uyHJmD17donPceLEiUZJ/12Kq9Ew/nnfJBlvvPGGzTIvvfSSIcn49ttvDcMwjK1btxqSjNdff92mX1pamuHt7W08/fTTNuu88PkZhmFMnjzZcHNzM9avX1/ic7Hnxx9/NLy9vY177rnH4WWBq0VGRoYhyXjooYdK7NenTx9DknH8+HHDMOz/fzUM+9sVHx8fm+1zoYULFxqSivwf3bx5syHJmDp1qrXt4m18oYu31YXbv4ULF5b4fMpSQ3H7pnHjxhmSjO+++86m/YknnjAsFouxf/9+wzD+bz8SGBho/PXXX9Z+2dnZRu3atY077rij2Drz8vKM3Nxc4/rrrzfGjh1rbV+3bp0hybjhhhuMgoICa/vhw4eNqlWrGjExMdY2e+/Nxa+fYRTdz3744YeGJGPdunVF6rr4c1Dabf6OHTsMScaKFSuKfc7FiY6ONpo1a1ak3Yz3Mj4+3qhSpYqxfft2m/aPPvrIkGQkJSUZhmEYK1euLHEfeOHrV1jXoUOHDMMwjNOnTxs1a9Y0br31Vpv37GIjRowodh998f8HRz+DrVu3NvLy8qz9vv/+e0OSsWzZMmvb4cOHDTc3N2Pw4MHF1licZ555xpBkbN261e7jBw4cMCQZc+bMcXjdrsKRiyvANddco9tvv73My3/55Zfq3LmzAgMDlZeXZ50Kv1XYsGFDmdbbvXt3Vanyfx+x5s2bS1KRb3EK21NTU61tBw8eVN++feXv7y83NzdVrVpVnTp1kiTt27dPkrR//35lZGTowQcftFlfw4YNi5zr/OWXX6pWrVrq1auXzXNs166d/P39y/Rtf2lqvNAjjzxiM9+3b19J0rp166w1WiwWPfroozY1+vv7q23btpes8YUXXlBeXp61htI6fPiwevbsqaCgIL377rsOLQugKOP/f2NbHjdGuHg7EhkZqeDgYOt2xBlKW4O9fdPatWvVokUL62mYhQYOHCjDMIrcsOTee++Vl5eXdb5GjRrq1auXNm7caD0ylJeXp2nTpqlFixby8PCQu7u7PDw8dODAAbvb4r59+9q8N8HBwYqMjHTqayiVfpt/3XXX6ZprrtEzzzyjuXPnau/evaUe49ixY6pfv36xj1/Oe/nll1+qVatWateunU39d955p81R9MJ1FbcPLMmWLVuUnZ2t4cOHm/b/ydHPYI8ePeTm5madb9OmjSTpyJEj1rbg4GDl5eVp/vz5DtWSl5enRYsWqWXLlsVev1P4/h09etShdbsSF3RfARy9q8LFjh8/ri+++EJVq1a1+/iJEyfKtN7atWvbzHt4eJTYXngb1DNnzqhjx47y8vLS1KlT1aRJE1WrVk1paWm69957racwnTx5UpLk5+dXZGw/Pz8dOnTIOn/8+HGdOnXKOtbFHH2Opa2xkLu7e5E7PRTeEaLweRw/flyGYdh9PpLUqFEjh2osjSNHjqhz585yd3fXN998U+S9AfB/6tatq2rVqtlsW+w5fPiwqlWrVi7/nwq3Gxe3FW5HnKG0NdjbN508edLu9SeBgYHWx0szVm5urs6cOSNfX1/FxcVp1qxZeuaZZ9SpUyddc801qlKlimJiYuye8lrcOn/88cci7eWptNt8X19fbdiwQS+99JKeffZZ/fnnnwoICNDQoUP13HPPFbvvlqS//vqr2PVLl/deHj9+XL/++usl/3Y4efJkifvAkhReE1mai+tLy9HP4MV1e3p6SlKZTqe+WFJSkjIyMvTMM88U26cwXJsxnrMQLq4AxaV5T09P5eTkFGm/+D9O3bp11aZNG7300kt211P4H85Z1q5dq2PHjmn9+vU238JffA5o4X94e9ciFN4nulDdunVVp04drVq1yu6YNWrUKJcaC+Xl5enkyZM2G6nCGgvb6tatK4vFok2bNlk3Xhey13Y5jhw5oqioKBmGofXr15u68QauRG5uburcubNWrVql3377ze7/md9++007d+5UdHS09dtOLy8vu9visnxxc/G2rbDtuuuus86XNF7dunUdHrMsNUj290116tRRenp6kfZjx45JUpH6ihvLw8PDen76+++/r/79+1uvdyh04sQJ1apVq9T1O/tWn45s81u3bq0PPvhAhmHop59+UmJioqZMmSJvb2+NGzeuxDH++OOPYh+/nPeybt268vb21oIFC4odW/rnPS9pH1iSwjtHXerCdUc4+hksT/Pnz5eHh0eRC+4vVPj+ObOuy8VpUVewkJAQ/fTTTzZta9eu1ZkzZ2zaevbsqZ9//lmNGzdWeHh4kcnZ4aJwI3bxxvbtt9+2mW/atKn8/f31v//7vzbtqamp2rJli01bz549dfLkSeXn59t9jk2bNi2XGi+0ZMkSm/mlS5dKkvXuLT179pRhGDp69KjdGlu3bu1QjSVJTU1VVFSU8vPztXbtWgUHB5u2buBKNn78eBmGoeHDhxe5YDs/P19PPPGEDMPQ+PHjre0hISHKzMy0+SIkNzdXq1evLrJ+T0/PEr+hvHg7smXLFusXBReOd/G2/5dffilycXNZv4EtTQ3F6dKli/bu3asffvjBpn3x4sWyWCzq3LmzTfsnn3xi8+Oep0+f1hdffKGOHTtaw5vFYimyLf7qq6+KPY1k2bJlNnfeOXLkiLZs2WLKj8E68pqWZZtvsVjUtm1b/fvf/1atWrWKvI4Xa9asWYkXql/Oe9mzZ0/997//VZ06dezWX3h0oPA9LW4fWJLIyEj5+vpq7ty5Jd4tyZHX3dHPYHnJyMhQUlKSevfuXWKwLXz/KtNt/zlycQXr16+fnn/+eb3wwgvq1KmT9u7dq5kzZ8rX19em35QpU5ScnKzIyEiNHj1aTZs21d9//63Dhw8rKSlJc+fOdeq32pGRkbrmmms0bNgwTZw4UVWrVtWSJUuKHLKuUqWKJk+erMcff1z333+/Bg8erFOnTmny5MkKCAiwud7joYce0pIlS9S9e3eNGTNGN910k6pWrarffvtN69at091336177rnH9BoLeXh46PXXX9eZM2d04403asuWLZo6daqio6OtvynRoUMHPfbYYxo0aJB27Nih2267TT4+PkpPT9e3336r1q1b64knnii2pilTpmjKlCn65ptvSrzuIjMzU507d1Z6errmz5+vzMxMm1sBl/b+7sDVqEOHDkpISFBsbKxuvfVWjRw5Ug0bNrT+iN53332nhIQERUZGWpfp06ePXnjhBT300EN66qmn9Pfff+vNN9+0ezep1q1ba/369friiy8UEBCgGjVq2Hz5sWPHDsXExOiBBx5QWlqaJkyYoAYNGtjcJbBfv3569NFHNXz4cN133306cuSIXnnllSK/H9C4cWN5e3tryZIlat68uapXr67AwMBLfqFUmhqKM3bsWC1evFg9evTQlClTFBwcrK+++kqzZ8/WE088oSZNmtj0d3NzU9euXRUXF6eCggJNnz5d2dnZmjx5srVPz549lZiYqGbNmqlNmzbauXOnXn311WK3Y5mZmbrnnns0dOhQZWVlaeLEifLy8rIJhGXVqlUrSf/cybBGjRry8vJSaGio3T8eS7vN//LLLzV79mz17t1bjRo1kmEY+uSTT3Tq1Cl17dq1xHqioqK0YMEC/fLLL0VeW+ny3svY2Fh9/PHHuu222zR27Fi1adNGBQUFSk1N1Zo1a/Svf/1LN998s7p166bbbrtNTz/9tM6ePavw8HBt3rxZ77333iXHqF69ul5//XXFxMTojjvu0NChQ+Xn56dff/1VP/74o2bOnClJ1iA2ffp061HDNm3a2D0V2tHPYGkcOXJEjRs31oABA0p93cWiRYuUl5d3yTu0bdu2rcQ7flVIrriKHGVT3N2iWrZsabd/Tk6O8fTTTxtBQUGGt7e30alTJyMlJcXunUR+//13Y/To0UZoaKhRtWpVo3bt2kZYWJgxYcIE48yZMyXWVdzdol599VWbfoV36vjwww9t2gvvDnHhHSe2bNliREREGNWqVTPq1atnxMTEGD/88IPdO5vMmzfPuO666wwPDw+jSZMmxoIFC4y7777baN++vU2/8+fPG6+99prRtm1bw8vLy6hevbrRrFkz4/HHHzcOHDhQ4nO0d+eQ0tZY+L799NNPRlRUlOHt7W3Url3beOKJJ+y+tgsWLDBuvvlmw8fHx/D29jYaN25s9O/f39ixY4fNOi+++0xhjfbuUnKhwvehuMneHcYA2Nq6datx//33G35+foa7u7tRv35949577zW2bNlit39SUpLRrl07w9vb22jUqJExc+ZMu9uVlJQUo0OHDka1atUMSdZta+F2cs2aNUa/fv2MWrVqGd7e3kb37t2LbL8KCgqMV155xWjUqJHh5eVlhIeHG2vXrrV7t6Nly5YZzZo1M6pWrXrJ//+O1FDSvunIkSNG3759jTp16hhVq1Y1mjZtarz66qs2dxcs3I9Mnz7dmDx5snHttdcaHh4eRvv27Y3Vq1fbrO/PP/80hgwZYtSvX9+oVq2aceuttxqbNm0q8nwLt33vvfeeMXr0aKNevXqGp6en0bFjR5vtq2GU/W5RhvHPnRFDQ0MNNzc3m/1BcXcNu9Q2/z//+Y/x8MMPG40bNza8vb0NX19f46abbjISExPtvr4XysrKMqpXr2688sorNu1mvZdnzpwxnnvuOaNp06aGh4eH4evra7Ru3doYO3askZGRYe136tQpY/DgwUatWrWMatWqGV27djX+85//XPJuUYWSkpKMTp06GT4+Pka1atWMFi1aGNOnT7c+npOTY8TExBj16tUzLBaLzTrs/c3jyGfw4r9lDKPo+17Y195d2orTpEkTIyQkpMS7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D1dERITmzZun1NRUDRs2rDzqAwAAV5my/vieszz55JMaMGCAWrRoob/++ksLFy602+/OO+/U888/r6efflp///23Bg8erP79+2v37t3WPi+++KLq16+v+Ph4HTx4ULVq1dINN9ygZ5991llPBzCVw+GiT58+OnnypKZMmaL09HS1atVKSUlJCg4OLo/6AAAAKpQmTZpo69atNm0DBw6023fy5Mkl3tjGYrFo9OjRGj16tJklAi5Tpgu6hw8fruHDh5tdCwAAAIBKzOEf0QMAAAAAewgXAAAAAExBuAAAAABgCsIFAAAAAFMQLgAAAACYgnABAAAAwBSECwAAAACmIFwAAAAAMAXhAgAAVCwWi3OnCiwkJEQJCQnWeYvFohUrVlzWOs1YB1CcMv1CNwAAAJwvPT1d11xzTan6Tpo0SStWrFBKSkqZ1wE4inABAABQjnJzc+Xh4WHKuvz9/SvEOoDicFoUAACAA6KiojRy5EiNHDlStWrVUp06dfTcc8/JMAxJ/5zKNHXqVA0cOFC+vr4aOnSoJGnLli267bbb5O3traCgII0ePVpnz561rjczM1O9evWSt7e3QkNDtWTJkiJjX3xK02+//aaHHnpItWvXlo+Pj8LDw/Xdd98pMTFRkydP1o8//iiLxSKLxaLExES769i9e7duv/12eXt7q06dOnrsscd05swZ6+MDBw5U79699dprrykgIEB16tTRiBEjdP78eRNfVVwpOHJxkYsPHVYUn332matLKNaYMWNcXYJdb7zxhqtLKNb69etdXUKxevfu7eoSAKDCW7RokYYMGaLvvvtOO3bs0GOPPabg4GBrkHj11Vf1/PPP67nnnpP0zx/wd955p1588UXNnz9fv//+uzWgLFy4UNI/f8SnpaVp7dq18vDw0OjRo5WZmVlsDWfOnFGnTp3UoEEDff755/L399cPP/yggoIC9enTRz///LNWrVqlr7/+WpLk6+tbZB3nzp3TXXfdpVtuuUXbt29XZmamYmJiNHLkSGsYkaR169YpICBA69at06+//qo+ffqoXbt21ucLFCJcAAAAOCgoKEj//ve/ZbFY1LRpU+3evVv//ve/rX9s33777XryySet/fv376++ffsqNjZWknT99dfrzTffVKdOnTRnzhylpqZq5cqV2rZtm26++WZJ0vz589W8efNia1i6dKl+//13bd++XbVr15YkXXfdddbHq1evLnd39xJPg1qyZIn++usvLV68WD4+PpKkmTNnqlevXpo+fbr8/PwkSddcc41mzpwpNzc3NWvWTD169NA333xDuEARnBYFAADgoFtuuUWWC+40FRERoQMHDig/P1+SFB4ebtN/586dSkxMVPXq1a3TnXfeqYKCAh06dEj79u2Tu7u7zXLNmjVTrVq1iq0hJSVF7du3twaLsti3b5/atm1rDRaS1KFDBxUUFGj//v3WtpYtW8rNzc06HxAQUOJRFVy9OHIBAABgsgv/WJekgoICPf744xo9enSRvg0bNrT+IW9x4Na43t7el1ekJMMwih3zwvaqVasWeaygoOCyx8eVhyMXAAAADtq2bVuR+euvv97m2/0L3XDDDdqzZ4+uu+66IpOHh4eaN2+uvLw87dixw7rM/v37derUqWJraNOmjVJSUvTHH3/YfdzDw8N6JKU4LVq0UEpKis2F5Zs3b1aVKlXUpEmTEpc1Bb9lcsUhXAAAADgoLS1NcXFx2r9/v5YtW6a33nqrxBucPPPMM9q6datGjBihlJQUHThwQJ9//rlGjRolSWratKnuuusuDR06VN9995127typmJiYEo9OPPzww/L391fv3r21efNmHTx4UB9//LG2bt0q6Z+7Vh06dEgpKSk6ceKEcnJyiqzjkUcekZeXlwYMGKCff/5Z69at06hRo9SvXz/r9RaAIwgXAACgYjEM505l0L9/f/3111+66aabNGLECI0aNUqPPfZYsf3btGmjDRs26MCBA+rYsaPat2+v559/XgEBAdY+CxcuVFBQkDp16qR7771Xjz32mOrXr1/sOj08PLRmzRrVr19f3bt3V+vWrfXyyy9bj57cd999uuuuu9S5c2fVq1dPy5YtK7KOatWqafXq1frjjz9044036v7771eXLl00c+bMMr0uANdcAAAAOKhq1apKSEjQnDlzijx2+PBhu8vceOONWrNmTbHr9Pf315dffmnT1q9fP5t546IwFBwcrI8++sju+jw9Pe0+dvE6WrdurbVr1xZb14W3pC2UkJBQbH9c3ThyAQAAAMAUhAsAAAAApuC0KAAAAAesX7/e1SUAFRZHLgAAAACYgnABAABc5uKLi3Fl4H29ehEuAACA0xX+4vO5c+dcXAnKQ+H7evEve+PKxzUXAADA6dzc3FSrVi1l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M8rKylKzZs3k5uam/Px8vfTSS3r44YedVkONGjUUERGhF198Uc2bN5efn5+WLVum7777Ttdff73T6riUShcuCl2cVA3DcFp6rcxGjhypn376qUIl3IooLS1NY8aM0Zo1a4p8QwD7CgoKFB4ermnTpkmS2rdvrz179mjOnDmEC1Ra7Gv+4cp9R9OmTZWSkqJTp07p448/1oABA7RhwwanBIyKsC+Ijo62/rt169aKiIhQ48aNtWjRIsXFxTmlhoq2fZ8/f76io6MVGBjotDGXL1+u999/X0uXLlXLli2VkpKi2NhYBQYGasCAAU6r47333tPgwYPVoEEDubm56YYbblDfvn31ww8/OK2GS6l0p0XVrVtXbm5uRb45yszMLPINE2yNGjVKn3/+udatW6drr73W1eVUaDt37lRmZqbCwsLk7u4ud3d3bdiwQW+++abc3d2Vn5/v6hIrnICAgCI7++bNm3OjBVRK7Gv+j6v3HR4eHrruuusUHh6u+Ph4tW3bVm+88YZTxq6I+wIfHx+1bt1aBw4ccNqYFWn7fuTIEX399deKiYlx6rhPPfWUxo0bp4ceekitW7dWv379NHbsWMXHxzu1jsaNG2vDhg06c+aM0tLS9P333+v8+fMKDQ11ah0lqXThwsPDQ2FhYda7BBRKTk5WZGSki6qq2AzD0MiRI/XJJ59o7dq1FeoDWFF16dJFu3fvVkpKinUKDw/XI488opSUFLm5ubm6xAqnQ4cORW5T+csvvyg4ONhFFQFlx76m4u47DMNQTk6OU8aqiPuCnJwc7du3TwEBAU4bsyJt3xcuXKj69eurR48eTh333LlzqlLF9s9mNzc3p9+KtpCPj48CAgL0559/avXq1br77rtdUoc9lfK0qLi4OPXr10/h4eGKiIjQvHnzlJqaqmHDhrm6tAppxIgRWrp0qT777DPVqFHD+k2cr6+vvL29XVxdxVSjRo0i5xX7+PioTp06XKtSjLFjxyoyMlLTpk3Tgw8+qO+//17z5s3TvHnzXF0aUCau3tecOXNGv/76q3X+0KFDSklJUe3atdWwYcNyH78i7DueffZZRUdHKygoSKdPn9YHH3yg9evXa9WqVU4ZvyLsC5588kn16tVLDRs2VGZmpqZOnars7GynnopTUbbvBQUFWrhwoQYMGCB3d+f+CdurVy+99NJLatiwoVq2bKldu3ZpxowZGjx4sFPrWL16tQzDUNOmTfXrr7/qqaeeUtOmTTVo0CCn1lEi192o6vLMmjXLCA4ONjw8PIwbbrjB5bfGq8gk2Z0WLlzo6tIqFW5Fe2lffPGF0apVK8PT09No1qyZMW/ePFeXBFwWV+5r1q1bZ3fbPWDAAKeMXxH2HYMHD7a+/vXq1TO6dOlirFmzxmnj2+PsfUGfPn2MgIAAo2rVqkZgYKBx7733Gnv27HHa+IUqwvZ99erVhiRj//79Th87OzvbGDNmjNGwYUPDy8vLaNSokTFhwgQjJyfHqXUsX77caNSokeHh4WH4+/sbI0aMME6dOuXUGi7FYhiG4exAAwAAAODKU+muuQAAAABQMREuAAAAAJiCcAEAAADAFIQLAAAAAKYgXAAAAAAwBeECAAAAgCkIFwAAAABMQbgAAAAAYArCBQAAwP9nsVi0YsWKUvdfv369LBaLTp06ZWodISEhSkhIMHWdgDMQLgAAwBVt4MCBslgsslgsqlq1qvz8/NS1a1ctWLBABQUFNn3T09MVHR1d6nVHRkYqPT1dvr6+kqTExETVqlXLzPKBSoVwAQAArnh33XWX0tPTdfjwYa1cuVKdO3fWmDFj1LNnT+Xl5Vn7+fv7y9PTs9Tr9fDwkL+/vywWS3mUDVQ6hAsAAHDF8/T0lL+/vxo0aKAbbrhBzz77rD777DOtXLlSiYmJ1n4Xnxa1ZcsWtWvXTl5eXgoPD9eKFStksViUkpIiyfa0qPXr12vQoEHKysqyHimZNGlSsTV9/vnnCg8Pl5eXl+rWrat777232L4zZsxQ69at5ePjo6CgIA0fPlxnzpyxPn7kyBH16tVL11xzjXx8fNSyZUslJSVJkv7880898sgjqlevnry9vXX99ddr4cKFZXodgUtxd3UBAAAArnD77berbdu2+uSTTxQTE1Pk8dOnT6tXr17q3r27li5dqiNHjig2NrbY9UVGRiohIUEvvPCC9u/fL0mqXr263b5fffWV7r33Xk2YMEHvvfeecnNz9dVXXxW77ipVqujNN99USEiIDh06pOHDh+vpp5/W7NmzJUkjRoxQbm6uNm7cKB8fH+3du9c69vPPP6+9e/dq5cqVqlu3rn799Vf99ddfpX2ZAIcQLgAAwFWrWbNm+umnn+w+tmTJElksFr3zzjvy8vJSixYtdPToUQ0dOtRufw8PD/n6+spiscjf37/EcV966SU99NBDmjx5srWtbdu2xfa/MNSEhobqxRdf1BNPPGENF6mpqbrvvvvUunVrSVKjRo2s/VNTU9W+fXuFh4dL+udicaC8cFoUAAC4ahmGUez1Evv371ebNm3k5eVlbbvppptMGTclJUVdunQpdf9169apa9euatCggWrUqKH+/fvr5MmTOnv2rCRp9OjRmjp1qjp06KCJEyfaBKYnnnhCH3zwgdq1a6enn35aW7ZsMeU5APYQLgAAwFVr3759Cg0NtfuYveBhGIYp43p7e5e675EjR9S9e3e1atVKH3/8sXbu3KlZs2ZJks6fPy9JiomJ0cGDB9WvXz/t3r1b4eHheuuttyRJ0dHR1lO6jh07pi5duujJJ5805XkAFyNcAACAq9LatWu1e/du3XfffXYfLzxlKicnx9q2Y8eOEtfp4eGh/Pz8S47dpk0bffPNN6Wqc8eOHcrLy9Prr7+uW265RU2aNNGxY8eK9AsKCtKwYcP0ySef6F//+pfeeecd62P16tXTwIED9f777yshIUHz5s0r1diAowgXAADgipeTk6OMjAwdPXpUP/zwg6ZNm6a7775bPXv2VP/+/e0u07dvXxUUFOixxx7Tvn37tHr1ar322muSVOypVCEhITpz5oy++eYbnThxQufOnbPbb+LEiVq2bJkmTpyoffv2affu3XrllVfs9m3cuLHy8vL01ltv6eDBg3rvvfc0d+5cmz6xsbFavXq1Dh06pB9++EFr165V8+bNJUkvvPCCPvvsM/3666/as2ePvvzyS+tjgNkIFwAA4Iq3atUqBQQEKCQkRHfddZfWrVunN998U5999pnc3NzsLlOzZk198cUXSklJUbt27TRhwgS98MILkmRzHcaFIiMjNWzYMPXp00f16tUrNjBERUXpww8/1Oeff6527drp9ttv13fffWe3b7t27TRjxgxNnz5drVq10pIlSxQfH2/TJz8/XyNGjFDz5s111113qWnTptaLvT08PDR+/Hi1adNGt912m9zc3PTBBx+U6nUDHGUxzDp5EAAA4Aq3ZMkS629ZOHLdBHC14Fa0AAAAxVi8eLEaNWqkBg0a6Mcff9QzzzyjBx98kGABFINwAQAAUIyMjAy98MILysjIUEBAgB544AG99NJLri4LqLA4LQoAAACAKbigGwAAAIApCBcAAAAATEG4AAAAAGAKwgUAAAAAUxAuAAAAAJiCcAEAAADAFIQLAAAAAKYgXAAAAAAwxf8DuWXCpeDhrNIAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "def plot_prediction(model, sample_idx=0, classes=range(10)):\n", " fig, (ax0, ax1) = plt.subplots(nrows=1, ncols=2, figsize=(10, 4))\n", @@ -449,11 +566,33 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 78, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Average NLL over the last 100 samples at step 100: 495\n", + "Average NLL over the last 100 samples at step 200: 152\n", + "Average NLL over the last 100 samples at step 300: 339\n", + "Average NLL over the last 100 samples at step 400: 371\n", + "Average NLL over the last 100 samples at step 500: 223\n", + "Average NLL over the last 100 samples at step 600: 119\n", + "Average NLL over the last 100 samples at step 700: 396\n", + "Average NLL over the last 100 samples at step 800: 41\n", + "Average NLL over the last 100 samples at step 900: 80\n", + "Average NLL over the last 100 samples at step 1000: 201\n", + "Average NLL over the last 100 samples at step 1100: 289\n", + "Average NLL over the last 100 samples at step 1200: 89\n", + "Average NLL over the last 100 samples at step 1300: 251\n", + "Average NLL over the last 100 samples at step 1400: 4\n", + "Average NLL over the last 100 samples at step 1500: 66\n" + ] + } + ], "source": [ "lr = LogisticRegression(input_size=X_train.shape[1], output_size=10)\n", "\n", @@ -489,11 +628,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 79, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxcAAAGHCAYAAADC2a9WAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8ekN5oAAAACXBIWXMAAA9hAAAPYQGoP6dpAABQnElEQVR4nO3deVhUdf//8dfIMiwq5saiCGiuuUsLmImaFi7fbLUsdyxzC7lbNCuXLLLFm8otyyTLzG+lZuVGuZZaalKm3ma3C6ggaQkuhQLn90c/5uvIoAweZsCej+s61+X5zOecz3sWz+E1ZxmLYRiGAAAAAOAKVXJ3AQAAAACuDoQLAAAAAKYgXAAAAAAwBeECAAAAgCkIFwAAAABMQbgAAAAAYArCBQAAAABTEC4AAAAAmIJwAQAAAMAUhItyzGKxlGhat26dW+uMiYlRTEyMW2soaxMnTpTFYinVsgMHDlTlypVNrWfgwIEKDw8v1bI5OTl64YUXFBMTo6CgIFWuXFktWrTQ1KlT9ddff5laJ3C12rJli+69914FBwfL29tbQUFBuueee7R58+YrWu+LL76opUuXmlPkZRw9elQTJ05UamqqS8ZzxsGDB2WxWPTqq6+ats5169bJYrHok08+uWxfR9t8R/s6i8WiiRMn2uZ3796tiRMn6uDBg0XWeSXb7SvVpUsXDRs2zC1jX8rFr19ycrIsFovD1+9Sli9fbreeC4WHh2vgwIGlrtFsixcv1gMPPKBrr71Wvr6+Cg8P14MPPqh9+/bZ9Tt//rwaNGigpKQk9xR6BQgX5djmzZvtpu7du8vX17dIe9u2bd1a58yZMzVz5ky31oCSS0tLU1JSktq2bas5c+Zo2bJluueeezRx4kT17NlThmG4u0SgXHvzzTfVvn17HT58WC+//LK++uorvfrqqzpy5IhuvvlmTZ8+vdTrdnW4mDRpUrkMF+4WFxdXoqC4efNmxcXF2eZ3796tSZMmOfzj+Nlnn9WSJUvMLLNEPvvsM3377bd69tlnXT62s3r06KHNmzcrODjYqeWWL1+uSZMmOXxsyZIl5eq5T506VWfPntX48eO1cuVKTZkyRTt27FDbtm21a9cuWz8vLy8999xzmjx5sk6cOOHGip3n6e4CULybbrrJbr5WrVqqVKlSkfaLnT17Vn5+fmVZmp1mzZq5bCxcuYiICB08eFD+/v62ts6dO8vf319PPPGEvv32W918881urBAov7799lvFx8ere/fuWrJkiTw9/283ev/99+vOO+/UY489pjZt2qh9+/ZurLT8cfW+6UrUrVtXdevWvWy/y+2PL9SgQYMrKanUXnzxRd15552qU6eOaessq/eyVq1aqlWrlqnrbNOmjanru1Kff/65ateubdfWuXNnhYeH69///rfeeecdW/sDDzyghIQEvfXWW3r66addXWqpceSigouJiVHz5s21YcMGRUdHy8/PT4MHD5ZU9HBjIUeHCDMzM/XII4+obt268vb2VkREhCZNmqS8vLwS1XDhoeLCw9mvvPKKpk6dqvDwcPn6+iomJka//PKLzp8/r7FjxyokJEQBAQG68847lZWVZbfORYsWqVu3bgoODpavr6+aNm2qsWPH6syZM0XGf/vtt9WoUSNZrVY1a9ZMH374ocPDz+fOndOUKVPUpEkTWa1W1apVS4MGDdJvv/122efoiDM1StKuXbvUpUsX+fv7q1atWho5cqTOnj1r18cwDM2cOVOtW7eWr6+vrrnmGt1zzz3av39/qWp0xN/f3y5YFLrhhhskSenp6aaNBVxtEhMTZbFYNGvWLLtgIUmenp6aOXOmLBaLXnrpJVt7cafDXHzqjcVi0ZkzZ/Tee+/ZTnst3LYWni6SkpKiQYMGqXr16vL391evXr2KbB+KOw3kwm31unXrdP3110uSBg0aZBuvuFNLnK3hUvumtLQ0PfTQQ6pdu7asVquaNm2q1157TQUFBUXGLCgo0AsvvKB69erJx8dHkZGR+vrrr+36/Prrrxo0aJAaNmwoPz8/1alTR7169dLOnTsdPo+//vpLCQkJCgoKkq+vrzp27KgdO3bY9SnpqbAXvmbJycm69957JUmdOnWyvabJycmSHH8OSrrN37Fjh3r27Gl7zUJCQtSjRw8dPnz4kvXt2LFD33//vfr162fXbtZ7mZOTo8cff1wRERHy9vZWnTp1FB8fX2Q/mJOTo6FDh6pGjRqqXLmybr/9dv3yyy9F6i3utKiVK1eqS5cuCggIkJ+fn5o2barExETb6zpjxgxJ9qeTF67D0f+HknwGLzw1b9q0aYqIiFDlypUVFRWlLVu2XPJ1v5SLg4UkhYSEqG7dukX2v97e3urTp4/mzJlToc4qIFxcBTIyMvTQQw+pb9++Wr58uYYPH+7U8pmZmbrhhhu0atUqPffcc1qxYoWGDBmixMREDR06tNR1zZgxQ99++61mzJihd955R//5z3/Uq1cvDRkyRL/99pveffdd2ykFFx5WlqR9+/ape/fumjt3rlauXKn4+Hj97//+r3r16mXXb86cOXr44YfVsmVLLV68WM8884wmTZpU5DqUgoIC3XHHHXrppZfUt29fffnll3rppZeUkpKimJgY/fnnn04/v5LWKP197mT37t3VpUsXLV26VCNHjtRbb72lPn362PV75JFHFB8fr1tvvVVLly7VzJkztWvXLkVHR+vYsWOXrKdwZ1jaa3DWrFkjSbruuutKtTxwtcvPz9fatWsVGRlZ7LfaoaGhateundasWaP8/Hyn1r9582b5+vqqe/futtNeLz7ldMiQIapUqZI+/PBDJSUl6fvvv1dMTIxOnjzp1Fht27bVvHnzJEnPPPOMbbyLt8WOlLQGR/um3377TdHR0Vq9erWef/55LVu2TLfeeqsef/xxjRw5sshY06dP18qVK5WUlKQPPvhAlSpVUmxsrN0pS0ePHlWNGjX00ksvaeXKlZoxY4Y8PT114403au/evUXW+fTTT2v//v1655139M477+jo0aOKiYm54i9xevTooRdffFHS3/u/wte0R48exS5Tkm3+mTNn1LVrVx07dkwzZsxQSkqKkpKSVK9ePZ06deqSNX3xxRfy8PDQLbfc4vDxK3kvz549q44dO+q9997T6NGjtWLFCj311FNKTk7W//zP/9j+GDYMQ71799b777+vf/3rX1qyZIluuukmxcbGluh1nTt3rrp3766CggLNnj1bn3/+uUaPHm0LVs8++6zuueceSfankxd3apWzn8ELX/MFCxbozJkz6t69u7Kzs219CoNIaa/t2L9/vw4dOuRw/xsTE6NDhw7p559/LtW63cJAhTFgwADD39/frq1jx46GJOPrr78u0l+SMWHChCLtYWFhxoABA2zzjzzyiFG5cmXj0KFDdv1effVVQ5Kxa9euS9bVsWNHo2PHjrb5AwcOGJKMVq1aGfn5+bb2pKQkQ5LxP//zP3bLx8fHG5KM7Oxsh+svKCgwzp8/b6xfv96QZPz444+GYRhGfn6+ERQUZNx44412/Q8dOmR4eXkZYWFhtraFCxcakoxPP/3Uru/WrVsNScbMmTMv+RwnTJhgXOq/S3E1Gsbf75sk4/XXX7db5oUXXjAkGd98841hGIaxefNmQ5Lx2muv2fVLT083fH19jSeffNJunRc+P8MwjEmTJhkeHh7GunXrLvlcHPnxxx8NX19f484773R6WeCfIjMz05Bk3H///Zfs16dPH0OScezYMcMwHP9/NQzH2xV/f3+77XOhefPmGZKK/B/99ttvDUnGlClTbG0Xb+MLXbytLtz+zZs375LPpzQ1FLdvGjt2rCHJ+O677+zaH330UcNisRh79+41DOP/9iMhISHGn3/+aeuXk5NjVK9e3bj11luLrTMvL884d+6c0bBhQ2PMmDG29rVr1xqSjLZt2xoFBQW29oMHDxpeXl5GXFycrc3Re3Px62cYRfezH3/8sSHJWLt2bZG6Lv4clHSbv23bNkOSsXTp0mKfc3FiY2ONJk2aFGk3471MTEw0KlWqZGzdutWu/ZNPPjEkGcuXLzcMwzBWrFhxyX3gha9fYV0HDhwwDMMwTp06ZVStWtW4+eab7d6zi40YMaLYffTF/x+c/Qy2aNHCyMvLs/X7/vvvDUnGwoULbW0HDx40PDw8jMGDBxdbY3HOnz9vxMTEGFWrVjXS0tKKPL5v3z5DkjFr1iyn1+0uHLm4ClxzzTXq3LlzqZf/4osv1KlTJ4WEhCgvL882FX6rsH79+lKtt3v37qpU6f8+Yk2bNpWkIt/iFLanpaXZ2vbv36++ffsqKChIHh4e8vLyUseOHSVJe/bskSTt3btXmZmZuu++++zWV69evSLnOn/xxReqVq2aevXqZfccW7duraCgoFJ921+SGi/04IMP2s337dtXkrR27VpbjRaLRQ899JBdjUFBQWrVqtVla3zuueeUl5dnq6GkDh48qJ49eyo0NNTuXE8ApWP8/29sS3uHuUu5eDsSHR2tsLAw23bEFUpag6N905o1a9SsWTPbaZiFBg4cKMMwbEdQC911113y8fGxzVepUkW9evXShg0bbEeG8vLy9OKLL6pZs2by9vaWp6envL29tW/fPofb4r59+9q9N2FhYYqOjnbpayiVfJt/7bXX6pprrtFTTz2l2bNna/fu3SUe4+jRow5Pwyl0Je/lF198oebNm6t169Z29d922212R9EL11XcPvBSNm3apJycHA0fPty0/0/OfgZ79OghDw8P23zLli0lSYcOHbK1hYWFKS8vT3PnznWq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TStWrNCWLVt04403SpLmzp2rpk2bFlvDhx9+qN9++01bt25V9erVJUnXXnut7fHKlSvL09PzkqdBLViwQH/++afmz58vf39/SdL06dPVq1cvTZ06VYGBgZKka665RtOnT5eHh4eaNGmiHj166Ouvvy7zcMFpUQAAALjq3XTTTbJccKepqKgo7du3T/n5+ZKkyMhIu/7bt29XcnKyKleubJtuu+02FRQU6MCBA9qzZ488PT3tlmvSpImqVatWbA2pqalq06aNLViUxp49e9SqVStbsJCk9u3bq6CgQHv37rW1XXfddfLw8LDNBwcHX/Koilk4cgEAAIB/vAv/WJekgoICPfLIIxo9enSRvvXq1bP9IW9x4ta4vr6+V1akJMMwih3zwnYvL68ijxUUFFzx+JfDkQsAAABc9bZs2VJkvmHDhnbf7l+obdu22rVrl6699toik7e3t5o2baq8vDxt27bNtszevXt18uTJYmto2bKlUlNT9fvvvzt83Nvb23YkpTjNmjVTamqq3YXl3377rSpVqqRGjRpdcllXIFwAAADgqpeenq6EhATt3btXCxcu1JtvvnnJm9I89dRT2rx5s0aMGKHU1FTt27dPy5Yt06hRoyRJjRs31u23366hQ4fqu+++0/bt2xUXF3fJoxMPPPCAgoKC1Lt3b3377bfav3+/Pv30U23evFnS33etOnDggFJTU3X8+HHl5uYWWceDDz4oHx8fDRgwQD///LPWrl2rUaNGqV+/frbrLdyJcAEAAIArYxiunUqhf//++vPPP3XDDTdoxIgRGjVqlB5++OFi+7ds2VLr16/Xvn371KFDB7Vp00bPPvusgoODbX3mzZun0NBQdezYUXfddZcefvhh1a5du9h1ent7a/Xq1apdu7a6d++uFi1a6KWXXrIdPbn77rt1++23q1OnTqpVq5YWLlxYZB1+fn5atWqVfv/9d11//fW655571KVLF02fPr1Ur4vZuOYCAAAAVz0vLy8lJSVp1qxZRR47ePCgw2Wuv/56rV69uth1BgUF6YsvvrBr69evn928cVEYCgsL0yeffOJwfVar1eFjF6+jRYsWWrNmTbF1XXhL2kJJSUnF9jcTRy4AAAAAmIJwAQAAAMAUnBYFAACAq9q6devcXcI/BkcuAAAAAJiCcAEAAACnXHyBMa4OZryvhAsAAACUSOEtU8+dO+fmSlAWzp49K6nor3s7g2suAAAAUCKenp7y8/PTb7/9Ji8vL1WqxPfUVwPDMHT27FllZWWpWrVqxf5qeUkQLgAAAFAiFotFwcHBOnDggA4dOuTucmCyatWqKSgo6IrW4XS42LBhg1555RVt375dGRkZWrJkiXr37n1FRQAAAKBi8Pb2VsOGDTk16irj5eV1RUcsCjkdLs6cOaNWrVpp0KBBuvvuu6+4AAAAAFQslSpVko+Pj7vLQDnkdLiIjY1VbGxsifvn5uYqNzfXNp+Tk+PskAAAAAAqgDK/CicxMVEBAQG2KTQ0tKyHBAAAAOAGZR4uxo0bp+zsbNuUnp5e1kMCAAAAcIMyv1uU1WqV1Wot62EAAAAAuBk3JwYAAABgCsIFAAAAAFM4fVrU6dOn9euvv9rmDxw4oNTUVFWvXl316tUztTgAAAAAFYfT4WLbtm3q1KmTbT4hIUGSNGDAACUnJ5tWGAAAAICKxelwERMTI8MwyqIWAAAAABUY11wAAAAAMAXhAgAAAIApCBcAAAAATEG4AAAAAGAKwgUAoFRmzpypiIgI+fj4qF27dtq4ceMl+y9YsECtWrWSn5+fgoODNWjQIJ04ccJF1QIAXIFwAQBw2qJFixQfH6/x48drx44d6tChg2JjY5WWluaw/zfffKP+/ftryJAh2rVrlz7++GNt3bpVcXFxLq4cAFCWCBcAAKdNmzZNQ4YMUVxcnJo2baqkpCSFhoZq1qxZDvtv2bJF4eHhGj16tCIiInTzzTfrkUce0bZt21xcOQCgLBEuAABOOXfunLZv365u3brZtXfr1k2bNm1yuEx0dLQOHz6s5cuXyzAMHTt2TJ988ol69OhR7Di5ubnKycmxmwAA5RvhAgDglOPHjys/P1+BgYF27YGBgcrMzHS4THR0tBYsWKA+ffrI29tbQUFBqlatmt58881ix0lMTFRAQIBtCg0NNfV5AADMR7gAAJSKxWKxmzcMo0hbod27d2v06NF67rnntH37dq1cuVIHDhzQsGHDil3/uHHjlJ2dbZvS09NNrR8AYD5PdxcAAKhYatasKQ8PjyJHKbKysooczSiUmJio9u3b64knnpAktWzZUv7+/urQoYOmTJmi4ODgIstYrVZZrVbznwAAoMxw5AIA4BRvb2+1a9dOKSkpdu0pKSmKjo52uMzZs2dVqZL9LsfDw0PS30c8AABXB45cXKR169buLsGhefPmubuEYvXu3dvdJTj0+uuvu7uEYi1dutTdJRSrvL6fKF8SEhLUr18/RUZGKioqSnPmzFFaWprtNKdx48bpyJEjmj9/viSpV69eGjp0qGbNmqXbbrtNGRkZio+P1w033KCQkBB3PhUAgIkIFwAAp/Xp00cnTpzQ5MmTlZGRoebNm2v58uUKCwuTJGVkZNj95sXAgQN16tQpTZ8+Xf/6179UrVo1de7cWVOnTnXXUwAAlAHCBQCgVIYPH67hw4c7fCw5OblI26hRozRq1KgyrgoA4E5ccwEAAADAFIQLAAAAAKYgXAAAAAAwBeECAAAAgCkIFwAAAABMQbgAAAAAYArCBQAAAABTEC4AAAAAmIJwAQAAAMAUhAsAAAAApiBcAAAAADAF4QIAAACAKZwKF4mJibr++utVpUoV1a5dW71799bevXvLqjYAAAAAFYhT4WL9+vUaMWKEtmzZopSUFOXl5albt246c+ZMWdUHAAAAoILwdKbzypUr7ebnzZun2rVra/v27brllltMLQwAAABAxeJUuLhYdna2JKl69erF9snNzVVubq5tPicn50qGBAAAAFBOlfqCbsMwlJCQoJtvvlnNmzcvtl9iYqICAgJsU2hoaGmHBAAAAFCOlTpcjBw5Uj/99JMWLlx4yX7jxo1Tdna2bUpPTy/tkAAAAADKsVKdFjVq1CgtW7ZMGzZsUN26dS/Z12q1ymq1lqo4AAAAABWHU+HCMAyNGjVKS5Ys0bp16xQREVFWdQEAAACoYJwKFyNGjNCHH36ozz77TFWqVFFmZqYkKSAgQL6+vmVSIAAAAICKwalrLmbNmqXs7GzFxMQoODjYNi1atKis6gMAAABQQTh9WhQAAAAAOFLqu0UBAAAAwIUIFwAAAABMQbgAAAAAYArCBQAAAABTEC4AAAAAmIJwAQAAAMAUhAsAAAAApiBcAAAAADAF4QIAAACAKQgXAAAAAExBuAAAAABgCsIFAAAAAFN4ursAlMzAgQPdXUKxli5d6u4SKpyYmBh3lwAAAGA6jlwAAAAAMAXhAgAAAIApCBcAAAAATEG4AAAAAGAKwgUAAAAAUxAuAAAAAJiCcAEAAADAFIQLAAAAAKYgXAAAAAAwBeECAAAAgCkIFwAAAABMQbgAAAAAYArCBQCgVGbOnKmIiAj5+PioXbt22rhx4yX75+bmavz48QoLC5PValWDBg307rvvuqhaAIAreLq7AABAxbNo0SLFx8dr5syZat++vd566y3FxsZq9+7dqlevnsNl7rvvPh07dkxz587Vtddeq6ysLOXl5bm4cgBAWSJcAACcNm3aNA0ZMkRxcXGSpKSkJK1atUqzZs1SYmJikf4rV67U+vXrtX//flWvXl2SFB4e7sqSAQAu4NRpUbNmzVLLli1VtWpVVa1aVVFRUVqxYkVZ1QYAKIfOnTun7du3q1u3bnbt3bp106ZNmxwus2zZMkVGRurll19WnTp11KhRIz3++OP6888/ix0nNzdXOTk5dhMAoHxz6shF3bp19dJLL+naa6+VJL333nu64447tGPHDl133XVlUiAAoHw5fvy48vPzFRgYaNceGBiozMxMh8vs379f33zzjXx8fLRkyRIdP35cw4cP1++//17sdReJiYmaNGmS6fUDAMqOU0cuevXqpe7du6tRo0Zq1KiRXnjhBVWuXFlbtmwpdhm+eQKAq5PFYrGbNwyjSFuhgoICWSwWLViwQDfccIO6d++uadOmKTk5udijF+PGjVN2drZtSk9PN/05AADMVeq7ReXn5+ujjz7SmTNnFBUVVWy/xMREBQQE2KbQ0NDSDgkAKAdq1qwpDw+PIkcpsrKyihzNKBQcHKw6deooICDA1ta0aVMZhqHDhw87XMZqtdpOwy2cAADlm9PhYufOnapcubKsVquGDRumJUuWqFmzZsX255snALi6eHt7q127dkpJSbFrT0lJUXR0tMNl2rdvr6NHj+r06dO2tl9++UWVKlVS3bp1y7ReAIDrOB0uGjdurNTUVG3ZskWPPvqoBgwYoN27dxfbn2+eAODqk5CQoHfeeUfvvvuu9uzZozFjxigtLU3Dhg2T9PcXS/3797f179u3r2rUqKFBgwZp9+7d2rBhg5544gkNHjxYvr6+7noaAACTOX0rWm9vb9sF3ZGRkdq6datef/11vfXWW6YXBwAon/r06aMTJ05o8uTJysjIUPPmzbV8+XKFhYVJkjIyMpSWlmbrX7lyZaWkpGjUqFGKjIxUjRo1dN9992nKlCnuegoAgDJwxb9zYRiGcnNzzagFAFCBDB8+XMOHD3f4WHJycpG2Jk2aFDmVCgBwdXEqXDz99NOKjY1VaGioTp06pY8++kjr1q3TypUr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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "plot_prediction(lr, sample_idx=0)" ] @@ -525,18 +675,29 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 80, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGdCAYAAADAAnMpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8ekN5oAAAACXBIWXMAAA9hAAAPYQGoP6dpAABUgElEQVR4nO3dd3hUZd7G8e+k94QAKUBIQg9dqoAgCIKgrlhxdUUUC+qqiAWRXXTRd1GxYAN1LdjFArbFgqKAAgqhSm8hgYQUQjLpZea8fxwMZAmYQJKTmdyf6zoXzMkzM78JZObOc55iMwzDQERERMQiHlYXICIiIo2bwoiIiIhYSmFERERELKUwIiIiIpZSGBERERFLKYyIiIiIpRRGRERExFIKIyIiImIpL6sLqA6n00lqairBwcHYbDaryxEREZFqMAyDvLw8WrRogYfHyfs/XCKMpKamEhMTY3UZIiIichpSUlJo1arVSb/uEmEkODgYMF9MSEiIxdWIiIhIddjtdmJiYio+x0/GJcLIH5dmQkJCFEZERERczJ8NsdAAVhEREbGUwoiIiIhYSmFERERELOUSY0aqwzAMysvLcTgcVpciNeTt7Y2np6fVZYiIiEXcIoyUlpaSlpZGYWGh1aXIabDZbLRq1YqgoCCrSxEREQu4fBhxOp3s27cPT09PWrRogY+PjxZGcyGGYZCZmcmBAwdo3769ekhERBohlw8jpaWlOJ1OYmJiCAgIsLocOQ3NmzcnKSmJsrIyhRERkUaoxgNYly9fzsUXX0yLFi2w2Wx89tlnf3qfZcuW0bt3b/z8/GjTpg0vv/zy6dR6SqdaZlYaNvVkiYg0bjX+BC8oKKBHjx68+OKL1Wq/b98+xowZw+DBg1m/fj0PPfQQd911F59++mmNixURERH3U+MwMnr0aB577DEuu+yyarV/+eWXad26NXPmzCEhIYGbbrqJG2+8kaeeeqrGxTYWEyZMYOzYsVaXAUBcXBxz5sw5ZZvq9pCJiIhUpc7HjKxatYqRI0dWOjdq1Chef/11ysrK8Pb2PuE+JSUllJSUVNy22+11XWaD8txzz2EYhtVlALBmzRoCAwOtLkNERNxYnQ+0OHToEJGRkZXORUZGUl5eTlZWVpX3mTVrFqGhoRVHY9uxNzQ0lLCwMKvLAMzBpRoYLCIidaleRn3+7wDFP37rP9nAxWnTppGbm1txpKSk1HmNVvjkk0/o1q0b/v7+NG3alBEjRlBQUHDCZZq8vDyuvfZaAgMDiY6O5tlnn2Xo0KFMnjy5ok1cXByPPfYY48ePJygoiNjYWD7//HMyMzO55JJLCAoKolu3bqxdu7ZSDZ9++ildunTB19eXuLg4nn766Upf/9/LNLt27WLIkCH4+fnRuXNnlixZUhffGhERqQVlDifZBaXsP1zA7wdzWbkni2+3HOLTxAO8vSqJl37czZPfbGfG57+zJTXXsjrr/DJNVFQUhw4dqnQuIyMDLy8vmjZtWuV9fH198fX1Pa3nMwyDojJrVmH19/as9syQtLQ0/vrXv/Lkk09y6aWXkpeXx4oVK6q8PDNlyhR++eUXvvjiCyIjI5kxYwbr1q2jZ8+eldo9++yz/Pvf/+af//wnzz77LNdddx2DBg3ixhtvZPbs2UydOpXx48ezZcsWbDYbiYmJXHXVVTzyyCOMGzeOlStXcvvtt9O0aVMmTJhwQh1Op5PLLruMZs2asXr1aux2e6VAJCIidcPhNDhSWMqRglKyC0o5UlhKdkEZRwpLySksJaewjJyiMnILy8gtMg97cRmFpdX/POwTF06XFqF1+CpOrs7DyIABA/jyyy8rnfvuu+/o06dPleNFzlRRmYPOM76t9cetjq0zRxHgU71vaVpaGuXl5Vx22WXExsYC0K1btxPa5eXl8dZbb/H+++8zfPhwAN58801atGhxQtsxY8Zw6623AjBjxgzmzZtH3759ufLKKwGYOnUqAwYMID09naioKJ555hmGDx/OP//5TwA6dOjA1q1bmT17dpVh5Pvvv2fbtm0kJSXRqlUrAP79738zevToar1mERE5xjAM8krKSc8tJt1eQkZeMZl5JWTklZCZV0JWfgmH80vJyi8hu7CUMxlKGOjjSbCfN8F+XgT5eRHs502QryeBPubtIF8v2jW3bhXsGoeR/Px8du/eXXF73759bNiwgfDwcFq3bs20adM4ePAgb7/9NgCTJk3ixRdfZMqUKdx8882sWrWK119/nQ8++KD2XoUL6tGjB8OHD6dbt26MGjWKkSNHcsUVV9CkSZNK7fbu3UtZWRn9+vWrOBcaGkrHjh1PeMzu3btX/P2PcTrHB5w/zmVkZBAVFcW2bdu45JJLKj3GoEGDmDNnDg6H44QFyLZt20br1q0rggiYYVNERE5UXOYgNaeIA0eKSM05euQWk5pTxKHcYg7Zi2vUcwEQFuBNeIAPTQJ9aBLgQ5MAb5oE+hDq701YgDdh/ubfQ/29CfH3ItTfmyBfL7w8G/ZaXDUOI2vXrmXYsGEVt6dMmQLA9ddfz/z580lLSyM5Obni6/Hx8SxevJh77rmHl156iRYtWvD8889z+eWX10L5J/L39mTrzFF18tjVee7q8vT0ZMmSJaxcuZLvvvuOF154genTp/Prr79Waney8TVVXc45vqfpj/ZVnXM6nRWPUZ3HPdXXtGCZiDRmuYVlJB0uMI+sQvYfLiA5u5CUI4Wk20v+/AGAED8vokL9iAj2IyLYl+ZHj2ZB5tE0yIdmQb40CfBu8KHidNU4jAwdOvSUH1jz588/4dy5557LunXravpUp8Vms1X7UonVbDYbgwYNYtCgQcyYMYPY2FgWLVpUqU3btm3x9vbmt99+q5hVZLfb2bVrF+eee+4ZPX/nzp35+eefK51buXIlHTp0qHJZ9s6dO5OcnExqamrFZaJVq1adUQ0iIg2d02lwMKeIXRl57MkoYE9m/tGjgOyC0lPe19/bk1ZN/GnZxJ8WYf60DPMnOtSP6FB/okL9iArxw99H22C4xqe2G/r111/54YcfGDlyJBEREfz6669kZmaSkJDApk2bKtoFBwdz/fXXc//99xMeHk5ERAQPP/wwHh4eZ9wrce+999K3b18effRRxo0bx6pVq3jxxReZO3dule1HjBhBx44dGT9+PE8//TR2u53p06efUQ0iIg2JvbiMbal2tqbZ2Z6Wx470PHal51FwisspkSG+xDYNJK5pALFNA2kdHkBMeAAxTfwJD9TmrdWhMGKRkJAQli9fzpw5c7Db7cTGxvL0008zevRoFixYUKntM888w6RJk7jooosICQnhgQceICUlBT8/vzOqoVevXnz00UfMmDGDRx99lOjoaGbOnFnl4FUw9/9ZtGgREydOpF+/fsTFxfH8889zwQUXnFEdIiJWsBeXsflALhsP5LApJZetaXaSswurbOvtaaNt8yDaRQTRtnkQbZoHVvzpKr3xDZnNaChLfZ6C3W4nNDSU3NxcQkJCKn2tuLiYffv2ER8ff8Yfzq6ioKCAli1b8vTTTzNx4kSryzljjfHfUETql8NpsCsjj8T9R0jcf4QNKTnszSyosm3LMH8SokNIiA6mY1QwHSODiWsWiLebjteoS6f6/D6e4pwLWL9+Pdu3b6dfv37k5uYyc+ZMgBNmwoiIiKnM4WTTgVxW7z3Mr/uyWb//CHkl5Se0iwn3p3urMHq0CqVri1ASokNoEuhjQcWNm8KIi3jqqafYsWMHPj4+9O7dmxUrVtCsWTOryxIRaRCcToOtaXZW7Mpi1d7DrE3KPmHabICPJ2e1DqN36yacFduEHq3CCFfwaBAURlzAWWedRWJiotVliIg0KIfzS1i2M5PlOzP5eXcWWfmVZ7Y0CfCmf3xT+rcJp29cOJ2igt12aqyrUxgRERGXYBgGuzPyWbItnR+2ZbAu+UilVUkDfDwZ0KYpg9o1Y0DbpnSMDMbDQzNZXIHCiIiINFiGYfD7QTv/3ZzG17+nsf9w5dkunaNDOLdjc4a0b07v2Cb4eKnnwxUpjIiISINiGAZbUu18uSmVrzcfqjTd1sfTgwFtmzKicyTDO0XQIszfwkqltiiMiIhIg5CWW8Rn61NZtP4AO9PzK877eXtwXqcIxnSLZljHCAJ99dHlbvQvKiIilikpd/DtlnQ+WpPCL3uyKsaA+Hh5MLxTBBd1b8GwTs21sJib07+uiIjUuz2Z+Xz4WzKfJB7gSGFZxfl+ceFc2qslY7pFE+rvfYpHEHeiMNLADB06lJ49ezJnzpxaaVcfbDYbixYtYuzYsVV+PSkpifj4eNavX0/Pnj3rtTYRaTgcToPvt6Uz/5ckVu09XHE+OtSPq/rEcEXvVsSEB1hYoVhFYcRFLVy4EG/vhvFbQ1paGk2aNLG6DBFpoOzFZXy0JoW3ViWRkl0EgIcNzusUwV/7tebcDs21/kcjpzDiosLDw60uoUJUVJTVJYhIA5RhL+a1n/fx3ur9FbvehgV489d+rbnu7FjNhJEKiqIWKigoYPz48QQFBREdHc3TTz9d6etz586lffv2+Pn5ERkZyRVXXFHxtaFDhzJ58uSK22lpaVx44YX4+/sTHx/P+++/T1xcXKXLODabjVdeeYWLLrqIgIAAEhISWLVqFbt372bo0KEEBgYyYMAA9uzZU6mOefPm0bZtW3x8fOjYsSPvvPNOpa/bbDY+++yzitu//fYbZ511Fn5+fvTp04f169ef+TdLRFxG8uFCHlq0mXOe+JFXl++loNRB+4gg/n1pN1Y9OJypF3RSEJFK3K9nxDCgrOotoOucdwDYqr/a3/3338+PP/7IokWLiIqK4qGHHiIxMZGePXuydu1a7rrrLt555x0GDhxIdnY2K1asOOljjR8/nqysLH766Se8vb2ZMmUKGRkZJ7R79NFHeeaZZ3jmmWeYOnUq11xzDW3atGHatGm0bt2aG2+8kb///e98/fXXACxatIi7776bOXPmMGLECL766ituuOEGWrVqxbBhw054/IKCAi666CLOO+883n33Xfbt28fdd99d7e+JiLiupKwCnvthF59vOIjz6KyYPrFNuGNYO4Z2bI6tBu+P0ri4XxgpK4R/t7DmuR9KBZ/AajXNz8/n9ddf5+233+b8888H4K233qJVq1YAJCcnExgYyEUXXURwcDCxsbGcddZZVT7W9u3b+f7771mzZg19+vQB4LXXXqN9+/YntL3hhhu46qqrAJg6dSoDBgzgn//8J6NGjQLg7rvv5oYbbqho/9RTTzFhwgRuv/12AKZMmcLq1at56qmnqgwj7733Hg6HgzfeeIOAgAC6dOnCgQMHuO2226r1fRER13Mwp4gXftjFx4kHcBxNIed2aM4dw9rRL77hXFKWhsv9woiL2LNnD6WlpQwYMKDiXHh4OB07dgTg/PPPJzY2ljZt2nDBBRdwwQUXcOmllxIQcOJI8x07duDl5UWvXr0qzrVr167KQaXdu3ev+HtkZCQA3bp1q3SuuLgYu91OSEgI27Zt45Zbbqn0GIMGDeK5556r8nVt27aNHj16VKrz+NcoIu4jK7+EF5fu5v1fkyl1OAEY1rE5U87vSLdWoRZXJ67E/cKId4DZQ2HVc1eTcfzuTlUIDg5m3bp1/PTTT3z33XfMmDGDRx55hDVr1hAWFlatx6rq/PEzcP7oMq3qnNPpPOHc8Y97su7WP3tdIuL6isscvPlLEi/9uJv8knIAzm4Tzn0jO9InTj0hUnPuN4DVZjMvlVhx1OB6aLt27fD29mb16tUV544cOcLOnTsrbnt5eTFixAiefPJJNm3aRFJSEkuXLj3hsTp16kR5eXmlgaK7d+8mJyfn9L6Hx0lISODnn3+udG7lypUkJCRU2b5z585s3LiRoqKiinPHv0YRcV2GYfDlxlSGP72MJ77ZTn5JOd1ahvLuxP58cPPZCiJy2tyvZ8RFBAUFMXHiRO6//36aNm1KZGQk06dPx8PDzIdfffUVe/fuZciQITRp0oTFixfjdDorLuMcr1OnTowYMYJbbrmFefPm4e3tzb333ou/v/8ZDxi7//77ueqqq+jVqxfDhw/nyy+/ZOHChXz//fdVtr/mmmuYPn06EydO5B//+AdJSUk89dRTZ1SDiFhva6qdf37+O4n7jwAQFeLHAxd0ZGzPlnh4aGCqnBmFEQvNnj2b/Px8/vKXvxAcHMy9995Lbm4uAGFhYSxcuJBHHnmE4uJi2rdvzwcffECXLl2qfKy3336biRMnMmTIEKKiopg1axZbtmzBz8/vjGocO3Yszz33HLNnz+auu+4iPj6eN998k6FDh1bZPigoiC+//JJJkyZx1lln0blzZ5544gkuv/zyM6pDRKyRX1LOs0t2Mn9lEg6ngb+3J5PObcvNQ+K1X4zUGpvhAhf57XY7oaGh5ObmEhISUulrxcXF7Nu3j/j4+DP+4HUnBw4cICYmhu+//57hw4dbXc4p6d9QpOExDIOvfz/EzC+3csheDMCYblH886LORIdqjRCpnlN9fh9PsdZNLF26lPz8fLp160ZaWhoPPPAAcXFxDBkyxOrSRMTFpNuLmb5oM99vM9cqah0ewMxLujC0Y4TFlYm7UhhxE2VlZTz00EPs3buX4OBgBg4cyHvvvddg9q8RkYbPMAwWrT/II19swV5cjrenjdvObcvtw9rh5+1pdXnixhRG3MSoUaMqFi4TEampdHsxDy3czA/bzd6Qbi1DeerKHnSMCra4MmkMFEZERBq5xZvTmLZwM7lFZXh72pg8ogO3DmmjnXSl3iiMiIg0UoWl5cz8cisfrkkB1Bsi1nGbMOICk4LkJPRvJ1L/tqTmctcH69mTWYDNBred25Z7zu+At3pDxAIuH0b+GKBZWFiIv7+mm7mi0tJSADw9NUBOpK4ZhsH8lUnMWrydUoeTyBBfnr2qJwPbNbO6NGnEXD6MeHp6EhYWRkaGOegqICBA21S7EKfTSWZmJgEBAXh5ufx/R5EGraCknAcXbubLjeb+Xed3juTJy7vTJNDH4sqksXOLd/+oqCiAikAirsXDw4PWrVsrRIrUob2Z+Ux6N5Gd6fl4edh4aEwCNwyK08+dNAhuEUZsNhvR0dFERERQVlZmdTlSQz4+PhV78ohI7fvm90Pc9/FG8kvKaR7sy9xre9FXm9pJA+IWYeQPnp6eGncgInKUYRjM+X4Xz/2wC4B+ceG8eM1ZRIRo2wVpWNwqjIiIiKm4zMH9n2yqGB9yw6A4HhqToNky0iApjIiIuJmMvGJueTuRDSk5eHnYeGxsV67u19rqskROSmFERMSNbEuzc9NbazmYU0Sovzfz/taLgW01bVcaNoURERE3sXJPFre8nUh+STltmgXy+oS+xDcLtLoskT+lMCIi4gYWb05j8ocbKHU46R8fzivX9SYsQOuHiGtQGBERcXHvrN7PjM9/xzDggi5RzLm6J37emlkorkNhRETERRmGwbPf7+L5o1N3r+nfmkcv6YqnhxYyE9eiMCIi4oIMw+BfX25l/sokAO4e3p7JI9prRVVxSQojIiIuxuk0+Mfnv/P+r8nYbDDzL124bkCc1WWJnDaFERERF+JwGjz46SY+TjyAzQZPXt6dK/vEWF2WyBlRGBERcRHlDif3fbyRzzak4mGDZ8f15JKeLa0uS+SMKYyIiLiAcoeTyQs28NWmNLw8bDx39Vlc2D3a6rJEaoXCiIhIA+d0GjzwySa+2pSGt6eNF6/pxaguUVaXJVJrtGOSiEgDZhjmYNWF6w/i6aEgIu5JYUREpIEyDIPH/rutYtbMM1f1UBARt6QwIiLSQD2zZCev/7wPgCcu667BquK2FEZERBqgV5bt4YWluwGYeUkXruqr6bvivhRGREQamIXrDjDr6+0ATL2gE+O1oJm4OYUREZEGZNnOTB74ZBMANw+O57ahbS2uSKTuKYyIiDQQmw7kcNu7iZQ7DS7p2YJpoxOsLkmkXiiMiIg0APsPF3Dj/DUUljo4p10zZl/RAw/tviuNhMKIiIjFsgtKGf/Gb2Tll9I5OoR5f+uFj5fenqXxOK3/7XPnziU+Ph4/Pz969+7NihUrTtn+vffeo0ePHgQEBBAdHc0NN9zA4cOHT6tgERF3UlLuYNI7iew/XEirJv7Mv7EvwX7eVpclUq9qHEYWLFjA5MmTmT59OuvXr2fw4MGMHj2a5OTkKtv//PPPjB8/nokTJ7JlyxY+/vhj1qxZw0033XTGxYuIuDLDMHho4e/8lpRNsK8Xb07oS0Swn9VlidS7GoeRZ555hokTJ3LTTTeRkJDAnDlziImJYd68eVW2X716NXFxcdx1113Ex8dzzjnncOutt7J27dozLl5ExJW9vGwvn647gIcNXry2F+0jg60uScQSNQojpaWlJCYmMnLkyErnR44cycqVK6u8z8CBAzlw4ACLFy/GMAzS09P55JNPuPDCC0/6PCUlJdjt9kqHiIg7+eb3Qzz5rbmWyMMXd+HcDs0trkjEOjUKI1lZWTgcDiIjIyudj4yM5NChQ1XeZ+DAgbz33nuMGzcOHx8foqKiCAsL44UXXjjp88yaNYvQ0NCKIyZGKw+KiPv4/WAu9yzYgGHA+AGxXD8wzuqSRCx1WgNYbbbK080Mwzjh3B+2bt3KXXfdxYwZM0hMTOSbb75h3759TJo06aSPP23aNHJzcyuOlJSU0ylTRKTBOZxfwi1vr6WozMHg9s2YcVFnq0sSsZxXTRo3a9YMT0/PE3pBMjIyTugt+cOsWbMYNGgQ999/PwDdu3cnMDCQwYMH89hjjxEdHX3CfXx9ffH19a1JaSIiDV65w8mdH6wnNbeY+GaBvHhNL7w8NYVXpEY/BT4+PvTu3ZslS5ZUOr9kyRIGDhxY5X0KCwvx8Kj8NJ6enoDZoyIi0lg88c12Vu45TICPJ69c15tQf03hFYHTuEwzZcoUXnvtNd544w22bdvGPffcQ3JycsVll2nTpjF+/PiK9hdffDELFy5k3rx57N27l19++YW77rqLfv360aJFi9p7JSIiDdgXG1P5z4p9AMy+ogcdNHNGpEKNLtMAjBs3jsOHDzNz5kzS0tLo2rUrixcvJjY2FoC0tLRKa45MmDCBvLw8XnzxRe69917CwsI477zzeOKJJ2rvVYiINGDb0uxMPbr53a3ntuHC7idenhZpzGyGC1wrsdvthIaGkpubS0hIiNXliIhUW25RGX958Wf2Hy7knHbNmH9DX40TkUajup/f+okQEakjhmHwwCcb2X+4kJZh/jz/17MURESqoJ8KEZE68tbKJL7dko63p4251/YiPNDH6pJEGiSFERGROrDpQA7/t3gbAA+NSaBHTJi1BYk0YAojIiK1LLeojDveX0eZw2BUl0gmaIVVkVNSGBERqUWGYTD1k02kZBfRqok/T17R46QrVIuISWFERKQWvb1qP99sOYS3p42Xrumlhc1EqkFhRESklmxLs/N//zXHiUwbrXEiItWlMCIiUguKyxxM/nADpQ4nwztFcMOgOKtLEnEZCiMiIrXgiW+2syM9j2ZBPjxxRXeNExGpAYUREZEz9NOODN78JQmA2Vf2oFmQdh0XqQmFERGRM3A4v4T7Pjb3nZkwMI5hHSMsrkjE9SiMiIicJsMwmPrpJrLyS+gQGcSDoztZXZKIS1IYERE5TR+uSeH7bRn4eHrw3NVn4eftaXVJIi5JYURE5DSkZBfy2FdbAbh/VEcSorWjuMjpUhgREakhp9Pg/k82UlDqoG9cE248J97qkkRcmsKIiEgNvb0qidV7s/H39uSpK3vg6aFpvCJnQmFERKQG9mbm8/g32wF4aEwnYpsGWlyRiOtTGBERqSaH0+C+jzdSXOZkULumXNs/1uqSRNyCwoiISDW9tmIv65JzCPL14skreuChyzMitUJhRESkGvZk5vP0kp0AzLioMy3D/C2uSMR9KIyIiPwJp9PgwU83UVruZEiH5lzZp5XVJYm4FYUREZE/8d5vyaxJOkKAjyf/vrSrNsETqWUKIyIip5CaU8Tji7cB8MCojrRqEmBxRSLuR2FEROQkDMPgH5/9TkGpg96xTbhuQJzVJYm4JYUREZGT+GJjKku3m3vPPHF5Ny1uJlJHFEZERKqQXVDKv740956587x2tIsItrgiEfelMCIiUoXH/ruV7IJSOkUFc+u5ba0uR8StKYyIiPyPlbuzWLjuIDYbPH55d3y89FYpUpf0EyYicpyScgf/+Ox3AK47O5aeMWHWFiTSCCiMiIgcZ95Pe9ibVUBEsC/3jepodTkijYLCiIjIUXsz85n74x4AZlzcmRA/b4srEmkcFEZERDi2pkipw8m5HZpzYbdoq0sSaTQURkREgM82HGTlnsP4ennw6CVa8l2kPimMiEijl1tUxmNfmUu+3zW8Pa2basl3kfqkMCIijd4z3+3gcEEp7SKCuHlwG6vLEWl0FEZEpFHbkprLO6v3AzDzL120poiIBfRTJyKNltNpMOPzLTgNuKh7NAPbNbO6JJFGSWFERBqthesPkrj/CAE+nky/MMHqckQaLYUREWmUcovKmLX42KDV6FB/iysSabwURkSkUXp2yU4OF5TStnkgNw6Kt7ockUZNYUREGp2tqXbeXpUEwL/+0lWDVkUspp9AEWlUDMPgkS/MQatjukVxTnsNWhWxmsKIiDQq/92cxm9J2fh5ezD9ws5WlyMiKIyISCNSVOrg3/81B61OOrctLcM0aFWkIVAYEZFG45Xle0jNLaZFqB+3DmlrdTkicpTCiIg0Cgdzinh52R4AHrowAX8fT4srEpE/KIyISKMwa/E2isuc9IsP58Ju0VaXIyLHURgREbf3275svtqUhocNHr64MzabzeqSROQ4CiMi4tYcToN/fbkFgKv7taZLi1CLKxKR/6UwIiJu7ZPEFLak2gn28+Le8ztYXY6IVEFhRETcVn5JOU99txOAu4e3p2mQr8UViUhVFEZExG29smwPmXklxDYN4LoBsVaXIyInoTAiIm7pYE4Rry7fC8C00Qn4emkqr0hDpTAiIm5p9jfbKSl30j8+nFFdIq0uR0ROQWFERNzOhpQcPtuQis0G/7xIU3lFGjqFERFxK4Zh8OhXWwG47KxWdG2pqbwiDZ3CiIi4lcWbD5G4/wj+3p7cP6qj1eWISDWcVhiZO3cu8fHx+Pn50bt3b1asWHHK9iUlJUyfPp3Y2Fh8fX1p27Ytb7zxxmkVLCJyMiXlDh7/xtyV95YhbYgK9bO4IhGpDq+a3mHBggVMnjyZuXPnMmjQIF555RVGjx7N1q1bad26dZX3ueqqq0hPT+f111+nXbt2ZGRkUF5efsbFi4gc751V+0nJLiIi2Jdbz21jdTkiUk02wzCMmtyhf//+9OrVi3nz5lWcS0hIYOzYscyaNeuE9t988w1XX301e/fuJTw8/LSKtNvthIaGkpubS0hIyGk9hoi4t9zCMobM/pHcojIev6wbV/er+pcjEak/1f38rtFlmtLSUhITExk5cmSl8yNHjmTlypVV3ueLL76gT58+PPnkk7Rs2ZIOHTpw3333UVRUdNLnKSkpwW63VzpERE7lxR93kVtURsfIYK7sE2N1OSJSAzW6TJOVlYXD4SAysvKc/cjISA4dOlTlffbu3cvPP/+Mn58fixYtIisri9tvv53s7OyTjhuZNWsW//rXv2pSmog0YinZhby1cj8AD47phKeHpvKKuJLTGsD6v3P2DcM46Tx+p9OJzWbjvffeo1+/fowZM4ZnnnmG+fPnn7R3ZNq0aeTm5lYcKSkpp1OmiDQSs7/dQanDyaB2TRnaobnV5YhIDdWoZ6RZs2Z4enqe0AuSkZFxQm/JH6Kjo2nZsiWhocfm+ickJGAYBgcOHKB9+/Yn3MfX1xdfX21oJSJ/bmNKDl9sNBc4e2hMghY4E3FBNeoZ8fHxoXfv3ixZsqTS+SVLljBw4MAq7zNo0CBSU1PJz8+vOLdz5048PDxo1arVaZQsImIyDIP/W2xO5b30rJZ0aaEFzkRcUY0v00yZMoXXXnuNN954g23btnHPPfeQnJzMpEmTAPMSy/jx4yvaX3PNNTRt2pQbbriBrVu3snz5cu6//35uvPFG/P39a++ViEij88O2DH7bl42vlwf3jdQCZyKuqsbrjIwbN47Dhw8zc+ZM0tLS6Nq1K4sXLyY21tyeOy0tjeTk5Ir2QUFBLFmyhDvvvJM+ffrQtGlTrrrqKh577LHaexUi0uiUO5w88c12AG4YFE+LMP1yI+KqarzOiBW0zoiI/K8Fa5KZ+ulmwgK8WXb/MEL9va0uSUT+R52sMyIi0hAUlTp4ZslOAP4+rJ2CiIiLUxgREZfz5sp9pNtLaBnmz3UDYq0uR0TOkMKIiLiUIwWlzPtpDwD3juyAr5enxRWJyJlSGBERl/Lij7vJKy4nITqEsT1bWl2OiNQChRERcRkp2YW8s+rosu+jO+GhZd9F3ILCiIi4jGeW7KxY9n1I+2ZWlyMitURhRERcwtZUO59tOAjA1As6adl3ETeiMCIiLuHJb7djGHBh92i6twqzuhwRqUUKIyLS4K3ee5ifdmTi5WHTsu8ibkhhREQaNMMwKpZ9H9c3hvhmgRZXJCK1TWFERBq077amsz45B39vT+4e3t7qckSkDiiMiEiDVe5wMvvbHQBMPCeeiBA/iysSkbqgMCIiDdbCdQfZnZFPkwBvbjm3jdXliEgdURgRkQapuMzBs9+bm+HdMawdIX7aDE/EXSmMiEiD9M6q/aTlFtMi1I+/na3N8ETcmcKIiDQ49uIyXvppNwCTz++An7c2wxNxZwojItLg/Gf5XnIKy2gfEcTlvVpZXY6I1DGFERFpUDLzSnhtxT4A7hvVEU9thifi9hRGRKRBeXHpLorKHPSMCWNk50iryxGReqAwIiINRvLhQt7/LRnQZngijYnCiIg0GM9+v5Myh8GQDs0Z0Lap1eWISD1RGBGRBmFbmp3PNhwE4IFR2gxPpDFRGBGRBmH2tzswDLioezRdW4ZaXY6I1COFERGx3JqkbJZuz8DTw8aU8ztYXY6I1DOFERGxlGEYPPH1dgCu6hNDm+ZBFlckIvVNYURELPXjjgzW7j+Cr5cHdw9vb3U5ImIBhRERsYzTafDkNzsAmDAwjqhQP4srEhErKIyIiGW+3JTK9kN5BPt5cdvQtlaXIyIWURgREUuUljt5+rudAEw6ty1hAT4WVyQiVlEYERFLLFibQnJ2Ic2CfLlhUJzV5YiIhRRGRKTeFZaW8/wPuwC4a3g7Any8LK5IRKykMCIi9W7+yiQy80qICffn6r6trS5HRCymMCIi9Sq3sIyXf9oDwJTzO+DjpbchkcZO7wIiUq/mLduDvbicTlHB/KVHS6vLEZEGQGFEROrNodxi3vxlHwD3j+qIp4fN4opEpCFQGBGRevP80l2UlDvpE9uE8zpFWF2OiDQQCiMiUi/2ZRWwYE0KAFNHd8JmU6+IiJgURkSkXjz93Q4cToPzOkXQNy7c6nJEpAFRGBGROvf7wVy+2pSGzWaOFREROZ7CiIjUudnfmpvhXdKjBQnRIRZXIyINjcKIiNSpVXsOs2xnJl4eNqacr14RETmRwoiI1BnDMHj8m+0AXNO/Na2bBlhckYg0RAojIlJnvt1yiI0pOQT4eHLnee2tLkdEGiiFERGpE+UOJ08eHSty0znxNA/2tbgiEWmoFEZEpE58nHiAvZkFhAf6cPOQNlaXIyINmMKIiNS6olIHc77fCcAdw9oR7OdtcUUi0pApjIhIrZu/Mol0ewktw/z529mtrS5HRBo4hRERqVW5hWXM+2k3AFPO74Cvl6fFFYlIQ6cwIiK1au6y3diLy+kYGczYs1paXY6IuACFERGpNak5Rbz5SxIAD1zQEU8PbYYnIn9OYUREas2zS3ZSWu6kX3w453WKsLocEXERCiMiUit2HMrj03UHAJg2uhM2m3pFRKR6FEZEpFY88c12nAaM6RbFWa2bWF2OiLgQhREROWOr9x5m6fYMPD1s3DdSm+GJSM0ojIjIGTEMg1lfm5vh/bVfDG2aB1lckYi4GoURETkjX/9+bDO8u4d3sLocEXFBCiMictrKHE5mH90M7+bBbbQZnoicltMKI3PnziU+Ph4/Pz969+7NihUrqnW/X375BS8vL3r27Hk6TysiDcz7vyazL6uAZkHaDE9ETl+Nw8iCBQuYPHky06dPZ/369QwePJjRo0eTnJx8yvvl5uYyfvx4hg8fftrFikjDYS8u47kfdgFw94gOBPl6WVyRiLiqGoeRZ555hokTJ3LTTTeRkJDAnDlziImJYd68eae836233so111zDgAEDTrtYEWk4Xv5pD9kFpbRpHsjVfWOsLkdEXFiNwkhpaSmJiYmMHDmy0vmRI0eycuXKk97vzTffZM+ePTz88MOnV6WINCipOUW8/vM+AB68oBPenhp+JiKnr0b9qllZWTgcDiIjIyudj4yM5NChQ1XeZ9euXTz44IOsWLECL6/qPV1JSQklJSUVt+12e03KFJE69tR3Oygpd9IvLpzzO0f++R1ERE7htH6d+d9lng3DqHLpZ4fDwTXXXMO//vUvOnSo/pS/WbNmERoaWnHExKgLWKSh2JKay6L1BwF46MIELfsuImesRmGkWbNmeHp6ntALkpGRcUJvCUBeXh5r167l73//O15eXnh5eTFz5kw2btyIl5cXS5curfJ5pk2bRm5ubsWRkpJSkzJFpI4YhsGsxdsxDLi4Rwt6xoRZXZKIuIEaXabx8fGhd+/eLFmyhEsvvbTi/JIlS7jkkktOaB8SEsLmzZsrnZs7dy5Lly7lk08+IT4+vsrn8fX1xddX6xWINDTLdmby8+4sfDw9eGCUln0XkdpR47l4U6ZM4brrrqNPnz4MGDCAV199leTkZCZNmgSYvRoHDx7k7bffxsPDg65du1a6f0REBH5+fiecF5GGrdzh5N+LtwEwfkAsMeEBFlckIu6ixmFk3LhxHD58mJkzZ5KWlkbXrl1ZvHgxsbGxAKSlpf3pmiMi4noWrE1hZ3o+YQHe3Hlee6vLERE3YjMMw7C6iD9jt9sJDQ0lNzeXkJAQq8sRaXTsxWUMm/0ThwtKeeTizkwYVPUlVhGR41X381uLA4jIn5r74x4OH13g7NqzY60uR0TcjMKIiJxSSnYhbxxd4Gz6mAQtcCYitU7vKiJySo9/s51Sh5NB7ZpyXqcIq8sRETekMCIiJ7U2KZv/bkrDZoN/XNhZC5yJSJ1QGBGRKjmdBo/+15zKO65PDAnRGjwuInVDYUREqvT5xoNsTMkh0MeTKSOrv52DiEhNKYyIyAkKSsp5/OvtANw+rB0RwX4WVyQi7kxhREROMPen3aTbS2gdHsDEc7SmiIjULYUREakk+XAh/1lhTuX9x4UJ+Hl7WlyRiLg7hRERqeT/Fm+ltNzJOe2acX7nE3fjFhGpbQojIlLhl91ZfLslHU8PGzMu1lReEakfCiMiApi78s78cisA150dS4fIYIsrEpHGQmFERAB4/7dkdqTnERbgzeQR2pVXROqPwoiIcDi/hKe+3QHAved3ICzAx+KKRKQxURgREZ78Zgf24nISokP4a7/WVpcjIo2MwohII7cu+QgL1qYA8OglXfDSrrwiUs/0riPSiDmcBjM+/x2Ay3q1pE9cuMUViUhjpDAi0oh98Fsyvx+0E+zrxbTRCVaXIyKNlMKISCOVXVDK7KODVqeM7EDzYF+LKxKRxkphRKSRmv3tdnKLyugUFcx1Z8daXY6INGIKIyKN0IaUHD5cYw5anXlJVw1aFRFL6R1IpJEpdzh5aOFmDAMuO6sl/eI1aFVErKUwItLIzF+ZxNY0O6H+3jx0oQatioj1FEZEGpHUnCKeWbITgAdHd6JZkAatioj1FEZEGpFHvthCYamDPrFNGNcnxupyREQAhRGRRmPJ1nS+25qOl4eN/7u0Gx4eNqtLEhEBFEZEGoWCknIePrrS6s1D2tAxKtjiikREjlEYEWkE5ny/k9TcYmLC/bnrvPZWlyMiUonCiIib23Qgh9d/3geYa4r4+3haXJGISGUKIyJurMzh5IFPNuE04C89WjCsY4TVJYmInEBhRMSNvbp8L9sP5dEkwJuHL+5sdTkiIlVSGBFxU7sz8nnu+10APHxxF5pqTRERaaAURkTckNNp8OCnmyh1OBnWsTmX9GxhdUkiIielMCLiht79dT9r9x8h0MeTxy7ths2mNUVEpOFSGBFxMwdzinji6+2AueR7yzB/iysSETk1hRERN2IYBlM/2URBqYO+cU24tn+s1SWJiPwphRERN/Lur8n8vDsLP28Pnri8u5Z8FxGXoDAi4iaSDxcya/E2AKZe0Ik2zYMsrkhEpHoURkTcgNNpcN8nGyksdXB2m3CuHxBndUkiItWmMCLiBt5cmcRv+7IJ9PFk9hU9dHlGRFyKwoiIi9uTmc+T35izZx66MIGY8ACLKxIRqRmFEREXVu5wcu9HGykpdzK4fTOu6dfa6pJERGpMYUTEhb2wdDcbUnII9vPiySu6a3EzEXFJXlYXICKnJ3F/Ni8sNfee+b9LuxEd2sAXN3OUQ2EW5KdDfgYUZILTUbmNlx8ERUBQJARHgl8YKGCJuD2FEREXlFdcxt0fbsBpwGVnteQvPRrQ3jOGAbkH4NAmOLT56LEJclIAo2aP5ekLzTpAVLfKh39YXVQuIhZRGBFxQQ9/voUDR4qICffnX5d0sbocKLbDvmWw+wfY8wPkJFfdzuYBgc3N3o/A5uDhXfnrZYVmr0l+OhTngKME0jebx8aKB4GWvaDtcGg3HFr2AU+9lYm4Mv0Ei7iYzzccZOH6g3jYYM64ngT7ef/5nepCUQ5s/Rw2fwz7V4Jx3CUXDy9onnCsJyO6OzRtD4HNwMOzeo9fVgx5aZCx7VjvyqFNZtA5mGgey58E31DoMAq6j4M2QxVMRFyQfmpFXMiBI4X847PfAbjzvPb0jg2v3wIcZbDrO9j4Iez81uy5+EPTdsd6K2IHge8ZrgDr7Qfh8ebRacyx87kHYe+PZi/M3h+h6Ahs/sg8AiOg2xVmMGnR88yeX0Tqjc0wjBpexK1/drud0NBQcnNzCQkJsbocEUuUOZxc/epqEvcf4azWYXx86wC8POtpQlxhNiS+Cb/9x+yt+EPzBOgxDrpcCk3i6qeW4zkdZg/J5o/h90+h8PCxr7XqC2ffBgmXqLdExCLV/fxWGBFxEbO+3sYry/YS7OfFf+8cTOum9bC4WeYOWD0XNi6A8iLzXGAEdL/K7H2I6tZwZrs4yszekk0fwvb/gqPUPB/SCvrdDL2vB/8m1tYo0sgojIi4kaXb07lx/loAXv5bLy7oGl23T5ixHZY9DlsWHTsX1R0G3GH2gnj51u3zn6m8dFj7Bqx93ZxCDOATDANuh7Nv12wckXqiMCLiJlJzihjz/ApyCsuYMDCOR/5Sh7NnMnfCsifMSx5/TMPtdJEZQloPaDi9INVVVmy+llUvQcYW85xvqPl6zp4EfqHW1ifi5hRGRNzA8eNEurUM5ZPbBuDrVc3ZKDVhT4Olj8HG98FwmucS/gJDH4TIBjB1+Ew5nbD9S/hxFmRuM8/5hcGQ+6HfLeDlY2l5Iu5KYUTEDTz+9XZeXraHYF8v/ntXHYwTKS2EVS/Cz3OgrMA81/FCM4REd6/d52oInE7Y+hn89Dhk7TDPhbeB8x+FThe6Xs+PSANX3c9vDTEXaaC+3XKIl5ftAeDJK7rXbhAxDHMGyvePgP2gea5VPxj1b4jpW3vP09B4eEDXy6DzJbDhfVj6KGTvhQXXQtxg8/W7YwgTaeC0UZ5IA7Q7I597PzKXHL1hUByju9XigNXMHTD/Ilh4sxlEQmPg8tdh4nfuHUSO5+EJva6DOxNh8L3msvNJK+DVc+HrB80VZUWk3ugyjUgDk1dcxtiXfmFPZgH94sN576b+eNfGeiKlhbDiKfjleXCWgZc/DLkXBvwdvBv4Jnt1LScZlsw4NnsoOBoueNzsQdGlG5HTVt3P79N6h5s7dy7x8fH4+fnRu3dvVqxYcdK2Cxcu5Pzzz6d58+aEhIQwYMAAvv3229N5WhG3ZxgG9328kT2ZBUSF+PHSNb1qJ4js+h7mng0rnjaDSIcL4I5fzQGcjT2IAIS1hivnw98WQpN4c2G3j6+H966AI0lWVyfi9mr8LrdgwQImT57M9OnTWb9+PYMHD2b06NEkJ1e9Mdby5cs5//zzWbx4MYmJiQwbNoyLL76Y9evXn3HxIu5m7k97+HZLOj6eHsz7Wy+aB5/heh5FR2DRbfDe5ZCzH0Jawrj34K8fQpPY2inanbQbDrevhnOngqcP7P4e5g6EX181B7+KSJ2o8WWa/v3706tXL+bNm1dxLiEhgbFjxzJr1qxqPUaXLl0YN24cM2bMqFZ7XaaRxmDZzkwmvPkbhgGzLuvGX/u1PrMH3P5f+OoecwdcbObS6MOmn/meMY1F1i748m7Y/4t5u/VAuORFaNrW2rpEXEidXKYpLS0lMTGRkSNHVjo/cuRIVq5cWa3HcDqd5OXlER5ezxt8iTRguzPy+Pt76zAMuLpvzJkFkcJs+ORG+PAaM4g062AOTr1gloJITTRrD9d/BWOeAu9ASF4J8wbCyhfMPXFEpNbUKIxkZWXhcDiIjIysdD4yMpJDhw5V6zGefvppCgoKuOqqq07apqSkBLvdXukQcVfZBaXcOH8teSXl9I1rwr8uOYNFxnZ+a44N+f1TsHnCOffArSsgpl/tFdyYeHiY+9rcvgraDIXyYvjuH+ZsJI0lEak1pzUyzvY/o8sNwzjhXFU++OADHnnkERYsWEBERMRJ282aNYvQ0NCKIyYm5nTKFGnwSsodTHonkeTsQmLC/Xn5b71Pb4XVkjz44i54/yqzN6R5J7jpexjxCHj71XrdjU6TWLjuM7j4efAJOtpLMggS3zLXbBGRM1KjMNKsWTM8PT1P6AXJyMg4obfkfy1YsICJEyfy0UcfMWLEiFO2nTZtGrm5uRVHSkpKTcoUcQmGYfDQwt/5LSmbYF8v3ri+L02DTmPA6v5V5gfjurcAmzlV95Zl0LJXrdfcqNls5s6/t/1ijh8pzYcv74L3x5kb84nIaatRGPHx8aF3794sWbKk0vklS5YwcODAk97vgw8+YMKECbz//vtceOGFf/o8vr6+hISEVDpE3M3Ly/by6boDeNjgxWt70T4yuGYP4CiDH2bC/DHmTJnQ1nD9lzDq/9QbUpeaxMGEr2DkY+aMm13fwrwBsONrqysTcVk1Xg5+ypQpXHfddfTp04cBAwbw6quvkpyczKRJkwCzV+PgwYO8/fbbgBlExo8fz3PPPcfZZ59d0avi7+9PaKh2zJTG6atNqTz57XYAHvlLF87t0LxmD3B4D3x6E6SuM2/3vNZcpMtPwb1eeHjCwDuh7XBYeAukb4YProY+N8LI/wOfWt5DSMTN1XjMyLhx45gzZw4zZ86kZ8+eLF++nMWLFxMba65ZkJaWVmnNkVdeeYXy8nLuuOMOoqOjK46777679l6FiAtZuSeLKQs2YhgwYWAc4wfEVf/OhgHr3oaXB5tBxC/MXKxr7FwFEStEdoabfzAvjQGsfcNcUj5to7V1ibgYLQcvUo+2ptoZ98oq8krKGdMtihf+2gtPj2ouN150xFz3Yuvn5u24wXDpKxDasu4Klurbs9RcYC7/EHh4w4iH4ew7zBk5Io1UnS4HLyI1d+BIIRPe/I28knL6xYfzzFU9qx9E9q+EeeeYQcTDG0b8C8Z/oSDSkLQ9z5wC3Okic8n97/5hrnyrwa0if0phRKQeHCkoZfwbv5GRV0LHyGD+M74Pft7VmMLrKIcf/w3zLwT7AQhvCzctgXMm6zfuhiggHMa9CxfNMTci3LMUXh4Eu5b86V1FGjO9m4nUsfyScm6Yv4a9mQVEh/ox/8a+hPp7//kdc5LNELLsCTCc0PNvcOtyaHFW3Rctp89mgz43wC0/QWRXKMg0N9z7ZhqUl1hdnUiDpDAiUoeKSh1MnL+GDSk5hAV489aN/YgOrcYuuVsWmZdlUlaDbwhc/jqMfUnLubuSiE5w0w/Q35xpyOq58Npwc88bEalEYUSkjpSUO7j13UR+3Wcuavb2jf3o8GdriZQWmCupfjwBSnKhVV+YtAK6XVEvNUst8/aD0U/ANR9BQFM4tBleGQLr39XKrSLHURgRqQNlDid3vr+e5Tsz8ff25M0b+tK9Vdip73RoM7w69NhKqoPvgxu+NhfZEtfWYRRM+gXiz4WyQvj8Dvh0IhTnWl2ZSIOgMCJSyxxOg3s/2sh3W9Px8fLgtev70CfuFLtUGwasfhn+cx5k7YTgaLj+Cxj+T/CsxtgScQ0h0eb+NsMfNjcx/P1TePkcSPnN6spELKcwIlKLyh1Opny0gS82puLlYePlv/ViULtmJ79DQZa5t8k3U8FRCh1GH/0Nekj9FS31x8MDBk+Bid9BWKw5SPmNC2DZbHA6rK5OxDIKIyK1pMzh5O4PN/D5BjOIvPDXsziv0yk2kNzzI8wbaO5t4ukLY56Cv34AgU3rr2ixRqs+MOln6HYVGA748TF46y+Qe8DqykQsoTAiUgtKyh3c/t46/rs5DW9PG3Ov7cXobtFVNy4vgW+nwztjIT8dmifALT9Cv5vNaaHSOPiFwOX/MVfR9QmC/T+buy//scKuSCOiMCJyhorLHEx6J5ElR8eIvHpdH0Z2iaq6ceZOeG0ErHrRvN3nRrh5KUR2qb+CpWHpcfXR9WN6QXEOfDQePv87lORbXZlIvVEYETkD+SXl3PTWWn7ckYmftwevX9+HYZ0iTmxoGOYmaq8MgUObwD8crn4fLnpWO7wKNG1rjiM5Zwpgg/XvmP9XDq6zujKReqEwInKasvJLuOY/q/l5dxYBPp68OaEfg9s3P7FhfiZ8eA18dQ+UF0GbYUf3MLmw/ouWhsvz6OZ6E76CkJaQvQdePx+WP6XBreL2FEZETkNKdiFXvryKTQdyCQ/04f2bz2ZA2yoGnu74GuaeDTsWg6cPjPo3/G0hBJ/kMo5I3Dlw2y/QeSw4y2Hpo/DmaMjeZ3VlInVGYUSkhral2bls3kr2ZRXQMsyfjycNoGdMWOVGJfnmSqofXA2FWRDRBW7+EQZoS3mpBv8mcOV8c3Crbwik/GquSbLuba3cKm5J74oiNbByTxZXvbKKzLwSOkUFs/D2gbRt/j/7xSSvPvrBcXQl1QF/NwepRnW1pGZxUTabObj1tl8gdhCU5sMXd5qX/PIzrK5OpFYpjIhU0we/JTP+9d/IKy6nX1w4C24dQGSI37EGZcXw3T/NRayO7IOQVuZKqqP+z9yjROR0hLWG67+EEf8CD2/zkt9L/c3NFEXchM0wGn6fn91uJzQ0lNzcXEJCQqwuRxoZh9Ng1uJtvPazec3+kp4teOLy7vh5ex5rdHAdfHYbZG43b/e4Bi6YBf5h9V+wuK9Dv8OiSZC+2bzd9XJzsbyAU2w3IGKh6n5+K4yInEJ+STl3f7CeH7ab3eJTzu/Anee1w/bH4mTlJbB8Nqx4xlxJMzACLn4OOo2xsGpxa+WlsPzJY//ngiLNKeKanSUNkMKIyBlKyirg1ncS2ZGeh6+XB09f1YOLurc41uDAWnP31T96Q7pcBhc+rd9SpX4cTIRFt0HWDvN218th9JMQeIq9kETqmcKIyBn4fms693y0gbzicpoH+/Kf8X2OzZgpLYQf/w9WzwXDCYHNza7yLmOtLFkao7JiWPY4/PK82UsS0NQMJF0v19YC0iAojIicBofT4NklO3nxx90A9IltwkvX9jo2UHXvMvhqMmTvNW93HwcXPK7eELFW6npzCfn0383bHcfAmNkQ2srauqTRUxgRqaHsglLu/nA9K3ZlATBhYBwPjUnAx8sDCg7Dd9Nh4wdm4+AWcPEc6DDKuoJFjldeCj8/a45hcpaZm++d9w/odwt4eP75/UXqgMKISA2s3J3FPR9tIN1egr+3J49f3o1LerY0F5ja8D589w8oygZs0HciDJ8BfqFWly1yooxt8OXd5kJpAC3OgovmQIueVlYljZTCiEg1lDmcPP3dTl5ZvgfDgLbNA3np2l50igox39QX3w9JK8zGkV3NN/WYvpbWLPKnnE5YNx+WPAIluWDzgH63wrBpCtFSrxRGRP7E/sMF3PXBejYeyAXgr/1aM+OizvgbhfDT4/Dry+beIF7+MPRBcyl3T2+Lqxapgbx0+OZB2LLQvB0YASMfNcc6aYCr1AOFEZGTcDoN3vstmVmLt1FY6iDU35snLu/GBV2iYPMn5iWZ/ENm404XmZvbNYm1tmiRM7H7B/j6AThsDsym9QBzgGtUN2vrErenMCJShZTsQqZ+uomVew4D0D8+nGfH9aRFwVb4djokrzIbhreB0bOh/QgLqxWpReUlsOolc4BrWaF56abX9TBsOgQ1t7o6cVMKIyLH+d/eED9vD6Ze0Inru3jjsfRR2PSh2dA7AAbfCwPvBC9fa4sWqQu5B8zgvfUz87ZvCAy5D/pP0v95qXUKIyJH7UzP4x+Lfue3pGwA+sWHM/viNsTueAN+eQ7Ki8yGPa6B4f+EkBaneDQRN5H0C3w7DdI2mrebxMGIR6DzWI0nkVqjMCKNXmFpOc/9sIvXV+yj3Gng7+3JtJFt+Jv3UjyWz4ZCcz0RWg8wx4W07GVtwSL1zek0ewW//9excVItepmhpM25lpYm7kFhRBotwzD4flsGj3yxhYM5Zq/HqITmzOq4i/Bfn4QjSWbD8DbmeiH6TVAau5J8WPkCrHoRSvPNc23Pg+EPa30SOSMKI9IobT9k57GvtvHzbrPXo1WoL3N7p9J998uQscVsFBQJ506FXuM1VVfkePmZ5gDXtW+Yq7gCJPzFnNoe2cXa2sQlKYxIo5KRV8yzS3ayYE0KTgN8PG083iWZsTlv4/FHCPENgUF3w9m3gU+gtQWLNGTZ++DHf8Pmj4GjHxGdx5qhJCLBysrExSiMSKOQX1LOmz/v4+VleygodeCBk+lxO7mufCE+WUc3DfMJNgPIgNvBv4m1BYu4koxt5gKAf8y8wQadL4HBUyC6h5WViYtQGBG3Vlzm4J1V+5m3bA/ZBaX4UMZdzRK5yeML/OxJZiOfIHO64oA7tKuuyJlI32KGkm1fHDvXbgScMwViB2rMlZyUwoi4pZJyBx+tPcCLS3eRbi8hhAJuD/mZ6z2+wb843WzkF2aGkP63KoSI1Kb0LebOwL9/CobTPBfT31yXp+MY7Q4sJ1AYEbdSUFLO+78m858Ve8nIK6G1LZ07A75nLEvxdhxdJyQ4Ggb8HXpPAN8gS+sVcWvZ+2Dl87D+PXCUmOeaxJm/BJz1N/ANtrQ8aTgURsQtHCkoZf7KJOavTMJeVMIgjy3c7PsDQ4w12P4YWBfR2RwT0n2cVpAUqU95h+C3V83ZN0VHzHO+IWYg6TMRmrWztj6xnMKIuLSd6Xm8+UsSi9YfwK8slys8lzPBZymtjLRjjdqPhLNvhzZDdc1axEqlhebiaavnQdbOY+fjz4W+E81LOJpG3ygpjIjLcTgNlu3M4M1fkvh5VwZne2zjSs9lXOT5Kz4cXfPANwR6/BX63gTNO1hbsIhU5nTCnqWw5j+w81sqpgUHR0PPa6DntdC0raUlSv1SGBGXkW4v5qM1KXy4JgUjJ4XLPZdzpdcyWtsyjzWK6m7+htXtSq0RIuIKcpIhcT6sexsKjvtZjh1khpLOl2hsVyOgMCINWpnDyYpdmXzwWwqJ2/cy0vYrl3ispL/nNjz++G3KNwS6Xg5nXWfuG6NLMSKup7wUtn8FG94ze03+mIXjHQgJF5m/YLQZqss4bkphRBocwzDYfDCXhesO8v2GPfQs/o2/eK5kqMcGfGyOYw3jBpsBJOFi8AmwrmARqV25B2HjB7D+XTiy79j5gGbQ5VLoepk5VVhThN2Gwog0GLvS8/jv5jSWbthFm+yfGeP5K0M8NuFnKzvWKLIrdLvC7AkJa21dsSJS9wwDDqwxl5v/feGxHbTB3Dsq4WJzT5zYQeDpZV2dcsYURsQyhmGwMz2fxZvTWLtxI22PrGCExzrO9thaqQfECG+DrfNYs5s2srN1BYuIdRzlsPcn+P0T2LEYinOPfc0/HDqMgg4XQLvhWr/EBSmMSL0qLXeyJimbH7YcJGPrcjoVrGG4x3oSPJIrtXM07YBnl7Hm4LXILhoHIiLHlJfCvuXmXjjb/wtF2ce+5uENceeY4aTtcGjWXu8fLkBhROrcgSOFLN+RyfatG/Dev5z+zvUM8NhKsK2ooo2BB45W/fBKGAMdRms6rohUj6McUlbDjq/NI3tP5a+HxkDb88wek7jB2vqhgVIYkVp3pKCUX/dmsW3b75TtWU67QjN8RNuyK7Ur9WmCR/vheHUYCe3P15uEiJy5rF1mKNnzA+xfdWwZegBs5riz+MEQPwRaDwD/MKsqleMojMgZy7AXk5iUxf5ta3AkraJ1/kb6eOw8IXw4bN4URfYmIOF8PNoPh6ge4OFhUdUi4vZKC2H/L7D7B9j7I2Ru/58GNnObiNZnm8GkdX+zJ0WXdeqdwojUSEm5g+2pdnbv2UnurlX4Zaynbel2utr2EWgrqdTWgSf28G74dzwPv/bnmlPxvP0tqlxEGr38DEhaAftWmGNO/veSDpizdFr2gVa9zT9bnAV++jypawojclIl5Q52HbKzf/dW7Enr8ErfRGTBDhJs+2hus5/QvtgjEHvzXgS2P4fAdudAi15a/0NEGq78DEheffRYBWkbwXCc2C68LUT3OHZEdYPAZvVfrxtTGBEMw+BQbhF7k5I4sn8zpWlb8MveQXTxHjrYkk/o8QBw4MHhwHY4onsT1mEA/nH9oFkHLUIkIq6rtBAObYIDa+HgWjiQCLnJVbcNijRn+kV2gYgu0Lyj+R6opetPi8JII1LmcHIgK5e0fVuxH9iOI3MXPvZ9hBcl0cY4QBNbftX3w5usgHhKm3cnKL434e36YYvsoksuIuL+Cg5D2gaz1+SP4/hVYf9XaGtzNmCzDuZmf03bmUdwC42ROwWFETdjLyolLfUg2am7KUjfizM7CS/7fkIKU4h0pNGCLDxtVf9TOrGR5d2CvOA22CK6EBrfk/D4s7A1bafVDUVE/lCSbw6GTf8d0rdAxjbI3AEFGSe/j5cfNImDJvEQHm/+2SQOwmLMQbONvEdFYcSFFJeWk5mZQU56MvmHUyg5nIIz5wBe+WkEFB+iSXkG0UYmAVVcVjleIf5k+cZQFBwHzdoR2KITEW174hPRQb0dIiKnqzDbDCWZ2+Hwbji8x/zzyD5wlp/6vgFNzVAS2gpCWkJoS/PPkBYQHAXB0W79/qwwYrGycgc5R7LJOZxGQXYaxTkZlNnTceZn4FGQgU9xFoGlhwlxHKa5cQR/W+mfPqYTG0c8wsnxiaIoMAbC4/CLaEd4qw40adkBW3CUpq6JiNQXRxnkJMORJDOYZO8z/56zH3JSoDineo/jF2aGkqAIc8zK8X8GNDMH1QY2M//u7Vd3r6cOVPfzW330f6K4pIT83CMU2A9TaM+mJC+b0oIjOAqycRQegaIcPEpy8C7Jwa8sh4DyXIIMO2FGHs1t5TSvzpMczQ+5BJPrFU6BbwSlgS0wQlriGx5DYEQsTVu2J7B5LE29fGlaly9YRESqx9P76PiRtlV/vTjXDCW5KZB7AOwHzZ2L7QchLw3saVBeZIaW4hzI3Pbnz+kTZC4kGdDU3LsnIBz8mxw7/MLMBd/8Qisf3oENemzLaYWRuXPnMnv2bNLS0ujSpQtz5sxh8ODBJ22/bNkypkyZwpYtW2jRogUPPPAAkyZNOu2ia8tvn72II2UdnmX5eJUX4FVegK+zAD9HIQFGAQFGIYG2EvyAGk/2OhowCvHDbgsh36sJxT5NKPVrjhEUgWdwJL5NogkIj6ZJZCzBzVoR6hNAaC2/RhERsYhfKESFQlTXqr9uGGZgyTsEeamQnwn56UePDCjIhIIsc1fjgkzzklBpvnnknGQ20EnZwDfEXFvFN8TcdNA3yAw3vsHm0f0qc/0VC9Q4jCxYsIDJkyczd+5cBg0axCuvvMLo0aPZunUrrVufuPX7vn37GDNmDDfffDPvvvsuv/zyC7fffjvNmzfn8ssvr5UXcbo89/xAv7ylJ29w3BWPInzJJ5BCzyCKPYIo9Q6mzCcMh18Y+DXBFhCGd3Bz/EKbExAaQXB4JMFNIgjwC0IrcoiIyAlsNrMXwz8MIjqduq1hmL0nhdnmUZQNhYfNvxfnQNER8yjMNgNOxZFzdFyLASW55nEyLXtbFkZqPGakf//+9OrVi3nz5lWcS0hIYOzYscyaNeuE9lOnTuWLL75g27Zj3U+TJk1i48aNrFq1qlrPWVdjRtYtfp3S1N/x8AvG5huMp18w3v4heAeG4hsUhn9wOIEhYQQGh+Ph7VtrzysiIlIvDAPKCqEkD4rt5p8luUf/PNrLUpJn/tntKojsXKtPXydjRkpLS0lMTOTBBx+sdH7kyJGsXLmyyvusWrWKkSNHVjo3atQoXn/9dcrKyvD29j7hPiUlJZSUHJs5YrefuCpobeg1ZmKdPK6IiEiDYLOBT6B5BEdZXc1J1Wg0S1ZWFg6Hg8jIyErnIyMjOXToUJX3OXToUJXty8vLycrKqvI+s2bNIjQ0tOKIiYmpSZkiIiLiQk5raK3tf6aPGoZxwrk/a1/V+T9MmzaN3NzciiMlJeV0yhQREREXUKPLNM2aNcPT0/OEXpCMjIwTej/+EBUVVWV7Ly8vmjatepKqr68vvr4aoyEiItIY1KhnxMfHh969e7NkyZJK55csWcLAgQOrvM+AAQNOaP/dd9/Rp0+fKseLiIiISONS48s0U6ZM4bXXXuONN95g27Zt3HPPPSQnJ1esGzJt2jTGjx9f0X7SpEns37+fKVOmsG3bNt544w1ef/117rvvvtp7FSIiIuKyarzOyLhx4zh8+DAzZ84kLS2Nrl27snjxYmJjYwFIS0sjOfnYYizx8fEsXryYe+65h5deeokWLVrw/PPPW77GiIiIiDQM2ptGRERE6kR1P78b7kL1IiIi0igojIiIiIilFEZERETEUgojIiIiYimFEREREbGUwoiIiIhYqsbrjFjhj9nHdbV7r4iIiNS+Pz63/2wVEZcII3l5eQDavVdERMQF5eXlERoaetKvu8SiZ06nk9TUVIKDg0+5O3BjYLfbiYmJISUlRQvA1TF9r+uHvs/1Q9/n+qHvc2WGYZCXl0eLFi3w8Dj5yBCX6Bnx8PCgVatWVpfRoISEhOg/ej3R97p+6PtcP/R9rh/6Ph9zqh6RP2gAq4iIiFhKYUREREQspTDiYnx9fXn44Yfx9fW1uhS3p+91/dD3uX7o+1w/9H0+PS4xgFVERETcl3pGRERExFIKIyIiImIphRERERGxlMKIiIiIWEphxE2UlJTQs2dPbDYbGzZssLoct5KUlMTEiROJj4/H39+ftm3b8vDDD1NaWmp1aS5v7ty5xMfH4+fnR+/evVmxYoXVJbmdWbNm0bdvX4KDg4mIiGDs2LHs2LHD6rLc2qxZs7DZbEyePNnqUlyGwoibeOCBB2jRooXVZbil7du343Q6eeWVV9iyZQvPPvssL7/8Mg899JDVpbm0BQsWMHnyZKZPn8769esZPHgwo0ePJjk52erS3MqyZcu44447WL16NUuWLKG8vJyRI0dSUFBgdWluac2aNbz66qt0797d6lJciqb2uoGvv/6aKVOm8Omnn9KlSxfWr19Pz549rS7Lrc2ePZt58+axd+9eq0txWf3796dXr17Mmzev4lxCQgJjx45l1qxZFlbm3jIzM4mIiGDZsmUMGTLE6nLcSn5+Pr169WLu3Lk89thj9OzZkzlz5lhdlktQz4iLS09P5+abb+add94hICDA6nIajdzcXMLDw60uw2WVlpaSmJjIyJEjK50fOXIkK1eutKiqxiE3NxdA/3/rwB133MGFF17IiBEjrC7F5bjERnlSNcMwmDBhApMmTaJPnz4kJSVZXVKjsGfPHl544QWefvppq0txWVlZWTgcDiIjIyudj4yM5NChQxZV5f4Mw2DKlCmcc845dO3a1epy3MqHH37IunXrWLNmjdWluCT1jDRAjzzyCDab7ZTH2rVreeGFF7Db7UybNs3qkl1Sdb/Px0tNTeWCCy7gyiuv5KabbrKocvdhs9kq3TYM44RzUnv+/ve/s2nTJj744AOrS3ErKSkp3H333bz77rv4+flZXY5L0piRBigrK4usrKxTtomLi+Pqq6/myy+/rPTm7XA48PT05Nprr+Wtt96q61JdWnW/z3+8uaSmpjJs2DD69+/P/Pnz8fBQlj9dpaWlBAQE8PHHH3PppZdWnL/77rvZsGEDy5Yts7A693TnnXfy2WefsXz5cuLj460ux6189tlnXHrppXh6elacczgc2Gw2PDw8KCkpqfQ1OZHCiAtLTk7GbrdX3E5NTWXUqFF88skn9O/fn1atWllYnXs5ePAgw4YNo3fv3rz77rt6Y6kF/fv3p3fv3sydO7fiXOfOnbnkkks0gLUWGYbBnXfeyaJFi/jpp59o37691SW5nby8PPbv31/p3A033ECnTp2YOnWqLolVg8aMuLDWrVtXuh0UFARA27ZtFURqUWpqKkOHDqV169Y89dRTZGZmVnwtKirKwspc25QpU7juuuvo06cPAwYM4NVXXyU5OZlJkyZZXZpbueOOO3j//ff5/PPPCQ4OrhiTExoair+/v8XVuYfg4OATAkdgYCBNmzZVEKkmhRGRP/Hdd9+xe/dudu/efULIU8fi6Rs3bhyHDx9m5syZpKWl0bVrVxYvXkxsbKzVpbmVP6ZODx06tNL5N998kwkTJtR/QSJV0GUaERERsZRG4ImIiIilFEZERETEUgojIiIiYimFEREREbGUwoiIiIhYSmFERERELKUwIiIiIpZSGBERERFLKYyIiIiIpRRGRERExFIKIyIiImIphRERERGx1P8DR6Abafq1E70AAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "def sigmoid(X):\n", " # Clip X to prevent overflow or underflow\n", " X = np.clip(X, -500, 500) # This ensures that np.exp(X) doesn't overflow\n", - " return None\n", + " return 1 / (1 + np.exp(-X))\n", "\n", "\n", "def dsigmoid(X):\n", - " return None\n", + " return sigmoid(X) * (1 - sigmoid(X))\n", "\n", "\n", "x = np.linspace(-5, 5, 100)\n", @@ -556,7 +717,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 81, "metadata": {}, "outputs": [], "source": [ @@ -581,17 +742,17 @@ "\n", " def forward_hidden(self, X):\n", " # Compute the linear combination of the input and weights\n", - " self.Z_h = None\n", + " self.Z_h = np.dot(X, self.W_h) + self.b_h\n", "\n", " # Apply the sigmoid activation function\n", - " return None\n", + " return softmax(self.Z_h)\n", "\n", " def forward_output(self, H):\n", " # Compute the linear combination of the hidden layer activation and weights\n", - " self.Z_o = None\n", + " self.Z_o = np.dot(H, self.W_o) + self.b_o\n", "\n", " # Apply the sigmoid activation function\n", - " return None\n", + " return softmax(self.Z_o)\n", "\n", " def forward(self, X):\n", " # Compute the forward activations of the hidden and output layers\n", @@ -602,7 +763,9 @@ "\n", " def loss(self, X, y):\n", " y = y.astype(int)\n", - " return None\n", + " y_onehot = one_hot(self.output_size, y)\n", + " y_pred = self.forward(X)\n", + " return nll(y_onehot, y_pred)\n", "\n", " def grad_loss(self, X, y_true):\n", " y_true = one_hot(self.output_size, y_true)\n", @@ -665,7 +828,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 82, "metadata": {}, "outputs": [], "source": [ @@ -675,27 +838,60 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 83, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "np.float64(3520.6950836367705)" + ] + }, + "execution_count": 83, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "model.loss(X_train, y_train)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 84, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "np.float64(0.12508185985592665)" + ] + }, + "execution_count": 84, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "model.accuracy(X_train, y_train)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 85, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxcAAAGHCAYAAADC2a9WAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8ekN5oAAAACXBIWXMAAA9hAAAPYQGoP6dpAABQeElEQVR4nO3dd3gUVd//8c+SngBBWgoECEjvJpYEEJCioTx2UZQeFKkhN7fSlCIasXBHpYkCEUXkUQEbLUqVohCJInAjSEmABAQloWhCkvn94S/7sGQD2TDZTfD9uq65LubsmTnfmQ1z9rvnzKzFMAxDAAAAAHCdyrk6AAAAAAA3BpILAAAAAKYguQAAAABgCpILAAAAAKYguQAAAABgCpILAAAAAKYguQAAAABgCpILAAAAAKYguQAAAABgCpKLUsxisRRp2bBhg0vj7NChgzp06ODSGEra5MmTZbFYirVt//79Vb58eVPj6d+/v+rUqVPs7b/88kv17dtXzZs3l4eHR7GPDfin2r59ux5++GEFBQXJ09NTgYGBeuihh7Rt27br2u9LL72kFStWmBPkNZw4cUKTJ09WcnKyU9pzxJEjR2SxWPTaa6+Zts8NGzbIYrHok08+uWZde9d8e32dxWLR5MmTret79+7V5MmTdeTIkQL7vN7r9vXo1KmThgwZ4pK2r+bK85eQkCCLxWL3/F3NypUrbfZzuTp16qh///7FjrEkrF+/Xl26dFH16tVVvnx5tWjRQm+++aZyc3OtdS5duqR69eopPj7edYEWE8lFKbZt2zabpVu3bvLx8SlQfsstt7g0ztmzZ2v27NkujQGOWb58ubZv364mTZqoZcuWrg4HKFPeeusttWnTRseOHdMrr7yir7/+Wq+99pqOHz+utm3baubMmcXet7OTiylTppTK5MLVoqOji5Qobtu2TdHR0db1vXv3asqUKXY/HD/33HNavny5mWEWyWeffaYtW7boueeec3rbjurevbu2bdumoKAgh7ZbuXKlpkyZYve15cuXl6pj//rrr9W5c2fl5OTonXfe0YoVK9ShQweNGjVKsbGx1noeHh56/vnnNXXqVJ05c8aFETvO3dUBoHB33HGHzXq1atVUrly5AuVXunjxonx9fUsyNBtNmjRxWlswxzvvvKNy5f7+bmH48OFKSkpycURA2bBlyxbFxMSoW7duWr58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sc/etf+XX34pcHNzcb+BLUoMhenUqZP27t2rH374waZ80aJFslgs6tixo035smXLrKPaknTu3Dl98cUXateunfXDmcViKXAt/uqrrwqdRrJkyRKbJ+8cPXpUW7duNeXHYB05p8W55lssFrVs2VL/+c9/VKlSpQLn8UqNGjW66o3q1/Ne9ujRQ7/++quqVKliN/780YH897SwPvBqIiMj5e/vr7lz5171aUmOnHdH/wbNFhwcrJ07dxa4fuQ/pODKLy3y37+y9Nh/Ri5uYH369NFzzz2n559/Xu3bt9fevXs1c+ZM+fv729SbOnWqEhMTFRkZqZEjR6phw4b666+/dOTIEa1cuVJz5841dUjyWiIjI3XTTTdpyJAhmjRpkjw8PLR48eICQ9blypXTlClT9NRTT+mhhx7SwIEDdfbsWU2ZMkVBQUE293s8+uijWrx4sbp166ZRo0bptttuk4eHh44dO6b169fr3nvv1f333296jPk8PT31+uuv6/z587r11lu1detWTZs2TVFRUWrbtq0kqU2bNnryySc1YMAA7dy5U3feeaf8/PyUlpamb7/9Vs2bN9fTTz9daExTp07V1KlT9c0331zzvoujR49qx44dkqRff/1Vkqy/WlunTh2Fh4cX+VwA/yRt2rRRfHy8YmJi1LZtWw0fPly1atVSSkqKZs2ape+++07x8fGKjIy0btOrVy89//zzevTRR/Xvf/9bf/31V4Ff483XvHlzbdiwQV988YWCgoJUoUIFmy8/du7cqejoaD388MNKTU3VhAkTVKNGDZunBPbp00dPPPGEhg4dqgcffFBHjx7VK6+8UuD3A+rVqycfHx8tXrxYjRs3Vvny5RUcHHzNL5SKEkNhRo8erUWLFql79+6aOnWqateura+++kqzZ8/W008/rQYNGtjUd3NzU5cuXRQbG6u8vDxNnz5dmZmZNj+Y1qNHDyUkJKhRo0Zq0aKFkpKS9Oqrrxbab506dUr333+/Bg8erIyMDE2aNEne3t42CWFxNWvWTNLfTzKsUKGCvL29FRoaandUpKjX/C+//FKzZ8/Wfffdp7p168owDC1btkxnz55Vly5drhpPhw4dtGDBAv3yyy8Fzq10fe9lTEyMPv30U915550aPXq0WrRooby8PKWkpGjt2rX617/+pdtvv11du3bVnXfeqWeeeUYXLlxQeHi4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BQQE2JQFBAQoJydHp0+ftrvNuHHjlJGRYV1SU1OdESqAfyDDMJSTk+PqMG4IDicXS5cuVUxMjCZMmKBdu3apXbt2ioqKUkpKSknEBwC4QVz5dJn8H+Aq7KkzXl5eqlixos0CAI7q37+/Nm7cqDfeeEMWi0UWi0UJCQmyWCxas2aNwsPD5eXlpc2bN6t///667777bLaPiYlRhw4drOuGYeiVV15R3bp15ePjo5YtW+qTTz5x7kGVYg4nFzNmzNCgQYMUHR2txo0bKz4+XiEhIZozZ05JxAcAuAEEBgYqPT3dpuzUqVNyd3dXlSpVXBQVgH+CN954QxERERo8eLDS0tKUlpamkJAQSdIzzzyjuLg47du3Ty1atCjS/iZOnKiFCxdqzpw52rNnj0aPHq0nnnhCGzduLMnDKDMcuuciOztbSUlJGjt2rE15165dtXXrVrvbcEMeACAiIkJffPGFTdnatWsVHh5u934LADCLv7+/PD095evrq8DAQEnSf//7X0nS1KlT1aVLlyLv68KFC5oxY4bWrVuniIgISVLdunX17bff6u2331b79u3NP4AyxqHk4vTp08rNzbU7b/bKb6Ty3ag35AHAP9n58+d18OBB6/rhw4eVnJysypUrq1atWho3bpyOHz+uRYsWSZKGDBmimTNnKjY2VoMHD9a2bds0f/58LVmyxFWHAAAKDw93qP7evXv1119/FUhIsrOz1bp1azNDK7OK9bQoe/NmC5szO27cOMXGxlrXMzMzrUNRAICyaefOnerYsaN1Pf86369fPyUkJCgtLc3mXrzQ0FCtXLlSo0eP1qxZsxQcHKw333yz0MfQAoAz+Pn52ayXK1fOej9YvkuXLln/nZeXJ0n66quvVKNGDZt6Xl5eJRRl2eJQclG1alW5ubnZnTd75WhGPi8vL042ANxgOnToUKADvlxCQkKBsvbt2+uHH34owagAwD5PT0/l5uZes161atX0888/25QlJydbp282adJEXl5eSklJYQpUIRy6odvT01NhYWFKTEy0KU9MTFRkZKSpgQEAAABmqFOnjr777jsdOXJEp0+fto5AXOmuu+7Szp07tWjRIh04cECTJk2ySTYqVKigMWPGaPTo0Xrvvff066+/ateuXZo1a5bee+89Zx1OqebwtKjY2Fj16dNH4eHhioiI0Lx585SSkqIhQ4aURHwAAAAo5Ur7jzaOGTNG/fr1U5MmTfTnn39q4cKFduvdfffdeu655/TMM8/or7/+0sCBA9W3b1/t3r3bWueFF15Q9erVFRcXp0OHDqlSpUq65ZZbNH78eGcdTqnmcHLRq1cvnTlzRlOnTlVaWpqaNWumlStXqnbt2iURHwAAAHBdGjRooG3bttmU9e/f327dKVOmXPVhRBaLRSNHjtTIkSPNDPGGUawbuocOHaqhQ4eaHQsAAACAMszhH9EDAAAAAHtILgAAAACYguQCAAAAgClILgAAAACYguQCAAAAgClILgAAAACYguQCAAAAgClILgAAAACYguQCAAAA18dice5SitWpU0fx8fHWdYvFohUrVlzXPs3Yh7MU6xe6AQAAAFxbWlqabrrppiLVnTx5slasWKHk5ORi78PVSC4AAACAy2RnZ8vT09OUfQUGBpaKfTgL06IAAABwQ+vQoYOGDx+u4cOHq1KlSqpSpYomTpwowzAk/T2Vadq0aerfv7/8/f01ePBgSdLWrVt15513ysfHRyEhIRo5cqQuXLhg3e+pU6fUs2dP+fj4KDQ0VIsXLy7Q9pVTmo4dO6ZHH31UlStXlp+fn8LDw/Xdd98pISFBU6ZM0Y8//iiLxSKLxaKEhAS7+9i9e7fuuusu+fj4qEqVKnryySd1/vx56+v9+/fXfffdp9dee01BQUGqUqWKhg0bpkuXLpl4Vu1j5KKMuHzuXmkzZcoUV4dQ5hw5csTVIRRqw4YNrg4BAADTvffeexo0aJC+++477dy5U08++aRq165tTSReffVVPffcc5o4caKkvz/A33333XrhhRc0f/58/fbbb9YEZeHChZL+/hCfmpqqdevWydPTUyNHjtSpU6cKjeH8+fNq3769atSooc8//1yBgYH64YcflJeXp169eunnn3/W6tWr9fXXX0uS/P39C+zj4sWLuueee3THHXdox44dOnXqlKKjozV8+HBrMiJJ69evV1BQkNavX6+DBw+qV69eatWqlfV4SwrJBQAAAG54ISEh+s9//iOLxaKGDRtq9+7d+s9//mP9sH3XXXdpzJgx1vp9+/ZV7969FRMTI0mqX7++3nzzTbVv315z5sxRSkqKVq1ape3bt+v222+XJM2fP1+NGzcuNIYPP/xQv/32m3bs2KHKlStLkm6++Wbr6+XLl5e7u/tVp0EtXrxYf/75pxYtWiQ/Pz9J0syZM9WzZ09Nnz5dAQEBkqSbbrpJM2fOlJubmxo1aqTu3bvrm2++KfHkgmlRAAAAuOHdcccdslz2pKmIiAgdOHBAubm5kqTw8HCb+klJSUpISFD58uWty9133628vDwdPnxY+/btk7u7u812jRo1UqVKlQqNITk5Wa1bt7YmFsWxb98+tWzZ0ppYSFKbNm2Ul5en/fv3W8uaNm0qNzc363pQUNBVR1XMwsgFAAAA/vEu/7AuSXl5eXrqqac0cuTIAnVr1apl/SBvceDRuD4+PtcXpCTDMApt8/JyDw+PAq/l5eVdd/vXwsgFAAAAbnjbt28vsF6/fn2bb/cvd8stt2jPnj26+eabCyyenp5q3LixcnJytHPnTus2+/fv19mzZwuNoUWLFkpOTtbvv/9u93VPT0/rSEphmjRpouTkZJsby7ds2aJy5cqpQYMGV93WGUguAAAAcMNLTU1VbGys9u/fryVLluitt97SqFGjCq3/7LPPatu2bRo2bJiSk5N14MABff755xoxYoQkqWHDhrrnnns0ePBgfffdd0pKSlJ0dPRVRycee+wxBQYG6r777tOWLVt06NAhffrpp9q2bZukv59adfjwYSUnJ+v06dPKysoqsI/HH39c3t7e6tevn37++WetX79eI0aMUJ8+faz3W7gSyQUAAACuj2E4dymGvn376s8//9Rtt92mYcOGacSIEXryyScLrd+iRQtt3LhRBw4cULt27dS6dWs999xzCgoKstZZuHChQkJC1L59ez3wwAN68sknVb169UL36enpqbVr16p69erq1q2bmjdvrpdfftk6evLggw/qnnvuUceOHVWtWjUtWbKkwD58fX21Zs0a/f7777r11lv10EMPqVOnTpo5c2axzovZuOcCAAAANzwPDw/Fx8drzpw5BV4r7BHxt956q9auXVvoPgMDA/Xll1/alPXp08dm3bgiGapdu7Y++eQTu/vz8vKy+9qV+2jevLnWrVtXaFyXP5I2n7N+1oCRCwAAAACmILkAAAAAYAqmRQEAAOCGtmHDBleH8I/ByAUAAAAAU5BcAAAAwCFX3mCMG4MZ7yvJBQAAAIok/5Gp2dnZLo4EJeHixYuSCv66tyO45wIAAABF4u7uLl9fX/3222/y8PBQuXJ8T30jMAxDFy9e1KlTp1SpUqVCf7W8KEguAAAAUCQWi0VBQUE6fPiwjh496upwYLJKlSopMDDwuvbhcHKxadMmvfrqq0pKSlJaWpqWL1+u++6777qCAAAAQNng6emp+vXrMzXqBuPh4XFdIxb5HE4uLly4oJYtW2rAgAF68MEHrzsAAAAAlC3lypWTt7e3q8NAKeRwchEVFaWoqKgi18/KylJWVpZ1PTMz09EmAQAAAJQBJX4XTlxcnPz9/a1LSEhISTcJAAAAwAVKPLkYN26cMjIyrEtqampJNwkAAADABUr8aVFeXl7y8vIq6WYAAAAAuBgPJwYAAABgCpILAAAAAKZweFrU+fPndfDgQev64cOHlZycrMqVK6tWrVqmBgcAAACg7HA4udi5c6c6duxoXY+NjZUk9evXTwkJCaYFBgAAAKBscTi56NChgwzDKIlYAAAAAJRh3HMBAAAAwBQkFwAAAABMQXIBAAAAwBQkFwAAAABMQXIBACiW2bNnKzQ0VN7e3goLC9PmzZuvWn/x4sVq2bKlfH19FRQUpAEDBujMmTNOihYA4AwkFwAAhy1dulQxMTGaMGGCdu3apXbt2ikqKkopKSl263/77bfq27evBg0apD179ujjjz/Wjh07FB0d7eTIAQAlieQCAOCwGTNmaNCgQYqOjlbjxo0VHx+vkJAQzZkzx2797du3q06dOho5cqRCQ0PVtm1bPfXUU9q5c6eTIwcAlCSSCwCAQ7Kzs5WUlKSuXbvalHft2lVbt261u01kZKSOHTumlStXyjAMnTx5Up988om6d+9eaDtZWVnKzMy0WQAApRvJBQDAIadPn1Zubq4CAgJsygMCApSenm53m8jISC1evFi9evWSp6enAgMDValSJb311luFthMXFyd/f3/rEhISYupxAADMR3IBACgWi8Vis24YRoGyfHv37tXIkSP1/PPPKykpSatXr9bhw4c1ZMiQQvc/btw4ZWRkWJfU1FRT4wcAmM/d1QEAAMqWqlWrys3NrcAoxalTpwqMZuSLi4tTmzZt9O9//1uS1KJFC/n5+aldu3aaNm2agoKCCmzj5eUlLy8v8w8AAFBiGLkAADjE09NTYWFhSkxMtClPTExUZGSk3W0uXryocuVsuxw3NzdJf494AABuDCQXAACHxcbG6t1339WCBQu0b98+jR49WikpKdZpTuPGjVPfvn2t9Xv27Klly5Zpzpw5OnTokLZs2aKRI0fqtttuU3BwsKsOAwBgMqZFAQAc1qtXL505c0ZTp05VWlqamjVrppUrV6p27dqSpLS0NJvfvOjfv7/OnTunmTNn6l//+pcqVaqku+66S9OnT3fVIQAASgDJBQCgWIYOHaqhQ4fafS0hIaFA2YgRIzRixIgSjgoA4EpMiwIAAABgCpILAAAAAKYguQAAAABgCpILAAAAAKYguQAAAABgCpILAAAAAKYguQAAAABgCpILAAAAAKYguQAAAABgCpILAAAAAKYguQAAAABgCpILAAAAAKZwKLmIi4vTrbfeqgoVKqh69eq67777tH///pKKDQAAAEAZ4lBysXHjRg0bNkzbt29XYmKicnJy1LVrV124cKGk4gMAAABQRrg7Unn16tU26wsXLlT16tWVlJSkO++809TAAAAAAJQtDiUXV8rIyJAkVa5cudA6WVlZysrKsq5nZmZeT5MAAAAASqli39BtGIZiY2PVtm1bNWvWrNB6cXFx8vf3ty4hISHFbRIAAABAKVbs5GL48OH66aeftGTJkqvWGzdunDIyMqxLampqcZsEAAAAUIoVa1rUiBEj9Pnnn2vTpk2qWbPmVet6eXnJy8urWMEBAAAAKDscSi4Mw9CIESO0fPlybdiwQaGhoSUVFwAAAIAyxqHkYtiwYfrwww/12WefqUKFCkpPT5ck+fv7y8fHp0QCBAAAAFA2OHTPxZw5c5SRkaEOHTooKCjIuixdurSk4gMAAABQRjg8LQoAAAAA7Cn206IAAAAA4HIkFwAAAABMQXIBAAAAwBQkFwAAAABMQXIBAAAAwBQkFwAAAABMQXIBAAAAwBQkFwAAAABMQXIBAAAAwBQkFwAAAABMQXIBAAAAwBQkFwAAAABM4e7qAFA0R44ccXUIMFFMTIyrQwAAADAdIxcAAAAATEFyAQAAAMAUJBcAAAAATEFyAQAAAMAUJBcAAAAATEFyAQAAAMAUJBcAAAAATEFyAQAAAMAUJBcAAAAATEFyAQAAAMAUJBcAAAAATEFyAQAAAMAUJBcAgGKZPXu2QkND5e3trbCwMG3evPmq9bOysjRhwgTVrl1bXl5eqlevnhYsWOCkaAEAzuDu6gAAAGXP0qVLFRMTo9mzZ6tNmzZ6++23FRUVpb1796pWrVp2t3nkkUd08uRJzZ8/XzfffLNOnTqlnJwcJ0cOAChJJBcAAIfNmDFDgwYNUnR0tCQpPj5ea9as0Zw5cxQXF1eg/urVq7Vx40YdOnRIlStXliTVqVPHmSEDAJzAoWlRc+bMUYsWLVSxYkVVrFhRERERWrVqVUnFBgAohbKzs5WUlKSuXbvalHft2lVbt261u83nn3+u8PBwvfLKK6pRo4YaNGigMWPG6M8//yy0naysLGVmZtosAIDSzaGRi5o1a+rll1/WzTffLEl67733dO+992rXrl1q2rRpiQQIAChdTp8+rdzcXAUEBNiUBwQEKD093e42hw4d0rfffitvb28tX75cp0+f1tChQ/X7778Xet9FXFycpkyZYnr8AICS49DIRc+ePdWtWzc1aNBADRo00Isvvqjy5ctr+/bthW7DN08AcGOyWCw264ZhFCjLl5eXJ4vFosWLF+u2225Tt27dNGPGDCUkJBQ6ejFu3DhlZGRYl9TUVNOPAQBgrmI/LSo3N1cfffSRLly4oIiIiELrxcXFyd/f37qEhIQUt0kAQClQtWpVubm5FRilOHXqVIHRjHxBQUGqUaOG/P39rWWNGzeWYRg6duyY3W28vLys03DzFwBA6eZwcrF7926VL19eXl5eGjJkiJYvX64mTZoUWp9vngDgxuLp6amwsDAlJibalCcmJioyMtLuNm3atNGJEyd0/vx5a9kvv/yicuXKqWbNmiUaLwDAeRxOLho2bKjk5GRt375dTz/9tPr166e9e/cWWp9vngDgxhMbG6t3331XCxYs0L59+zR69GilpKRoyJAhkv7+Yqlv377W+r1791aVKlU0YMAA7d27V5s2bdK///1vDRw4UD4+Pq46DACAyRx+FK2np6f1hu7w8HDt2LFDb7zxht5++23TgwMAlE69evXSmTNnNHXqVKWlpalZs2ZauXKlateuLUlKS0tTSkqKtX758uWVmJioESNGKDw8XFWqVNEjjzyiadOmueoQAAAl4Lp/58IwDGVlZZkRCwCgDBk6dKiGDh1q97WEhIQCZY0aNSowlQoAcGNxKLkYP368oqKiFBISonPnzumjjz7Shg0btHr16pKKDwAAAEAZ4VBycfLkSfXp00dpaWny9/dXixYttHr1anXp0qWk4gMAAABQRjiUXMyfP7+k4gAAAABQxhX7dy4AAAAA4HIkFwAAAABMQXIBAAAAwBQkFwAAAABMQXIBAAAAwBQkFwAAAABMQXIB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WCwWDRs2zCnt5+TkaOLEiQoNDZWPj4/q1q2rqVOnKi8vzynt5zt37pxiYmJUu3Zt+fj4KDIyUjt27HBqDNdSJpOLpUuXKiYmRhMmTNCuXbvUrl07RUVF2Tz2EP9n48aNGjZsmLZv367ExETl5OSoa9euunDhgqtDKxN27NihefPmqUWLFq4OpVT7448/1KZNG3l4eGjVqlXau3evXn/9dZf9ojJwvVzd11y4cEEtW7bUzJkzndLelUpD31GzZk29/PLL2rlzp3bu3Km77rpL9957r/bs2eO0GPK5si9o2rSp0tLSrMvu3bud2n5puL7v2LHD5hzk/yjnww8/7JT2p0+frrlz52rmzJnat2+fXnnlFb366qt66623nNJ+vujoaCUmJur999/X7t271bVrV3Xu3FnHjx93ahxXZZRBt912mzFkyBCbskaNGhljx451UURly6lTpwxJxsaNG10dSql37tw5o379+kZiYqLRvn17Y9SoUa4OqdR69tlnjbZt27o6DMA0pamvkWQsX77c6e1errT0HTfddJPx7rvvOrVNV/YFkyZNMlq2bOm09uwpjdf3UaNGGfXq1TPy8vKc0l737t2NgQMH2pQ98MADxhNPPOGU9g3DMC5evGi4ubkZX375pU15y5YtjQkTJjgtjmspcyMX2dnZSkpKUteuXW3Ku3btqq1bt7ooqrIlIyNDklS5cmUXR1L6DRs2TN27d1fnzp1dHUqp9/nnnys8PFwPP/ywqlevrtatW+udd95xdVhAsdDXFOTqviM3N1cfffSRLly4oIiICKe27eq+4MCBAwoODlZoaKgeffRRHTp0yKntl7bre3Z2tj744AMNHDhQFovFKW22bdtW33zzjX755RdJ0o8//qhvv/1W3bp1c0r70t9Ts3Jzc+Xt7W1T7uPjo2+//dZpcVxLmfuF7tOnTys3N1cBAQE25QEBAUpPT3dRVGWHYRiKjY1V27Zt1axZM1eHU6p99NFH+uGHH0rdXMbS6tChQ5ozZ45iY2M1fvx4ff/99xo5cqS8vLzUt29fV4cHOIS+xpYr+47du3crIiJCf/31l8qXL6/ly5erSZMmTmvf1X3B7bffrkWLFqlBgwY6efKkpk2bpsjISO3Zs0dVqlRxSgyl7fq+YsUKnT17Vv3793dam88++6wyMjLUqFEjubm5KTc3Vy+++KIee+wxp8VQoUIFRURE6IUXXlDjxo0VEBCgJUuW6LvvvlP9+vWdFse1lLnkIt+VmaphGE7LXsuy4cOH66effipVGW5plJqaqlGjRmnt2rUFviGAfXl5eQoPD9dLL70kSWrdurX27NmjOXPmkFygzKKv+Zsr+46GDRsqOTlZZ8+e1aeffqp+/fpp48aNTkkwSkNfEBUVZf138+bNFRERoXr16um9995TbGysU2Iobdf3+fPnKyoqSsHBwU5rc+nSpfrggw/04YcfqmnTpkpOTlZMTIyCg4PVr18/p8Xx/vvva+DAgapRo4bc3Nx0yy23qHfv3vrhhx+cFsO1lLlpUVWrVpWbm1uBb45OnTpV4Bsm2BoxYoQ+//xzrV+/XjVr1nR1OKVaUlKSTp06pbCwMLm7u8vd3V0bN27Um2++KXd3d+Xm5ro6xFInKCioQGffuHFjHrSAMom+5v+4uu/w9PTUzTffrPDwcMXFxally5Z64403nNJ2aewL/Pz81Lx5cx04cMBpbZam6/vRo0f19ddfKzo62qnt/vvf/9bYsWP16KOPqnnz5urTp49Gjx6tuLg4p8ZRr149bdy4UefPn1dqaqq+//57Xbp0SaGhoU6N42rKXHLh6empsLAw61MC8iUmJioyMtJFUZVuhmFo+PDhWrZsmdatW1eq/gBLq06dOmn37t1KTk62LuHh4Xr88ceVnJwsNzc3V4dY6rRp06bAYyp/+eUX1a5d20URAcVHX1N6+w7DMJSVleWUtkpjX5CVlaV9+/YpKCjIaW2Wpuv7woULVb16dXXv3t2p7V68eFHlytl+bHZzc3P6o2jz+fn5KSgoSH/88YfWrFmje++91yVx2FMmp0XFxsaqT58+Cg8PV0REhObNm6eUlBQNGTLE1aGVSsOGDdOHH36ozz77TBUqVLB+E+fv7y8fHx8XR1c6VahQocC8Yj8/P1WpUoV7VQoxevRoRUZG6qWXXtIjjzyi77//XvPmzdO8efNcHRpQLK7ua86fP6+DBw9a1w8fPqzk5GRVrlxZtWrVKvH2S0PfMX78eEVFRSkkJETnzp3TRx99pA0bNmj16tVOab809AVjxoxRz549VatWLZ06dUrTpk1TZmamU6filJbre15enhYuXKh+/frJ3d25H2F79uypF198UbVq1VLTpk21a9cuzZgxQwMHDnRqHGvWrJFhGGrYsKEOHjyof//732rYsKEGDBjg1DiuynUPqro+s2bNMmrXrm14enoat9xyi8sfjVeaSbK7LFy40NWhlSk8ivbavvjiC6NZs2aGl5eX0ahRI2PevHmuDgm4Lq7sa9avX2/32t2vXz+ntF8a+o6BAwdaz3+1atWMTp06GWvXrnVa+/Y4uy/o1auXERQUZHh4eBjBwcHGAw88YOzZs8dp7ecrDdf3NWvWGJKM/fv3O73tzMxMY9SoUUatWrUMb29vo27dusaECROMrKwsp8axdOlSo27duoanp6cRGBhoDBs2zDh79qxTY7gWi2EYhrMTGgAAAAA3njJ3zwUAAACA0onkAgAAAIApSC4AAAAAmILkAgAAAIApSC4AAAAAmILkAgAAAIApSC4AAAAAmILkAgAAAIApSC4AAAD+P4vFohUrVhS5/oYNG2SxWHT27FlT46hTp47i4+NN3SfgDCQXAADghta/f39ZLBZZLBZ5eHgoICBAXbp00YIFC5SXl2dTNy0tTVFRUUXed2RkpNLS0uTv7y9JSkhIUKVKlcwMHyhTSC4AAMAN75577lFaWpqOHDmiVatWqWPHjho1apR69OihnJwca73AwEB5eXkVeb+enp4KDAyUxWIpibCBMofkAgAA3PC8vLwUGBioGjVq6JZbbtH48eP12WefadWqVUpISLDWu3Ja1NatW9WqVSt5e3srPDxcK1askMViUXJysiTbaVEbNmzQgAEDlJGRYR0pmTx5cqExff755woPD5e3t7eqVq2qBx54oNC6M2bMUPPmzeXn56eQkBANHTpU58+ft75+9OhR9ezZUzfddJP8/PzUtGlTrVy5UpL0xx9/6PHHH1e1atXk4+Oj+vXra+HChcU6j8C1uLs6AAAAAFe466671LJlSy1btkzR0dEFXj937px69uypbt266cMPP9TRo0cVExNT6P4iIyMVHx+v559/Xvv375cklS9f3m7dr776Sg888IAmTJig999/X9nZ2frqq68K3Xe5cuX05ptvqk6dOjp8+LCGDh2qZ555RrNnz5YkDRs2TNnZ2dq0aZP8/Py0d+9ea9vPPfec9u7dq1WrVqlq1ao6ePCg/vzzz6KeJsAhJBcAAOAfq1GjRvrpp5/svrZ48WJZLBa988478vb2VpMmTXT8+HENHjzYbn1PT0/5+/vLYrEoMDDwqu2++OKLevTRRzVlyhRrWcuWLQutf3lSExoaqhdeeEFPP/20NblISUnRgw8+qObNm0uS6tata62fkpKi1q1bKzw8XNLfN4sDJYVpUQAA4B/LMIxC75fYv3+/WrRoIW9vb2vZbbfdZkq7ycnJ6tSpU5Hrr1+/Xl26dFGNGjVUoUIF9e3bV2fOnNGFCxckSSNHjtS0adPUpk0bTZo0ySZhevrpp/XRRx+pVatWeuaZZ7R161ZTjgGwh+QCAAD8Y+3bt0+hoaF2X7OXeBiGYUq7Pj4+Ra579OhRdevWTc2aNdOnn36qpKQkzZo1S5J06dIlSVJ0dLQOHTqkPn36aPfu3QoPD9dbb70lSYqKirJO6Tpx4oQ6deqkMWPGmHIcwJVILgAAwD/SunXrtHv3bj344IN2X8+fMpWVlWUt27lz51X36enpqdzc3Gu23aJFC33zzTdFinPnzp3KycnR66+/rjvuuEMNGjTQiRMnCtQLCQnRkCFDtGzZMv3rX//SO++8Y32tWrVq6t+/vz744APFx8dr3rx5RWobcBTJBQAAuOFlZWUpPT1dx48f1w8//KCXXnpJ9957r3r06KG+ffva3aZ3797Ky8vTk08+qX379mnNmjV67bXXJKnQqVR16tTR+fPn9c033+j06dO6ePGi3XqTJk3SkiVLNGnSJO3bt0+7d+/WK6+8YrduvXr1lJOTo7feekuHDh3S+++/r7lz59rUiYmJ0Zo1a3T48GH98MMPWrdunRo3bixJev755/XZZ5/p4MGD2rNnj7788kvra4DZSC4AAMANb/Xq1QoKClKdOnV0zz33aP369XrzzTf12Wefyc3Nze42FStW1BdffKHk5GS1atVKEyZM0PPPPy9JNvdhXC4yMlJDhgxRr169VK1atUIThg4dOujjjz/W559/rlatWumuu+7Sd999Z7duq1atNGPGDE2fPl3NmjXT4sWLFRcXZ1MnNzdXw4YNU+PGjXXPPfeoYcOG1pu9PT09NW7cOLVo0UJ33nmn3Nzc9NFHHxXpvAGOshhmTR4EAAC4wS1evNj6WxaO3DcB/FPwKFoAAIBCLFq0SHXr1lWNGjX0448/6tlnn9UjjzxCYgEUguQCAACgEOnp6Xr++eeVnp6uoKAgPfzww3rxxRddHRZQajEtCgAAAIApuKEbAAAAgClILgAAAACYguQCAAAAgClILgAAAACYguQCAAAAgClILgAAAACYguQCAAAAgClILgAAAACY4v8Bkkzt20KZuI8AAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "plot_prediction(model, sample_idx=5)" ] @@ -711,9 +907,32 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 86, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Random init: train loss: 3520.69508, train acc: 0.125, test acc: 0.170\n", + "Epoch #1, train loss: 3219.07242, train acc: 0.394, test acc: 0.385\n", + "Epoch #2, train loss: 2845.19577, train acc: 0.454, test acc: 0.419\n", + "Epoch #3, train loss: 2566.30446, train acc: 0.462, test acc: 0.407\n", + "Epoch #4, train loss: 2379.58479, train acc: 0.472, test acc: 0.426\n", + "Epoch #5, train loss: 2289.09977, train acc: 0.491, test acc: 0.441\n", + "Epoch #6, train loss: 2287.31603, train acc: 0.487, test acc: 0.437\n", + "Epoch #7, train loss: 2368.85763, train acc: 0.472, test acc: 0.441\n", + "Epoch #8, train loss: 2446.34537, train acc: 0.444, test acc: 0.400\n", + "Epoch #9, train loss: 2517.07432, train acc: 0.408, test acc: 0.370\n", + "Epoch #10, train loss: 2626.76632, train acc: 0.389, test acc: 0.363\n", + "Epoch #11, train loss: 2496.49224, train acc: 0.432, test acc: 0.389\n", + "Epoch #12, train loss: 2523.14066, train acc: 0.420, test acc: 0.356\n", + "Epoch #13, train loss: 2568.37952, train acc: 0.426, test acc: 0.363\n", + "Epoch #14, train loss: 2691.78420, train acc: 0.395, test acc: 0.411\n", + "Epoch #15, train loss: 2887.41796, train acc: 0.387, test acc: 0.389\n" + ] + } + ], "source": [ "losses, accuracies, accuracies_test = [], [], []\n", "losses.append(model.loss(X_train, y_train))\n", @@ -736,9 +955,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 87, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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OXIkbdq0wTAM5s2bR15eHkOHDq3ZPwiRBkQlRkTOKSwsjC+//JIpU6YwduxYgoKCuPHGG/n444/p0aOH2fEACAoKYsmSJUyePJnHHnsMi8VCQkICM2fO5LrrrqNx48bVfs8xY8YQFBTEtGnTuO222/Dy8qJfv34sXbqU/v37A5UTlPv27csHH3zAvn37KC8vp0WLFjz++OM89thjALRr147GjRvz0ksvkZmZia+vL3FxccyePZtx48bV5B+DSINiMX59nlRExMM8//zzPP300xw4cOCCdxIWkfpJZ2JExGPMmDEDgA4dOlBeXs6SJUt4/fXXGTt2rAqMiAdSiRERjxEYGMj06dPZt28fpaWlrss6Tz/9tNnRRKQW6HKSiIiIuCUtsRYRERG3pBIjIiIibkklRkRERNySx07sdTqdZGZmEhwcfMZt1EVERKT+MQyDgoICoqOjz7lJpceWmMzMTGJjY82OISIiIhfg4MGD59wawWNLTHBwMFD5hxASEmJyGhERETkf+fn5xMbGun6Pn43HlpiTl5BCQkJUYkRERNzM+UwF0cReERERcUsqMSIiIuKWVGJERETELanEiIiIiFtSiRERERG3pBIjIiIibkklRkRERNySSoyIiIi4JZUYERERcUsqMSIiIuKWVGJERETELanEiIiIiFvy2BtA1pZ9R4uYm3qApsF+/OHyNmbHERERabB0JqaaNmfaeev7Pbz/4z6cTsPsOCIiIg2WSkw1DekYSbCfN4fyilm997jZcURERBoslZhq8vfx4vpuzQCYvz7D5DQiIiINl0rMBbi5RwwAX23KorjMYXIaERGRhkkl5gL0atmEmCYBFJZW8O3WLLPjiIiINEgqMRfAarVw82XNAZi//pDJaURERBomlZgLdNPPl5S+35lDdkGJyWlEREQaHpWYC9Q6PIjLWjTGacDC9Eyz44iIiDQ4KjEX4eQE33lpuqQkIiJS11RiLsIN3Zrh42Vh6+F8th3ONzuOiIhIg6IScxEaB/oyuEMEoAm+IiIidU0l5iKdvKT02fpDOHQbAhERkTqjEnORroqLoHGgD9kFpfy4+6jZcURERBoMlZiL5Ott5YZu0YAuKYmIiNQllZgacHOPyo3vkjdnUVhaYXIaERGRhkElpgZ0j21Mm/AgissdJG/WbQhERETqgkpMDbBYLNzkug2B7mwtIiJS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n1/l5eWMGjWKvXv3smjRIo89C/PDDz+QnZ1NixYtXJ9f+/fvZ8qUKbRq1crseLVKJeY8+fr60rNnTxYtWlTl+UWLFtG/f3+TUtUewzCYOHEi8+bNY8mSJbRu3drsSLXq6quvZtOmTaSnp7sevXr14o477iA9PR0vLy+zI9a4AQMGnLZsfufOnbRs2dKkRLXrxIkTWK1VP/K8vLw8Zon12bRu3ZqoqKgqn19lZWUsX77cIz+/4JcCs2vXLr777jvCwsLMjlRrEhMT2bhxY5XPr+joaKZOnco333xjdrxapctJ1fDII4+QmJhIr169iI+P5+233+bAgQPcf//9ZkercRMmTGDOnDksWLCA4OBg19/gbDYbAQEBJqerecHBwafN9wkKCiIsLMxj5wE9/PDD9O/fn+eff55Ro0aRmprK22+/zdtvv212tFpxww038Pe//50WLVrQuXNn1q9fzyuvvMLdd99tdrQaUVhYyO7du11f7927l/T0dEJDQ2nRogWTJ0/m+eefp127drRr147nn3+ewMBAxowZY2LqC3e2442OjubWW28lLS2NL774AofD4foMCw0NxdfX16zYF+xc/3xPLWk+Pj5ERUURFxdX11HrlrmLo9zPG2+8YbRs2dLw9fU1evTo4bFLjoEzPt5//32zo9UZT19ibRiG8fnnnxtdunQx/Pz8jA4dOhhvv/222ZFqTX5+vvHQQw8ZLVq0MPz9/Y02bdoYf/rTn4zS0lKzo9WIpUuXnvG/2XHjxhmGUbnM+tlnnzWioqIMPz8/44orrjA2bdpkbuiLcLbj3bt3729+hi1dutTs6BfkXP98T9VQllhbDMMw6qgviYiIiNQYzYkRERERt6QSIyIiIm5JJUZERETckkqMiIiIuCWVGBEREXFLKjEiIiLillRiRERExC2pxIiIiIhbUokRERERt6QSIyIiIm5JJUZERETc0v8Hk0C1LOT9VcAAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "plt.plot(losses)\n", "plt.title(\"Training loss\");" @@ -746,9 +976,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 88, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAGdCAYAAADuR1K7AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8ekN5oAAAACXBIWXMAAA9hAAAPYQGoP6dpAABKcUlEQVR4nO3deXhTVf4/8HeaNknXdKF0oxtQ1kJLW0Q2QYUiMCgisinIuPxkZGQTRWR0lK9S93FBUFR0nEFkRBR0GKEKAgKytmUpO4UWurd0X9Im9/fHbdOGLrRpktvevl/PkyfJzU3ySQu5755z7jkKQRAEEBEREcmEndQFEBEREVkSww0RERHJCsMNERERyQrDDREREckKww0RERHJCsMNERERyQrDDREREckKww0RERHJir3UBdiawWBAeno6XF1doVAopC6HiIiIWkAQBBQXF8Pf3x92ds23zXS6cJOeno7AwECpyyAiIiIzpKWloVu3bs3u0+nCjaurKwDxh+Pm5iZxNURERNQSRUVFCAwMNB7Hm9Ppwk1tV5SbmxvDDRERUQfTkiElHFBMREREssJwQ0RERLLCcENERESy0unG3BAREVmLIAiorq6GXq+XupQOycHBAUqlss2vw3BDRERkATqdDhkZGSgrK5O6lA5LoVCgW7ducHFxadPrMNwQERG1kcFgQEpKCpRKJfz9/aFSqThRbCsJgoCcnBxcu3YNYWFhbWrBYbghIiJqI51OB4PBgMDAQDg5OUldTofl7e2NK1euoKqqqk3hhgOKiYiILORWywJQ8yzV2sXfAhEREckKww0RERHJCsMNERERWURISAjee+89qcvggGIiIqLObPTo0YiMjLRIKDly5AicnZ3bXlQbMdwQERFRkwRBgF6vh739rSODt7e3DSq6NXZLERERWYEgCCjTVdv8IghCi2ucO3cu9uzZg/fffx8KhQIKhQJffvklFAoFduzYgZiYGKjVauzbtw+XLl3CfffdBx8fH7i4uGDw4MH45ZdfTF7v5m4phUKBzz77DPfffz+cnJwQFhaGbdu2WepH3CS23BAREVlBeZUe/V7aYfP3TV45Dk6qlh3e33//fZw/fx7h4eFYuXIlAOD06dMAgOeeew5vv/02unfvDnd3d1y7dg0TJkzAq6++Co1Gg3/+85+YNGkSzp07h6CgoCbf45VXXsGbb76Jt956Cx9++CEeeughXL16FZ6enm3/sE1gyw0REVEnpdVqoVKp4OTkBF9fX/j6+honz1u5ciXGjh2LHj16wMvLCxEREXjyyScxYMAAhIWF4dVXX0X37t1v2RIzd+5czJw5Ez179sSqVatQWlqKw4cPW/VzseWGiIjIChwdlEheOU6S97WEmJgYk/ulpaV45ZVX8NNPPyE9PR3V1dUoLy9Hampqs68zcOBA421nZ2e4uroiOzvbIjU2heGGiIjIChQKRYu7h9qjm896evbZZ7Fjxw68/fbb6NmzJxwdHTF16lTodLpmX8fBwcHkvkKhgMFgsHi99XXcnzoRERG1mUqlgl6vv+V++/btw9y5c3H//fcDAEpKSnDlyhUrV2cejrkhIiLqxEJCQnDo0CFcuXIFubm5Tbaq9OzZE1u2bEFiYiKSkpIwa9Ysq7fAmIvhhoiIqBNbunQplEol+vXrB29v7ybH0PzjH/+Ah4cHhg0bhkmTJmHcuHGIioqycbUtoxBac0K8DBQVFUGr1aKwsBBubm5Sl0NERDJQUVGBlJQUhIaGQqPRSF1Oh9Xcz7E1x2+23BAREZGsMNwQERGRrDDcEBERkaww3BAREZGsSBpu9u7di0mTJsHf3x8KhQI//PDDLZ+zZ88eREdHQ6PRoHv37vj444+tXygRERF1GJKGm9LSUkRERGD16tUt2j8lJQUTJkzAyJEjkZCQgBdeeAELFizAd999Z+VKiYiIqKOQdIbi8ePHY/z48S3e/+OPP0ZQUJBxOfW+ffvi6NGjePvtt/HAAw9YqUoiIiLqSDrUmJuDBw8iNjbWZNu4ceNw9OhRVFVVNfqcyspKFBUVmVyIiIhIvjpUuMnMzISPj4/JNh8fH1RXVyM3N7fR58TFxUGr1RovgYGBtiiViIiIJNKhwg0griZaX+0Eyzdvr7V8+XIUFhYaL2lpaVavkYiIqKMYPXo0Fi1aZLHXmzt3LiZPnmyx1zNHh1oV3NfXF5mZmSbbsrOzYW9vDy8vr0afo1aroVarbVEeERERtQMdquVm6NChiI+PN9m2c+dOxMTEwMHBQaKqiIiIOqa5c+diz549eP/996FQKKBQKHDlyhUkJydjwoQJcHFxgY+PD2bPnm0y/GPz5s0YMGAAHB0d4eXlhTFjxqC0tBQvv/wy/vnPf2Lr1q3G1/vtt99s/rkkDTclJSVITExEYmIiAPFU78TEROOKpMuXL8ecOXOM+8+bNw9Xr17FkiVLcObMGaxfvx6ff/45li5dKkX5RERETRMEQFdq+0sr1sN+//33MXToUDzxxBPIyMhARkYGHBwcMGrUKERGRuLo0aP4+eefkZWVhWnTpgEAMjIyMHPmTDz66KM4c+YMfvvtN0yZMgWCIGDp0qWYNm0a7rnnHuPrDRs2zFo/4SZJ2i119OhR3Hnnncb7S5YsAQA88sgj+PLLL5GRkWGy9HpoaCi2b9+OxYsX46OPPoK/vz8++OADngZORETtT1UZsMrf9u/7Qjqgcm7RrlqtFiqVCk5OTvD19QUAvPTSS4iKisKqVauM+61fvx6BgYE4f/48SkpKUF1djSlTpiA4OBgAMGDAAOO+jo6OqKysNL6eFCQNN6NHjzYOCG7Ml19+2WDbqFGjcPz4cStWRURE1HkdO3YMu3fvhouLS4PHLl26hNjYWNx9990YMGAAxo0bh9jYWEydOhUeHh4SVNu4DjWgmIiIqMNwcBJbUaR43zYwGAyYNGkS3njjjQaP+fn5QalUIj4+HgcOHMDOnTvx4YcfYsWKFTh06BBCQ0Pb9N6WwnBDRERkDQpFi7uHpKRSqaDX6433o6Ki8N133yEkJAT29o3HBIVCgeHDh2P48OF46aWXEBwcjO+//x5Llixp8HpS6FBnSxEREZFlhYSE4NChQ7hy5Qpyc3Mxf/585OfnY+bMmTh8+DAuX76MnTt34tFHH4Ver8ehQ4ewatUqHD16FKmpqdiyZQtycnLQt29f4+udOHEC586dQ25ubpMrCFgTww0REVEntnTpUiiVSvTr1w/e3t7Q6XTYv38/9Ho9xo0bh/DwcCxcuBBarRZ2dnZwc3PD3r17MWHCBPTq1Qt/+9vf8M477xjXinziiSfQu3dvxMTEwNvbG/v377f5Z1IIzY3olaGioiJotVoUFhbCzc1N6nKIiEgGKioqkJKSgtDQUGg0GqnL6bCa+zm25vjNlhsiIiKSFYYbIiIikhWGGyIiIpIVhhsiIiKSFYYbIiIikhWGGyIiIgvpZCcgW5ylfn4MN0RERG3k4OAAACgrK5O4ko5Np9MBAJRKZZteh8svEBERtZFSqYS7uzuys7MBAE5OTlAoFBJX1bEYDAbk5OTAycmpyWUfWorhhoiIyAJ8fX0BwBhwqPXs7OwQFBTU5mDIcENERGQBCoUCfn5+6Nq1qyTrKcmBSqWCnV3bR8ww3BAREVmQUqls85gRahsOKCYiIiJZYbghIiIiWWG4ISIiIllhuCEiIiJZYbghIiIiWWG4ISIiIllhuCEiIiJZYbghIiIiWWG4ISIiIllhuCEiIiJZYbghIiIiWWG4ISIiIllhuCEiIiJZYbghIiIiWWG4ISIiIllhuCEiIiJZYbghIiIiWWG4ISIiIllhuCEiIiJZYbghIiIiWWG4ISIiIllhuCEiIiJZYbghIiIiWWG4ISIiIllhuCEiIiJZYbghIiIiWWG4ISIiIllhuCEiIiJZYbghIiIiWWG4ISIiIllhuCEiIiJZYbghIiIiWWG4ISIiIllhuCEiIiJZYbghIiIiWWG4ISIiIllhuCEiIiJZYbghIiIiWWG4ISIiIllhuCEiIiJZkTzcrFmzBqGhodBoNIiOjsa+ffua3X/Dhg2IiIiAk5MT/Pz88Oc//xl5eXk2qpaIiIjaO0nDzaZNm7Bo0SKsWLECCQkJGDlyJMaPH4/U1NRG9//9998xZ84cPPbYYzh9+jS+/fZbHDlyBI8//riNKyciIqL2StJw8+677+Kxxx7D448/jr59++K9995DYGAg1q5d2+j+f/zxB0JCQrBgwQKEhoZixIgRePLJJ3H06FEbV05ERETtlWThRqfT4dixY4iNjTXZHhsbiwMHDjT6nGHDhuHatWvYvn07BEFAVlYWNm/ejIkTJzb5PpWVlSgqKjK5EBERkXxJFm5yc3Oh1+vh4+Njst3HxweZmZmNPmfYsGHYsGEDpk+fDpVKBV9fX7i7u+PDDz9s8n3i4uKg1WqNl8DAQIt+DiIiImpfJB9QrFAoTO4LgtBgW63k5GQsWLAAL730Eo4dO4aff/4ZKSkpmDdvXpOvv3z5chQWFhovaWlpFq2fiIiI2hd7qd64S5cuUCqVDVppsrOzG7Tm1IqLi8Pw4cPx7LPPAgAGDhwIZ2dnjBw5Eq+++ir8/PwaPEetVkOtVlv+AxAREVG7JFnLjUqlQnR0NOLj4022x8fHY9iwYY0+p6ysDHZ2piUrlUoAYosPERERkaTdUkuWLMFnn32G9evX48yZM1i8eDFSU1ON3UzLly/HnDlzjPtPmjQJW7Zswdq1a3H58mXs378fCxYswG233QZ/f3+pPgYRERG1I5J1SwHA9OnTkZeXh5UrVyIjIwPh4eHYvn07goODAQAZGRkmc97MnTsXxcXFWL16NZ555hm4u7vjrrvuwhtvvCHVRyAiIqJ2RiF0sv6coqIiaLVaFBYWws3NTepyiIiIqAVac/yW/GwpIiIiIktiuCEiIiJZYbghIiIiWWG4ISIiIllhuCEiIiJZYbghIiIiWWG4ISIiIllhuCEiIiJZYbghIiIiWWG4ISIiIllhuCEiIiJZYbghIiIiWWG4ISIiIllhuCEiIiJZYbghIiIiWWG4ISIiIllhuCEiIiJZYbghIiIiWWG4ISIiIllhuCEiIiJZYbghIiIiWWG4ISIiIllhuCEiIiJZYbghIiIiWWG4ISIiIllhuCEiIiJZYbghIiIiWWG4ISIiIllhuCEiIiJZYbghIiIiWWG4ISIiIllhuCEiIiJZYbghIiIiWWG4ISIiIllhuCEiIiJZYbghIiIiWWG4ISIiIllhuCEiIiJZYbghIiIiWWG4ISIiIllhuCEiIiJZYbghIiIiWWG4ISIiIllhuCEiIiJZYbghIiIiWWG4ISIiIllhuCEiIiJZYbghIiIiWTEr3Pz2228WLoOIiIjIMswKN/fccw969OiBV199FWlpaZauiYiIiMhsZoWb9PR0LFy4EFu2bEFoaCjGjRuH//znP9DpdJauj4iIiKhVzAo3np6eWLBgAY4fP46jR4+id+/emD9/Pvz8/LBgwQIkJSVZuk4iIiKiFmnzgOLIyEg8//zzmD9/PkpLS7F+/XpER0dj5MiROH36tCVqJCIiImoxs8NNVVUVNm/ejAkTJiA4OBg7duzA6tWrkZWVhZSUFAQGBuLBBx+0ZK1EREREt2RvzpOefvppbNy4EQDw8MMP480330R4eLjxcWdnZ7z++usICQmxSJFERERELWVWuElOTsaHH36IBx54ACqVqtF9/P39sXv37jYVR0RERNRaZnVL/frrr5g5c2aTwQYA7O3tMWrUqFu+1po1axAaGgqNRoPo6Gjs27ev2f0rKyuxYsUKBAcHQ61Wo0ePHli/fn2rPwMRERHJk1ktN3FxcfDx8cGjjz5qsn39+vXIycnBsmXLWvQ6mzZtwqJFi7BmzRoMHz4cn3zyCcaPH4/k5GQEBQU1+pxp06YhKysLn3/+OXr27Ins7GxUV1eb8zGIiIhIhhSCIAitfVJISAi+/vprDBs2zGT7oUOHMGPGDKSkpLTodYYMGYKoqCisXbvWuK1v376YPHky4uLiGuz/888/Y8aMGbh8+TI8PT1bWzYAoKioCFqtFoWFhXBzczPrNYiIiMi2WnP8NqtbKjMzE35+fg22e3t7IyMjo0WvodPpcOzYMcTGxppsj42NxYEDBxp9zrZt2xATE4M333wTAQEB6NWrF5YuXYry8vLWfwgiIiKSJbO6pQIDA7F//36EhoaabN+/fz/8/f1b9Bq5ubnQ6/Xw8fEx2e7j44PMzMxGn3P58mX8/vvv0Gg0+P7775Gbm4unnnoK+fn5TY67qaysRGVlpfF+UVFRi+ojIiKijsmscPP4449j0aJFqKqqwl133QVAHGT83HPP4ZlnnmnVaykUCpP7giA02FbLYDBAoVBgw4YN0Gq1AIB3330XU6dOxUcffQRHR8cGz4mLi8Mrr7zSqpqIiIio4zIr3Dz33HPIz8/HU089ZVxPSqPRYNmyZVi+fHmLXqNLly5QKpUNWmmys7MbtObU8vPzQ0BAgDHYAOIYHUEQcO3aNYSFhTV4zvLly7FkyRLj/aKiIgQGBraoRiIiIup4zBpzo1Ao8MYbbyAnJwd//PEHkpKSkJ+fj5deeqnFr6FSqRAdHY34+HiT7fHx8Q0GKtcaPnw40tPTUVJSYtx2/vx52NnZoVu3bo0+R61Ww83NzeRCRERE8tWmtaVcXFwwePBghIeHQ61Wt/r5S5YswWeffYb169fjzJkzWLx4MVJTUzFv3jwAYqvLnDlzjPvPmjULXl5e+POf/4zk5GTs3bsXzz77LB599NFGu6SIiIio8zGrWwoAjhw5gm+//RapqanGrqlaW7ZsadFrTJ8+HXl5eVi5ciUyMjIQHh6O7du3Izg4GACQkZGB1NRU4/4uLi6Ij4/H008/jZiYGHh5eWHatGl49dVXzf0YREREJDNmzXPzzTffYM6cOYiNjUV8fDxiY2Nx4cIFZGZm4v7778cXX3xhjVotgvPcEBERdTxWn+dm1apV+Mc//oGffvoJKpUK77//Ps6cOYNp06Y1ObMwERERkS2YFW4uXbqEiRMnAhAH7JaWlkKhUGDx4sVYt26dRQskIiIiag2zwo2npyeKi4sBAAEBATh16hQAoKCgAGVlZZarjoiIiKiVzBpQPHLkSMTHx2PAgAGYNm0aFi5ciF27diE+Ph533323pWskIiIiajGzws3q1atRUVEBQDxd28HBAb///jumTJmCF1980aIFEhEREbVGq8+Wqq6uxoYNGzBu3Dj4+vpaqy6r4dlSREREHY9Vz5ayt7fHX/7yF5PFKImIiIjaC7MGFA8ZMgQJCQmWroWIiIiozcwac/PUU0/hmWeewbVr1xAdHQ1nZ2eTxwcOHGiR4oiIiIhay6wZiu3sGjb4KBQKCIIAhUIBvV5vkeKsgWNuiIiIOp7WHL/NarlJSUkxqzAiIiIiazMr3NQubElERETU3pgVbr766qtmH58zZ45ZxRARERG1lVljbjw8PEzuV1VVoaysDCqVCk5OTsjPz7dYgZbGMTdEREQdj9VXBb9x44bJpaSkBOfOncOIESOwceNGs4omIiIisgSzwk1jwsLC8Prrr2PhwoWWekkiIiKiVrNYuAEApVKJ9PR0S74kERERUauYNaB427ZtJvcFQUBGRgZWr16N4cOHW6QwIiIiInOYFW4mT55scl+hUMDb2xt33XUX3nnnHUvURURERGQWs8KNwWCwdB1EREREFmHRMTdEREREUjMr3EydOhWvv/56g+1vvfUWHnzwwTYXRURERGQus8LNnj17MHHixAbb77nnHuzdu7fNRRERERGZy6xwU1JSApVK1WC7g4MDioqK2lwUERERkbnMCjfh4eHYtGlTg+3ffPMN+vXr1+aiiIiIiMxl1tlSL774Ih544AFcunQJd911FwDg119/xcaNG/Htt99atEAiIiKi1jAr3Nx777344YcfsGrVKmzevBmOjo4YOHAgfvnlF4waNcrSNRIRERG1mFmrgndkXBWciIio47H6quBHjhzBoUOHGmw/dOgQjh49as5LEhEREVmEWd1S8+fPx3PPPYchQ4aYbL9+/TreeOONRoMPEbVcuU6PU+mFSEorQEJaAa7fKIejgxJOKiUcVeK1k8q+5loJR5U9nI2P1W2vve2oUsJZZQ+Ngx0UCoXUH4+IyKrMCjfJycmIiopqsH3QoEFITk5uc1FEnYneIOBidgkS024gMU0MNOeyiqE3WL7HWKGAMSTVDz5OKiUcHezhrK677aRSwt3JAT28XRDm44IAd0cGIyLqEMwKN2q1GllZWejevbvJ9oyMDNjbm/WSRJ2CIAjILKpAYmoBEq8VIDG1ACevF6JMp2+wb1dXNSID3REZ5I7uXVyg0xtQrqtGmU5fcxFvl+v0KNXpm3ysTKdHeZW+5v1h3AfQtap2Z5USPX1c0aurC3r5uCLMR7z202oYeoioXTFrQPGMGTOQmZmJrVu3QqvVAgAKCgowefJkdO3aFf/5z38sXqilcEAx2VJRRRVOXitEYloBEtMKkJRWgOziygb7OauUGNjNHRGB7ogM1CIy0AO+Wo3F6jAYBJRX6euFofrhxzQU1Q9LuaU6XMwqweXcElTpG/+qcFXbG4NOmI8retXc7uqqZughIotpzfHbrHBz/fp13HHHHcjLy8OgQYMAAImJifDx8UF8fDwCAwPNq9wGGG7IWnTVBpzLLK7rXrpWgEs5Jbj5f5jSToE+vq41QUa89PB2gdKu/QaBKr0BV/NKcT6rBOezinEhqwTnsopxJbcU1U10n7lp7BsEnjAfF3i7MPQQUetZPdwAQGlpKTZs2ICkpCTjPDczZ86Eg4ODWUXbCsMNWYIgCLiaV4akawXGVpnT6UXQVRsa7Bvo6YiIbnVBpr+/Fo4qpQRVW56u2oCU3NKawFMshp/sYlzNK2tyzJC7kwN6dXVFL9+awNNVDD9eLmobV09EHYlNwg0gDixOTU2FTmfad3/vvfea+5JWx3BDraGrNiCrqAKZRRXIKKzAxewSJKUVIOlaAQrKqhrs7+7kgIh63UsR3dw75UG7slqPyzli6DlfE3ouZBXjan5Zg5asWl7OKmP3Vh9fN4zu7Q1/d0fbFk5E7ZbVw83ly5dx//334+TJk1AoFBAEwaSZWa9vODiyvWC4oVoVVXpk1YSWzMLa63LxuqgC6QUVyC1pOD6mlsreDv393RDRzR2DgtwR0c0dwV5O7HJpRkWVHhezS3Ahuy7wnM8qQWp+WaP7D+ymRWw/H4zr74ueXV34syXqxKwebiZNmgSlUolPP/0U3bt3x6FDh5Cfn49nnnkGb7/9NkaOHGl28dbGcNM5lOv0yCgsrwstRRUm9zMKK5Bf2rKzhVT2dvDTauDrpkGgpxMiumkREeiOPr5uUNmbNQ8m3aRMV42L2SXGwHPs6g0cS71h0soT2sUZsf19ENvPF4MC3WHXjscoEZHlWT3cdOnSBbt27cLAgQOh1Wpx+PBh9O7dG7t27cIzzzyDhIQEs4u3Noabjk0QBBRXViO7qC6k3NzqklFYgcLyhl1GjdE42MFf6whfrQa+Wo0YYrSO8HMT7/u7O8LDyYEtBhLILanEL8lZ2HE6E/sv5kGnrxvP1NVVjbH9fBDb3xdDu3sxZBJ1Aq05fps1KY1er4eLiwsAMeikp6ejd+/eCA4Oxrlz58x5SerkqvQG5JXokF1cgZziSuQUVyLbeF2zrUS8X1HVcNBuY5xVSvi5OxpbXYzBRauBn7sGfm6OcHO0Z3Bpp7q4qDHjtiDMuC0IJZXV+O1cNnaezsLus9nILq7EhkOp2HAoFa5qe9zZpyvG9ffFqN7ecFFzri2izs6sb4Hw8HCcOHEC3bt3x5AhQ/Dmm29CpVJh3bp1DSb2o86rrpWlkZBSVBdWsosrW9xFVMtVY29scfGr1+riVxNefLUauGra95l71HIuanv8aaA//jTQH5XVehy8lIedyVmIT85CTnEltiWlY1tSOlT2dhjRswti+/lgTD8fdOmEg7mJyMxuqR07dqC0tBRTpkzB5cuX8ac//Qlnz56Fl5cXNm3ahLvuussatVoEu6UsJ6e4EklpBfVCSsNWl8pGTo1uir2dAl1c1Ojqpoa3ixrermp0dRWvxYsGXV3V6OKils2p1NQ2BoOAhLQC7DydiR2nM3Elr25gsp0CiAn2RGx/cUByoKeThJUSUVvZ7FTw+vLz8+Hh4dHum/gZbtrOYBCw4dBVxP3vbKPLBtzMVWNfL6Ro6m7XBpma2x5OKg4SJbMJgoAL2SXYcSoTO5OzcPJ6ocnjfXxdMa6/L2L7+6Cfn1u7/64iIlOShJuOguGmba7dKMOy705g/8U8AEB3b2eEejmbtLZ4u2pMWl00DmxlIdu7XlCOnaczsfN0Fg5fyTeZVLCbhyNi+/liXH8fxIR4tuvZoYlIxHDTDIYb8wiCgE1H0vDqf8+gpLIaGgc7LLunDx4ZGsLWFmr3bpTq8OvZbOw4nYm953NMuks9nVUY01cckDy8ZxeGcaJ2iuGmGQw3rZdRWI5l353E3vM5AIDoYA+8/WAEQrs4S1wZUeuV6aqx93wudp7OxK9ns02mDXBWKTEpwh+zhgRhYDd36YokogYYbprBcNNygiDgu+PX8cqPp1FcUQ2VvR2eG9cbfx4eymZ8ayrJAXLO1rucA0qyAHsNoHIGHBwBByfxonICHGq2qZzqbW9sv5tuKy10NpkgANUVQFU5oCsFqsrEi65M3FZVetNjtbdrHmuwXxmgtAcGTAOiHwHUrpapsxFVegMOp+SL3VfJWcgorDA+Fh7ghlm3BePeSH+eXk7UDjDcNIPhpmWyiyrwwvcn8cuZbABARKA73nkwAj27ukhcmUwIAlCaA2SfEcNL/TBTlmebGuwcmgg+jmJgUjmJ+1TXBA6T0HLTbVjpa0StBWLmAkP+Arj5Wec9agiCgMMp+fj6cCr+dzLTOGmgs0qJ+wYFYNZtQQgP0Fq1BiJqGsNNMxhumicIArYlpeOlradRWF4FldIOi8aG4f+N7A57JWeBbTVBEFtdcs4C2fVaYnLOAOU3mniSAvAIBrz7AN69Ae++gDYAqNbVa+kou6kVpJHWksZaRKpKAaHlp+e3mlJd04pUr+Wo0dv1W5ucGz7nxhXgjzVA7nnxde0cgIHTgKF/BXz6Wa/+GvmlOmw+loaNh9OQkltq3B7RTYtZQ4IwKcIfTiq25hDZEsNNMxhumpZbUokV35/EjtNZAMRm+XcejERvX+t1C8iGIADFGXXhpX6LTEVBE09SAB4hQNe+NSGmj3jpEiYe6K1Vp15Xr1uozLSLqH4IqioX93Vwajyc1G/lqX1cacEDvsEAXNgBHPgQuLq/bnvPscDwBUDISMDKp3MLgoCDl/Kw4XAqdp7ORJVe/Lp0Vdvj/qgAzBoShD6+/B5pqWq9Af89mYHvE67DWWWPbp6OCPJ0Ml783R3hwD+iqAkMN81guGncf09k4MWtp5BfqoO9nQIL7g7DX0b34BfNzQQBKEoXW15MQsw5oLKw8eco7ACPUDG4dO1T1yLTpZcYCujWrh0FDnwAnPmxruXJLwIYtgDoN9myoaoJuSWV+PboNWw8nGqyinlUkDtmDQnGnwb68UyrJlRU6fHd8Wv4ZM/lJleAB8SJF/20dYEn0NMRgfXCj6ezqkPOTyQIQoesu71huGkGw42p/FIdXtp6Cj+dyAAgTnT2zrQI9Pfn2AIIApB/GUhPAK4fF6+zTgGVRY3vr1ACnt3rWmFqW2S8wgAHjW1rl6v8y8DBNUDCv8WxQACgDQKGPgUMmg2orT8mzGAQsP9SLr4+lIr45CxU18yf46axx5SobnhoSBDCfNjaCQClldX4+lAqPt13GdnFlQDEU+/nDA2Gq8YBafllSMsvQ2rN5VYzmjuplDWhpyb8eDgiyEu83c3DyerhUhAElOn0uFGmQ0FZFQrKqmpu63Cj5r54W7xfWC4+XlxRjT6+rrgv0h+TIvzhp+UfNeZguGkGw02dHaczseL7k8gt0UFpp8D80T3w17vCOu8Ky0XpNSHmeF2YaaxLSaEEvHrUdSN59xaDjFdPwJ5rGdlEWT5w5DPg0CdAWa64TaMFYh4DhjwJuPrapIzs4gpja861G+XG7YNDPDBrSBDGh3fO1pwbpTp8eeAKvjxwxXiqvb9Wgyfu6I4Zg4MaXT5FEATkFFci7UZN2MkrR2p+GdJuiAEos6gCtzpa+bipEejhZBqAaq67uqpN5uTSVRtQUC6GlBulOhSUVxlDyo0yHQprrm/UBJbaMFN/dXpzKBTAbSGeuC8yABMG+MLdSdWm1+tMGG6awXADFJZV4eUfT+P7hOsAgLCuLnhnWkTr5vUwGIC0Q0BxuviXs3sQ4NLV6mMgLKYsvybEJNSFmZLMhvspVYBPOBAQBfhHAf6RYkuMPb+Q2oWqciDpG+DgaiDvorhNqaoZfPy02A1oAwaDgL0XcvD1oVT8ejbbOBuyu5MDHojqhpm3BXWKMw2ziirw2b7L2HAo1bg0S/cuzpg3ugcmRwa06Q+niio9rheUN2jtScsXQ1BJZXWzz1fZ2yHA3VEMNWU6lLZg6ZgmX0tpB3cnB3g4qUyu3Z1U8HByqHdbvK9xUGLvhRxsTUzH4ZR84+s4KBUY1csb90YGYEzfrhykfgsMN83o7OFm19ksPP/dSWQXV8JOATw5qgcWjQmD2r6Ff13mXxYPJkkbgYJU08eUasA9UAw6tRdtvdsuPoCdBK1ClSVARlK9Fpnj4tk4N1PYiS0x/lFAwCDx2iecQaYjMBiAc9vFwcdpf9RtDxsnDj4OHm6z4J1ZWIH/HE3DN4dTkV5v3pwhoZ6YNSQI94T7tvz/WwdxNa8UH++5jO+OXTO2bPTzc8P8O3vinnBfq8+LJQgCCsqq6lp9agJQbfC5XlBusvxGLTsFoHU0DSe1YcXDyQHammsPJ5W4n7N439FBafYYmusF5fgpKR1bE9ORnFHXxe2kUmJsPx/cF+mPkWHeHO/YCIabZnTWcFNUUYX/+zEZ3x67BkBcE+rtByMQFeRx6ydXFAHJW4HEr4HUA3XbVa7iabmF18UWnFudYqxUAdrAmwJQcM22ILErwa6NX/rVleK4mNpupevHgdxzjdfmEVrXIhMQJQ5QtdZZSmQ7aYdrBh//BOP8O/5RwLCngb732mTwMQDoDQL2nM/G14dSsetsNmqPrZ7OKkyNFltzOvos32czi7D2t0v4MSnd+PluC/HEU3f2wKhe3u1mEG213oCMwgpcLyiH2t6uJryo4Kqxl3T5mAtZxdhWE3TqD7T2cHLAhAF+uC8yADHBHlzipgbDTTM6Y7jZez4Hy747gYzCCigUwGPDQ7F0XO/mxwIY9EDKXjHQnPmxbvAmFED30UDkQ0CfieLpwIA4B0vRdaAwTWzRMbmkAUXXbh1+7BwAbbea0BMoBh9jC1Ag4OZvGn4MevEspfotMlmnxdOXb+bqXxNkImu6lwYBTp6t+ClSh5N3CTj4EZC4QZxBGRD/TQ2dDwx62KZBNr2gHJuOpGHTkTRkFtW15gzr4YVZQ4IQ28+3Q411O556A2t2XzRO8gkAo3t746nRPXFbKP9ftZYgCEhMK8DWxHT8dCIDuSWVxsf8tRpMivTHfREB6Ovn2rLAaDAAp7cAf6wV/6gMGQGEDAe63Vb3nd0Bdahws2bNGrz11lvIyMhA//798d5772HkyJG3fN7+/fsxatQohIeHIzExscXv15nCTUllNV777xlsPCx2HwV7OeHtByMwOKSZL5/ci0DS12LXU9H1uu1eYUDkLGDgdHFCudbSV4kDdgtSGw9AhdcA4RZ94Hb2gFuAGHYMerGrqaq04X6OHmJ48Y8CAqLF21ae3ZbasdJccfDx4XV1sz9r3IHBj4uDj1262qyUar0Bu8/lYMOhq9hzPsc4QNbLWYXbe3ghsps7IgLdMSBA2+igWykJgoD9F/Pw0e6LOHhZ/DkqFMCEAX74y6genL3ZQqr1Bhy8nIetienYcSoTxfXGEoV1dcF9kf64NyIAQV5NhJRLu4Ff/i5+P97MzgHoFiN204aMAAJv61Ct1R0m3GzatAmzZ8/GmjVrMHz4cHzyySf47LPPkJycjKCgoCafV1hYiKioKPTs2RNZWVkMN404cDEXz24+gesFYovL3GEheO6e3o0PWCu/AZzaIo6juXakbrtGC4RPFUNNQLR1xyzoq8VJ8IxhJw0ouGoafgyNDBh0cK5pjRkkXgKixO6mdtIcTu2IrkwM7gc/EseOAeI4sYjp4uBj7142LSctv0xszTmahpziSpPHlHYK9PJxRWSgFpGBYuAJ6+oqyZpuBoOAnclZWPvbRSRdE+dysrdTYEpUAJ4c1QM9vOU/UFoqFVV67D6bja2J6dh1Lhu6eqfKDwpyx30R/pg40B/ermqxG/6Xl4HLv4k7qFzEeaBcfYErv4uX4nTTN7CzF7/bQ0aIgSdwiE2mUzBXhwk3Q4YMQVRUFNauXWvc1rdvX0yePBlxcXFNPm/GjBkICwuDUqnEDz/8wHBTT5muGq//7yy+OngVANDNwxFvTY3A0B5epjvqq4HLu8Um+7PbAX3Nl6tCCfQcA0TOBHqNbz/zsxj0QHFmXdgRDGKo6dKr7eN0qHMx6IGz/xXH5dQP873Gi+NygofZNBxX6Q04kpKPxGsFSEwtQGJagXFOmPqcVEoMCKgLO5GB7vDTaqw2rqVKb8CPSelY+9slXMguAQBoHOwwY3AQnrijOwLcOVeLLRVVVGHHqUxsS0rH/ou5xjFOIYosxHlsxdCy38QNdg5iq+QdSwHnLnUvIAjAjZS6oHPld9PWeUAMO/6DarqxRgCBt7ersNMhwo1Op4OTkxO+/fZb3H///cbtCxcuRGJiIvbs2dPo87744gusWbMGBw8exKuvvnrLcFNZWYnKyroviqKiIgQGBsoy3BxOycfSb5OMA9MeGhKE5RP6mq5onJUs/vV64j/imke1uvYTW2gGTANcfWxcOZFEUv8A9n8gnmlVO/jYPRjodx/Qf7LYtSlBK2BmYQUS024gMa0QSWkFOHGtoNFTl71d1Yjo5o5BQe6I6OaOAd200Dq2bbX3iio9vj2ahk/2XjbO3eOqsccjQ0Pw5+Eh8HLhXE5Syy6uwK9HTsHt8D8QW/4/OCj0MAgK/CgMx5HQv2DE4GiM7t21+XGVgiCeNXp1f13YKUwz3UehrAk7w8XlTgKHABrpjpsdItykp6cjICAA+/fvx7Bhw4zbV61ahX/+8584d+5cg+dcuHABI0aMwL59+9CrVy+8/PLLtww3L7/8Ml555ZUG2+UUbiqq9Hhrxzms358CQRAHoL0xdSBGhnmLO5TlAyc3i600GYl1T3T0FOcDiZgpninErhzqrHIviHPlJG2qN3ge4viufveJSzxYu2u2GXqDgEs5JUhME1t2ktIKcDazuNHTm3t4OxtbdiID3dHH161Fg5WLK6qw4VAqPtuXYhzQ6uWswmMjQ/Hw7cFw07QtNJGFVBYDB1aL0x7UjDm86jEMr1U+iJ35dX+YuqrtcU+4L6KCPdDFRQ0vFxW8a66bnE/nxlUx5FzdD1zZ13C6D4Ud4BdZ17ITdLs4fMFGOlS4OXDgAIYOHWrc/tprr+Ff//oXzp49a7K/Xq/H7bffjsceewzz5s0DgBaFG7m33OgNAqas2W/sC58eE4gVf+oLNwcAF+LFQHN+B2AQZwmFnT3Q6x4x0ITFcg4Xovp0peL/m+QfxP83VfXWQdIG1gWdbjGS/zFQrtPjdHphXeC5VoC0/PIG+6mUdujn72YMOxGB7gjxcjJ2Z+WX6vDl/hR8eeAKiirEcW0B7o74f3d0x7SYwHY3sLnTqtYBx74A9rxZNyu3fxQw9hUg9A4IgoDkjCJsS0zHtqR0ZNSbY+lmTiolvFxUYuhxVsPbVQUvZzW6uKjg5aJGFxfxdld9NlyzDsHu6n7g6u8N5wdT2AG+A2vCzkgx7Di6W+1H0CHCTWu7pQoKCuDh4QGlsu4/msFggCAIUCqV2LlzJ+66665bvq/cxtwcvJSHmZ/+AWeVEqtnReFObaZ4+vbJb+v+AwBiy0zELGDAVNN+WCJqnK4MuBgvzvF07mfTM/PcugH97q0JOoOlmZyyEXkllUi6VmDszkq6VoCCsqoG+2kdHRAR6I6urmr890QGyqtqZhP2dsZTo3vivkh/60wiJwjiTNLXjorfST79LP8eclN7Wveu/6sLF549gLtfEsN2IyHbYBBw5Eo+/ncqE6n5ZcgrqURuiQ45JZUmg5Jbwt5OAU9nMfT00hRgsOIMwnUnEFqaAG35NZN9BSig8BsIBNe07ISNBZSWa/HrEOEGEAcUR0dHY82aNcZt/fr1w3333ddgQLHBYEBycrLJtjVr1mDXrl3YvHkzQkND4ex861Pa5BZuXvzhFH764yReDj6F+/CbOIFdLeeuYrdT5CzAp79kNRJ1eFXlwMVfaoLO/wBdSd1jrv41LTr3iWMS2knQAcTTt6/mlSHpWgESUsWwczq9qMEBLjzADfNH90RsfyvMJlxVLnZ1XNgpXur/9e8XIc6ZFT4VcPZq8iU6rUu7gPi/A5knxPvOXYHRzwNRc8wKDYIgoKSyGnklOuSVViKnWLzOrb2uCUG5JZXIK9EZ1wVrii/yMMTuDIbYncHtdmfQ3a5uCZtyhRMc/5Zm0UkzO0y4qT0V/OOPP8bQoUOxbt06fPrppzh9+jSCg4OxfPlyXL9+HV999VWjz29Jt9TN5BRu9AYBo177LzZWLUKgXY64UakCek8QA02Pu202GytRp1FVAVz6FTj9Q03QKa57zNVPnAW5/2TxTJN2FHRq6aoNOJtZhKS0AqTklmFUb2/cEdbFsmdd3bhaF2ZS9tZNogjUrdeWebJed7kD0Guc+L0VFmvRv/Y7pOvHxdO6U2p6MFSuwIiFwO1P2XReGl21AfmluprQIwafvJrbeTUtQXm1YahUBy9DPm63O4Pb7ZKhUasw5cVNFq2nNcdvSY9806dPR15eHlauXImMjAyEh4dj+/btCA4OBgBkZGQgNTX1Fq/SeR1Oycfwit8Q6JADwbkrFKOXAf2ncOZdImty0Iizc/eZKAady7trgs52ca6mw5+IFxdfoO8kMegEDW03Uxao7O0wsJt76xbKvZVqHZB6sCbQxItLntTnFiB2UYSNA0LvEE8vLs0DTm0Wu9EzEoGzP4kXJy/xrM3ImeJ4js50okPeJWDXq2I3FCAGwcGPAyOXStKypbK3g69WA1/tracEMRgEFJZX1bQA6VDVxtXT20ryGYptTU4tNy9+fxIzEh5Cf7urwNj/ExcIJCJpVFeKs8MmbxXn0aksrHvMxUcMOv0mi/PotJOg0yZFGeKYpAs7gUu/mbZgKZTi4NKwsWJLTNd+zYeUJqeo6F8zM/o0m84kbXMl2cCeN4BjX9ZMVqoQZ4O/8wXAI1jq6tqNDtMtJQW5hBu9QcATr32E9foV0CvVUD5zli02RO1FtU6cKTb5B7E1oqJe0HH2rhd0hnecrmODXhwIXNvdVDsOpJazN9BzrBhoetxl3lkz+mpxnEnS101MLjoL6D0esJfJXDsVReIUBAdW1w1Y7zkWGPN3wHeAtLW1Qww3zZBLuDl4KQ+ZX87G/cr90Ec8BOX9a279JCKyvWqdOO4k+XuxRaf8Rt1jTl2Avn8Sw45nD/FMRpVL++mKKc0Txxed3yFe168dCnG5k7BY8eIXadkxRk0uC+MunvUZMUt8//bys2qN6krg6BfA3jfr1jsLiAbGvAKE3nptxc6K4aYZcgk3r3+7D4tPTYZaUQ08sVv8T05E7Zu+qibo/ACc+Qkoz2+4j1IttoI4e4nhx7mLeN/JS7xt3FZzW+1quQO8wSC2yNS2zlw7CuPMzYA4YVvPMWKY6XE34OJtmfe9ldwL4ticE5tMlwzo0qtuQV83f9vU0hYGA3DqO/G07gJxiRx49RRP6+57b8cMajbEcNMMOYQbvUHAx68+hfmGr1HkNRBuT++TuiQiai19lTgLbPJWcaxOSbbp7MgtpVTVBB6vmhBUG3xq7tcPRE5eYkCpfxCtKBTf/0K8OIam/pgXAPAZUDd2pttgabvRDHrxDKLEjcCZH+t+Xgo7oPto8bTyPhMBh3a27pUgiC1fv7wsniUGiAPORz8PDHqYZ4e1EMNNM+QQbg5eyEbQv29HgCIP1feuhX3ULKlLIiJL0JUCpTlid1BZLlCaW3dd/3ZZrrhP/YkFW8rOoS7w2KuAjKSaQaw1HJyBHneKgabnWEAbYLnPZ0kVRWILWOJGIPVA3Xa1G9D/frFFJ3CI9VtDBEH8vdX+Toy/r5y6bbnngetH6+obvhC4/S82Pa1bDhhumiGHcLPhn2vxUMrzKFVq4fz8+fazcjcR2ZaurF7gyWt4UL05INWffLA+rzBxnpmwseJp6x1twG7+ZSDpGzHoFNabPsSzuzg2J2K6uE5YSwiC+HNqNFDevK3mZ96SFjelChj8BDDyGU5YaCaGm2Z09HCjNwg4/H+jMFRIwtW+TyB4+ttSl0REHUVVhenBuqII8I8UQ4AcGAzioo9JG8W5h+q3bIWMFNfUc/RoPACW5tSFFX1lk2/RJHtN892D3UcD7oGW+qSdEsNNMzp6uElMPILIH8bAAAWq5ydA5R0qdUlERO1PZYk4Lidxgzi2qbUcnOrCys2DuBsb2K1y5oBgK+swMxRT65XtXwcAOOtyO/ox2BARNU7tIs5yHDlTXA7ixCbxVHw7ZTODrusFGY6H6dAYbjoQfUUJBuT8BACoin5M4mqIiDoIj2Bg1HPihTqF9reqGzXpyp6v4IoypMEHfUfcL3U5RERE7RLDTUchCHBKXA8ASPSZApUDG92IiIgaw3DTQehTD8Ov/AIqBAe4D/uz1OUQERG1Www3HUT+bx8BAH5WDMeQ/mESV0NERNR+Mdx0BCU58LiyHQBwpfssqOz5ayMiImoKj5IdgOH4V7AXqpBo6I6I2+6UuhwiIqJ2jeGmvTPoUXXoMwDAZrt7MLxnF4kLIiIiat8Ybtq78zugLk3HDcEF1X3vZ5cUERHRLfBI2c4Jhz8FAGzSj8a4iBBpiyEiIuoAGG7as7xLUFzeBYOgwFZ7dkkRERG1BMNNe3bkcwDAbkMk+vcfyC4pIiKiFuDRsr3SlUFI/DcA4F/6MZg4wE/igoiIiDoGhpv26tRmKCoKkWrwRoIqml1SRERELcRw0x4JAlAzkPjf+jEY29+fXVJEREQtxCNme3TtKJB5AhVQ4T/60eySIiIiagWGm/boiNhq82P17TBoPNglRURE1AoMN+1NSQ5w+nsAwL/0YxHb35ddUkRERK3Ao2Z7k/AvQK/DaUVPnBB6sEuKiIiolRhu2hODHjj6BQBgfeUYuGns2SVFRETUSgw37cn5HUBhKsqUbvjJcDu7pIiIiMzAI2d7cqRm9W/hTlRCxS4pIiIiMzDctBd5l4BLv0KAAp+Wj2aXFBERkZkYbtqLo+sBABfcbkea4MMuKSIiIjPx6Nke6MrEs6QAfFR6JwCwS4qIiMhMDDftwanNQEUhKlwC8WNpP3ZJERERtQHDjdTqrSO1x20SDLBjlxQREVEb8AgqtZp1pASlGm9l3waAXVJERERtwXAjtZrTv3ND/oSLJSp2SREREbURw42USnOB01sAAN8pxwMAu6SIiIjaiEdRKR3/CtDrIPgPwucpHgDYJUVERNRWDDdSqbeO1OWQmcgprmSXFBERkQUw3Ejlwk6gMBVw9MCG0hgAwNh+7JIiIiJqKx5JpVJz+rch8mH8mHwDAPCngeySIiIiaiuGGynUrCMFKHDC9wF2SREREVkQw40UataRQthYbLniAIBdUkRERJbCo6mt6cqAhH8DAPTRj+F/pzIBsEuKiIjIUhhubO3Ud0BFAeAejKP2UeySIiIisjCGG1sSBOCIOJAYMY9i++lsAOySIiIisiQeUW3p+jEgIwlQqqGPfBjb2SVFRERkcQw3tlRz+jfCH8DRbAW7pIiIiKyA4cZWSvOM60hh8OPYfjIDALukiIiILI1HVVtJENeRgv8g6P2j2CVFRERkJQw3tmDQA0dq5rYZ/ASOXslnlxQREZGVMNzYwoV44zpSCJ/CLikiIiIr4pHVFmpP/x70MPRKDbukiIiIrIjhxtryLgEXfwGgAGIeZZcUERGRlUkebtasWYPQ0FBoNBpER0dj3759Te67ZcsWjB07Ft7e3nBzc8PQoUOxY8cOG1Zrhtp1pHqOATy7s0uKiIjIyiQ9um7atAmLFi3CihUrkJCQgJEjR2L8+PFITU1tdP+9e/di7Nix2L59O44dO4Y777wTkyZNQkJCgo0rb6F660jhtiegNwjGtaQmDvSVsDAiIiL5UgiCIEj15kOGDEFUVBTWrl1r3Na3b19MnjwZcXFxLXqN/v37Y/r06XjppZdatH9RURG0Wi0KCwvh5uZmVt0tlvBvYOt8wD0IWJCIQ1cKMH3dH3DV2OPY38ay5YaIiKiFWnP8luzoqtPpcOzYMcTGxppsj42NxYEDB1r0GgaDAcXFxfD09Gxyn8rKShQVFZlcbEIQ6mYkjnkMsFMau6Ri2SVFRERkNZIdYXNzc6HX6+Hj42Oy3cfHB5mZmS16jXfeeQelpaWYNm1ak/vExcVBq9UaL4GBgW2qu8WuHwMyEgGlGhg0m11SRERENiJ584FCoTC5LwhCg22N2bhxI15++WVs2rQJXbt2bXK/5cuXo7Cw0HhJS0trc80tcuQz8Tp8CuDshaNX8pFdXAlXjT1G9PS2TQ1ERESdkL1Ub9ylSxcolcoGrTTZ2dkNWnNutmnTJjz22GP49ttvMWbMmGb3VavVUKvVba63VUrzgFO160g9AQDskiIiIrIRyY6yKpUK0dHRiI+PN9keHx+PYcOGNfm8jRs3Yu7cufj6668xceJEa5dpnoR/AfpKwC8SCIhilxQREZENSdZyAwBLlizB7NmzERMTg6FDh2LdunVITU3FvHnzAIhdStevX8dXX30FQAw2c+bMwfvvv4/bb7/d2Orj6OgIrVYr2ecwYdADRz8Xb9/2BKBQ4GhKHrukiIiIbETScDN9+nTk5eVh5cqVyMjIQHh4OLZv347g4GAAQEZGhsmcN5988gmqq6sxf/58zJ8/37j9kUcewZdffmnr8ht3IR4oSAU07kD4AwDYJUVERGRLks5zIwWrz3Pz76nAxXhg6F+Bca/BYBBwe9yvyC6uxPq5MbirT/PjiYiIiKihDjHPjSzlX65bR2rwYwCAo1dvsEuKiIjIhhhuLOnI5wAE4zpSAPDfE+kA2CVFRERkKzzaWkpVed06UoMfBwAYeJYUERGRzTHcWEpWsrjkgnsQEDYWALukiIiIpCDp2VKy0i0aeOYMkJ8C2CkBsEuKiIhICjziWpLKGfANB8AuKSIiIqkw3FgJu6SIiIikwXBjJeySIiIikgaPulbALikiIiLpMNxYAbukiIiIpMNwYwVcS4qIiEg6PPJamMEgGMMNu6SIiIhsj+HGwtglRUREJC2GGwtjlxQREZG0ePS1IHZJERERSY/hxoLYJUVERCQ9hhsLYpcUERGR9HgEthB2SREREbUPDDcWkpBWwC4pIiKidsBe6gLkIirIHT/+dQSu5peyS4qIiEhCDDcWolAoMKCbFgO6aaUuhYiIqFNjEwMRERHJCsMNERERyQrDDREREckKww0RERHJCsMNERERyQrDDREREckKww0RERHJCsMNERERyQrDDREREckKww0RERHJCsMNERERyQrDDREREckKww0RERHJCsMNERERyQrDDREREckKww0RERHJCsMNERERyQrDDREREckKww0RERHJCsMNERERyQrDDREREckKww0RERHJCsMNERERyQrDDREREckKww0RERHJCsMNERERyQrDDREREckKww0RERHJCsMNERERyQrDDREREckKww0RERHJCsMNERERyQrDDREREckKww0RERHJCsMNERERyYrk4WbNmjUIDQ2FRqNBdHQ09u3b1+z+e/bsQXR0NDQaDbp3746PP/7YRpUSERFRRyBpuNm0aRMWLVqEFStWICEhASNHjsT48eORmpra6P4pKSmYMGECRo4ciYSEBLzwwgtYsGABvvvuOxtXTkRERO2VQhAEQao3HzJkCKKiorB27Vrjtr59+2Ly5MmIi4trsP+yZcuwbds2nDlzxrht3rx5SEpKwsGDB1v0nkVFRdBqtSgsLISbm1vbPwQRERFZXWuO3/Y2qqkBnU6HY8eO4fnnnzfZHhsbiwMHDjT6nIMHDyI2NtZk27hx4/D555+jqqoKDg4ODZ5TWVmJyspK4/3CwkIA4g+JiIiIOoba43ZL2mQkCze5ubnQ6/Xw8fEx2e7j44PMzMxGn5OZmdno/tXV1cjNzYWfn1+D58TFxeGVV15psD0wMLAN1RMREZEUiouLodVqm91HsnBTS6FQmNwXBKHBtlvt39j2WsuXL8eSJUuM9w0GA/Lz8+Hl5dXs+5ijqKgIgYGBSEtL6xRdXvy88sbPK3+d7TPz83ZsgiCguLgY/v7+t9xXsnDTpUsXKJXKBq002dnZDVpnavn6+ja6v729Pby8vBp9jlqthlqtNtnm7u5ufuEt4ObmJot/SC3Fzytv/Lzy19k+Mz9vx3WrFptakp0tpVKpEB0djfj4eJPt8fHxGDZsWKPPGTp0aIP9d+7ciZiYmEbH2xAREVHnI+mp4EuWLMFnn32G9evX48yZM1i8eDFSU1Mxb948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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "plt.plot(accuracies, label='train')\n", "plt.plot(accuracies_test, label='test')\n", @@ -759,9 +1000,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 89, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxcAAAGHCAYAAADC2a9WAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8ekN5oAAAACXBIWXMAAA9hAAAPYQGoP6dpAABQcklEQVR4nO3dd3gUVf///9eSHkqAACkQICC9S0QTQJqAodx2UZQeFKkhcitFaSIRC3dUmigSUUQ+3gqi0qJUBRQiUQRuBCkJkICgJBRNSDK/P/xlvyzZQDZMdhN8Pq5rros5e2bOe2eXOXnvOTNjMQzDEAAAAADcoDKuDgAAAADAzYHkAgAAAIApSC4AAAAAmILkAgAAAIApSC4AAAAAmILkAgAAAIApSC4AAAAAmILkAgAAAIApSC4AAAAAmILkogSzWCyFWjZt2uTSODt27KiOHTu6NIbiNnXqVFksliJtO3DgQJUrV87UeAYOHKjatWsXefsvvvhC/fv3V7NmzeTh4VHk9wb8U+3YsUMPPfSQgoKC5OnpqcDAQD344IPavn37De135syZWrlypTlBXsfJkyc1depUJSUlOaU9Rxw9elQWi0WvvvqqafvctGmTLBaL/vvf/163rr1zvr2+zmKxaOrUqdb1ffv2aerUqTp69Gi+fd7oeftGdOnSRcOGDXNJ29dy9fGLj4+XxWKxe/yuZfXq1Tb7uVLt2rU1cODAIsdotq+++kpdu3ZVcHCwvLy8VK1aNXXu3FmrV6+2qXf58mXVrVtXcXFxrgn0BpBclGDbt2+3WXr06CEfH5985bfeeqtL45w3b57mzZvn0hjgmBUrVmjHjh1q3LixWrRo4epwgFLlzTffVNu2bXX8+HG9/PLL+uqrr/Tqq6/qxIkTateunebMmVPkfTs7uZg2bVqJTC5cLSoqqlCJ4vbt2xUVFWVd37dvn6ZNm2b3j+Pnn39eK1asMDPMQvnss8/07bff6vnnn3d6247q2bOntm/frqCgIIe2W716taZNm2b3tRUrVpSo93727Fk1adJE//nPf7R+/Xq99dZb8vDwUM+ePfXBBx9Y63l4eGjy5MmaPn26zp4968KIHefu6gBQsDvuuMNmvWrVqipTpky+8qtdunRJvr6+xRmajcaNGzutLZjj7bffVpkyf/+2MHLkSCUmJro4IqB0+PbbbxUdHa0ePXpoxYoVcnf/f93oI488ovvuu09jxoxRq1at1LZtWxdGWvI4u2+6ETVq1FCNGjWuW+96/fGV6tateyMhFdnMmTN13333qXr16qbts7g+y6pVq6pq1aqm7rNVq1am7u9G9enTR3369LEp69Wrl0JDQ7Vw4UI9/vjj1vJHH31UMTExeuuttzRx4kRnh1pkjFyUch07dlTTpk21ZcsWRUREyNfXV4MHD5aUf7gxj70hwrS0ND355JOqUaOGPD09FRoaqmnTpik7O7tQMVw5VJw3nP3KK69o1qxZql27tnx8fNSxY0f98ssvunz5ssaPH6/g4GD5+fnpvvvu0+nTp232uXz5cnXr1k1BQUHy8fFRo0aNNH78eF28eDFf+2+//bbq168vLy8vNW7cWB9++KHd4eesrCzNmDFDDRs2lJeXl6pWrapBgwbpt99+u+57tMeRGCVp79696tKli8qWLauqVatq5MiRunTpkk0dwzA0b948tWzZUj4+PqpUqZIefPBBHT58uEgxFiQvsQDgmNjYWFksFs2fP98msZAkd3d3zZs3TxaLRS+99JK1vKDpMFdPvbFYLLp48aLee+8967TXvHNr3nSRhIQEDRo0SJUrV1bZsmXVu3fvfOeHgqaBXHmu3rRpk2677TZJ0qBBg6ztFTS1xNEYrtU3JScn6/HHH1e1atXk5eWlRo0a6bXXXlNubm6+NnNzc/Xiiy+qZs2a8vb2VlhYmL7++mubOocOHdKgQYNUr149+fr6qnr16urdu7f27Nlj93389ddfiomJUWBgoHx8fNShQwft3r3bpk5hp8Jeeczi4+P10EMPSZI6depkPabx8fGS7H8PCnvO3717t3r16mU9ZsHBwerZs6eOHz9+zfh2796t77//Xv369bMpN+uzzMjI0Lhx4xQaGipPT09Vr15d0dHR+frBjIwMDR06VP7+/ipXrpzuvvtu/fLLL/niLWha1Nq1a9WlSxf5+fnJ19dXjRo1UmxsrPW4zp07V5LtdPK8fdj7/1CY7+CVU/Nmz56t0NBQlStXTuHh4dqxY8c1j7ujPDw8VLFixXznFE9PT/Xp00cLFy6UYRimtlmc+AvjJpCamqrHH39cffv21erVqzV8+HCHtk9LS1ObNm20bt06TZ48WWvWrNGQIUMUGxuroUOHFjmuuXPn6ttvv9XcuXP1zjvv6H//+5969+6tIUOG6LffftO7775rnVJw5bCyJB08eFA9evTQokWLtHbtWkVHR+v//u//1Lt3b5t6Cxcu1BNPPKHmzZvr008/1XPPPadp06bluw4lNzdX99xzj1566SX17dtXX375pV566SUlJCSoY8eO+vPPPx1+f4WNUfp77mSPHj3UpUsXrVy5UiNHjtRbb72V79eLJ598UtHR0brrrru0cuVKzZs3T3v37lVERIROnTp1zXjyOkNXX4MD3KxycnK0ceNGhYWFFfirdkhIiFq3bq0NGzYoJyfHof1v375dPj4+6tGjh3Xa69VTTocMGaIyZcroww8/VFxcnL7//nt17NhR586dc6itW2+9VYsXL5YkPffcc9b2rj4X21PYGOz1Tb/99psiIiK0fv16vfDCC1q1apXuuusujRs3TiNHjszX1pw5c7R27VrFxcXpgw8+UJkyZRQZGWkzZenkyZPy9/fXSy+9pLVr12ru3Llyd3fX7bffrgMHDuTb58SJE3X48GG98847euedd3Ty5El17Njxhn/E6dmzp2bOnCnp7/4v75j27NmzwG0Kc86/ePGiunbtqlOnTmnu3LlKSEhQXFycatasqfPnz18zpi+++EJubm6688477b5+I5/lpUuX1KFDB7333nsaPXq01qxZo2effVbx8fH617/+Zf1j2DAM3XvvvXr//ff19NNPa8WKFbrjjjsUGRlZqOO6aNEi9ejRQ7m5uVqwYIE+//xzjR492ppYPf/883rwwQcl2U4nL2hqlaPfwSuP+dKlS3Xx4kX16NFD6enp1jp5iYgj13bk5uYqOztbJ0+e1JQpU/TLL7/o6aefzlevY8eOOnbsmH7++edC79vlDJQaAwYMMMqWLWtT1qFDB0OS8fXXX+erL8mYMmVKvvJatWoZAwYMsK4/+eSTRrly5Yxjx47Z1Hv11VcNScbevXuvGVeHDh2MDh06WNePHDliSDJatGhh5OTkWMvj4uIMSca//vUvm+2jo6MNSUZ6errd/efm5hqXL182Nm/ebEgyfvzxR8MwDCMnJ8cIDAw0br/9dpv6x44dMzw8PIxatWpZy5YtW2ZIMj755BObujt37jQkGfPmzbvme5wyZYpxrf8uBcVoGH9/bpKM119/3WabF1980ZBkfPPNN4ZhGMb27dsNScZrr71mUy8lJcXw8fExnnnmGZt9Xvn+DMMwpk2b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S9L58+f1+eefq3379tbkzWKx5DsXf/nllwVOI1m2bJnNnXeOHTumbdu2mfIwWEeOaVHO+RaLRS1atNB//vMfVaxYMd9xvFrDhg2veaH6jXyWvXr10q+//ip/f3+78eeNDuR9pgX1gdcSEREhPz8/LViw4Jp3S3LkuDv6HXQGwzC0efNmVaxYMV+Sm/f5labb/jNycRPr16+fnn/+eU2ePFkdOnTQvn37NGfOHPn5+dnUmz59uhISEhQREaHRo0erQYMG+uuvv3T06FGtXr1aCxYsMHVI8noiIiJUqVIlDRs2TFOmTJGHh4eWLl2ab8i6TJkymjZtmp588kk9+OCDGjx4sM6dO6dp06YpKCjIZljxkUce0dKlS9WjRw+NGTNGbdq0kYeHh44fP66NGzfqnnvu0X333Wd6jHk8PT312muv6cKFC7rtttu0bds2zZgxQ5GRkWrXrp0kqW3btnriiSc0aNAg7dq1S3feeafKli2r1NRUffPNN2rWrJmeeuqpAmOaPn26pk+frq+//vq6110cO3ZMO3fulCT9+uuvkmR9am3t2rUVFhZW6GMB/JO0bdtWcXFxio6OVrt27TRy5EjVrFlTycnJmjt3rr777jvFxcUpIiLCuk2fPn00efJkPfLII/r3v/+tv/76S2+88Ybdu0k1a9ZMmzZt0ueff66goCCVL1/e5sePXbt2KSoqSg899JBSUlI0adIkVa9e3eYugf369dPjjz+u4cOH64EHHtCxY8f08ssv53t+QN26deXj46OlS5eqUaNGKleunIKDg6/7g1JhYijI2LFjtWTJEvXs2VPTp09XrVq19OWXX2revHl66qmnVL9+fZv6bm5u6tq1q2JiYpSbm6tZs2YpIyPD5oFpvXr1Unx8vBo2bKjmzZsrMTFRr7zySoH91unTp3Xfffdp6NChSk9P15QpU+Tt7W2TEBZV06ZNJf19J8Py5cvL29tboaGhdkdFCnvO/+KLLzRv3jzde++9qlOnjgzD0Keffqpz586pa9eu14ynY8eOevfdd/XLL7/kO7bSjX2W0dHR+uSTT3TnnXdq7Nixat68uXJzc5WcnKz169fr6aef1u23365u3brpzjvv1DPPPKOLFy8qLCxM3377rd5///3rtlGuXDm99tprioqK0l133aWhQ4cqICBAhw4d0o8//mh9YGVeIjZr1izrqGHz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f3/t2bPHWueFF15QtWrVFBsbq8OHD6tixYq69dZbNXHiRGe9nRLN4eSiT58+Onv2rKZPn67U1FQ1bdpUq1evVq1atYojPgAAAOCG1K9fX9u3b7cpGzhwoN2606ZNu+bNiCwWi0aPHq3Ro0ebGeJNo0gXdA8fPlzDhw83OxYAAAAApZjDD9EDAAAAAHtILgAAAACYguQCAAAAgClILgAAAACYguQCAAAAgClILgAAAACYguQCAAAAgClILgAAAACYguQCAAAAN8Zice5SgtWuXVtxcXHWdYvFopUrV97QPs3Yh7MU6QndAAAAAK4vNTVVlSpVKlTdqVOnauXKlUpKSiryPlyN5AIAAAC4QlZWljw9PU3ZV2BgYInYh7MwLQoAAAA3tY4dO2rkyJEaOXKkKlasKH9/fz333HMyDEPS31OZZsyYoYEDB8rPz09Dhw6VJG3btk133nmnfHx8FBISotGjR+vixYvW/Z4+fVq9e/eWj4+PQkNDtXTp0nxtXz2l6fjx43rkkUdUuXJllS1bVmFhYfruu+8UHx+vadOm6ccff5TFYpHFYlF8fLzdfezZs0edO3eWj4+P/P399cQTT+jChQvW1wcOHKh7771Xr776qoKCguTv768RI0bo8uXLJh5V+xi5KCU2bdrk6hAK9N5777k6hFLn6uHOkiQ6OtrVIQAAYLr33ntPQ4YM0Xfffaddu3bpiSeeUK1atayJxCuvvKLnn39ezz33nKS//4Dv3r27XnjhBS1atEi//fabNUFZvHixpL//iE9JSdGGDRvk6emp0aNH6/Tp0wXGcOHCBXXo0EHVq1fXqlWrFBgYqB9++EG5ubnq06ePfv75Z61du1ZfffWVJMnPzy/fPi5duqS7775bd9xxh3bu3KnTp08rKipKI0eOtCYjkrRx40YFBQVp48aNOnTokPr06aOWLVta329xIbkAAADATS8kJET/+c9/ZLFY1KBBA+3Zs0f/+c9/rH9sd+7cWePGjbPW79+/v/r27Wv90a1evXp644031KFDB82fP1/Jyclas2aNduzYodtvv12StGjRIjVq1KjAGD788EP99ttv2rlzpypXrixJuuWWW6yvlytXTu7u7tecBrV06VL9+eefWrJkicqWLStJmjNnjnr37q1Zs2YpICBAklSpUiXNmTNHbm5uatiwoXr27Kmvv/662JMLpkUB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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "plot_prediction(model, sample_idx=4)" ] @@ -776,16 +1028,131 @@ "\n", "- Use numpy to find test samples for which the model made the worst predictions,\n", "- Use the `plot_prediction` to look at the model predictions on those,\n", - "- Would you have done any better?" + "- Would you have done any better? \n" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 90, "metadata": {}, "outputs": [], "source": [ - "# Your code here" + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from sklearn.datasets import load_digits\n", + "\n", + "digits = load_digits()" + ] + }, + { + "cell_type": "code", + "execution_count": 192, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "=== Worst Prediction Errors ===\n", + "\n", + "Worst prediction #1:\n", + "True label: 9, Predicted: 0\n", + "Error: 9.000\n", + "\n", + "Worst prediction #2:\n", + "True label: 0, Predicted: 9\n", + "Error: 9.000\n", + "\n", + "Worst prediction #3:\n", + "True label: 9, Predicted: 1\n", + "Error: 8.000\n", + "\n", + "Worst prediction #4:\n", + "True label: 9, Predicted: 1\n", + "Error: 8.000\n", + "\n", + "Worst prediction #5:\n", + "True label: 1, Predicted: 9\n", + "Error: 8.000\n", + "\n", + "Analysis: Would you have done better?\n", + "Yes I wouldve done better.\n" + ] + }, + { + "data": { + "image/png": "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64EHHtCAAQO0evVqjRo1yqntMzIydN1112ndunWaMmWK1qxZo+HDhys+Pl4jRowoc1zz58/XV199pfnz5+vVV1/Vjz/+qL59+2r48OH67bff9Nprr9mmFJw/rCxJ+/fvV69evbR48WKtXbtWMTEx+t///qe+ffva1Vu0aJEefPBBtWnTRu+//74ef/xxTZ8+vch1KAUFBbrttts0e/ZsDRgwQJ988olmz56tpKQkdenSpUzXGpQ2RunvuZO9evVSt27dtGrVKo0ZM0Yvv/xykWlIDz30kGJiYtS9e3etWrVKCxYs0O7duxUZGaljx46VGE9hZ3ixa3Byc3MlSVar1a68cP3777+/2FsH/pHy8/O1YcMGhYeHF/urdmhoqDp06KD169crPz/fqf1v3bpVPj4+6tWrl23a64VTTocPH64qVarorbfeUkJCgr755ht16dJFJ0+edKqta665RkuWLJEkPf7447b2LjwXO1LaGBz1Tb/99psiIyP16aef6sknn9SHH36o7t2765FHHtGYMWOKtDVv3jytXbtWCQkJevPNN1WlShVFRUXZTVk6evSoAgICNHv2bK1du1bz58+Xp6enrr/+eu3bt6/IPidNmqQDBw7o1Vdf1auvvqqjR4+qS5cul/wjTu/evTVr1ixJf/d/hce0d+/exW5TmnP+mTNn1KNHDx07dkzz589XUlKSEhIS1KBBA506darEmD7++GN5eHjopptucvj6pXyWZ8+eVefOnfX6669r3LhxWrNmjR577DElJibqX//6l+3LsGEYuv322/XGG2/o3//+t1auXKkbbrhBUVFRpTquixcvVq9evVRQUKCXXnpJH330kcaNG2dLrJ544gndfffdkuynkxc3tcrZv8Hzj/myZct05swZ9erVS1lZWbY6hYlIaa7t+OGHH9SmTZsi5YVlu3fvtivv0qWLDh8+rB9++OGi+64wDFQagwcPNvz8/OzKOnfubEgyPv/88yL1JRlTp04tUt6wYUNj8ODBtvWHHnrIqFatmnH48GG7es8++6whydi9e3eJcXXu3Nno3Lmzbf3gwYOGJKNt27ZGfn6+rTwhIcGQZPzrX/+y2z4mJsaQZGRlZTncf0FBgXHu3Dlj06ZNhiTju+++MwzDMPLz842goCDj+uuvt6t/+PBho2rVqkbDhg1tZcuXLzckGe+9955d3e3b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6oYbbtD27duVmZmp6OhojRkzxpaMSNKGDRsUHBysDRs26Oeff1b//v3Vrl072/sFUHmRXAAA4GahoaH673//K4vFombNmmnXrl3673//a/uyffPNN+uRRx6x1R80aJAGDBigmJgYSdJVV12lF154QZ07d9bChQuVmpqqNWvWaNu2bbr++uslSYsXL1aLFi2KjeGtt97Sb7/9pu3bt9t+ALnyyittr1erVk2enp4lToNatmyZ/vzzTy1dulR+fn6SpHnz5qlv376aM2eOAgMDJUm1atXSvHnz5OHhoebNm6t37976/PPPSS6AywDTogAAcLMbbrhBlvPuNhUREaH9+/crPz9fkhQeHm5XPzk5WYmJiapWrZptueWWW1RQUKCDBw9q79698vT0tNuuefPmqlmzZrExpKSkqH379pc0srp37161bdvWllhIUseOHVVQUKB9+/bZyq6++mp5eHjY1oODg0scVQFQeTByAQBABXf+l3VJKigo0EMPPaRx48YVqdugQQPbF3mLE7fH9fHxubQgJRmGUWyb55dXrVq1yGsFBQWX3D4A92PkAgAAN9u2bVuR9auuusru1/3zXXPNNdq9e7euvPLKIouXl5datGihvLw87dixw7bNvn37dPLkyWJjaNOmjVJSUvT77787fN3Ly8s2klKcli1bKiUlxe7C8q+++kpVqlRR06ZNS9wWwOWB5AIAADdLS0tTbGys9u3bp+XLl+vFF1/U+PHji63/2GOPaevWrRo9erRSUlK0f/9+ffjhhxo7dqwkqVmzZrr11ls1YsQIff3110pOTlZ0dHSJoxP33XefgoKCdPvtt+urr77SgQMH9N5772nr1q2S/r5r1cGDB5WSkqLjx48rJyenyD7uv/9+eXt7a/Dgwfrhhx+0YcMGjR07VgMHDrRdbwHg8kZyAQC4vBmG65YyGjRokP78809dd911Gj16tMaOHasHH3yw2Ppt2rTRpk2btH//fnXq1Ent27fXE088oeDgYFudJUuWKDQ0VJ07d9add96pBx98UPXq1St2n15eXvr0009Vr1499erVS61bt9bs2bNtoyd33XWXbr31VnXt2lV169bV8uXLi+zD19dX69at0++//65rr71Wd999t7p166Z58+aV+dgAqFy45gIAADerWrWqEhIStHDhwiKvHTp0yOE21157rT799NNi9xkU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f8vE4P72iaFitE8MFaP9i7EY/7R7KAIAAAAoF0yLAgAAAGAKkgsAAAAApiC5AAAAAGAKkgsAAAAApqi0ycWCBQsUFhYmb29vdejQQV988YW7Q6qw4uPjde2116p69eqqV6+ebr/9du3bt8/dYVUq8fHxslgsiomJcXcoFdqRI0f0wAMPKCAgQL6+vmrXrp2Sk5PdHRZQZu7sazZv3qy+ffsqJCREFotFq1atclnbUsXoOxYuXKg2bdrYHhYWERGhNWvWuDSG87mjL5g2bZosFovdEhQU5LL2C7n7/N6oUaMix8FisWj06NEuaT8vL0+PP/64wsLC5OPjo8aNG2vGjBkqKChwSfuFTp06pZiYGDVs2FA+Pj6KjIzU9u3bXRrDxVTK5GLFihWKiYnR5MmTtXPnTnXq1ElRUVF2tz3E/9m0aZNGjx6tbdu2KSkpSXl5eerZs6fOnDnj7tAqhe3bt2vRokVq06aNu0Op0P744w917NhRVatW1Zo1a7Rnzx4999xzbnuiMnCp3N3XnDlzRm3bttW8efNc0t6FKkLfccUVV2j27NnasWOHduzYoZtvvlm33Xabdu/e7bIYCrmzL7j66quVnp5uW3bt2uXS9ivC+X379u12x6DwoZz9+vVzSftz5szRSy+9pHnz5mnv3r16+umn9cwzz+jFF190SfuFoqOjlZSUpDfeeEO7du1Sz5491b17dx05csSlcZTIqISuu+46Y+TIkXZlzZs3NyZOnOimiCqXzMxMQ5KxadMmd4dS4Z06dcq46qqrjKSkJKNz587G+PHj3R1ShfXYY48ZN954o7vDAExTkfoaScbKlStd3u75KkrfUatWLePVV191aZvu7AumTp1qtG3b1mXtOVIRz+/jx483mjRpYhQUFLikvd69exvDhg2zK7vzzjuNBx54wCXtG4ZhnD171vDw8DA+/vhju/K2bdsakydPdlkcF1PpRi5yc3OVnJysnj172pX37NlTW7ZscVNUlUtWVpYkqXbt2m6OpOIbPXq0evfure7du7s7lArvww8/VHh4uPr166d69eqpffv2euWVV9wdFlAm9DVFubvvyM/P19tvv60zZ84oIiLCpW27uy/Yv3+/QkJCFBYWpnvvvVcHDhxwafsV7fyem5urN998U8OGDZPFYnFJmzfeeKM+//xz/fTTT5Kk7777Tl9++aV69erl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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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e3edPXtW2dnZDp9jw4YNiyXGK115ezlJ+uSTTyTJdveW7t27yzAMnTx50mGMzZo1cyrG/NSsWVNt2rTRxx9/bHfB6fbt23Xw4EE99NBDprQD3IjGjBkjwzA0ZMiQPBdsZ2dn65lnnpFhGBozZoytvE6dOkpNTbX7IiQzM1Nr1qzJs3+r1VrgN5RXn0e2bt2q48eP292xz9G5/5dffslzcXNRv4EtTAz56dSpk/bv36/du3fblS9YsEAWi0UdO3a0K1+6dKltVFuSzp8/ry+//FLt2rWzJW8WiyXPufjrr7/OdxrJokWL7O68c/z4cW3dutWUH4N15pgW5ZxvsVjUokUL/ec//1HFihXzHMerNWrUqMAL1a/ntezevbt+/fVXValSxWH8uaMDua9pfn1gQcLDw+Xv76/Zs2cXeLckZ467s+/B4lKuXDk1a9ZMQUFB2r17t9atW6eRI0fmqZf7+pWm2/4zcnED6927t15++WWNGzdO7du31/79+zV9+nT5+/vb1Zs0aZLi4+MVHh6uESNGqGHDhvrrr7907NgxrVy5UrNnzzZ1SPJawsPDValSJQ0ePFjjx4+Xl5eXFi5cmGfIukyZMpo4caKefvppPfLIIxowYIDOnTuniRMnKigoyG7e4uOPP66FCxeqa9euGjlypNq0aSMvLy+dOHFCGzZs0P33368HH3zQ9BhzeXt766233tKFCxd02223aevWrZo8ebIiIiJ05513SpLatm2rp556Sv3799fOnTt11113qWzZskpOTta3336rZs2aFfj7E5MmTdKkSZO0bt26a153MXXqVHXu3FmPPvqohgwZotTUVI0ePVpNmzZV//79C30cgH+atm3bKjY2VlFRUbrzzjs1bNgw1apVS4mJiZoxY4a+//57xcbGKjw83LZNz549NW7cOD3++ON67rnn9Ndff+mdd95xeDepZs2aaePGjfryyy8VFBSk8uXL2335sXPnTkVGRurRRx9VUlKSxo4dq5o1a9rdJbB379568sknNWTIED388MM6fvy4Xn/99Ty/H1CvXj35+vpq4cKFaty4scqVK6caNWpc8wulwsSQn1GjRmnBggXq1q2bJk2apNq1a+vrr7/WzJkz9cwzz6hBgwZ29T08PNS5c2dFR0crJydHU6dOVXp6ut0PpnXv3l1xcXFq1KiRmjdvrl27dumNN97I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EVHo+rNnz1atWrUUGxsrSWrcuLF27typN998Uw8//LDDbTIyMpSRkWFbT09Pv66YAQDFj+QCAFDstm3bpi5dutiV3XvvvZo7d64uX74sLy+vPNvExMRo4sSJpsZRZ/TXpu4vP8de6+aSdoCSwlX/W7mc/R/r0KGDWrZsafuCA8WnSNOiZs6cqZCQEPn4+Kh169basmWL2XEBAG4gKSkpCggIsCsLCAhQVlaWzpw543CbMWPGKC0tzbYkJSW5IlQA/0CGYSgrK8vdYdwQnE4ulixZoqioKI0dO1Z79uxRu3btFBERocTExOKIDwBwg7j67jK5P8CV311nrFarKlSoYLcAgLP69eunTZs26e2335bFYpHFYlFcXJwsFovWrFmj0NBQWa1WbdmyRf369dMDDzxgt31UVJQ6dOhgWzcMQ6+//rrq1q0rX19ftWjRQp999plrn1QJ5nRyMW3aNA0cOFCRkZFq3LixYmNjFRwcrFmzZhVHfACAG0BgYKBSUlLsylJTU+Xp6akqVaq4KSoA/wRvv/22wsLCNGjQICUnJys5OVnBwcGSpOeff14xMTE6cOCAmjdvXqj9vfTSS5o/f75mzZqlffv2adSoUXryySe1adOm4nwapYZT11xkZmZq165dGj16tF15ly5dtHXrVofbcEEeACAsLExffvmlXdnatWsVGhrq8HoLADCLv7+/vL295efnp8DAQEnSf//7X0nSpEmT1Llz50Lv6+LFi5o2bZrWr1+vsLAwSVLdunX17bff6r333lP79u3NfwKljFPJxZkzZ5Sdne1w3uzV30jlKo4L8gAA7nXhwgUdPnzYtn706FElJCSocuXKqlWrlsaMGaOTJ09qwYIFkqTBgwdr+vTpio6O1qBBg7Rt2zbNnTtXixYtctdTAACFhoY6VX///v3666+/8iQkmZmZatWqlZmhlVpFuluUo3mz+c2ZHTNmjKKjo23r6enptqEoAEDptHPnTnXs2NG2nnue79u3r+Li4pScnGx3LV5ISIhWrlypUaNGacaMGapRo4beeeedfG9DCwCuULZsWbv1MmXK2K4Hy3X58mXb3zk5OZKkr7/+WjVr1rSrZ7VaiynK0sWp5KJq1ary8PBwOG/26tGMXFarlYMNADeYDh065OmArxQXF5enrH379tq9e3cxRgUAjnl7eys7O/ua9apVq6aff/7ZriwhIcE2fbNJkyayWq1KTExkClQ+nLqg29vbW61bt1Z8fLxdeXx8vMLDw00NDAAAADBDnTp19P333+vYsWM6c+aMbQTianfffbd27typBQsW6NChQxo/frxdslG+fHk9++yzGjVqlD788EP9+uuv2rNnj2bMmKEPP/zQVU+nRHN6WlR0dLR69+6t0NBQhYWFac6cOUpMTNTgwYOLIz4AAACUcCX9hyOfffZZ9e3bV02aNNGff/6p+fPnO6x377336uWXX9bzzz+vv/76SwMGDFCfPn20d+9eW51XXnlF1atXV0xMjI4cOaKKFSvq1ltv1Ysvvuiqp1OiOZ1c9OzZU2fPntWkSZOUnJyspk2bauXKlapdu3ZxxAcAAABclwYNGmjbtm12Zf369XNYd+LEiQXejMhisWjEiBEaMWKEmSHeMIp0QfeQIUM0ZMgQs2MBAAAAUIo5/SN6AAAAAOAIyQUAAAAAU5BcAAAAADAFyQUAAAAAU5BcAAAAADAFyQUAAAAAU5BcAAAAADAFyQUAAAAAU5BcAAAA4PpYLK5dSrA6deooNjbWtm6xWLR8+fLr2qcZ+3CVIv1CNwAAAIBrS05OVqVKlQpVd8KECVq+fLkSEhKKvA93I7kAAAAArpCZmSlvb29T9hUYGFgi9uEqTIsCAADADa1Dhw4aNmyYhg0bpooVK6pKlSp66aWXZBiGpL+nMk2ePFn9+vWTv7+/Bg0aJEnaunWr7rrrLvn6+io4OFgjRozQxYsXbftNTU1Vjx495Ovrq5CQEC1cuDBP21dPaTpx4oQef/xxVa5cWWXLllVoaKi+//57xcXFaeLEifrxxx9lsVhksVgUFxfncB979+7V3XffLV9fX1WpUkVPPfWULly4YHu8X79+euCBB/Tmm28qKChIVapU0dChQ3X58mUTj6pjjFxc5dy5c+4OwaG3337b3SHkq0WLFu4OwaGNGze6O4R8XTkXs6SJiopydwgAAJjuww8/1MCBA/X9999r586deuqpp1S7dm1bIvHGG2/o5Zdf1ksvvSTp7w/w9957r1555RXNnTtXv/32my1BmT9/vqS/P8QnJSVp/fr18vb21ogRI5SamppvDBcuXFD79u1Vs2ZNrVixQoGBgdq9e7dycnLUs2dP/fzzz1q9erW++eYbSZK/v3+efVy6dEn33Xef7rjjDu3YsUOpqamKjIzUsGHDbMmIJG3YsEFBQUHasGGDDh8+rJ49e6ply5a251tcSC4AAABwwwsODtZ//vMfWSwWNWzYUHv37tV//vMf24ftu+++W88++6ytfp8+fdSrVy/bl27169fXO++8o/bt22vWrFlKTEzUqlWrtH37dt1+++2SpLlz56px48b5xvDJJ5/ot99+044dO1S5cmVJ0s0332x7vFy5cvL09CxwGtTChQv1559/asGCBSpbtqwkafr06erRo4emTp2qgIAASVKlSpU0ffp0eXh4qFGjRurWrZvWrVtX7MkF06IAAABww7vjjjtkueJOU2FhYTp06JCys7MlSaGhoXb1d+3apbi4OJUrV8623HvvvcrJydHRo0d14MABeXp62m3XqFEjVaxYMd8YEhIS1KpVK1tiURQHDhxQixYtbImFJLVt21Y5OTk6ePCgreyWW26Rh4eHbT0oKKjAURWzMHIBAACAf7wrP6xLUk5Ojp5++mmNGDEiT91atWrZPshbnLg1rq+v7/UFKckwjHzbvLLcy8srz2M5OTnX3f61MHIBAACAG9727dvzrNevX9/u2/0r3Xrrrdq3b59uvvnmPIu3t7caN26srKws7dy507bNwYMHC7x+t3nz5kpISNDvv//u8HFvb2/bSEp+mjRpooSEBLsLy7/77juVKVNGDRo0KHBbVyC5AAAAwA0vKSlJ0dHROnjwoBYtWqR3331XI0eOzLf+Cy+8oG3btmno0KFKSEjQoUOHtGLFCg0fPlyS1LBhQ913330aNGiQvv/+e+3atUuRkZEFjk7861//UmBgoB544AF99913OnLkiD7//HNt27ZN0t93rTp69KgSEhJ05swZZWRk5NnHE088IR8fH/Xt21c///yzNmzYoOHDh6t379626y3cieQCAAAA18cwXLsUQZ8+ffTnn3+qTZs2Gjp0qIYPH66nnnoq3/rNmzfXpk2bdOjQIbVr106tWrXSyy+/rKCgIFud+fPnKzg4WO3bt9dDDz2kp556StWrV893n97e3lq7dq2qV6+url27qlmzZnrttddsoycPP/yw7rvvPnXs2FHVqlXTokWL8uzDz89Pa9as0e+//67bbrtNjzzyiDp16qTp06cX6biYjWsuAAAAcMPz8vJSbGysZs2aleexY8eOOdzmtttu09q1a/PdZ2BgoL766iu7st69e9utG1cl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4rJly6pKlSpcq5KPUaNGKTw8XFOmTNFjjz2mH374QXPmzNGcOXPcHRpQJO7uay5cuKDDhw/b1o8ePaqEhARVrlxZtWrVKvb2S0Lf8eKLLyoiIkLBwcE6f/68Fi9erI0bN2r16tUuab8k9AXPPvusevTooVq1aik1NVWTJ09Wenq6S6filJTze05OjubPn6++ffvK09O1H2F79OihV199VbVq1dItt9yiPXv2aNq0aRowYIBL41izZo0Mw1DDhg11+PBhPffcc2rYsKH69+/v0jgK5L4bVV2fGTNmGLVr1za8vb2NW2+91e23xivJJDlc5s+f7+7QShVuRXttX375pdG0aVPDarUajRo1MubMmePukIDr4s6+ZsOGDQ7P3X379nVJ+yWh7xgwYIDt+FerVs3o1KmTsXbtWpe174ir+4KePXsaQUFBhpeXl1GjRg3joYceMvbt2+ey9nOVhPP7mjVrDEnGwYMHXd52enq6MXLkSKNWrVqGj4+PUbduXWPs2LFGRkaGS+NYsmSJUbduXcPb29sIDAw0hg4dapw7d86lMVyLxTAMw9UJDQAAAIAbT6m75gIAAABAyURyAQAAAMAUJBcAAAAATEFyAQAAAMAUJBcAAAAATEFyAQAAAMAUJBcAAAAATEFyAQAAAMAUJBcAAAD/n8Vi0fLlywtdf+PGjbJYLDp37pypcdSpU0exsbGm7hNwBZILAABwQ+vXr58sFossFou8vLwUEBCgzp07a968ecrJybGrm5ycrIiIiELvOzw8XMnJyfL395ckxcXFqWLFimaGD5QqJBcAAOCGd9999yk5OVnHjh3TqlWr1LFjR40cOVLdu3dXVlaWrV5gYKCsVmuh9+vt7a3AwEBZLJbiCBsodUguAADADc9qtSowMFA1a9bUrbfeqhdffFFffPGFVq1apbi4OFu9q6dFbd26VS1btpSPj49CQ0O1fPlyWSwWJSQkSLKfFrVx40b1799faWlptpGSCRMm5BvTihUrFBoaKh8fH1WtWlUPPfRQvnWnTZumZs2aqWzZsgoODtaQIUN04cIF2+PHjx9Xjx49VKlSJZUtW1a33HKLVq5cKUn6448/9MQTT6hatWry9fVV/fr1NX/+/CIdR+BaPN0dAAAAgDvcfffdatGihZYuXarIyMg8j58/f149evRQ165d9cknn+j48eOKiorKd3/h4eGKjY3VuHHjdPDgQUlSuXLlHNb9+uuv9dBDD2ns2LH66KOPlJmZqa+//jrffZcpU0bvvPOO6tSpo6NHj2rIkCF6/vnnNXPmTEnS0KFDlZmZqc2bN6ts2bLav3+/re2XX35Z+/fv16pVq1S1alUdPnxYf/75Z2EPE+AUkgsAAPCP1ahRI/30008OH1u4cKEsFovef/99+fj4qEmTJjp58qQGDRrksL63t7f8/f1lsVgUGBhYYLuvvvqqHn/8cU2cONFW1qJFi3zrX5nUhISE6JVXXtEzzzxjSy4SExP18MMPq1mzZpKkunXr2uonJiaqVatWCg0NlfT3xeJAcWFaFAAA+McyDCPf6yUOHjyo5s2by8fHx1bWpk0bU9pNSEhQp06dCl1/w4YN6ty5s2rWrKny5curT58+Onv2rC5evChJGjFihCZPnqy2bdtq/PjxdgnTM888o8WLF6tly5Z6/vnntXXrVlOeA+AIyQUAAPjHOnDggEJCQhw+5ijxMAzDlHZ9fX0LXff48ePq2rWrmjZtqs8//1y7du3SjBkzJEmXL1+WJEVGRurIkSPq3bu39u7dq9DQUL377ruSpIiICNuUrlOnTqlTp0569tlnTXkewNVILgAAwD/S+vXrtXfvXj388MMOH8+dMpWRkWEr27lzZ4H79Pb2VnZ29jXbbt68udatW1eoOHfu3KmsrCy99dZbuuOOO9SgQQOdOnUqT73g4GANHjxYS5cu1b///W+9//77tseqVaumfv366eOPP1ZsbKzmzJlTqLYBZ5FcAACAG15GRoZSUlJ08uRJ7d69W1OmTNH999+v7t27q0+fPg636dWrl3JycvTUU0/pwIEDWrNmjd58801JyncqVZ06dXThwgWtW7dOZ86c0aVLlxzWGz9+vBYtWqTx48frwIED2rt3r15//XWHdevVq6esrCy9++67OnLkiD766CPNnj3brk5UVJTWrFmjo0ePavfu3Vq/fr0aN24sSRo3bpy++OILHT58WPv27dNXX31lewwwG8kFAAC44a1evVpBQUGqU6eO7rvvPm3YsEHvvPOOvvjiC3l4eDjcpkKFCvryyy+VkJCgli1bauzYsRo3bpwk2V2HcaXw8HANHjxYPXv2VLVq1fJNGDp06KBPP/1UK1asUMuWLXX33Xfr+++/d1i3ZcuWmjZtmqZOnaqmTZtq4cKFiomJsauTnZ2toUOHqnHjxrrvvvvUsGFD28Xe3t7eGjNmjJo3b6677rpLHh4eWrx4caGOG+Asi2HW5EEAAIAb3MKFC22/ZeHMdRPAPwW3ogUAAMjHggULVLduXdWsWVM//vijXnjhBT322GMkFkA+SC4AAADykZKSonHjxiklJUVBQUF69NFH9eqrr7o7LKDEYloUAAAAAFNwQTcAAAAAU5BcAAAAADAFyQUAAAAAU5BcAAAAADAFyQUAAAAAU5BcAAAAADAFyQUAAAAAU5BcAAAAADDF/wNKQPTOLEqqwQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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82bNmTNHb775pv73v/+pV69eGjJkiH799VctWrTINqTg75eVJenAgQPq3r27Fi5cqDVr1iguLk7/+c9/1KtXL7t6CxYs0COPPKJWrVrpww8/1NNPP62pU6cWug8lPz9fd955p55//nn17dtXn332mZ5//nklJyerc+fOpbrXoKQxSn+Nnezevbu6du2qlStXauTIkXr99dcLDUN69NFHFRcXp9tuu00rV67U3LlztWfPHkVFRenEiRPFxlPQGV7uHpycnBxJktVqtSsvWP/hhx8u99SBf6S8vDytX79eERERRX6rHRYWpnbt2mndunXKy8tzav9bt26Vn5+funfvbhv2eumQ0yFDhqhChQp69913lZiYqG+//VadO3fWmTNnnGrr+uuv1+LFiyVJTz/9tK29S8/FjpQ0Bkd906+//qqoqCh9/vnnevbZZ/Xxxx/rtttu0+OPP66RI0cWamv27Nlas2aNEhMT9c4776hChQqKiYmxG7J0/PhxVa9eXc8//7zWrFmjOXPmyNvbWzfddJP2799faJ8TJkzQoUOH9Oabb+rNN9/U8ePH1blz5yv+EqdHjx6aMWOGpL/6v4Jj2qNHjyK3Kck5//z58+rWrZtOnDihOXPmKDk5WYmJiapbt67Onj1bbEyffvqpvLy8dMsttzh8/EpeywsXLqhTp0566623NHr0aK1evVpPPfWUkpKS9H//93+2D8OGYah37956++239a9//UsrVqzQzTffrJiYmBId14ULF6p79+7Kz8/X/Pnz9cknn2j06NG2xOqZZ57RvffeK8l+OHlRQ6ucfQ/+/ZgvXbpU58+fV/fu3ZWZmWmrU5CIlMW9HZ07d9bRo0f1448/mr7vMmOg3BgwYIAREBBgV9apUydDkvHll18Wqi/JmDx5cqHyevXqGQMGDLCtP/roo0alSpWMo0eP2tV76aWXDEnGnj17io2rU6dORqdOnWzrhw8fNiQZrVu3NvLy8mzliYmJhiTj//7v/+y2j4uLMyQZmZmZDvefn59vXLx40di4caMhyfj+++8NwzCMvLw8Izg42Ljpppvs6h89etSoWLGiUa9ePVvZsmXLDEnGBx98YFd3+/bthiRj7ty5xT7HyZMnG8X9uxQVo2H89bpJMl555RW7bZ577jlDkvH1118bhmEYW7duNSQZL7/8sl29tLQ0w8/Pz3jyySft9vn352cYhjF16lTDy8vL2LBhQ7HPZeXKlYYk4+2337YrX7hwoSHJaNy4cbHbA/9UGRkZhiTjgQceKLZenz59DEnGiRMnDMNw/P9qGI7PKwEBAXbn5wKLFy82JBl33XWXXfnmzZsNScb06dNtZZee4wtceq4uOP8tXry42OdTmhiK6pvGjRtnSDK++eYbu/LHHnvMsFgsxv79+w3D+H/9SGhoqPHHH3/Y6mVlZRnVqlUzbrvttiLjzM3NNXJycoxGjRoZY8eOtZWvX7/ekGRcf/31Rn5+vq38yJEjRsWKFY3Y2FhbmaPX5tLjZxiF+9n333/fkGSsX7++UFyXvg9Kes7fsWOHIclYuXJlkc+5KDExMUbTpk0LlZvxWiYkJBgVKlQwtm/fblf+3//+15BkrFq1yjAMw1i9enWxfeDfj19BXIcPHzYMwzDOnj1rVKlSxejQoYPda3apESNGFNlHX/r/4Ox7sGXLlkZubq6t3rfffmtIMpYtW2YrO3LkiOHl5WUMHjy4yBgdKcn/4IEDBwxJxrx585zatztx5eIqcM011+jWW28t9faffvqpunTpotDQUOXm5tqWgm8VNm7cWKr9du/e3e7yX7NmzSSp0Lc4BeWpqam2skOHDqlv374KDg6Wl5eXKlasqE6dOkmS9u3bJ0nav3+/MjIydP/999vtr27duoXGOn/66aeqWrWqevXqZfcc27Rpo+Dg4FLNuFWSGP/uoYceslvv27evJGn9+vW2GC0Wix5++GG7GIODg9W6devLxjhp0iTl5ubaYihKTEyMrr32Wj311FNKTk7WmTNntGbNGk2YMEFeXl5OXbIFUJjx/39jW9oZ5opz6XkkKipK9erVs51HXKGkMTjqm9atW6fmzZvrxhtvtCsfOHCgDMPQunXr7Mrvvvtu+fr62tYrV66sXr16adOmTbYrQ7m5uZoxY4aaN28uHx8feXt7y8fHRwcOHHB4Lu7bt6/da1OvXj1FRUW59BhKJT/nX3vttbrmmmv01FNPaf78+dq7d2+J2zh+/Lhq1apV5ONX8lp++umnatGihdq0aWMX/+233253Fb1gX0X1gcXZsmWLsrKyNHz4cNP+n5x9D/bo0UNeXl629VatWkmSjh49aiurV6+ecnNztXDhQlNi/LuC1+/YsWOm77uscEP3VcDZWRUudeLECX3yySeqWLGiw8dPnTpVqv1Wq1bNbt3Hx6fY8j///FOSdO7cOXXs2FG+vr6aPn26GjduLH9/f6Wlpenuu++2DWEqmD0hKCioUNtBQUE6fPiwbf3EiRM6c+aMra1LOfscSxpjAW9vb1WvXt2uLDg42O55nDhxQoZhOHw+ktSgQQOnYiyKj4+PVq9erX79+ik6OlqSFBAQoBkzZujZZ5819aY/4GpSo0YN+fv7251bHDly5Ij8/f0LnevMUHDeuLTMlbPJlDQGR33T6dOnHd5/Ehoaanu8JG3l5OTo3LlzCgwMVHx8vObMmaOnnnpKnTp10jXXXKMKFSooNjbW4ZDXovb5/fffFyovSyU95wcGBmrjxo167rnnNGHCBP3+++8KCQnR0KFD9fTTTxfZd0vSH3/8UeT+pSt7LU+cOKGDBw9e9rPD6dOni+0Di1NwT2RJbq4vKWffg5fGXTCE2FVTtxck1+VpqniSi6tAUdm81WpVdnZ2ofJL/3Fq1KihVq1a6bnnnnO4n4J/OFdZt26djh8/rg0bNth9C3/pGNCCf3hH9yJkZGTYrdeoUUPVq1fXmjVrHLZZuXLlMomxQG5urk6fPm13kiqIsaCsRo0aslgs+uqrrwrdDyEVvkfiSlx77bXaunWrjh07pt9++00NGzZUZmamxowZU+TYXOCfzsvLS126dNGaNWv0yy+/OPzA88svv2jnzp2KiYmxfdvp6+vr8Fxcmi9uLj23FZRde+21tvXi2qtRo4bTbZYmBslx31S9enWlp6cXKj9+/LgkFYqvqLZ8fHxsvx/0zjvvqH///rb7HQqcOnVKVatWLXH8l36ILGvOnPNbtmyp9957T4Zh6IcfflBSUpKmTZsmPz8/jRs3rtg2fvvttyIfv5LXskaNGvLz89OiRYuKbFv66zUvrg8sTsHMUZe7cd0Zzr4H3a3g9fO0uIrD+IerWP369QvdnLtu3TqdO3fOrqxnz5768ccf1bBhQ0VERBRaXJ1cFJzELj3Zvv7663brTZo0UXBwsP7zn//YlaempmrLli12ZT179tTp06eVl5fn8Dk2adKkTGL8u6VLl9qtv/vuu5Jkm72lZ8+eMgxDx44dcxhjy5YtnYqxJGrXrq2WLVvK399fL774ogICAjRkyBDT2wGuFuPHj5dhGBo+fHihG7bz8vL02GOPyTAMjR8/3lZev359nTx50u6LkJycHK1du7bQ/q1Wa7HfUF56HtmyZYuOHj1qN2Ofo3P/Tz/9VOjm5tJ+A1uSGIrStWtX7d27V999951d+ZIlS2SxWNSlSxe78g8//NB2VVuSzp49q08++UQdO3a0JW8Wi6XQufizzz4rchjJsmXL7GbeOXr0qLZs2WLKj8E6c0xLc863WCxq3bq1/v3vf6tq1aqFjuOlmjZtWuyN6lfyWvbs2VM///yzqlev7jD+gqsDBa9pUX1gcaKiohQYGKj58+cXO1uSM8fd2feguxW8fuVp2n+uXFzF+vXrp2eeeUaTJk1Sp06dtHfvXs2ePVuBgYF29aZNm6bk5GRFRUVp9OjRatKkif78808dOXJEq1at0vz58029JHk5UVFRuuaaazRs2DBNnjxZFStW1NKlSwtdsq5QoYKmTp2qRx99VPfee68GDx6sM2fOaOrUqQoJCbG7d+CBBx7Q0qVL1b17d40ZM0Y33nijKlasqF9++UXr16/XnXfeqbvuusv0GAv4+Pjo5Zdf1rlz53TDDTdoy5Ytmj59umJiYtShQwdJUvv27fXII49o0KBB2rFjh2655RYFBAQoPT1dX3/9tVq2bKnHHnusyJimTZumadOm6csvv7zsfRcvvPCCgoODVbduXZ04cUL/+c9/tHLlSr399tsMiwKK0b59eyUmJiouLk4dOnTQyJEjVbduXaWmpmrOnDn65ptvlJiYqKioKNs2ffr00aRJk/TAAw/oiSee0J9//qlXX33V4WxSLVu21IYNG/TJJ58oJCRElStXtvvyY8eOHYqNjdV9992ntLQ0TZw4UbVr17abJbBfv356+OGHNXz4cN1zzz06evSoXnjhhUK/H9CwYUP5+flp6dKlatasmSpVqqTQ0NDLfqFUkhiKMnbsWC1ZskQ9evTQtGnTVK9ePX322WeaO3euHnvsMTVu3NiuvpeXl7p166b4+Hjl5+dr5syZysrKsvvBtJ49eyopKUlNmzZVq1attHPnTr344otF9lsnT57UXXfdpaFDhyozM1OTJ0+Wr6+vXUJYWi1atJD010yGlStXlq+vr8LDwx1eFSnpOf/TTz/V3Llz1bt3bzVo0ECGYejDDz/UmTNnLvubRJ07d9aiRYv0008/FTq20pW9lnFxcfrggw90yy23aOzYsWrVqpXy8/OVmpqqzz//XP/617900003KTo6WrfccouefPJJnT9/XhEREdq8ebPefvvty7ZRqVIlvfzyy4qNjdVtt92moUOHKigoSAcPHtT3339v+8HKgkRs5syZtquGrVq1cjgU2tn3YEkcPXpUDRs21IABA0p030XBr8QXJA47duywXYkrmPmqwLZt24qd8csjueU2cpRKUbNFXXfddQ7rZ2dnG08++aQRFhZm+Pn5GZ06dTJSUlIcziTy66+/GqNHjzbCw8ONihUrGtWqVTPatWtnTJw40Th37lyxcRU1W9SLL75oV69gpo7333/frrxgdoi/zzixZcsWIzIy0vD39zdq1qxpxMbGGt99953DWRUWLFhgXHvttYaPj4/RuHFjY9GiRcadd95ptG3b1q7exYsXjZdeeslo3bq14evra1SqVMlo2rSp8eijjxoHDhwo9jk6mjmkpDEWvG4//PCD0blzZ8PPz8+oVq2a8dhjjzk8tosWLTJuuukmIyAgwPDz8zMaNmxo9O/f39ixY4fdPi+dfaYgRkezlFxq6tSpRsOGDQ2r1WpUrVrVuOOOO4xNmzZddjsAf9m6datx7733GkFBQYa3t7dRq1Yt4+677za2bNnisP6qVauMNm3aGH5+fkaDBg2M2bNnOzyvpKSkGO3btzf8/f0NSbZza8F58vPPPzf69etnVK1a1fDz8zO6d+9e6PyVn59vvPDCC0aDBg0MX19fIyIiwli3bp3D2Y6WLVtmNG3a1KhYsWKRMwwWcCaG4vqmo0ePGn379jWqV69uVKxY0WjSpInx4osv2s0uWNCPzJw505g6dapRp04dw8fHx2jbtq2xdu1au/39/vvvxpAhQ4xatWoZ/v7+RocOHYyvvvqq0PMt6IPefvttY/To0UbNmjUNq9VqdOzY0e78ahilny3KMP6aGTE8PNzw8vKy6w+KmjXscuf8//3vf8aDDz5oNGzY0PDz8zMCAwONG2+80UhKSnJ4fP8uMzPTqFSpkvHCCy/YlZv1Wp47d854+umnjSZNmhg+Pj5GYGCg0bJlS2Ps2LFGRkaGrd6ZM2eMwYMHG1WrVjX8/f2Nbt26Gf/73/8uO1tUgVWrVhmdOnUyAgICDH9/f6N58+bGzJkzbY9nZ2cbsbGxRs2aNQ2LxWK3D0efeZx5D176WcYwCr/uBXUdzdLmiKQil0t17NjR6NWrV4n26ykshlGOfpUDKIEzZ86ocePG6t27txYsWODucADgiiUlJWnQoEHavn27IiIi/rExwHmjRo3Sl19+qT179tiG9PJalg8///yzGjVqpLVr1172KpUn4Z4LlGsZGRkaNWqUPvzwQ23cuFFLlixRly5ddPbsWY0ZM8bd4QEA4FZPP/20jh07pg8++MDdocBJ06dPV9euXctVYiFxzwXKOavVqiNHjmj48OH67bff5O/vr5tvvlnz58/Xdddd5+7wAABwq6CgIC1dulS///67u0OBE3Jzc9WwYUNT7gVyNYZFAQAAADAFw6IAAAAAmILkAgAAAIApSC4AAAAAmMLlN3Tn5+fr+PHjqly5ssOfkweA8sIwDJ09e1ahoaF2P9qIskH/AQDu4Ux/5/Lk4vjx4woLC3N1swBQZtLS0lz6K/b/VPQfAOBeJenvXJ5cVK5cWdJfwVWpUsXVzZdb7du3d3cIRcrMzHR3CA716NHD3SEUyZOnlqtataq7Qyg3srKyFBYWZjuvoWzRfwCAezjT37k8uSi4lF2lShU6Byd4eXm5O4QieepwEKvV6u4QiuTJ731Pjs1TMUTHNeg/AMC9StLfeeanQgAAAADlDskFAAAAAFOQXAAAAAAwhcvvuQAAoKwYhqHc3Fzl5eW5OxSYxMvLS97e3tzbBJQTJBcAgKtCTk6O0tPTdeHCBXeHApP5+/srJCREPj4+7g4FwGWQXAAAyr38/HwdPnxYXl5eCg0NlY+PD990XwUMw1BOTo5+/fVXHT58WI0aNfLYGQoB/IXkAgBQ7uXk5Cg/P19hYWHy9/d3dzgwkZ+fnypWrKijR48qJydHvr6+7g4JQDFI/wEAVw2+1b468boC5Qf/rQAAp23atEm9evVSaGioLBaLVq5cedltNm7cqHbt2snX11cNGjTQ/Pnzyz5QAIBLkVwAAJx2/vx5tW7dWrNnzy5R/cOHD6t79+7q2LGjdu3apQkTJmj06NH64IMPyjhSAIArcc8FAMBpMTExiomJKXH9+fPnq27dukpMTJQkNWvWTDt27NBLL72ke+65x+E22dnZys7Otq1nZWVdUcwAgLJHcgEAKHNbt25VdHS0Xdntt9+uhQsX6uLFi6pYsWKhbRISEjR16tQrbrv+uM+ueB8ldeT5Hk5v07lzZ7Vp08aWeAH4Z3HVOao056fSKNWwqLlz5yo8PFy+vr5q166dvvrqK7PjAgBcRTIyMhQUFGRXFhQUpNzcXJ06dcrhNuPHj1dmZqZtSUtLc0WoHqfghwEBoDxwOrlYvny54uLiNHHiRO3atUsdO3ZUTEyMUlNTyyI+AMBV4tLfnTAMw2F5AavVqipVqtgtV5uBAwdq48aNeuWVV2SxWGSxWJSUlCSLxaK1a9cqIiJCVqtVX331lQYOHKjevXvbbR8XF6fOnTvb1g3D0AsvvKAGDRrIz89PrVu31n//+1/XPikA/2hOJxezZs3SkCFDFBsbq2bNmikxMVFhYWGaN29eWcQHALgKBAcHKyMjw67s5MmT8vb2VvXq1d0Ulfu98sorioyM1NChQ5Wenq709HSFhYVJkp588kklJCRo3759atWqVYn29/TTT2vx4sWaN2+e9uzZo7Fjx+rhhx/Wxo0by/JpAICNU/dc5OTkaOfOnRo3bpxdeXR0tLZs2eJwG27IAwBERkbqk08+sSv7/PPPFRER4fB+i3+KwMBA+fj4yN/fX8HBwZKk//3vf5KkadOmqVu3biXe1/nz5zVr1iytW7dOkZGRkqQGDRro66+/1uuvv65OnTqZ/wQA4BJOJRenTp1SXl6ew3Gzl34jVcCsG/IAAJ7j3LlzOnjwoG398OHDSklJUbVq1VS3bl2NHz9ex44d05IlSyRJw4YN0+zZsxUfH6+hQ4dq69atWrhwoZYtW+aup+DxIiIinKq/d+9e/fnnn4USkpycHLVt29bM0ACgSKWaLcrRuNmixsyOHz9e8fHxtvWsrCzbJV8AQPm0Y8cOdenSxbZecJ4fMGCAkpKSlJ6ebncvXnh4uFatWqWxY8dqzpw5Cg0N1auvvlrkNLSQAgIC7NYrVKhgu0+lwMWLF21/5+fnS5I+++wz1a5d266e1WotoygBwJ5TyUWNGjXk5eXlcNzspVczClitVk5qAHCV6dy5c6EPun+XlJRUqKxTp0767rvvyjCq8snHx0d5eXmXrVezZk39+OOPdmUpKSm2YWXNmzeX1WpVamoqQ6AAuI1TN3T7+PioXbt2Sk5OtitPTk5WVFSUqYEBAPBPUL9+fX3zzTc6cuSITp06ZbsCcalbb71VO3bs0JIlS3TgwAFNnjzZLtmoXLmyHn/8cY0dO1ZvvfWWfv75Z+3atUtz5szRW2+95aqnA+AfzulhUfHx8erXr58iIiIUGRmpBQsWKDU1VcOGDSuL+AAAuCKu+uGo0nr88cc1YMAANW/eXH/88YcWL17ssN7tt9+uZ555Rk8++aT+/PNPDR48WP3799fu3bttdZ599lnVqlVLCQkJOnTokKpWrarrr79eEyZMcNXTAfAP53Ry0adPH50+fVrTpk1Tenq6WrRooVWrVqlevXplER8AAFe1xo0ba+vWrXZlAwcOdFh36tSpxU6SYrFYNHr0aI0ePdrMEAGgxEp1Q/fw4cM1fPhws2MBAAAAUI45/SN6AAAAAOAIyQUAAAAAU5BcAAAAADAFyQUAAAAAU5BcAAAAADAFyQUAAAAAU5BcAAAAADAFyQUAAAAAU5BcAACubhaL6xYPV79+fSUmJtrWLRaLVq5ceUX7NGMfAK4epfqFbgAAUP6lp6frmmuuKVHdKVOmaOXKlUpJSSn1PgBc/UguAAAoR3JycuTj42PKvoKDgz1iHwCuHgyLAgDAjTp37qyRI0dq5MiRqlq1qqpXr66nn35ahmFI+mso0/Tp0zVw4EAFBgZq6NChkqQtW7bolltukZ+fn8LCwjR69GidP3/ett+TJ0+qV69e8vPzU3h4uJYuXVqo7UuHNP3yyy964IEHVK1aNQUEBCgiIkLffPONkpKSNHXqVH3//feyWCyyWCxKSkpyuI/du3fr1ltvlZ+fn6pXr65HHnlE586dsz0+cOBA9e7dWy+99JJCQkJUvXp1jRgxQhcvXjTxqAJwF65cXMJTx41+//337g6hSJ06dXJ3CA5deunek/Tu3dvdIRTJU/8Hqlat6u4QgDLz1ltvaciQIfrmm2+0Y8cOPfLII6pXr54tkXjxxRf1zDPP6Omnn5b01wf422+/Xc8++6wWLlyoX3/91ZagLF68WNJfH+LT0tK0bt06+fj4aPTo0Tp58mSRMZw7d06dOnVS7dq19fHHHys4OFjfffed8vPz1adPH/34449as2aNvvjiC0lSYGBgoX1cuHBBd9xxh26++WZt375dJ0+eVGxsrEaOHGlLRiRp/fr1CgkJ0fr163Xw4EH16dNHbdq0sT1fAOUXyQUAAG4WFhamf//737JYLGrSpIl2796tf//737YP27feeqsef/xxW/3+/furb9++iouLkyQ1atRIr776qjp16qR58+YpNTVVq1ev1rZt23TTTTdJkhYuXKhmzZoVGcO7776rX3/9Vdu3b1e1atUkSddee63t8UqVKsnb27vYYVBLly7VH3/8oSVLliggIECSNHv2bPXq1UszZ85UUFCQJOmaa67R7Nmz5eXlpaZNm6pHjx768ssvSS6AqwDDogAAcLObb75Zlr/NNhUZGakDBw4oLy9PkhQREWFXf+fOnUpKSlKlSpVsy+233678/HwdPnxY+/btk7e3t912TZs2LfYKYEpKitq2bWtLLEpj3759at26tS2xkKT27dsrPz9f+/fvt5Vdd9118vLysq2HhIQUe1UFQPnBlQsAADzc3z+sS1J+fr4effRRjR49ulDdunXr2j7IW5yYHtfPz+/KgpRkGEaRbf69vGLFioUey8/Pv+L2AbgfVy4AAHCzbdu2FVpv1KiR3bf7f3f99ddrz549uvbaawstPj4+atasmXJzc7Vjxw7bNvv379eZM2eKjKFVq1ZKSUnRb7/95vBxHx8f25WUojRv3lwpKSl2N5Zv3rxZFSpUUOPGjYvdFsDVgeQCAAA3S0tLU3x8vPbv369ly5bptdde05gxY4qs/9RTT2nr1q0aMWKEUlJSdODAAX388ccaNWqUJKlJkya64447NHToUH3zzTfauXOnYmNji7068eCDDyo4OFi9e/fW5s2bdejQIX3wwQfaunWrpL9mrTp8+LBSUlJ06tQpZWdnF9rHQw89JF9fXw0YMEA//vij1q9fr1GjRqlfv362+y0AXN1ILgAAVzfDcN1SSv3799cff/yhG2+8USNGjNCoUaP0yCOPFFm/VatW2rhxow4cOKCOHTuqbdu2euaZZxQSEmKrs3jxYoWFhalTp066++679cgjj6hWrVpF7tPHx0eff/65atWqpe7du6tly5Z6/vnnbVdP7rnnHt1xxx3q0qWLatasqWXLlhXah7+/v9auXavffvtNN9xwg+6991517dpVs2fPLvWxAVC+WAzjCs6GpZCVlaXAwEBlZmaqSpUqrmy6RDx1Gs677rrL3SEUyVOnokXpeOr/gCdORevp57OrTXHH+88//9Thw4cVHh4uX19fN0VYOp07d1abNm2UmJjo7lA8Vnl+fYHLqT/uM5e0c+T5HqXe1pn+jisXAAAAAExBcgEAAADAFExFCwCAG23YsMHdIQCAabhyAQAAAMAUJBcAgKuGi+cogYvwugLlB8kFAKDcK/jF5wsXLrg5EpSFgtf10l/2BuB5uOcCAFDueXl5qWrVqjp58qSkv35vwWKxuDkq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BW93BwAAKH+WL1+uuLg4zZ07V+3bt9frr7+umJgY7d27V3Xr1nW4zf33368TJ05o4cKFuvbaa3Xy5Enl5ua6OHIAQFkiuQAAOG3WrFkaMmSIYmNjJUmJiYlau3at5s2bp4SEhEL116xZo40bN+rQoUOqVq2aJKl+/fquDBkA4AJODYuaN2+eWrVqpSpVqqhKlSqKjIzU6tWryyo2AIAHysnJ0c6dOxUdHW1XHh0drS1btjjc5uOPP1ZERIReeOEF1a5dW40bN9bjjz+uP/74o8h2srOzlZWVZbcAADybU1cu6tSpo+eff17XXnutJOmtt97SnXfeqV27dum6664rkwABAJ7l1KlTysvLU1BQkF15UFCQMjIyHG5z6NAhff311/L19dWKFSt06tQpDR8+XL/99luR910kJCRo6tSppscPACg7Tl256NWrl7p3767GjRurcePGeu6551SpUiVt27atyG345gkArk4Wi8Vu3TCMQmUF8vPzZbFYtHTpUt14443q3r27Zs2apaSkpCKvXowfP16ZmZm2JS0tzfTnAAAwV6lni8rLy9N7772n8+fPKzIyssh6CQkJCgwMtC1hYWGlbRIA4AFq1KghLy+vQlcpTp48WehqRoGQkBDVrl1bgYGBtrJmzZrJMAz98ssvDrexWq22YbgFCwDAszmdXOzevVuVKlWS1WrVsGHDtGLFCjVv3rzI+nzzBABXFx8fH7Vr107Jycl25cnJyYqKinK4Tfv27XX8+HGdO3fOVvbTTz+pQoUKqlOnTpnGCwBwHaeTiyZNmiglJUXbtm3TY489pgEDBmjv3r1F1uebJwC4+sTHx+vNN9/UokWLtG/fPo0dO1apqakaNmyYpL++WOrfv7+tft++fVW9enUNGjRIe/fu1aZNm/TEE09o8ODB8vPzc9fTAACYzOmpaH18fGw3dEdERGj79u165ZVX9Prrr5seHADAM/Xp00enT5/WtGnTlJ6erhYtWmjVqlWqV6+eJCk9PV2pqam2+pUqVVJycrJGjRqliIgIVa9eXffff7+mT5/urqcAACgDV/w7F4ZhKDs724xYAADlyPDhwzV8+HCHjyUlJRUqa9q0aaGhVACAq4tTycWECRMUExOjsLAwnT17Vu+99542bNigNWvWlFV8AAAAAMoJp5KLEydOqF+/fkpPT1dgYKBatWqlNWvWqFu3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AAAApiC5AAAAAGAKkgsAAAAApiC5AAAAAGAKkgsAAAAApiC5AAAAAGAKkgsAAAAApiC5AAAAAGAKkgsAAAAApiC5AAAAAGAKkgsAAAAApiC5AAAAAGAKkgsAQKnMnTtX4eHh8vX1Vbt27fTVV18VWffDDz9Ut27dVLNmTVWpUkWRkZFau3atC6MFALiC08nFsWPH9PDDD6t69ery9/dXmzZttHPnzrKIDQDgoZYvX664uDhNnDhRu3btUseOHRUTE6PU1FSH9Tdt2qRu3bpp1apV2rlzp7p06aJevXpp165dLo4cAFCWvJ2p/Pvvv6t9+/bq0qWLVq9erVq1aunnn39W1apVyyg8AIAnmjVrloYMGaLY2FhJUmJiotauXat58+YpISGhUP3ExES79RkzZuijjz7SJ598orZt27oiZACACziVXMycOVNhYWFavHixrax+/fpmxwQA8GA5OTnauXOnxo0bZ1ceHR2tLVu2lGgf+fn5Onv2rKpVq1ZknezsbGVnZ9vWs7KyShcwAMBlnBoW9fHHHysiIkL33XefatWqpbZt2+qNN94odpvs7GxlZWXZLQCA8uvUqVPKy8tTUFCQXXlQUJAyMjJKtI+XX35Z58+f1/33319knYSEBAUGBtqWsLCwK4obAFD2nEouDh06pHnz5qlRo0Zau3athg0bptGjR2vJkiVFbkPnAABXJ4vFYrduGEahMkeWLVumKVOmaPny5apVq1aR9caPH6/MzEzbkpaWdsUxAwDKllPDovLz8xUREaEZM2ZIktq2bas9e/Zo3rx56t+/v8Ntxo8fr/j4eNt6VlYWCQYAlGM1atSQl5dXoasUJ0+eLHQ141LLly/XkCFD9P777+u2224rtq7VapXVar3ieAEAruPUlYuQkBA1b97crqxZs2ZFzg4i/dU5VKlSxW4BAJRfPj4+ateunZKTk+3Kk5OTFRUVVeR2y5Yt08CBA/Xuu++qR48eZR0mAMANnLpy0b59e+3fv9+u7KefflK9evVMDQoA4Nni4+PVr18/RUREKDIyUgsWLFBqaqqGDRsm6a+r1seOHbMNm122bJn69++vV155RTfffLPtqoefn58CAwPd9jwAAOZyKrkYO3asoqKiNGPGDN1///369ttvtWDBAi1YsKCs4gMAeKA+ffro9OnTmjZtmtLT09WiRQutWrXK9mVTenq6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6tVLzz33nOrWravrrrtOu3bt0qxZszR48GCXxrF27VoZhqEmTZro4MGDeuKJJ9SkSRMNGjTIpXEUy30TVV2ZOXPmGPXq1TN8fHyM66+/3u1T43kySQ6XxYsXuzu0coWpaC/vk08+MVq0aGFYrVajadOmxoIFC9wdEnBF3NnXrF+/3uG5e8CAAS5p3xP6jsGDB9uOf82aNY2uXbsan3/+ucvad8TVfUGfPn2MkJAQo2LFikZoaKhx9913G3v27HFZ+wU84fy+du1aQ5Kxf/9+l7edlZVljBkzxqhbt67h6+trNGjQwJg4caKRnZ3t0jiWL19uNGjQwPDx8TGCg4ONESNGGGfOnHFpDJdjMQzDcHVCAwAAAODqU+7uuQAAAADgmUguAAAAAJiC5AIAAACAKUguAAAAAJiC5AIAAACAKUguAAAAAJiC5AIAAACAKUguAAAAAJiC5AIAAOD/Z7FYtHLlyhLX37BhgywWi86cOWNqHPXr11diYqKp+wRcgeQCAABc1QYOHCiLxSKLxaKKFSsqKChI3bp106JFi5Sfn29XNz09XTExMSXed1RUlNLT0xUYGChJSkpKUtWqVc0MHyhXSC4AAMBV74477lB6erqOHDmi1atXq0uXLhozZox69uyp3NxcW73g4GBZrdYS79fHx0fBwcGyWCxlETZQ7pBcAACAq57ValVwcLBq166t66+/XhMmTNBHH32k1atXKykpyVbv0mFRW7ZsUZs2beTr66uIiAitXLlSFotFKSkpkuyHRW3YsEGDBg1SZmam7UrJlClTiozp448/VkREhHx9fVWjRg3dfffdRdadNWuWWrZsqYCAAIWFhWn48OE6d+6c7fGjR4+qV69euuaaaxQQEKDrrrtOq1atkiT9/vvveuihh1SzZk35+fmpUaNGWrx4camOI3A53u4OAAAAwB1uvfVWtW7dWh9++KFiY2MLPX727Fn16tVL3bt317vvvqujR48qLi6uyP1FRUUpMTFRkyZN0v79+yVJlSpVclj3s88+0913362JEyfq7bffVk5Ojj777LMi912hQgW9+uqrql+/vg4fPqzhw4frySef1Ny5cyVJI0aMUE5OjjZt2qSAgADt3bvX1vYzzzyjvXv3avXq1apRo4YOHjyoP/74o6SHCXAKyQUAAPjHatq0qX744QeHjy1dulQWi0VvvPGGfH191bx5cx07dkxDhw51WN/Hx0eBgYGyWCwKDg4utt3nnntODzzwgKZOnWora926dZH1/57UhIeH69lnn9Vjjz1mSy5SU1N1zz33qGXLlpKkBg0a2Oqnpqaqbdu2ioiIkPTXzeJAWWFYFAAA+McyDKPI+yX279+vVq1aydfX11Z24403mtJuSkqKunbtWuL669evV7du3VS7dm1VrlxZ/fv31+nTp3X+/HlJ0ujRozV9+nS1b99ekydPtkuYHnvsMb333ntq06aNnnzySW3ZssWU5wA4QnIBAAD+sfbt26fw8HCHjzlKPAzDMKVdPz+/Etc9evSounfvrhYtWuiDDz7Qzp07NWfOHEnSxYsXJUmxsbE6dOiQ+vXrp927dysiIkKvvfaaJCkmJsY2pOv48ePq2rWrHn/8cVOeB3ApkgsAAPCPtG7dOu3evVv33HOPw8cLhkxlZ2fbynbs2FHsPn18fJSXl3fZtlu1aqUvv/yyRHHu2LFDubm5evnll3XzzTercePGOn78eKF6YWFhGjZsmD788EP961//0htvvGF7rGbNmho4cKDeeecdJSYmasGCBSVqG3AWyQUAALjqZWdnKyMjQ8eOHdN3332nGTNm6M4771TPnj3Vv39/h9v07dtX+fn5euSRR7Rv3z6tXbtWL730kiQVOZSqfv36OnfunL788kudOnVKFy5ccFhv8uTJWrZsmSZPnqx9+/Zp9+7deuGFFxzWbdiwoXJzc/Xaa6/p0KFDevvttzV//ny7OnFxcVq7dq0OHz6s7777TuvWrVOzZs0kSZMmTdJHH32kgwcPas+ePfr0009tjwFmI7kAAABXvTVr1igkJET169fXHXfcofXr1+vVV1/VRx99JC8vL4fbVKlSRZ988olSUlLUpk0bTZw4UZMmTZIku/sw/i4qKkrDhg1Tnz59VLNmzSIThs6dO+v999/Xxx9/rDZt2ujWW2/VN99847BumzZtNGvWLM2cOVMtWrTQ0qVLlZCQYFcnLy9PI0aMULNmzXTHHXeoSZMmtpu9fXx8NH78eLVq1Uq33HKLvLy89N5775XouAHOshhmDR4EAAC4yi1dutT2WxbO3DcB/FMwFS0AAEARlixZogYNGqh27dr6/vvv9dRTT+n+++8nsQCKQHIBAABQhIyMDE2aNEkZGRkKCQnRfffdp+eee87dYQEei2FRAAAAAEzBDd0AAAAATEFyAQAAAMAUJBcAAAAATEFyAQAAAMAUJBcAAAAATEFyAQAAAMAUJBcAAAAATEFyAQAAAMAU/x8httfyHQC5mwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxcAAAGHCAYAAADC2a9WAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8ekN5oAAAACXBIWXMAAA9hAAAPYQGoP6dpAABQj0lEQVR4nO3dd3gUVf///9eSkE0BQk+BAKGDVIklQQRE0FA+YkVRelCkhtzcSlGaSMTCHZUmCkQUgVspotKiVAUUkCgCN4KUBEhAUBKKJiSZ3x/+sl+XbCAbJrsJPh/XNdfFnD0z572zYc6+95yZsRiGYQgAAAAAblApdwcAAAAA4OZAcgEAAADAFCQXAAAAAExBcgEAAADAFCQXAAAAAExBcgEAAADAFCQXAAAAAExBcgEAAADAFCQXAAAAAExBclGMWSyWAi2bNm1ya5zt2rVTu3bt3BpDUZs4caIsFkuhtu3bt6/KlCljajx9+/ZVrVq1Cr19Zmamxo8fr9DQUHl5ealmzZoaM2aM/vjjD/OCBG5iO3bs0KOPPqqgoCB5eXkpMDBQjzzyiLZv335D+506dapWrlxpTpDXcerUKU2cOFGJiYkuac8Zx44dk8Vi0euvv27aPjdt2iSLxaJPPvnkunUdnfMd9XUWi0UTJ060re/fv18TJ07UsWPH8uzzRs/bN6JDhw4aNGiQW9q+lquPX3x8vCwWi8Pjdy2rV6+228/f1apVS3379i10jGY7ceKEoqOj1bZtW5UvX14Wi0Xx8fF56l25ckV16tRRXFycy2O8USQXxdj27dvtls6dO8vHxydP+a233urWOGfNmqVZs2a5NQY454knntBrr72mp59+WqtXr1ZUVJSmT5+uHj16uDs0oNh7++231bp1a504cUKvvvqqvvzyS73++us6efKk7rrrLs2YMaPQ+3Z1cjFp0qRimVy4W1RUVIESxe3btysqKsq2vn//fk2aNMnhl+MXX3xRK1asMDPMAvn000/1zTff6MUXX3R5287q0qWLtm/frqCgIKe2W716tSZNmuTwtRUrVhSr93748GEtWrRIXl5e6ty5c771SpcurfHjx2vy5Mk6d+6cCyO8cZ7uDgD5u/POO+3Wq1SpolKlSuUpv9rly5fl6+tblKHZady4scvawo3bsWOHli9frjfeeEMxMTGSpHvvvVeenp4aO3asEhIS1LFjRzdHCRRP33zzjaKjo9W5c2etWLFCnp7/rxt9/PHH9eCDD2rEiBFq2bKlWrdu7cZIix9X9003onr16qpevfp1612vP/67OnXq3EhIhTZ16lQ9+OCDqlatmmn7LKrPskqVKqpSpYqp+2zZsqWp+7tRd999t3799VdJ0q5du7R48eJ86z7xxBOKiYnRO++8o7Fjx7oqxBvGyEUJ165dOzVp0kRbtmxRRESEfH191b9/f0l5hxtzORoiTE1N1TPPPKPq1avLy8tLoaGhmjRpkrKysgoUw9+HinOHs1977TVNmzZNtWrVko+Pj9q1a6eff/5ZV65c0ejRoxUcHCx/f389+OCDOnPmjN0+ly5dqk6dOikoKEg+Pj5q1KiRRo8erUuXLuVp/91331X9+vVltVrVuHFjffTRRw6HnzMzMzVlyhQ1bNhQVqtVVapUUb9+/Wz/yZ3lTIyStG/fPnXo0EF+fn6qUqWKhg4dqsuXL9vVMQxDs2bNUosWLeTj46MKFSrokUce0ZEjRwoVoyPffPONJOX5xaRr166SpGXLlpnWFnCziY2NlcVi0ezZs+0SC0ny9PTUrFmzZLFY9Morr9jK85sOc/XUG4vFokuXLun999+3TXvNPbfmThdJSEhQv379VLFiRfn5+albt255zg/5TQP5+7l606ZNuu222yRJ/fr1s7WX39QSZ2O4Vt+UlJSkp556SlWrVpXValWjRo30xhtvKCcnJ0+bOTk5evnll1WjRg15e3srLCxMX331lV2dw4cPq1+/fqpXr558fX1VrVo1devWTXv37nX4Pv7880/FxMQoMDBQPj4+atu2rfbs2WNXp6BTYf9+zOLj4/Xoo49Kktq3b287prlTXhz9HRT0nL9nzx517drVdsyCg4PVpUsXnThx4prx7dmzR99995169eplV27WZ5menq5Ro0bZpthWq1ZN0dHRefrB9PR0DRw4UJUqVVKZMmV0//336+eff84Tb37TotauXasOHTrI399fvr6+atSokWJjY23HdebMmZLsp5Pn7sPR/4eC/A3+fWre9OnTFRoaqjJlyig8PFw7duy45nG/llKlCv7V28vLSz169NDcuXNlGEah23Q1koubQEpKip566in17NlTq1ev1uDBg53aPjU1VbfffrvWrVun8ePHa82aNRowYIBiY2M1cODAQsc1c+ZMffPNN5o5c6bee+89/e9//1O3bt00YMAA/frrr5o/f75tSsHfh5Ul6dChQ+rcubPmzZuntWvXKjo6Wv/973/VrVs3u3pz587V008/rWbNmmn58uV64YUXNGnSpDzXoeTk5OiBBx7QK6+8op49e+qLL77QK6+8ooSEBLVr165Q1xoUNEbpr7mTnTt3VocOHbRy5UoNHTpU77zzTp5pSM8884yio6N17733auXKlZo1a5b27duniIgInT59+prx5HaG17sGJzMzU5JktVrtynPXf/zxx+u9deAfKTs7Wxs3blRYWFi+v2qHhISoVatW2rBhg7Kzs53a//bt2+Xj46POnTvbpr1ePeV0wIABKlWqlD766CPFxcXpu+++U7t27XT+/Hmn2rr11lu1YMECSdILL7xga+/qc7EjBY3BUd/066+/KiIiQuvXr9dLL72kVatW6d5779WoUaM0dOjQPG3NmDFDa9euVVxcnD788EOVKlVKkZGRdlOWTp06pUqVKumVV17R2rVrNXPmTHl6euqOO+7QwYMH8+xz7NixOnLkiN577z299957OnXqlNq1a3fDP+J06dJFU6dOlfRX/5d7TLt06ZLvNgU551+6dEkdO3bU6dOnNXPmTCUkJCguLk41atTQhQsXrhnT559/Lg8PD919990OX7+Rz/Ly5ctq27at3n//fQ0fPlxr1qzR888/r/j4eP3f//2f7cuwYRjq3r27PvjgA/3rX//SihUrdOeddyoyMrJAx3XevHnq3LmzcnJyNGfOHH322WcaPny4LbF68cUX9cgjj0iyn06e39QqZ/8G/37MFy1apEuXLqlz585KS0uz1clNRIri2o527drp+PHj+umnn0zfd5ExUGL06dPH8PPzsytr27atIcn46quv8tSXZEyYMCFPec2aNY0+ffrY1p955hmjTJkyxvHjx+3qvf7664YkY9++fdeMq23btkbbtm1t60ePHjUkGc2bNzeys7Nt5XFxcYYk4//+7//sto+OjjYkGWlpaQ73n5OTY1y5csXYvHmzIcn44YcfDMMwjOzsbCMwMNC444477OofP37cKF26tFGzZk1b2eLFiw1JxrJly+zq7ty505BkzJo165rvccKECca1/rvkF6Nh/PW5STLefPNNu21efvllQ5Lx9ddfG4ZhGNu3bzckGW+88YZdveTkZMPHx8d47rnn7Pb59/dnGIYxadIkw8PDw9i0adM138vKlSsNScYHH3xgVz5v3jxDklG/fv1rbg/8U6WmphqSjMcff/ya9Xr06GFIMk6fPm0YhuP/r4bh+Lzi5+dnd37OtWDBAkOS8eCDD9qVf/PNN4YkY8qUKbayq8/xua4+V+ee/xYsWHDN91OYGPLrm0aPHm1IMr799lu78meffdawWCzGwYMHDcP4f/1IcHCw8ccff9jqpaenGxUrVjTuvffefOPMysoyMjMzjXr16hkjR460lW/cuNGQZNx6661GTk6OrfzYsWNG6dKljaioKFuZo8/m6uNnGHn72Y8//tiQZGzcuDFPXFf/HRT0nL9r1y5DkrFy5cp833N+IiMjjYYNG+YpN+OzjI2NNUqVKmXs3LnTrvyTTz4xJBmrV682DMMw1qxZc80+8O/HLzeuo0ePGoZhGBcuXDDKlStn3HXXXXaf2dWGDBmSbx999f8HZ/8GmzZtamRlZdnqfffdd4YkY/HixbayY8eOGR4eHkb//v3zjdGRgvwfPHTokCHJmD17tlP7didGLm4CFSpU0D333FPo7T///HO1b99ewcHBysrKsi25vyps3ry5UPvt3Lmz3fBfo0aNJCnPrzi55UlJSbayI0eOqGfPngoMDJSHh4dKly6ttm3bSpIOHDggSTp48KBSU1P12GOP2e2vRo0aeeY6f/755ypfvry6detm9x5btGihwMDAQt1xqyAx/t2TTz5pt96zZ09J0saNG20xWiwWPfXUU3YxBgYGqnnz5teNcfz48crKyrLFkJ/IyEjVrVtXzz//vBISEnT+/HmtXbtWY8eOlYeHh1NDtgDyMv7/X2wLe4e5a7n6PBIREaGaNWvaziOuUNAYHPVNGzZsUOPGjXX77bfblfft21eGYWjDhg125Q899JC8vb1t62XLllW3bt20ZcsW28hQVlaWpk6dqsaNG8vLy0uenp7y8vLSoUOHHJ6Le/bsaffZ1KxZUxERES49hlLBz/l169ZVhQoV9Pzzz2vOnDnav39/gds4deqUqlatmu/rN/JZfv7552rSpIlatGhhF/99991nN4qeu6/8+sBr2bZtm9LT0zV48GDT/j85+zfYpUsXeXh42NabNWsmSTp+/LitrGbNmsrKytK8efNMifHvcj+/kydPmr7vosIF3TcBZ++qcLXTp0/rs88+U+nSpR2+fvbs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aty4sf744w8tWLDAYb377rtPL774op577jn9+eef6t+/v3r37q29e/fa6rz00kuqWrWqYmNjdeTIEZUvX1633nqrxo4d66q3A+AfzunkokePHjp37pwmT56slJQUNWnSRKtXr1bNmjWLIj4AAG5q9evX1/bt2+3K+vbt67DupEmTrnmTFIvFouHDh2v48OFmhggABVaoC7oHDx6swYMHmx0LAAAAgBLM6YfoAQAAAIAjJBcAAAAATEFyAQAAAMAUJBcAAAAATEFyAQAAAMAUJBcAAAAATEFyAQAAAMAUJBcAAAAATEFyAQC4uVksrluKuVq1aikuLs62brFYtHLlyhvapxn7AHDzKNQTugEAQMmXkpKiChUqFKjuxIkTtXLlSiUmJhZ6HwBufiQXAACUIJmZmfLy8jJlX4GBgcViHwBuHkyLAgDAjdq1a6ehQ4dq6NChKl++vCpVqqQXXnhBhmFI+msq05QpU9S3b1/5+/tr4MCBkqRt27bp7rvvlo+Pj0JCQjR8+HBdunTJtt8zZ86oW7du8vHxUWhoqBYtWpSn7aunNJ04cUKPP/64KlasKD8/P4WFhenbb79VfHy8Jk2apB9++EEWi0UWi0Xx8fEO97F3717dc8898vHxUaVKlfT000/r4sWLttf79u2r7t276/XXX1dQUJAqVaqkIUOG6MqVKyYeVQDuwshFCVGc57NGR0e7OwSHunfv7u4Q8tW3b193h5Cvq6c8ACh677//vgYMGKBvv/1Wu3bt0tNPP62aNWvaEonXXntNL774ol544QVJf32Bv++++/TSSy9p3rx5+vXXX20JyoIFCyT9dZ5JTk7Whg0b5OXlpeHDh+vMmTP5xnDx4kW1bdtW1apV06pVqxQYGKjvv/9eOTk56tGjh3766SetXbtWX375pSTJ398/zz4uX76s+++/X3feead27typM2fOKCoqSkOHDrUlI5K0ceNGBQUFaePGjTp8+LB69OihFi1a2N4vgJKL5AIAADcLCQnRf/7zH1ksFjVo0EB79+7Vf/7zH9uX7XvuuUejRo2y1e/du7d69uxp+3GnXr16euutt9S2bVvNnj1bSUlJWrNmjXbs2KE77rhDkjRv3jw1atQo3xg++ugj/frrr9q5c6cqVqwoSapbt67t9TJlysjT0/Oa06AWLVqkP/74QwsXLpSfn58kacaMGerW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SerWrZsGDhyo2bNn67777lNKSoqio6N1++23Kzg42J1vBQBgIpILAIDTevTooXPnzmny5MlKSUlRkyZNtHr1atWsWVOSlJKSYvfMi759++rChQuaMWOG/vWvf6l8+fK65557NG3aNHe9BQBAESC5AAAUyuDBgzV48GCHrzkaARs2bJiGDRtWxFEBANyJay4AAAAAmILkAgAAAIApSC4AAAAAmILkAgAAAIApSC4AAAAAmILkAgAAAIApSC4AAAAAmILkAgAAAIApSC4AAAAAmILkAgAAAIApSC4AAAAAmILkAgAAAIApnEouYmNjddttt6ls2bKqWrWqunfvroMHDxZVbAAAAABKEKeSi82bN2vIkCHasWOHEhISlJWVpU6dOunSpUtFFR8AAACAEsLTmcpr1661W1+wYIGqVq2q3bt36+677zY1MAAAAAAli1PJxdXS0tIkSRUrVsy3TkZGhjIyMmzr6enpN9IkAAAAgGKq0Bd0G4ahmJgY3XXXXWrSpEm+9WJjY+Xv729bQkJCCtskAAAAgGKs0MnF0KFD9eOPP2rx4sXXrDdmzBilpaXZluTk5MI2CQAAAKAYK9S0qGHDhmnVqlXasmWLqlevfs26VqtVVqu1UMEBAAAAKDmcSi4Mw9CwYcO0YsUKbdq0SaGhoUUVFwAAAIASxqnkYsiQIfroo4/06aefqmzZskpNTZUk+fv7y8fHp0gCBAAAAFAyOHXNxezZs5WWlqZ27dopKCjItixdurSo4gMAAABQQjg9LQoAAAAAHCn03aIAAAAA4O9ILgAAAACYguQCAAAAgClILgAAAACYguQCAAAAgClILgAAAACYguQCAAAAgClILgAAAACYguQCAAAAgClILgAAAACYguQCAAAAgClILgAAAACYwtPdARQ358+fd3cIDh0/ftzdIZQ4n376qbtDKJGOHTvm7hAcatGihbtDAAAA18HIBQAAAABTkFwAAAAAMAXJBQAAAABTkFwAAAAAMAXJBQAAAABTkFwAAAAAMAXJBQAAAABTkFwAAAAAMAXJBQAAAABTkFwAAAAAMAXJBQAAAABTkFwAAAAAMAXJBQCgUGbNmqXQ0FB5e3urVatW2rp16zXrZ2RkaNy4capZs6asVqvq1Kmj+fPnuyhaAIAreLo7AABAybN06VJFR0dr1qxZat26td555x1FRkZq//79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8/nnn1daWpoaNmwoDw8PZWdn6+WXX9YTTzzhshjKli2r8PBwvfTSS2rUqJECAgK0ePFiffvtt6pXr57L4rieEpdc5Lo6UzUMw2XZa0k2dOhQ/fjjj8Uqwy2OkpOTNWLECK1fvz7PLwRwLCcnR2FhYZo6daokqWXLltq3b59mz55NcoESi77mL+7sOxo0aKDExESdP39ey5YtU58+fbR582aXJBjFoS+IjIy0/btp06YKDw9XnTp19P777ysmJsYlMRS38/u8efMUGRmp4OBgl7W5dOlSffjhh/roo490yy23KDExUdHR0QoODlafPn1cFscHH3yg/v37q1q1avLw8NCtt96qnj176vvvv3dZDNdT4qZFVa5cWR4eHnl+OTpz5kyeX5hgb9iwYVq1apU2btyo6tWruzucYm337t06c+aMWrVqJU9PT3l6emrz5s1666235OnpqezsbHeHWOwEBQXl6ewbNWrEjRZQItHX/D/u7ju8vLxUt25dhYWFKTY2Vs2bN9ebb77pkraLY1/g5+enpk2b6tChQy5rszid348fP64vv/xSUVFRLm333//+t0aPHq3HH39cTZs2Va9evTRy5EjFxsa6NI46depo8+bNunjxopKTk/Xdd9/pypUrCg0NdWkc11LikgsvLy+1atXKdpeAXAkJCYqIiHBTVMWbYRgaOnSoli9frg0bNhSrP8DiqkOHDtq7d68SExNtS1hYmJ588kklJibKw8PD3SEWO61bt85zm8qff/5ZNWvWdFNEQOHR1xTfvsMwDGVkZLikreLYF2RkZOjAgQMKCgpyWZvF6fy+YMECVa1aVV26dHFpu5cvX1apUvZfmz08PFx+K9pcfn5+CgoK0u+//65169bpgQcecEscjpTIaVExMTHq1auXwsLCFB4errlz5yopKUmDBg1yd2jF0pAhQ/TRRx/p008/VdmyZW2/xPn7+8vHx8fN0RVPZcuWzTOv2M/PT5UqVeJalXyMHDlSERERmjp1qh577DF99913mjt3rubOnevu0IBCcXdfc/HiRR0+fNi2fvToUSUmJqpixYqqUaNGkbdfHPqOsWPHKjIyUiEhIbpw4YKWLFmiTZs2ae3atS5pvzj0BaNGjVK3bt1Uo0YNnTlzRlOmTFF6erpLp+IUl/N7Tk6OFixYoD59+sjT07VfYbt166aXX35ZNWrU0C23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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxcAAAGHCAYAAADC2a9WAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8ekN5oAAAACXBIWXMAAA9hAAAPYQGoP6dpAABQbklEQVR4nO3deVxUZf//8ffIMoALJiqgoaK55hq0gJqaaeHyzVbLcscyV+RucSm3LLLFm8otSyXL1G93aptLlEuLWopSpt6muYAKkpbgUiBwfn/0Y76NDMjgYQbs9Xw8zuPhueY65/qcM+O5+Mx1nTMWwzAMAQAAAMAVquTuAAAAAABcHUguAAAAAJiC5AIAAACAKUguAAAAAJiC5AIAAACAKUguAAAAAJiC5AIAAACAKUguAAAAAJiC5AIAAACAKUguyjGLxVKiZdOmTW6Ns3PnzurcubNbYyhrU6dOlcViKdW2gwYNUpUqVUyNZ9CgQWrQoEGpt//00081YMAAtWrVSl5eXqU+NuCfatu2bbr//vsVHBwsb29vBQUF6b777tPWrVuvaL8vvPCCVq9ebU6Ql3HixAlNnTpVycnJLmnPGUeOHJHFYtErr7xi2j43bdoki8Wi//znP5et6+ia76ivs1gsmjp1qm197969mjp1qo4cOVJon1d63b4SXbt21fDhw93SdnEuPX8JCQmyWCwOz19x1qxZY7efv2vQoIEGDRpU6hjLwvr169W+fXv5+vrK399fvXv31p49e+zqXLx4UY0aNVJ8fLx7grwCJBfl2NatW+2WHj16yNfXt1D5DTfc4NY4586dq7lz57o1Bjhn1apV2rZtm1q0aKE2bdq4OxygQnnjjTfUvn17HTt2TC+99JK++OILvfLKKzp+/Lg6dOig2bNnl3rfrk4upk2bVi6TC3eLjo4uUaK4detWRUdH29b37t2radOmOfzj+Nlnn9WqVavMDLNEPvroI3377bd69tlnXd62s3r27KmtW7cqODjYqe3WrFmjadOmOXxt1apV5erYP/roI0VFRal27dr68MMPNX/+fB04cEAdO3bUL7/8Yqvn5eWlyZMna/r06Tp9+rQbI3aep7sDQNFuueUWu/VatWqpUqVKhcovdeHCBfn5+ZVlaHZatGjhsrZgjrfeekuVKv313cKoUaOUlJTk5oiAiuHbb79VTEyMevTooVWrVsnT8/+60QcffFB33323xo4dq3bt2ql9+/ZujLT8cXXfdCWuvfZaXXvttZetd7n++O8aNWp0JSGV2gsvvKC7775bdevWNW2fZfVe1qpVS7Vq1TJ1n+3atTN1f1fq6aefVqtWrbRy5Urb6FhkZKSaNGmiyZMna+nSpba6Dz30kGJjY/Xmm29q4sSJ7grZaYxcVHCdO3dWy5Yt9dVXXykyMlJ+fn4aMmSIpMLDjQUcDRGmp6frscce07XXXitvb2+FhoZq2rRpys3NLVEMfx8qLhjOfvnllzVz5kw1aNBAvr6+6ty5s37++WddvHhR48ePV506deTv76+7775bGRkZdvtcsWKFunfvruDgYPn6+qp58+YaP368zp8/X6j9t956S02aNJHValWLFi30/vvvOxx+zsnJ0YwZM9SsWTNZrVbVqlVLgwcP1q+//nrZY3TEmRglac+ePeratasqV66sWrVqadSoUbpw4YJdHcMwNHfuXLVt21a+vr665pprdN999+nQoUOlirEoBYkFAOfExcXJYrFo3rx5domFJHl6emru3LmyWCx68cUXbeVFTYe5dOqNxWLR+fPn9c4779imvRZcWwumiyQmJmrw4MGqUaOGKleurN69exe6PhQ1DeTv1+pNmzbpxhtvlCQNHjzY1l5RU0ucjaG4viklJUWPPPKIateuLavVqubNm+vVV19Vfn5+oTbz8/P1/PPPq169evLx8VF4eLi+/PJLuzoHDx7U4MGD1bhxY/n5+alu3brq3bu3du/e7fA4/vzzT8XGxiooKEi+vr7q1KmTdu3aZVenpFNh/37OEhISdP/990uSunTpYjunCQkJkhx/Dkp6zd+1a5d69eplO2d16tRRz549dezYsWLj27Vrl77//nv179/frtys9zIrK0tPPPGEQkND5e3trbp16yomJqZQP5iVlaVhw4YpICBAVapU0Z133qmff/65ULxFTYtat26dunbtKn9/f/n5+al58+aKi4uzndc5c+ZIsp9OXrAPR/8fSvIZ/PvUvFmzZik0NFRVqlRRRESEtm3bVux5L8rp06e1f/9+RUVF2X2+6tevr5YtW2r16tXKy8uzlXt7e6tv375asGCBDMMoVZvuwF8YV4G0tDQ98sgj6tevn9asWaMRI0Y4tX16erpuuukmrV+/XpMnT9batWs1dOhQxcXFadiwYaWOa86cOfr22281Z84cvf322/rvf/+r3r17a+jQofr111+1aNEi25SCvw8rS9KBAwfUo0cPLVy4UOvWrVNMTIz+93//V71797art2DBAj366KNq3bq1Vq5cqWeeeUbTpk0rdB9Kfn6+7rrrLr344ovq16+fPvvsM7344otKTExU586d9ccffzh9fCWNUfpr7mSPHj3UtWtXrV69WqNGjdKbb76pvn372tV77LHHFBMTo9tvv12rV6/W3LlztWfPHkVGRurkyZPFxlPQGbr7HhzgapWXl6eNGzcqPDy8yG+1Q0JCFBYWpg0bNtj9kVASW7dula+vr3r06GGb9nrplNOhQ4eqUqVKev/99xUfH6/vv/9enTt31pkzZ5xq64YbbtDixYslSc8884ytvUuvxY6UNAZHfdOvv/6qyMhIff7553ruuef08ccf6/bbb9cTTzyhUaNGFWpr9uzZWrduneLj4/Xee++pUqVKioqKspuydOLECQUEBOjFF1/UunXrNGfOHHl6eurmm2/W/v37C+1z4sSJOnTokN5++229/fbbOnHihDp37nzFX+L07NlTL7zwgqS/+r+Cc9qzZ88itynJNf/8+fPq1q2bTp48qTlz5igxMVHx8fGqV6+ezp49W2xMn376qTw8PHTrrbc6fP1K3ssLFy6oU6dOeueddzRmzBitXbtWTz/9tBISEvQ///M/tj+GDcNQnz599O677+pf//qXVq1apVtuuUVRUVElOq8LFy5Ujx49lJ+fr/nz5+uTTz7RmDFjbInVs88+q/vuu0+S/XTyoqZWOfsZ/Ps5X7p0qc6fP68ePXooMzPTVqcgEbncvR05OTmSJKvVWug1q9WqCxcu2E2Nkv5K7o4ePaqffvqp2H2XKwYqjIEDBxqVK1e2K+vUqZMhyfjyyy8L1ZdkTJkypVB5/fr1jYEDB9rWH3vsMaNKlSrG0aNH7eq98sorhiRjz549xcbVqVMno1OnTrb1w4cPG5KMNm3aGHl5ebby+Ph4Q5LxP//zP3bbx8TEGJKMzMxMh/vPz883Ll68aGzevNmQZPzwww+GYRhGXl6eERQUZNx888129Y8ePWp4eXkZ9evXt5UtW7bMkGR8+OGHdnW3b99uSDLmzp1b7DFOmTLFKO6/S1ExGsZf75sk47XXXrPb5vnnnzckGd98841hGIaxdetWQ5Lx6quv2tVL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yPp/T2pCQ0P13HPP6fHHH7clFykpKbr33nvVqlUrSVLDhg1t9VNSUtSuXTuFh4dL+utmcaCsMC0KAAD8YxmGUeT9Evv371fr1q3l4+NjK7vppptMaTc5OVldu3Ytcf2NGzeqW7duqlu3rqpWraoBAwbo9OnTOn/+vCRpzJgxmjFjhtq3b68pU6bYJUyPP/64li9frrZt2+qpp57Sli1bTDkGwBGSCwAA8I+1b98+hYaGOnzNUeJhGIYp7fr6+pa47tGjR9WjRw+1bNlSH374oZKSkjRnzhxJ0sWLFyVJ0dHROnTokPr376/du3crPDxcb7zxhiQpKirKNqXrxIkT6tq1q5544glTjgO4FMkFAAD4R9qwYYN2796te++91+HrBVOmsrOzbWU7duwodp/e3t7Ky8u7bNutW7fWl19+WaI4d+zYodzcXL366qu65ZZb1KRJE504caJQvZCQEA0fPlwrV67Uv/71L7311lu212rVqqVBgwbpvffeU3x8vBYsWFCitgFnkVwAAICrXnZ2ttLT03X8+HHt3LlTL7zwgu666y716tVLAwYMcLhNv379lJ+fr0cffVT79u3T+vXr9corr0hSkVOpGjRooHPnzunLL7/UqVOndOHCBYf1pkyZomXLlmnKlCnat2+fdu/erZdeeslh3UaNGik3N1dvvPGGDh06pHfffVfz58+3qxMTE6P169fr8OHD2rlzpzZs2KDmzZtLkiZPnqyPPvpIBw8e1J49e/Tpp5/aXgPMRnIBAACueuvWrVNwcLAaNGigO++8Uxs3btTrr7+ujz76SB4eHg63qVatmj755BMlJyerbdu2mjRpkiZPnixJdvdh/F1kZKSGDx+uvn37qlatWkUmDJ07d9YHH3ygjz/+WG3bttVtt92m7777zmHdtm3batasWZo5c6ZatmyppUuXKi4uzq5OXl6eRo4cqebNm+vOO+9U06ZNbTd7e3t7a8KECWrdurVuvfVWeXh4aPny5SU6b4CzLIZZkwcBAACuckuXLrX9loUz900A/xQ8ihYAAKAIS5YsUcOGDVW3bl398MMPevrpp/XAAw+QWABFILkAAAAoQnp6uiZPnqz09HQFBwfr/vvv1/PPP+/usIByi2lRAAAAAEzBDd0AAAAATEFyAQAAAMAUJBcAAAAATEFyAQAAAMAUJBcAAAAATEFyAQAAAMAUJBcAAAAATEFyAQAAAMAU/w86Qs6eukO3hwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Your code here\n", + "# Find the worst predictions (highest error)\n", + "predictions = model.predict(X_test)\n", + "errors = np.abs(y_test - predictions)\n", + "\n", + "# Get indices of worst predictions\n", + "worst_indices = np.argsort(errors)[::-1][:10] # Top 10 worst predictions\n", + "\n", + "# Visualize the worst predictions\n", + "print(\"=== Worst Prediction Errors ===\")\n", + "for i, idx in enumerate(worst_indices[:5]): # Show top 5\n", + " print(f\"\\nWorst prediction #{i+1}:\")\n", + " print(f\"True label: {y_test[idx]}, Predicted: {predictions[idx]}\")\n", + " print(f\"Error: {errors[idx]:.3f}\")\n", + " \n", + " # Visualize this sample\n", + " plot_prediction(model, sample_idx=idx)\n", + "\n", + "# Analysis: Would you have done better?\n", + "print(\"\\nAnalysis: Would you have done better?\")\n", + "print(\"Yes I wouldve done better.\")" ] }, { @@ -798,31 +1165,135 @@ " - learning rate,\n", " - size of hidden layer,\n", " - implement the support for a second hidden layer.\n", - " - What is the best test accuracy you can get?" + " - What is the best test accuracy you can get? 97.4" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 193, "metadata": { "collapsed": false }, "outputs": [], "source": [ - "# Your code here" + "# Your code here \n", + "class NeuralNet2Hidden:\n", + " \"\"\"MLP with 2 hidden layers with sigmoid activation\"\"\"\n", + " \n", + " def __init__(self, input_size, hidden1_size, hidden2_size, output_size):\n", + " # Initialize weights for 2 hidden layers\n", + " self.Wh1 = np.random.uniform(size=(input_size, hidden1_size), high=0.1, low=-0.1)\n", + " self.bh1 = np.random.uniform(size=hidden1_size, high=0.1, low=-0.1)\n", + " \n", + " self.Wh2 = np.random.uniform(size=(hidden1_size, hidden2_size), high=0.1, low=-0.1)\n", + " self.bh2 = np.random.uniform(size=hidden2_size, high=0.1, low=-0.1)\n", + " \n", + " self.Wo = np.random.uniform(size=(hidden2_size, output_size), high=0.1, low=-0.1)\n", + " self.bo = np.random.uniform(size=output_size, high=0.1, low=-0.1)\n", + " \n", + " self.input_size = input_size\n", + " self.hidden1_size = hidden1_size\n", + " self.hidden2_size = hidden2_size\n", + " self.output_size = output_size\n", + " \n", + " def forward(self, X):\n", + " # First hidden layer\n", + " self.Zh1 = np.dot(X, self.Wh1) + self.bh1\n", + " self.H1 = sigmoid(self.Zh1)\n", + " \n", + " # Second hidden layer\n", + " self.Zh2 = np.dot(self.H1, self.Wh2) + self.bh2\n", + " self.H2 = sigmoid(self.Zh2)\n", + " \n", + " # Output layer\n", + " self.Zo = np.dot(self.H2, self.Wo) + self.bo\n", + " Y = softmax(self.Zo)\n", + " \n", + " return Y\n", + " \n", + " def loss(self, X, y):\n", + " y = y.astype(int)\n", + " y_onehot = one_hot(self.output_size, y)\n", + " y_pred = self.forward(X)\n", + " return nll(y_onehot, y_pred)\n", + " \n", + " def train(self, x, y, learning_rate):\n", + " x = x[np.newaxis, :]\n", + " y_true = one_hot(self.output_size, y)\n", + " y_pred = self.forward(x)\n", + " \n", + " # Backpropagation\n", + " # Output layer error\n", + " error_o = y_pred - y_true\n", + " grad_Wo = np.dot(self.H2.T, error_o)\n", + " grad_bo = np.sum(error_o, axis=0)\n", + " \n", + " # Second hidden layer error\n", + " error_h2 = np.dot(error_o, self.Wo.T) * dsigmoid(self.Zh2)\n", + " grad_Wh2 = np.dot(self.H1.T, error_h2)\n", + " grad_bh2 = np.sum(error_h2, axis=0)\n", + " \n", + " # First hidden layer error\n", + " error_h1 = np.dot(error_h2, self.Wh2.T) * dsigmoid(self.Zh1)\n", + " grad_Wh1 = np.dot(x.T, error_h1)\n", + " grad_bh1 = np.sum(error_h1, axis=0)\n", + " \n", + " # Update weights\n", + " self.Wo -= learning_rate * grad_Wo\n", + " self.bo -= learning_rate * grad_bo\n", + " self.Wh2 -= learning_rate * grad_Wh2\n", + " self.bh2 -= learning_rate * grad_bh2\n", + " self.Wh1 -= learning_rate * grad_Wh1\n", + " self.bh1 -= learning_rate * grad_bh1\n", + " \n", + " def predict(self, X):\n", + " if len(X.shape) == 1:\n", + " return np.argmax(self.forward(X))\n", + " else:\n", + " return np.argmax(self.forward(X), axis=1)\n", + " \n", + " def accuracy(self, X, y):\n", + " y_preds = np.argmax(self.forward(X), axis=1)\n", + " return np.mean(y_preds == y)\n" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 204, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Initial: Train Acc=0.102, Test Acc=0.096\n", + "Epoch 5: Train Acc=0.972, Test Acc=0.937\n", + "Epoch 10: Train Acc=0.991, Test Acc=0.959\n", + "Epoch 15: Train Acc=1.000, Test Acc=0.974\n" + ] + } + ], + "source": [ + "# Test with 2 hidden layers\n", + "model_2h = NeuralNet2Hidden(n_features, hidden1_size=512, hidden2_size=128, output_size=n_classes)\n", + "\n", + "print(f\"Initial: Train Acc={model_2h.accuracy(X_train, y_train):.3f}, Test Acc={model_2h.accuracy(X_test, y_test):.3f}\")\n", + "\n", + "# Train for 15 epochs\n", + "for epoch in range(15):\n", + " for x, y in zip(X_train, y_train):\n", + " model_2h.train(x, y, 0.01)\n", + " \n", + " if (epoch + 1) % 5 == 0:\n", + " train_acc = model_2h.accuracy(X_train, y_train)\n", + " test_acc = model_2h.accuracy(X_test, y_test)\n", + " print(f\"Epoch {epoch+1}: Train Acc={train_acc:.3f}, Test Acc={test_acc:.3f}\")\n" + ] } ], "metadata": { "kernelspec": { - "display_name": ".venv", + "display_name": "dsi_participant", "language": "python", "name": "python3" }, @@ -836,7 +1307,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.12" + "version": "3.9.19" } }, "nbformat": 4, diff --git a/01_materials/labs/lab_3.ipynb b/01_materials/labs/lab_3.ipynb index 7ac8da00d..0811ef7fe 100644 --- a/01_materials/labs/lab_3.ipynb +++ b/01_materials/labs/lab_3.ipynb @@ -15,7 +15,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -52,9 +52,141 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
user_iditem_idratingtimestamp
01962423881250949
11863023891717742
2223771878887116
3244512880606923
41663461886397596
...............
999958804763880175444
999967162045879795543
9999727610901874795795
99998132252882399156
99999122033879959583
\n", + "

100000 rows × 4 columns

\n", + "
" + ], + "text/plain": [ + " user_id item_id rating timestamp\n", + "0 196 242 3 881250949\n", + "1 186 302 3 891717742\n", + "2 22 377 1 878887116\n", + "3 244 51 2 880606923\n", + "4 166 346 1 886397596\n", + "... ... ... ... ...\n", + "99995 880 476 3 880175444\n", + "99996 716 204 5 879795543\n", + "99997 276 1090 1 874795795\n", + "99998 13 225 2 882399156\n", + "99999 12 203 3 879959583\n", + "\n", + "[100000 rows x 4 columns]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "import pandas as pd\n", "\n", @@ -76,9 +208,166 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
item_idtitlerelease_datevideo_release_dateimdb_url
01Toy Story (1995)01-Jan-1995NaNhttp://us.imdb.com/M/title-exact?Toy%20Story%2...
12GoldenEye (1995)01-Jan-1995NaNhttp://us.imdb.com/M/title-exact?GoldenEye%20(...
23Four Rooms (1995)01-Jan-1995NaNhttp://us.imdb.com/M/title-exact?Four%20Rooms%...
34Get Shorty (1995)01-Jan-1995NaNhttp://us.imdb.com/M/title-exact?Get%20Shorty%...
45Copycat (1995)01-Jan-1995NaNhttp://us.imdb.com/M/title-exact?Copycat%20(1995)
..................
16771678Mat' i syn (1997)06-Feb-1998NaNhttp://us.imdb.com/M/title-exact?Mat%27+i+syn+...
16781679B. Monkey (1998)06-Feb-1998NaNhttp://us.imdb.com/M/title-exact?B%2E+Monkey+(...
16791680Sliding Doors (1998)01-Jan-1998NaNhttp://us.imdb.com/Title?Sliding+Doors+(1998)
16801681You So Crazy (1994)01-Jan-1994NaNhttp://us.imdb.com/M/title-exact?You%20So%20Cr...
16811682Scream of Stone (Schrei aus Stein) (1991)08-Mar-1996NaNhttp://us.imdb.com/M/title-exact?Schrei%20aus%...
\n", + "

1682 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " item_id title release_date \\\n", + "0 1 Toy Story (1995) 01-Jan-1995 \n", + "1 2 GoldenEye (1995) 01-Jan-1995 \n", + "2 3 Four Rooms (1995) 01-Jan-1995 \n", + "3 4 Get Shorty (1995) 01-Jan-1995 \n", + "4 5 Copycat (1995) 01-Jan-1995 \n", + "... ... ... ... \n", + "1677 1678 Mat' i syn (1997) 06-Feb-1998 \n", + "1678 1679 B. Monkey (1998) 06-Feb-1998 \n", + "1679 1680 Sliding Doors (1998) 01-Jan-1998 \n", + "1680 1681 You So Crazy (1994) 01-Jan-1994 \n", + "1681 1682 Scream of Stone (Schrei aus Stein) (1991) 08-Mar-1996 \n", + "\n", + " video_release_date imdb_url \n", + "0 NaN http://us.imdb.com/M/title-exact?Toy%20Story%2... \n", + "1 NaN http://us.imdb.com/M/title-exact?GoldenEye%20(... \n", + "2 NaN http://us.imdb.com/M/title-exact?Four%20Rooms%... \n", + "3 NaN http://us.imdb.com/M/title-exact?Get%20Shorty%... \n", + "4 NaN http://us.imdb.com/M/title-exact?Copycat%20(1995) \n", + "... ... ... \n", + "1677 NaN http://us.imdb.com/M/title-exact?Mat%27+i+syn+... \n", + "1678 NaN http://us.imdb.com/M/title-exact?B%2E+Monkey+(... \n", + "1679 NaN http://us.imdb.com/Title?Sliding+Doors+(1998) \n", + "1680 NaN http://us.imdb.com/M/title-exact?You%20So%20Cr... \n", + "1681 NaN http://us.imdb.com/M/title-exact?Schrei%20aus%... \n", + "\n", + "[1682 rows x 5 columns]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "columns_to_keep = ['item_id', 'title', 'release_date', 'video_release_date', 'imdb_url']\n", "items = pd.read_csv(ML_100K_FOLDER / \"u.item\", sep='|', names=columns_to_keep,\n", @@ -97,7 +386,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -114,7 +403,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -123,9 +412,128 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
item_idtitlerelease_datevideo_release_dateimdb_urluser_idratingtimestamp
01Toy Story (1995)01-Jan-1995NaNhttp://us.imdb.com/M/title-exact?Toy%20Story%2...3084887736532
11Toy Story (1995)01-Jan-1995NaNhttp://us.imdb.com/M/title-exact?Toy%20Story%2...2875875334088
21Toy Story (1995)01-Jan-1995NaNhttp://us.imdb.com/M/title-exact?Toy%20Story%2...1484877019411
31Toy Story (1995)01-Jan-1995NaNhttp://us.imdb.com/M/title-exact?Toy%20Story%2...2804891700426
41Toy Story (1995)01-Jan-1995NaNhttp://us.imdb.com/M/title-exact?Toy%20Story%2...663883601324
\n", + "
" + ], + "text/plain": [ + " item_id title release_date video_release_date \\\n", + "0 1 Toy Story (1995) 01-Jan-1995 NaN \n", + "1 1 Toy Story (1995) 01-Jan-1995 NaN \n", + "2 1 Toy Story (1995) 01-Jan-1995 NaN \n", + "3 1 Toy Story (1995) 01-Jan-1995 NaN \n", + "4 1 Toy Story (1995) 01-Jan-1995 NaN \n", + "\n", + " imdb_url user_id rating \\\n", + "0 http://us.imdb.com/M/title-exact?Toy%20Story%2... 308 4 \n", + "1 http://us.imdb.com/M/title-exact?Toy%20Story%2... 287 5 \n", + "2 http://us.imdb.com/M/title-exact?Toy%20Story%2... 148 4 \n", + "3 http://us.imdb.com/M/title-exact?Toy%20Story%2... 280 4 \n", + "4 http://us.imdb.com/M/title-exact?Toy%20Story%2... 66 3 \n", + "\n", + " timestamp \n", + "0 887736532 \n", + "1 875334088 \n", + "2 877019411 \n", + "3 891700426 \n", + "4 883601324 " + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "all_ratings.head()" ] @@ -141,9 +549,133 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
item_idvideo_release_dateuser_idratingtimestamp
count100000.0000000.0100000.00000100000.0000001.000000e+05
mean425.530130NaN462.484753.5298608.835289e+08
std330.798356NaN266.614421.1256745.343856e+06
min1.000000NaN1.000001.0000008.747247e+08
25%175.000000NaN254.000003.0000008.794487e+08
50%322.000000NaN447.000004.0000008.828269e+08
75%631.000000NaN682.000004.0000008.882600e+08
max1682.000000NaN943.000005.0000008.932866e+08
\n", + "
" + ], + "text/plain": [ + " item_id video_release_date user_id rating \\\n", + "count 100000.000000 0.0 100000.00000 100000.000000 \n", + "mean 425.530130 NaN 462.48475 3.529860 \n", + "std 330.798356 NaN 266.61442 1.125674 \n", + "min 1.000000 NaN 1.00000 1.000000 \n", + "25% 175.000000 NaN 254.00000 3.000000 \n", + "50% 322.000000 NaN 447.00000 4.000000 \n", + "75% 631.000000 NaN 682.00000 4.000000 \n", + "max 1682.000000 NaN 943.00000 5.000000 \n", + "\n", + " timestamp \n", + "count 1.000000e+05 \n", + "mean 8.835289e+08 \n", + "std 5.343856e+06 \n", + "min 8.747247e+08 \n", + "25% 8.794487e+08 \n", + "50% 8.828269e+08 \n", + "75% 8.882600e+08 \n", + "max 8.932866e+08 " + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "all_ratings.describe()" ] @@ -157,7 +689,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ @@ -167,36 +699,212 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "items['popularity'].plot.hist(bins=30);" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "np.int64(141)" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "(items['popularity'] == 1).sum() # Number of movies with only one rating" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "49 Star Wars (1977)\n", + "257 Contact (1997)\n", + "99 Fargo (1996)\n", + "180 Return of the Jedi (1983)\n", + "293 Liar Liar (1997)\n", + "285 English Patient, The (1996)\n", + "287 Scream (1996)\n", + "0 Toy Story (1995)\n", + "299 Air Force One (1997)\n", + "120 Independence Day (ID4) (1996)\n", + "Name: title, dtype: object" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "items.nlargest(10, 'popularity')['title'] # Get the 10 most popular movies" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
item_idpopularityvideo_release_dateuser_idratingtimestamp
count100000.000000100000.0000000.0100000.00000100000.0000001.000000e+05
mean425.530130168.071900NaN462.484753.5298608.835289e+08
std330.798356121.784558NaN266.614421.1256745.343856e+06
min1.0000001.000000NaN1.000001.0000008.747247e+08
25%175.00000071.000000NaN254.000003.0000008.794487e+08
50%322.000000145.000000NaN447.000004.0000008.828269e+08
75%631.000000239.000000NaN682.000004.0000008.882600e+08
max1682.000000583.000000NaN943.000005.0000008.932866e+08
\n", + "
" + ], + "text/plain": [ + " item_id popularity video_release_date user_id \\\n", + "count 100000.000000 100000.000000 0.0 100000.00000 \n", + "mean 425.530130 168.071900 NaN 462.48475 \n", + "std 330.798356 121.784558 NaN 266.61442 \n", + "min 1.000000 1.000000 NaN 1.00000 \n", + "25% 175.000000 71.000000 NaN 254.00000 \n", + "50% 322.000000 145.000000 NaN 447.00000 \n", + "75% 631.000000 239.000000 NaN 682.00000 \n", + "max 1682.000000 583.000000 NaN 943.00000 \n", + "\n", + " rating timestamp \n", + "count 100000.000000 1.000000e+05 \n", + "mean 3.529860 8.835289e+08 \n", + "std 1.125674 5.343856e+06 \n", + "min 1.000000 8.747247e+08 \n", + "25% 3.000000 8.794487e+08 \n", + "50% 4.000000 8.828269e+08 \n", + "75% 4.000000 8.882600e+08 \n", + "max 5.000000 8.932866e+08 " + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "all_ratings = pd.merge(popularity, all_ratings)\n", "all_ratings.describe()" @@ -204,7 +912,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 12, "metadata": { "collapsed": false }, @@ -215,9 +923,134 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
item_idpopularitytitlerelease_datevideo_release_dateimdb_urluser_idratingtimestamp
01452Toy Story (1995)01-Jan-1995NaNhttp://us.imdb.com/M/title-exact?Toy%20Story%2...3084887736532
11452Toy Story (1995)01-Jan-1995NaNhttp://us.imdb.com/M/title-exact?Toy%20Story%2...2875875334088
21452Toy Story (1995)01-Jan-1995NaNhttp://us.imdb.com/M/title-exact?Toy%20Story%2...1484877019411
31452Toy Story (1995)01-Jan-1995NaNhttp://us.imdb.com/M/title-exact?Toy%20Story%2...2804891700426
41452Toy Story (1995)01-Jan-1995NaNhttp://us.imdb.com/M/title-exact?Toy%20Story%2...663883601324
\n", + "
" + ], + "text/plain": [ + " item_id popularity title release_date video_release_date \\\n", + "0 1 452 Toy Story (1995) 01-Jan-1995 NaN \n", + "1 1 452 Toy Story (1995) 01-Jan-1995 NaN \n", + "2 1 452 Toy Story (1995) 01-Jan-1995 NaN \n", + "3 1 452 Toy Story (1995) 01-Jan-1995 NaN \n", + "4 1 452 Toy Story (1995) 01-Jan-1995 NaN \n", + "\n", + " imdb_url user_id rating \\\n", + "0 http://us.imdb.com/M/title-exact?Toy%20Story%2... 308 4 \n", + "1 http://us.imdb.com/M/title-exact?Toy%20Story%2... 287 5 \n", + "2 http://us.imdb.com/M/title-exact?Toy%20Story%2... 148 4 \n", + "3 http://us.imdb.com/M/title-exact?Toy%20Story%2... 280 4 \n", + "4 http://us.imdb.com/M/title-exact?Toy%20Story%2... 66 3 \n", + "\n", + " timestamp \n", + "0 887736532 \n", + "1 875334088 \n", + "2 877019411 \n", + "3 891700426 \n", + "4 883601324 " + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "all_ratings.head()" ] @@ -237,11 +1070,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "ename": "NotImplementedError", + "evalue": "Please calculate the average rating for each movie", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mNotImplementedError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[14], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mNotImplementedError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mPlease calculate the average rating for each movie\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "\u001b[1;31mNotImplementedError\u001b[0m: Please calculate the average rating for each movie" + ] + } + ], "source": [ "raise NotImplementedError(\"Please calculate the average rating for each movie\")" ] @@ -255,7 +1100,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ @@ -295,7 +1140,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ @@ -306,7 +1151,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "metadata": {}, "outputs": [], "source": [ @@ -353,9 +1198,38 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/10\n", + "\u001b[1m1125/1125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 3ms/step - loss: 3.2817 - val_loss: 1.0425\n", + "Epoch 2/10\n", + "\u001b[1m1125/1125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - loss: 0.9032 - val_loss: 0.7896\n", + "Epoch 3/10\n", + "\u001b[1m1125/1125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - loss: 0.7488 - val_loss: 0.7583\n", + "Epoch 4/10\n", + "\u001b[1m1125/1125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - loss: 0.7172 - val_loss: 0.7475\n", + "Epoch 5/10\n", + "\u001b[1m1125/1125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - loss: 0.6908 - val_loss: 0.7440\n", + "Epoch 6/10\n", + "\u001b[1m1125/1125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - loss: 0.6697 - val_loss: 0.7389\n", + "Epoch 7/10\n", + "\u001b[1m1125/1125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - loss: 0.6500 - val_loss: 0.7384\n", + "Epoch 8/10\n", + "\u001b[1m1125/1125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - loss: 0.6314 - val_loss: 0.7375\n", + "Epoch 9/10\n", + "\u001b[1m1125/1125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - loss: 0.6077 - val_loss: 0.7400\n", + "Epoch 10/10\n", + "\u001b[1m1125/1125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - loss: 0.5828 - val_loss: 0.7409\n", + "CPU times: total: 36.2 s\n", + "Wall time: 29.9 s\n" + ] + } + ], "source": [ "%%time\n", "\n", @@ -828,7 +1702,7 @@ ], "metadata": { "kernelspec": { - "display_name": "lab_1", + "display_name": "dsi_participant", "language": "python", "name": "python3" }, @@ -842,7 +1716,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.9" + "version": "3.9.19" } }, "nbformat": 4, diff --git a/02_activities/assignments/assignment_1.ipynb b/02_activities/assignments/assignment_1.ipynb index 6a1f05814..275e91ada 100644 --- a/02_activities/assignments/assignment_1.ipynb +++ b/02_activities/assignments/assignment_1.ipynb @@ -22,15 +22,15 @@ "\n", "In this section, you should:\n", "\n", - "- [ ] Inspect the shapes of the training and test sets to confirm their size and structure.\n", - "- [ ] Convert the labels to one-hot encoded format if necessary. (There is a utility function in Keras for this.)\n", - "- [ ] Visualize a few images from the dataset to understand what the data looks like." + "- [ 1 ] Inspect the shapes of the training and test sets to confirm their size and structure.\n", + "- [ 2 ] Convert the labels to one-hot encoded format if necessary. (There is a utility function in Keras for this.)\n", + "- [ 3 ] Visualize a few images from the dataset to understand what the data looks like." ] }, { "cell_type": "code", - "execution_count": null, - "id": "420c7178", + "execution_count": 41, + "id": "9ea2f78a", "metadata": {}, "outputs": [], "source": [ @@ -47,28 +47,107 @@ }, { "cell_type": "code", - "execution_count": null, - "id": "a6c89fe7", + "execution_count": 42, + "id": "2df4c7a0", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "((60000, 28, 28), (60000,), (10000, 28, 28), (10000,))" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Inspect the shapes of the datasets\n", - "\n", - "\n", - "# Convert labels to one-hot encoding\n", - "from tensorflow.keras.utils import to_categorical\n", + "X_train.shape, y_train.shape, X_test.shape, y_test.shape\n", "\n" ] }, { "cell_type": "code", - "execution_count": null, - "id": "13e100db", + "execution_count": 43, + "id": "834b9e94", "metadata": {}, "outputs": [], + "source": [ + "# Convert labels to one-hot encoding\n", + "from tensorflow.keras.utils import to_categorical" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "a6c89fe7", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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IgsXLpTBgwdLVFSUNGzYUMLDw2XOnDmybds2te+QIUOkdevWF7cbNGggd911l+zevVsOHDggIiLLli2TG264QRISEuTcuXMX/916660iIvLhhx9e9nx2794tu3fvtjr3y/XFZc/cuonjkVzC8eiWkJ6QFy1aJKNHj5bExESZN2+erF+/XjZu3Chjx46Fy+aZv/74bq2oqEhERAoKCmTp0qUSHh7u+9e1a1cRETly5EhAzj0uLu7ic37XiRMn5OzZs3UysFDfcTySSzge3RPS95DnzZsnqampsmDBAt//MZ05cwbun5+ff8laXFyciIjEx8dLjx495IUXXoDHSEhIqO5pi4hI9+7d5c0335T8/HzfB+Ff//qXiIh069YtIM9DwcPxSC7heHRPSH9DDgsLk4iICN9gy8/Pv2SKcPXq1VJQUHBx+5tvvpEFCxZIWlraxXUsR4wYIVu3bpW0tDTp16+f+heoAfeDH/xAwsLC5NVXX/XV586dK40bN5Zhw4YF5HkoeDgeySUcj+6p89+Q16xZAxN5w4cPlxEjRsiiRYvkoYceklGjRklubq48//zz0rZtW9m1a5d6THx8vNx4443y7LPPXkwRbt++3Rftnz59uqxcuVIGDRokkyZNkk6dOsnp06clJydHli9fLrNmzbrsItTp6ekiIhXeJ+natauMGzdOpkyZIg0aNJD+/fvLihUr5C9/+YtkZmbW2V/JhDqOR3IJx2MdU9upsqq6kCK81L+9e/d6nud5M2bM8FJSUrzIyEivc+fO3uzZs70pU6Z45o8uIt6ECRO8mTNnemlpaV54eLiXkZHhzZ8/Xz13YWGhN2nSJC81NdULDw/3YmNjvb59+3pPP/20V1ZW5jummSJMTk72kpOTrX7Gs2fPelOmTPHat2/vRUREeB07dvReeumlSr1OFBwcj+QSjse6KczzPC8YEz8RERFdWkjfQyYiIqorOCETERE5gBMyERGRAzghExEROYATMhERkQM4IRMRETnAqjHI+fPnJS8vT6Kjo+ts026qOZ7nSWlpqSQkJMgVV9T8/+NxPNLlcDySSyozHq0m5Ly8PElKSgrIyVHoys3NvWwXnkDheCQbHI/kEpvxaDUhR0dHXzxgTExM9c8sCGbNmqVq11xzjW+7thqQm6uULFu2TO1zxx13qNqF96EqUP+XQP3ffElJiSQlJVXr/CqjLo5HZMqUKb7tZs2aqX0effTRKh8frdhzzz33qNrkyZN92/369avycyK2vYc4HmvX2bNnfduPPPKI2gdNKL169VK18PDwCo8vIrJ+/XpVu/nmm33b1157rdqnLqnMeLSakC98UGJiYurMgGvUqJGqRUVF+bZr62cxB2bjxo3VPujcXJ2Qa+p4FT1PXRqPSGRkpG8bjdnq/HwRERGq1rCh/sg3bdo0YM+JBHtCrqnjVfQ8dX08mtclNH7MMSsi0qRJE1WzHXvoeDU9HmuLzXhkqIuIiMgBnJCJiIgcYLW4RElJiTRr1kyOHz9epV8ffPPNNxXu06BBA1XbuXOnqr3yyiuqtmXLFlUrKSlRNfO+Rnx8vNoH/foY3Ytr0aKFquXl5aka+rlOnjx52fMSETl+/Liqodf+scceU7VbbrlF1WpSdceH6893OWhpu9dee03V1qxZo2rmr/AOHz6s9jl//ryqoaQm+hhfWKz9u9D9YTNbcerUKbVPp06dVO2uu+5StUCtd1sd9Xk8njt3TtXmzZunan/+859VbfPmzb5tdH08evSoqp05c6Yyp+iTkpKiauaYR7/qvffee1XtP//zP1UNXaeDrTLjg9+QiYiIHMAJmYiIyAGckImIiBzACZmIiMgBQQl12Zg5c6aqoQBXWlqaqqGb/iiI1b59e9/2sGHD1D7ob0EfeughVUN++9vfqlp5ebmqLVy40LddVlam9kFhnsLCQlUzA2IiIqNHj1a1Z599VtUCJRRDNBs3blQ1FI4pLi5WNRS6sglnoQDgoUOHVA2NFwQFZhITE1XN/FvQ0tJStQ8axyhA1Lp1a1WbOHGiqqHAkHkpqurfEYfieETGjBmjaig8iK6FKLxq1tC10LafAdoP1dDnwhxXKGR44sQJVUN/D52amqpqH3zwgarVJIa6iIiI6hhOyERERA7ghExEROQATshEREQOsFpcItBQQGT58uWqlpycrGpm43ERHKzZvn17hfuh8+jfv7+qbd26VdVQkAEFKp544glVM0MWKGgTGxuravv371e1q666StVQp6gHH3xQ1VAAh75lroAkIhIXF6dqbdq0UTW0qg0Kr5jhLBQGQyFG22b+6Hgo4GN+DlDnOFRDIR3UueyNN95QtYcffljVuJbwpS1dulTV3n33XVVD4xFdS1D3RHO8oH1Q8BB1FUSLRth2nTPHAQqgoYV20PmibnVo9aiPPvpI1WoDvyETERE5gBMyERGRAzghExEROaBW7iEvW7ZM1aKiolQN3YdA91Gvvvpqq+M1b97ct33kyBG1z4oVK1QtKSlJ1bp3765qixcvVrVBgwapmrkSlXleIvh+C/o5W7VqpWr79u1TtQ8//FDVUAOR+gg1Cjh27JiqoUYJaD90zwvdVzbzEKjJC2oCgholoPvKKCOB9jPv46HVe9BzogwCuo+HHovODd2npm+h1ZnQdQO9hqiBC7q+mE1o0P1i1JAjIyND1QoKClQNjWV0bubnzPb6iDIIZjMoEXxf+fe//72qPfLII6pW0/gNmYiIyAGckImIiBzACZmIiMgBnJCJiIgcUCuhLnSzvEuXLqqGVupAQS8UNDh48KCqmQ0+brvtNrXPP/7xD1X7xS9+oWpXXnmlqrVt21bV3nvvPVXbu3evb/vGG29U+zRr1kzVzDCYiEjPnj2tzg01XmGo61urVq1SNRTMQiFAFE5Crz8KNplhKpsmCZc6NxTAQQEfFIYxfwbbJiNo5Ro0blGgbfPmzaqGmtzQt1BzIhRcRaE6BK3oZa5qh4JZKKSKQoBFRUWq1q5dO1Uzr4UiItu2bfNtr1u3Tu2DfnbUqAYFJdEcggK5DHURERHVU5yQiYiIHMAJmYiIyAGckImIiBwQlFCXGRpBKzahABcKHqAuVC1atFA1FBbo1q2bbxuFTTp06KBqKKBg22moX79+qmZ2OOrUqZPaJz8/X9W++uorVevcubOqofPdsmWLqpmhjfq6+tPHH3+saiichFYyQqsnpaSkqJrNyku2AS40zlB4BR0PffZMKICGutUhqBMYOrcvvvhC1RjqujR0LURjFAWb0GM7duyoauYqSGi8o+vq22+/rWoo6IWMHDlS1Ro29E9LaJU1FMwyO42J4BCjeXwRkQ0bNlz2PIOF35CJiIgcwAmZiIjIAZyQiYiIHMAJmYiIyAFBCXWZy12h4BSClhZE3bBQ7YEHHlC1o0eP+rbR0l+9evVSte3bt6sa6mYUHR2taih8YC4nhpbwS05OVjWzg40IXkoM/Qwo6GUu6TZ16lS1Tygygx6oAxoKCqIuSCgYiIKHaIzaQAEuFNZCIUPUvQuFfszjobHdpk0bVUOdy1ANfd5RaNEMk6FAW32AAkYocInGAQpToY5qqAuXGZ5auXKl2ufw4cOqNnz4cFVDnRdff/11VUNd7cyQGHpOFDJEnwEU6kLBw5YtW6qaGbpEy68GGr8hExEROYATMhERkQM4IRMRETmAEzIREZEDghLqmj17tm8bBZHQcloooICWbUOhhby8PFUzw1R33nmn2uedd95RNdQhCwXOevfurWroZzDDAijggkIcqMNMbGysqqGfHS19hkJo9UFmZqZvu0ePHmofFLRDASu09Cd6LAoomSEaFEBBwSwU5rENnKD9zLAaOlcU6kLd31BXKPScKKizcOFC3/a9996r9qkPUAATvee2oT30fqLg3tixY33b6JqxZ88eVcvOzla1adOmqRrq6IUea4ZLUZh11qxZqoZeI/R6oJ8dXac/+OAD3/awYcPUPoHGb8hEREQO4IRMRETkAE7IREREDuCETERE5ICghLp+/etf+7YzMjLUPqhrFgp/oSAS6qSFlsAzg2Oos8vVV1+taij0k5CQoGpoKT70s5rnhs7j66+/VrXjx4+rGgqEoTDM3XffrWpmyK2+MANzGzduVPug9xItPYc6daGxUVZWpmpmqAst0Yi6gyHosQj6uczxhwKFqHPZzp07VW3Hjh2q1r9/f1VDYcTvfe97qlYfzZkzR9VQUNB26U/UJa6wsFDVzOsL6vj35ptvqtr//M//qNrDDz+saii42759e1Uzw41muEoEB7NQuPfAgQOqhrrJoVDXvHnzfNsMdREREdUTnJCJiIgcwAmZiIjIAZyQiYiIHBCUUJcZxPr5z38e0OOPGDFC1VAnLbPbEApJmUs0iuAQAFqyDwXO0FJfu3fv9m2jjjio49Fbb72laiiERpc3fvz4y26LiCxfvlzV0OuPxoH5/orgUJQNFNxBgRbUpciWOW7RsVD3qH/7t39TNRQyfPLJJ6t8bvXRiy++qGoo4IrCTn369FE11CELdfMzQ1doGdEvvvhC1VavXq1qzz77rKqhazIaV2Z48uDBg2of9Lm44YYbVG3y5MmqtmTJElVD4Vs0vmsavyETERE5gBMyERGRAzghExEROSAo95DNFTdQExC0ko6tH/7wh6r26quvqprZyODGG29U++zatUvVCgoKVA3dG0bH+/jjj1XNvEeC7ruh57S9X4yaSaCauVoMWj2mvho+fLhVDd2PeuKJJ1QNNe4wm4rYrthkuwIUgvYz78eh46P7eOPGjbN6TltmQwjb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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "import matplotlib.pyplot as plt\n", - "# Verify the data looks as expected\n" + "import numpy as np\n", + "\n", + "# Verify the data looks as expected\n", + "\n", + "# Selecting 9 random indices\n", + "random_indices = np.random.choice(len(X_test), 9, replace=False)\n", + "\n", + "# Creating a 3x3 grid plot\n", + "fig, axes = plt.subplots(3, 3, figsize=(6, 6))\n", + "\n", + "for i, ax in enumerate(axes.flat):\n", + " ax.imshow(X_test[random_indices[i]], cmap=plt.cm.gray_r, interpolation='nearest')\n", + " ax.set_title(f\"Label: {y_test[random_indices[i]]}\")\n", + "\n", + " # Removing axis labels\n", + " ax.set_xticks([])\n", + " ax.set_yticks([])\n", + "\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "da1a8bc8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "class_names, label mapping:\n", + "0: T-shirt/top\n", + "1: Trouser\n", + "2: Pullover\n", + "3: Dress\n", + "4: Coat\n", + "5: Sandal\n", + "6: Shirt\n", + "7: Sneaker\n", + "8: Bag\n", + "9: Ankle boot\n" + ] + } + ], + "source": [ + "# Print the class names for the Fashion MNIST labels\n", + "print(\"class_names, label mapping:\")\n", + "for idx, name in enumerate(class_names):\n", + " print(f\"{idx}: {name}\")" ] }, { @@ -78,7 +157,34 @@ "source": [ "Reflection: Does the data look as expected? How is the quality of the images? Are there any issues with the dataset that you notice?\n", "\n", - "**Your answer here**" + "**Your answer here**\n", + "Looks as expected. No issues. there are 10 categories and at most there will be 9 of the categories displayed at any one time. this can be changed by plt.subplots(2,5) or similar." + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "a3c70806", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Before one-hot encoding: 9\n", + "After one-hot encoding: [0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]\n" + ] + } + ], + "source": [ + "import tensorflow as tf;\n", + "\n", + "from tensorflow.keras.utils import to_categorical\n", + "\n", + "print(f'Before one-hot encoding: {y_train[0]}')\n", + "y_train = to_categorical(y_train, num_classes=10)\n", + "y_test = to_categorical(y_test, num_classes=10)\n", + "print(f'After one-hot encoding: {y_train[0]}')" ] }, { @@ -101,23 +207,159 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 47, "id": "8563a7aa", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
Model: \"sequential_20\"\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1mModel: \"sequential_20\"\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
+       "┃ Layer (type)                     Output Shape                  Param # ┃\n",
+       "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
+       "│ flatten_20 (Flatten)            │ (None, 784)            │             0 │\n",
+       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
+       "│ dense_39 (Dense)                │ (None, 64)             │        50,240 │\n",
+       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
+       "│ dense_40 (Dense)                │ (None, 10)             │           650 │\n",
+       "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
+       "
\n" + ], + "text/plain": [ + "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n", + "┃\u001b[1m \u001b[0m\u001b[1mLayer (type) \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m Param #\u001b[0m\u001b[1m \u001b[0m┃\n", + "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n", + "│ flatten_20 (\u001b[38;5;33mFlatten\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m784\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", + "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", + "│ dense_39 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m50,240\u001b[0m │\n", + "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", + "│ dense_40 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m) │ \u001b[38;5;34m650\u001b[0m │\n", + "└─────────────────────────────────┴────────────────────────┴───────────────┘\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
 Total params: 50,890 (198.79 KB)\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m50,890\u001b[0m (198.79 KB)\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
 Trainable params: 50,890 (198.79 KB)\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m50,890\u001b[0m (198.79 KB)\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
 Non-trainable params: 0 (0.00 B)\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "from keras.models import Sequential\n", "from keras.layers import Dense, Flatten\n", + "from numpy import random\n", + "import tensorflow as tf\n", + "from keras.layers import Input\n", "\n", "# Create a simple linear regression model\n", "model = Sequential()\n", + "\n", + "\n", "# You can use `model.add()` to add layers to the model\n", + "model.add(Input(shape=(28,28))) # Input tensor specifying the shape\n", + "model.add(Flatten()) # flatten to convert 2D to 1D\n", + "model.add(Dense(64, activation='relu')) # 64 neurons, ReLU activation\n", + "# Output layer\n", + "model.add(Dense(10, activation='softmax')) # 10 neurons, softmax activation\n", "\n", + "model.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "e57ed645", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/5\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 2ms/step - accuracy: 0.6502 - loss: 1.1193 - val_accuracy: 0.7899 - val_loss: 0.6015\n", + "Epoch 2/5\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.8109 - loss: 0.5611 - val_accuracy: 0.8169 - val_loss: 0.5276\n", + "Epoch 3/5\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.8268 - loss: 0.5078 - val_accuracy: 0.8348 - val_loss: 0.4758\n", + "Epoch 4/5\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.8429 - loss: 0.4581 - val_accuracy: 0.8376 - val_loss: 0.4674\n", + "Epoch 5/5\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.8459 - loss: 0.4462 - val_accuracy: 0.8440 - val_loss: 0.4437\n", + "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 2ms/step - accuracy: 0.8420 - loss: 0.4582\n", + "Loss: 0.47\n", + "Accuracy: 83.73%\n" + ] + } + ], + "source": [ "# Compile the model using `model.compile()`\n", - "\n", + "model.compile(\n", + " loss='categorical_crossentropy', # Loss function\n", + " optimizer='sgd', # Optimizer\n", + " metrics=['accuracy'] # Metrics to evaluate the model\n", + ")\n", "# Train the model with `model.fit()`\n", + "model.fit(\n", + " X_train, # Training data\n", + " y_train, # Training labels\n", + " epochs=5, # Number of epochs\n", + " batch_size=32, # Number of samples per batch\n", + " validation_split=0.2 # Use 20% of the data for validation\n", + ")\n", + "# Evaluate the model with `model.evaluate()`\n", + "loss, accuracy = model.evaluate(X_test, y_test)\n", "\n", - "# Evaluate the model with `model.evaluate()`" + "print(f'Loss: {loss:.2f}')\n", + "print(f'Accuracy: {accuracy*100:.2f}%')" ] }, { @@ -127,7 +369,199 @@ "source": [ "Reflection: What is the performance of the baseline model? How does it compare to what you expected? Why do you think the performance is at this level?\n", "\n", - "**Your answer here**" + "**Your answer here**: This is a decent first result. Linear Regression is simple with an assumption that a linear rleationship between features exists. In thi case the relatively good results is expected because the images are fairly simple. I will run another test to see if i get similar results" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "5cb9e339", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\karma\\miniconda3\\envs\\dsi_participant\\lib\\site-packages\\keras\\src\\layers\\reshaping\\flatten.py:37: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.\n", + " super().__init__(**kwargs)\n" + ] + } + ], + "source": [ + "from keras.models import Sequential\n", + "from keras.layers import Dense, Flatten\n", + "\n", + "# Create baseline linear regression model\n", + "baseline_model = Sequential([\n", + " Flatten(input_shape=(28, 28)), # Flatten 28x28 images to 1D vectors\n", + " Dense(10, activation='softmax') # Output layer with 10 classes\n", + "])" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "def1e409", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
Model: \"sequential_21\"\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1mModel: \"sequential_21\"\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
+       "┃ Layer (type)                     Output Shape                  Param # ┃\n",
+       "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
+       "│ flatten_21 (Flatten)            │ (None, 784)            │             0 │\n",
+       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
+       "│ dense_41 (Dense)                │ (None, 10)             │         7,850 │\n",
+       "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
+       "
\n" + ], + "text/plain": [ + "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n", + "┃\u001b[1m \u001b[0m\u001b[1mLayer (type) \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m Param #\u001b[0m\u001b[1m \u001b[0m┃\n", + "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n", + "│ flatten_21 (\u001b[38;5;33mFlatten\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m784\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", + "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", + "│ dense_41 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m) │ \u001b[38;5;34m7,850\u001b[0m │\n", + "└─────────────────────────────────┴────────────────────────┴───────────────┘\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
 Total params: 7,850 (30.66 KB)\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m7,850\u001b[0m (30.66 KB)\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
 Trainable params: 7,850 (30.66 KB)\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m7,850\u001b[0m (30.66 KB)\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
 Non-trainable params: 0 (0.00 B)\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "# Compile the model\n", + "baseline_model.compile(\n", + " optimizer='adam',\n", + " loss='categorical_crossentropy',\n", + " metrics=['accuracy']\n", + ")\n", + "\n", + "# Display model summary\n", + "baseline_model.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "1655c54c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/10\n", + "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 3ms/step - accuracy: 0.6550 - loss: 1.0561 - val_accuracy: 0.8127 - val_loss: 0.5703\n", + "Epoch 2/10\n", + "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 2ms/step - accuracy: 0.8211 - loss: 0.5495 - val_accuracy: 0.8252 - val_loss: 0.5122\n", + "Epoch 3/10\n", + "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 2ms/step - accuracy: 0.8345 - loss: 0.4909 - val_accuracy: 0.8392 - val_loss: 0.4798\n", + "Epoch 4/10\n", + "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 3ms/step - accuracy: 0.8426 - loss: 0.4725 - val_accuracy: 0.8428 - val_loss: 0.4615\n", + "Epoch 5/10\n", + "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 2ms/step - accuracy: 0.8490 - loss: 0.4421 - val_accuracy: 0.8457 - val_loss: 0.4518\n", + "Epoch 6/10\n", + "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 2ms/step - accuracy: 0.8499 - loss: 0.4403 - val_accuracy: 0.8465 - val_loss: 0.4406\n", + "Epoch 7/10\n", + "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 2ms/step - accuracy: 0.8545 - loss: 0.4284 - val_accuracy: 0.8499 - val_loss: 0.4348\n", + "Epoch 8/10\n", + "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 3ms/step - accuracy: 0.8543 - loss: 0.4240 - val_accuracy: 0.8457 - val_loss: 0.4413\n", + "Epoch 9/10\n", + "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 2ms/step - accuracy: 0.8541 - loss: 0.4212 - val_accuracy: 0.8509 - val_loss: 0.4307\n", + "Epoch 10/10\n", + "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 2ms/step - accuracy: 0.8612 - loss: 0.4072 - val_accuracy: 0.8547 - val_loss: 0.4259\n" + ] + } + ], + "source": [ + "\n", + "# Train the baseline model\n", + "history_baseline = baseline_model.fit(\n", + " X_train, y_train,\n", + " epochs=10,\n", + " batch_size=128,\n", + " validation_split=0.2,\n", + ")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "89c47796", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 2ms/step - accuracy: 0.8442 - loss: 0.4423\n", + "\n", + "Baseline Model Loss: 0.46\n", + "\n", + "Baseline Model Accuracy: 83.920002%\n" + ] + } + ], + "source": [ + "# Evaluate on test set\n", + "loss, accuracy = baseline_model.evaluate(X_test, y_test)\n", + "print(f\"\\nBaseline Model Loss: {loss:.2f}\")\n", + "print(f\"\\nBaseline Model Accuracy: {accuracy*100:2f}%\")" ] }, { @@ -151,23 +585,235 @@ }, { "cell_type": "code", - "execution_count": null, - "id": "3513cf3d", + "execution_count": 53, + "id": "24327cf3", "metadata": {}, "outputs": [], "source": [ - "from keras.layers import Conv2D\n", + "#!pip install tensorflow" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "id": "3513cf3d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
Model: \"sequential_22\"\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1mModel: \"sequential_22\"\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
+       "┃ Layer (type)                     Output Shape                  Param # ┃\n",
+       "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
+       "│ conv2d_19 (Conv2D)              │ (None, 26, 26, 32)     │           320 │\n",
+       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
+       "│ max_pooling2d_14 (MaxPooling2D) │ (None, 13, 13, 32)     │             0 │\n",
+       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
+       "│ conv2d_20 (Conv2D)              │ (None, 11, 11, 64)     │        18,496 │\n",
+       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
+       "│ max_pooling2d_15 (MaxPooling2D) │ (None, 5, 5, 64)       │             0 │\n",
+       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
+       "│ flatten_22 (Flatten)            │ (None, 1600)           │             0 │\n",
+       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
+       "│ dense_42 (Dense)                │ (None, 128)            │       204,928 │\n",
+       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
+       "│ dropout_23 (Dropout)            │ (None, 128)            │             0 │\n",
+       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
+       "│ dense_43 (Dense)                │ (None, 10)             │         1,290 │\n",
+       "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
+       "
\n" + ], + "text/plain": [ + "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n", + "┃\u001b[1m \u001b[0m\u001b[1mLayer (type) \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m Param #\u001b[0m\u001b[1m \u001b[0m┃\n", + "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n", + "│ conv2d_19 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m26\u001b[0m, \u001b[38;5;34m26\u001b[0m, \u001b[38;5;34m32\u001b[0m) │ \u001b[38;5;34m320\u001b[0m │\n", + "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", + "│ max_pooling2d_14 (\u001b[38;5;33mMaxPooling2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m13\u001b[0m, \u001b[38;5;34m13\u001b[0m, \u001b[38;5;34m32\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", + "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", + "│ conv2d_20 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m11\u001b[0m, \u001b[38;5;34m11\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m18,496\u001b[0m │\n", + "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", + "│ max_pooling2d_15 (\u001b[38;5;33mMaxPooling2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m5\u001b[0m, \u001b[38;5;34m5\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", + "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", + "│ flatten_22 (\u001b[38;5;33mFlatten\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m1600\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", + "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", + "│ dense_42 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m128\u001b[0m) │ \u001b[38;5;34m204,928\u001b[0m │\n", + "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", + "│ dropout_23 (\u001b[38;5;33mDropout\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m128\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", + "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", + "│ dense_43 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m) │ \u001b[38;5;34m1,290\u001b[0m │\n", + "└─────────────────────────────────┴────────────────────────┴───────────────┘\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
 Total params: 225,034 (879.04 KB)\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m225,034\u001b[0m (879.04 KB)\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
 Trainable params: 225,034 (879.04 KB)\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m225,034\u001b[0m (879.04 KB)\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
 Non-trainable params: 0 (0.00 B)\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from tensorflow.keras.layers import Conv2D, MaxPooling2D, Dropout\n", "\n", "# Reshape the data to include the channel dimension\n", - "X_train = X_train.reshape(-1, 28, 28, 1)\n", - "X_test = X_test.reshape(-1, 28, 28, 1)\n", + "X_train_cnn = X_train.reshape(-1, 28, 28, 1)\n", + "X_test_cnn = X_test.reshape(-1, 28, 28, 1)\n", "\n", "# Create a simple CNN model\n", - "model = Sequential()\n", + "cnn_model = Sequential([\n", + " #input layer\n", + " Input(shape=(28, 28, 1)),\n", + " #hidden layers\n", + " Conv2D(32, (3, 3), activation='relu'),\n", + " MaxPooling2D((2, 2)),\n", + " Conv2D(64, (3, 3), activation='relu'),\n", + " MaxPooling2D((2, 2)),\n", + " Flatten(),\n", + " Dense(128, activation='relu'),\n", + " Dropout(0.5),\n", + " Dense(10, activation='softmax'),\n", + "])\n", + "\n", + "# Compile the CNN model\n", + "cnn_model.compile(\n", + " optimizer='adam', # Optimizer\n", + " loss='categorical_crossentropy', # Loss function\n", + " # SGD(learning_rate = 0.0001, momentum = 0.9),\n", + " metrics=['accuracy'] # Metrics to evaluate the model\n", + ")\n", "\n", + "cnn_model.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "id": "20f89d0d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/5\n", + "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 25ms/step - accuracy: 0.6449 - loss: 0.9976 - val_accuracy: 0.8377 - val_loss: 0.4385\n", + "Epoch 2/5\n", + "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 25ms/step - accuracy: 0.8251 - loss: 0.4806 - val_accuracy: 0.8692 - val_loss: 0.3649\n", + "Epoch 3/5\n", + "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 26ms/step - accuracy: 0.8514 - loss: 0.4080 - val_accuracy: 0.8718 - val_loss: 0.3476\n", + "Epoch 4/5\n", + "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 24ms/step - accuracy: 0.8669 - loss: 0.3692 - val_accuracy: 0.8840 - val_loss: 0.3125\n", + "Epoch 5/5\n", + "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 24ms/step - accuracy: 0.8767 - loss: 0.3407 - val_accuracy: 0.8868 - val_loss: 0.3052\n" + ] + } + ], + "source": [ "# Train the model\n", + "history_cnn = cnn_model.fit(\n", + " X_train_cnn, y_train,\n", + " epochs=5,\n", + " batch_size=128,\n", + " validation_split=0.2\n", + ")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "id": "6b4d57e0", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGxCAYAAACwbLZkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8ekN5oAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA6k0lEQVR4nO3df3hU1YH/8c/NTDJJIBkIP0KAIEEQ5aeYWI0Vq6bCkjYr1ra2ugqt2zYtipqHVkC/a7F201Zb0VVAVvAXrdpuwKYFFVpNwAUtsUFQQnQ1/AqJGJUMBJjJzNzvH0mGTDL5MSHJzcT363nuk9wz5957Tg6P8/HcM3cM0zRNAQAAWCTK6gYAAIAvNsIIAACwFGEEAABYijACAAAsRRgBAACWIowAAABLEUYAAIClCCMAAMBShBEAAGApwgiAs/L000/LMAyVlJRY3RQAEYowAgAALEUYAQAAliKMAOhxb7zxhrKyspSQkKD4+Hhddtll2rhxY1CdkydPatGiRUpLS1NsbKySkpKUkZGh559/PlDno48+0ne+8x2NHDlSDodDycnJysrK0q5du3q5RwC6k93qBgDo34qLi3XNNddo2rRpWrNmjRwOh1asWKGcnBw9//zzuuGGGyRJeXl5eu655/TAAw9oxowZqqur07vvvqtPP/00cK7s7Gz5fD795je/0ZgxY1RTU6Pt27fr2LFjFvUOQHcwTNM0rW4EgMj19NNP63vf+5527typjIyMVq9nZmbqo48+0ocffqiBAwdKknw+ny688EIdO3ZMBw8elGEYmjp1qsaPH68NGzaEvM6nn36qoUOHavny5brjjjt6tE8Aehe3aQD0mLq6Or311lv65je/GQgikmSz2XTzzTfr8OHDKi8vlyR96Utf0ssvv6zFixerqKhIp06dCjpXUlKSzj33XD344IP63e9+p9LSUvn9/l7tD4CeQRgB0GM+//xzmaaplJSUVq+NHDlSkgK3YR599FHdfffdeumll3TVVVcpKSlJc+fO1QcffCBJMgxDf//73zV79mz95je/0UUXXaRhw4Zp4cKFOn78eO91CkC3I4wA6DGDBw9WVFSUqqqqWr125MgRSdLQoUMlSQMGDNCyZcu0b98+VVdXa+XKlXrzzTeVk5MTOOacc87RmjVrVF1drfLyct11111asWKFfvrTn/ZOhwD0CMIIgB4zYMAAXXLJJVq/fn3QbRe/369169Zp9OjROu+881odl5ycrPnz5+u73/2uysvLdfLkyVZ1zjvvPN17772aOnWq/vnPf/ZoPwD0LD5NA6BbvPbaa9q/f3+r8vz8fF1zzTW66qqrtGjRIsXExGjFihV699139fzzz8swDEnSJZdcoq9//euaNm2aBg8erLKyMj333HPKzMxUfHy8du/erdtuu03f+ta3NGHCBMXExOi1117T7t27tXjx4l7uLYDuRBgB0C3uvvvukOUVFRV67bXXdN9992n+/Pny+/2aPn26CgsL9fWvfz1Q7+qrr1ZhYaEefvhhnTx5UqNGjdItt9yie+65R5I0YsQInXvuuVqxYoUOHTokwzA0btw4/fa3v9Xtt9/eK30E0DP4aC8AALAUa0YAAIClCCMAAMBShBEAAGCpswoj+fn5MgxDd955Z7v1iouLlZ6ertjYWI0bN06rVq06m8sCAIB+pMthZOfOnVq9erWmTZvWbr2KigplZ2dr5syZKi0t1dKlS7Vw4UIVFBR09dIAAKAf6VIYOXHihG666Sb993//twYPHtxu3VWrVmnMmDFavny5LrjgAv37v/+7vv/97+uhhx7qUoMBAED/0qXnjCxYsEBf+9rX9NWvflUPPPBAu3V37NihWbNmBZXNnj1ba9asUX19vaKjo1sd43a75Xa7A/t+v1+fffaZhgwZEnhAEgAA6NtM09Tx48c1cuRIRUW1Pf8Rdhh54YUX9M9//lM7d+7sVP3q6molJycHlSUnJ8vr9aqmpibkF2jl5+dr2bJl4TYNAAD0QYcOHdLo0aPbfD2sMHLo0CHdcccd2rx5s2JjYzt9XMvZjKbnrLU1y7FkyRLl5eUF9mtrazVmzBgdOnRIiYmJ4TQZAABYxOVyKTU1VQkJCe3WCyuMvP322zp69KjS09MDZT6fT1u3btVjjz0mt9stm80WdMyIESNUXV0dVHb06FHZ7XYNGTIk5HUcDoccDker8sTERMIIAAARpqMlFmGFkaysLO3Zsyeo7Hvf+57OP/983X333a2CiCRlZmbqL3/5S1DZ5s2blZGREXK9CAAA+GIJK4wkJCRoypQpQWUDBgzQkCFDAuVLlixRZWWlnn32WUlSbm6uHnvsMeXl5ekHP/iBduzYoTVr1uj555/vpi4AAIBI1u1PYK2qqtLBgwcD+2lpadq0aZOKiop04YUX6he/+IUeffRRXX/99d19aQAAEIEi4lt7XS6XnE6namtrWTMCABHMNE15vV75fD6rm4JuYLPZZLfb21wT0tn37y49ZwQAgHB5PB5VVVXp5MmTVjcF3Sg+Pl4pKSmKiYnp8jkIIwCAHuf3+1VRUSGbzaaRI0cqJiaGh1hGONM05fF49Mknn6iiokITJkxo98Fm7SGMAAB6nMfjkd/vV2pqquLj461uDrpJXFycoqOjdeDAAXk8nrCeQdZcty9gBQCgLV39P2f0Xd0xpvyrAAAAliKMAAAASxFGAADoJWPHjtXy5cutbkafwwJWAADaceWVV+rCCy/slhCxc+dODRgw4Owb1c8QRgAAOAumacrn88lu7/gtddiwYb3QosjDbRoAgCVM09RJj7fXt3AePD5//nwVFxfrkUcekWEYMgxDTz/9tAzD0KuvvqqMjAw5HA5t27ZNH374oa699lolJydr4MCBuvjii/W3v/0t6Hwtb9MYhqEnn3xS1113neLj4zVhwgQVFhZ21584YjAzAgCwxKl6nyb9x6u9ft29989WfEzn3v4eeeQRvf/++5oyZYruv/9+SdJ7770nSfrZz36mhx56SOPGjdOgQYN0+PBhZWdn64EHHlBsbKyeeeYZ5eTkqLy8XGPGjGnzGsuWLdNvfvMbPfjgg/qv//ov3XTTTTpw4ICSkpLOvrMRgpkRAADa4HQ6FRMTo/j4eI0YMUIjRoyQzWaTJN1///265pprdO6552rIkCGaPn26fvSjH2nq1KmaMGGCHnjgAY0bN67DmY758+fru9/9rsaPH6///M//VF1dnf7xj3/0Rvf6DGZGAACWiIu2ae/9sy25bnfIyMgI2q+rq9OyZcv017/+VUeOHJHX69WpU6eCvsk+lGnTpgV+HzBggBISEnT06NFuaWOkIIwAACxhGEanb5f0RS0/FfPTn/5Ur776qh566CGNHz9ecXFx+uY3vymPx9PueaKjo4P2DcOQ3+/v9vb2ZZH7rwAAgF4QExMjn8/XYb1t27Zp/vz5uu666yRJJ06c0P79+3u4df0Da0YAAGjH2LFj9dZbb2n//v2qqalpc9Zi/PjxWr9+vXbt2qV33nlHN9544xduhqOrCCMAALRj0aJFstlsmjRpkoYNG9bmGpCHH35YgwcP1mWXXaacnBzNnj1bF110US+3NjIZZjgfuLaIy+WS0+lUbW2tEhMTrW4OACBMp0+fVkVFhdLS0rr8NfPom9ob286+fzMzAgAALEUYAQAAliKMAAAASxFGAACApQgjAADAUoQRAABgKcIIAACwFGEEAABYijACAAAsRRgBAKAHjR07VsuXLw/sG4ahl156qc36+/fvl2EY2rVr11ldt7vO0xv41l4AAHpRVVWVBg8e3K3nnD9/vo4dOxYUclJTU1VVVaWhQ4d267V6AmEEAIBeNGLEiF65js1m67VrnS1u0wAArGGakqeu97cwvh/2iSee0KhRo+T3+4PK//Vf/1Xz5s3Thx9+qGuvvVbJyckaOHCgLr74Yv3tb39r95wtb9P84x//0IwZMxQbG6uMjAyVlpYG1ff5fLr11luVlpamuLg4TZw4UY888kjg9Z///Od65pln9Oc//1mGYcgwDBUVFYW8TVNcXKwvfelLcjgcSklJ0eLFi+X1egOvX3nllVq4cKF+9rOfKSkpSSNGjNDPf/7zTv+9uoqZEQCANepPSv85svevu/SIFDOgU1W/9a1vaeHChXr99deVlZUlSfr888/16quv6i9/+YtOnDih7OxsPfDAA4qNjdUzzzyjnJwclZeXa8yYMR2ev66uTl//+td19dVXa926daqoqNAdd9wRVMfv92v06NH64x//qKFDh2r79u364Q9/qJSUFH3729/WokWLVFZWJpfLpaeeekqSlJSUpCNHjgSdp7KyUtnZ2Zo/f76effZZ7du3Tz/4wQ8UGxsbFDieeeYZ5eXl6a233tKOHTs0f/58ffnLX9Y111zTqb9ZVxBGAABoQ1JSkv7lX/5Ff/jDHwJh5E9/+pOSkpKUlZUlm82m6dOnB+o/8MAD2rBhgwoLC3Xbbbd1eP7f//738vl8Wrt2reLj4zV58mQdPnxYP/7xjwN1oqOjtWzZssB+Wlqatm/frj/+8Y/69re/rYEDByouLk5ut7vd2zIrVqxQamqqHnvsMRmGofPPP19HjhzR3Xffrf/4j/9QVFTDzZJp06bpvvvukyRNmDBBjz32mP7+978TRgAA/VB0fMMshRXXDcNNN92kH/7wh1qxYoUcDod+//vf6zvf+Y5sNpvq6uq0bNky/fWvf9WRI0fk9Xp16tQpHTx4sFPnLisr0/Tp0xUff6ZNmZmZreqtWrVKTz75pA4cOKBTp07J4/HowgsvDKsfZWVlyszMlGEYgbIvf/nLOnHihA4fPhyYyZk2bVrQcSkpKTp69GhY1woXYQQAYA3D6PTtEivl5OTI7/dr48aNuvjii7Vt2zb97ne/kyT99Kc/1auvvqqHHnpI48ePV1xcnL75zW/K4/F06txmJ9av/PGPf9Rdd92l3/72t8rMzFRCQoIefPBBvfXWW2H1wzTNoCDS/PrNy6Ojo4PqGIbRas1MdwtrAevKlSs1bdo0JSYmKjExUZmZmXr55ZfbrF9UVBRYTNN827dv31k3HACA3hAXF6dvfOMb+v3vf6/nn39e5513ntLT0yVJ27Zt0/z583Xddddp6tSpGjFihPbv39/pc0+aNEnvvPOOTp06FSh78803g+ps27ZNl112mX7yk59oxowZGj9+vD788MOgOjExMfL5fB1ea/v27UEBaPv27UpISNCoUaM63eaeEFYYGT16tH71q1+ppKREJSUluvrqq3Xttdfqvffea/e48vJyVVVVBbYJEyacVaMBAOhNN910kzZu3Ki1a9fq3/7t3wLl48eP1/r167Vr1y698847uvHGG8OaRbjxxhsVFRWlW2+9VXv37tWmTZv00EMPBdUZP368SkpK9Oqrr+r999/X//t//087d+4MqjN27Fjt3r1b5eXlqqmpUX19fatr/eQnP9GhQ4d0++23a9++ffrzn/+s++67T3l5eYH1IlYJ6+o5OTnKzs7Weeedp/POO0+//OUvNXDgwFYprqXhw4drxIgRgc1ms51VowEA6E1XX321kpKSVF5erhtvvDFQ/vDDD2vw4MG67LLLlJOTo9mzZ+uiiy7q9HkHDhyov/zlL9q7d69mzJihe+65R7/+9a+D6uTm5uob3/iGbrjhBl1yySX69NNP9ZOf/CSozg9+8ANNnDhRGRkZGjZsmP73f/+31bVGjRqlTZs26R//+IemT5+u3Nxc3Xrrrbr33nvD/Gt0P8PszA2rEHw+n/70pz9p3rx5Ki0t1aRJk1rVKSoq0lVXXaWxY8fq9OnTmjRpku69915dddVV7Z7b7XbL7XYH9l0ul1JTU1VbW6vExMSuNBcAYKHTp0+roqJCaWlpio2Ntbo56Ebtja3L5ZLT6ezw/TvseZk9e/Zo4MCBcjgcys3N1YYNG0IGEalhBe7q1atVUFCg9evXa+LEicrKytLWrVvbvUZ+fr6cTmdgS01NDbeZAAAgQoQ9M+LxeHTw4EEdO3ZMBQUFevLJJ1VcXNxmIGkpJydHhmGosLCwzTrMjABA/8LMSP/VHTMjYX+0NyYmRuPHj5ckZWRkaOfOnXrkkUf0xBNPdOr4Sy+9VOvWrWu3jsPhkMPhCLdpAAAgAp318lnTNINmMTpSWlqqlJSUs70sAADoJ8KaGVm6dKnmzJmj1NRUHT9+XC+88IKKior0yiuvSJKWLFmiyspKPfvss5Kk5cuXa+zYsZo8ebI8Ho/WrVungoICFRQUdH9PAAB9Xhc/M4E+rDvGNKww8vHHH+vmm29WVVWVnE6npk2bpldeeSXwvPqqqqqgR+B6PB4tWrRIlZWViouL0+TJk7Vx40ZlZ2efdcMBAJGj6ameJ0+eVFxcnMWtQXc6efKkpNZPbg1Hlz/a25s6uwAGANB3VVVV6dixYxo+fLji4+NbPZockcU0TZ08eVJHjx7VoEGDQi7B6LEFrAAAdEXTN8r29JeuoXcNGjSo3W8L7gzCCACgVxiGoZSUFA0fPjzk48oReaKjo7vlqeqEEQBAr7LZbHwtCIJY+804AADgC48wAgAALEUYAQAAliKMAAAASxFGAACApQgjAADAUoQRAABgKcIIAACwFGEEAABYijACAAAsRRgBAACWIowAAABLEUYAAIClCCMAAMBShBEAAGApwggAALAUYQQAAFiKMAIAACxFGAEAAJYijAAAAEsRRgAAgKUIIwAAwFKEEQAAYCnCCAAAsBRhBAAAWIowAgAALEUYAQAAliKMAAAASxFGAACApQgjAADAUoQRAABgKcIIAACwVFhhZOXKlZo2bZoSExOVmJiozMxMvfzyy+0eU1xcrPT0dMXGxmrcuHFatWrVWTUYAAD0L2GFkdGjR+tXv/qVSkpKVFJSoquvvlrXXnut3nvvvZD1KyoqlJ2drZkzZ6q0tFRLly7VwoULVVBQ0C2NBwAAkc8wTdM8mxMkJSXpwQcf1K233trqtbvvvluFhYUqKysLlOXm5uqdd97Rjh07On0Nl8slp9Op2tpaJSYmnk1zAQBAL+ns+3eX14z4fD698MILqqurU2ZmZsg6O3bs0KxZs4LKZs+erZKSEtXX17d5brfbLZfLFbQBAID+KewwsmfPHg0cOFAOh0O5ubnasGGDJk2aFLJudXW1kpOTg8qSk5Pl9XpVU1PT5jXy8/PldDoDW2pqarjNBAAAESLsMDJx4kTt2rVLb775pn784x9r3rx52rt3b5v1DcMI2m+6K9SyvLklS5aotrY2sB06dCjcZgIAgAhhD/eAmJgYjR8/XpKUkZGhnTt36pFHHtETTzzRqu6IESNUXV0dVHb06FHZ7XYNGTKkzWs4HA45HI5wmwYAACLQWT9nxDRNud3ukK9lZmZqy5YtQWWbN29WRkaGoqOjz/bSAACgHwgrjCxdulTbtm3T/v37tWfPHt1zzz0qKirSTTfdJKnh9sott9wSqJ+bm6sDBw4oLy9PZWVlWrt2rdasWaNFixZ1by8AAEDECus2zccff6ybb75ZVVVVcjqdmjZtml555RVdc801kqSqqiodPHgwUD8tLU2bNm3SXXfdpccff1wjR47Uo48+quuvv757ewEAACLWWT9npDfwnBEAACJPjz9nBAAAoDsQRgAAgKUIIwAAwFKEEQAAYCnCCAAAsBRhBAAAWIowAgAALEUYAQAAliKMAAAASxFGAACApQgjAADAUoQRAABgKcIIAACwFGEEAABYijACAAAsRRgBAACWIowAAABLEUYAAIClCCMAAMBShBEAAGApwggAALAUYQQAAFiKMAIAACxFGAEAAJYijAAAAEsRRgAAgKUIIwAAwFKEEQAAYCnCCAAAsBRhBAAAWIowAgAALEUYAQAAliKMAAAASxFGAACApQgjAADAUmGFkfz8fF188cVKSEjQ8OHDNXfuXJWXl7d7TFFRkQzDaLXt27fvrBoOAAD6h7DCSHFxsRYsWKA333xTW7Zskdfr1axZs1RXV9fhseXl5aqqqgpsEyZM6HKjAQBA/2EPp/Irr7wStP/UU09p+PDhevvtt3XFFVe0e+zw4cM1aNCgsBsIAAD6t7NaM1JbWytJSkpK6rDujBkzlJKSoqysLL3++uvt1nW73XK5XEEbAADon7ocRkzTVF5eni6//HJNmTKlzXopKSlavXq1CgoKtH79ek2cOFFZWVnaunVrm8fk5+fL6XQGttTU1K42EwAA9HGGaZpmVw5csGCBNm7cqDfeeEOjR48O69icnBwZhqHCwsKQr7vdbrnd7sC+y+VSamqqamtrlZiY2JXmAgCAXuZyueR0Ojt8/+7SzMjtt9+uwsJCvf7662EHEUm69NJL9cEHH7T5usPhUGJiYtAGAAD6p7AWsJqmqdtvv10bNmxQUVGR0tLSunTR0tJSpaSkdOlYAADQv4QVRhYsWKA//OEP+vOf/6yEhARVV1dLkpxOp+Li4iRJS5YsUWVlpZ599llJ0vLlyzV27FhNnjxZHo9H69atU0FBgQoKCrq5KwAAIBKFFUZWrlwpSbryyiuDyp966inNnz9fklRVVaWDBw8GXvN4PFq0aJEqKysVFxenyZMna+PGjcrOzj67lgMAgH6hywtYe1NnF8AAAIC+o0cXsAIAAHQXwggAALAUYQQAAFiKMAIAACxFGAEAAJYijAAAAEsRRgAAgKUIIwAAwFKEEQAAYCnCCAAAsBRhBAAAWIowAgAALEUYAQAAliKMAAAASxFGAACApQgjAADAUoQRAABgKcIIAACwFGEEAABYijACAAAsRRgBAACWIowAAABLEUYAAIClCCMAAMBShBEAAGApwggAALAUYQQAAFiKMAIAACxFGAEAAJYijAAAAEsRRgAAgKUIIwAAwFKEEQAAYCnCCAAAsBRhBAAAWIowAgAALBVWGMnPz9fFF1+shIQEDR8+XHPnzlV5eXmHxxUXFys9PV2xsbEaN26cVq1a1eUGAwCA/iWsMFJcXKwFCxbozTff1JYtW+T1ejVr1izV1dW1eUxFRYWys7M1c+ZMlZaWaunSpVq4cKEKCgrOuvEAACDyGaZpml09+JNPPtHw4cNVXFysK664ImSdu+++W4WFhSorKwuU5ebm6p133tGOHTtCHuN2u+V2uwP7LpdLqampqq2tVWJiYlebCwAAepHL5ZLT6ezw/fus1ozU1tZKkpKSktqss2PHDs2aNSuobPbs2SopKVF9fX3IY/Lz8+V0OgNbamrq2TQTAAD0YV0OI6ZpKi8vT5dffrmmTJnSZr3q6molJycHlSUnJ8vr9aqmpibkMUuWLFFtbW1gO3ToUFebCQAA+jh7Vw+87bbbtHv3br3xxhsd1jUMI2i/6c5Qy/ImDodDDoejq00DAAARpEth5Pbbb1dhYaG2bt2q0aNHt1t3xIgRqq6uDio7evSo7Ha7hgwZ0pXLAwCAfiSs2zSmaeq2227T+vXr9dprryktLa3DYzIzM7Vly5agss2bNysjI0PR0dHhtRYAAPQ7YYWRBQsWaN26dfrDH/6ghIQEVVdXq7q6WqdOnQrUWbJkiW655ZbAfm5urg4cOKC8vDyVlZVp7dq1WrNmjRYtWtR9vQAAABErrDCycuVK1dbW6sorr1RKSkpge/HFFwN1qqqqdPDgwcB+WlqaNm3apKKiIl144YX6xS9+oUcffVTXX3999/UCAABErLN6zkhv6eznlAEAQN/RK88ZAQAAOFuEEQAAYCnCCAAAsBRhBAAAWIowAgAALEUYAQAAliKMAAAASxFGAACApQgjAADAUoQRAABgKcIIAACwFGEEAABYijACAAAsRRgBAACWIowAAABLEUYAAIClCCMAAMBShBEAAGApwggAALAUYQQAAFiKMAIAACxFGAEAAJYijAAAAEsRRgAAgKUIIwAAwFKEEQAAYCnCCAAAsBRhBAAAWIowAgAALEUYAQAAliKMAAAASxFGAACApQgjAADAUoQRAABgKcIIAACwVNhhZOvWrcrJydHIkSNlGIZeeumldusXFRXJMIxW2759+7raZgAA0I/Ywz2grq5O06dP1/e+9z1df/31nT6uvLxciYmJgf1hw4aFe2kAANAPhR1G5syZozlz5oR9oeHDh2vQoEFhHwcAAPq3XlszMmPGDKWkpCgrK0uvv/56u3XdbrdcLlfQBgAA+qceDyMpKSlavXq1CgoKtH79ek2cOFFZWVnaunVrm8fk5+fL6XQGttTU1J5uJgAAsIhhmqbZ5YMNQxs2bNDcuXPDOi4nJ0eGYaiwsDDk6263W263O7DvcrmUmpqq2traoHUnAACg73K5XHI6nR2+f1vy0d5LL71UH3zwQZuvOxwOJSYmBm0AAKB/siSMlJaWKiUlxYpLAwCAPibsT9OcOHFC//d//xfYr6io0K5du5SUlKQxY8ZoyZIlqqys1LPPPitJWr58ucaOHavJkyfL4/Fo3bp1KigoUEFBQff1AgAARKyww0hJSYmuuuqqwH5eXp4kad68eXr66adVVVWlgwcPBl73eDxatGiRKisrFRcXp8mTJ2vjxo3Kzs7uhuYDAIBId1YLWHtLZxfAAACAvqNPL2AFAABoQhgBAACWIowAAABLEUYAAIClCCMAAMBShBEAAGApwggAALAUYQQAAFiKMAIAACxFGAEAAJYijAAAAEsRRgAAgKUIIwAAwFKEEQAAYCnCCAAAsBRhBAAAWIowAgAALEUYAQAAliKMAAAASxFGAACApQgjAADAUoQRAABgKcIIAACwFGEEAABYijACAAAsRRgBAACWIowA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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(history_cnn.history['loss'], label='train')\n", + "plt.plot(history_cnn.history['val_loss'], label='validation')\n", + "plt.ylim(0, 4)\n", + "plt.legend(loc='best')\n", + "plt.title('Loss');" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "id": "32329be0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 3ms/step - accuracy: 0.8842 - loss: 0.3205\n", + "Loss: 0.32\n", + "Accuracy: 88.26%\n" + ] + } + ], + "source": [ + "4# Evaluate the model\n", + "loss, accuracy = cnn_model.evaluate(X_test_cnn, y_test)\n", "\n", - "# Evaluate the model" + "print(f'Loss: {loss:.2f}')\n", + "print(f'Accuracy: {accuracy*100:.2f}%')" ] }, { @@ -177,7 +823,8 @@ "source": [ "Reflection: Did the CNN model perform better than the baseline model? If so, by how much? What do you think contributed to this improvement?\n", "\n", - "**Your answer here**" + "**Your answer here**\n", + "~4% improvement with adam oprimizer and 2 additional Conv2D Layers added. The additional layers are great for non linear relationships. in the case where two objects are similar but not the same. this model perfoms better at distiguishing especially that we have sweatshirts and shirts that may pass for linear regression but higher llikely for differentiation with more sophisticated CNN model. The sofistiaction is still limited in that it is too complex a model for a small dataset" ] }, { @@ -185,7 +832,7 @@ "id": "1a5e2463", "metadata": {}, "source": [ - "# 3. Designing and Running Controlled Experiments\n", + "# 4. Designing and Running Controlled Experiments\n", "\n", "In this section, you will design and run controlled experiments to improve the model's performance. You will focus on one hyperparameter and one regularization technique.\n", "You should:\n", @@ -201,22 +848,200 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 58, "id": "99d6f46c", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 5ms/step - accuracy: 0.7101 - loss: 0.8454 - val_accuracy: 0.8250 - val_loss: 0.4972\n", + "Epoch 2/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 5ms/step - accuracy: 0.8337 - loss: 0.4637 - val_accuracy: 0.8478 - val_loss: 0.4216\n", + "Epoch 3/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 5ms/step - accuracy: 0.8589 - loss: 0.4006 - val_accuracy: 0.8598 - val_loss: 0.3953\n", + "Epoch 4/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 5ms/step - accuracy: 0.8679 - loss: 0.3678 - val_accuracy: 0.8618 - val_loss: 0.3818\n", + "Epoch 5/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 5ms/step - accuracy: 0.8787 - loss: 0.3399 - val_accuracy: 0.8725 - val_loss: 0.3597\n", + "Epoch 6/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 5ms/step - accuracy: 0.8827 - loss: 0.3251 - val_accuracy: 0.8752 - val_loss: 0.3433\n", + "Epoch 7/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 6ms/step - accuracy: 0.8872 - loss: 0.3152 - val_accuracy: 0.8761 - val_loss: 0.3370\n", + "Epoch 8/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 5ms/step - accuracy: 0.8894 - loss: 0.3028 - val_accuracy: 0.8767 - val_loss: 0.3443\n", + "Epoch 9/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 6ms/step - accuracy: 0.8965 - loss: 0.2874 - val_accuracy: 0.8758 - val_loss: 0.3376\n", + "Epoch 10/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 5ms/step - accuracy: 0.9007 - loss: 0.2746 - val_accuracy: 0.8861 - val_loss: 0.3228\n", + "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 3ms/step - accuracy: 0.8812 - loss: 0.3431\n", + "Epoch 1/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m16s\u001b[0m 11ms/step - accuracy: 0.7073 - loss: 0.8437 - val_accuracy: 0.8334 - val_loss: 0.4691\n", + "Epoch 2/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m17s\u001b[0m 11ms/step - accuracy: 0.8407 - loss: 0.4484 - val_accuracy: 0.8503 - val_loss: 0.4195\n", + "Epoch 3/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m17s\u001b[0m 11ms/step - accuracy: 0.8566 - loss: 0.3992 - val_accuracy: 0.8624 - val_loss: 0.3904\n", + "Epoch 4/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m17s\u001b[0m 12ms/step - accuracy: 0.8708 - loss: 0.3649 - val_accuracy: 0.8654 - val_loss: 0.3735\n", + "Epoch 5/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m17s\u001b[0m 11ms/step - accuracy: 0.8767 - loss: 0.3457 - val_accuracy: 0.8674 - val_loss: 0.3601\n", + "Epoch 6/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m17s\u001b[0m 11ms/step - accuracy: 0.8819 - loss: 0.3285 - val_accuracy: 0.8767 - val_loss: 0.3455\n", + "Epoch 7/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m17s\u001b[0m 11ms/step - accuracy: 0.8892 - loss: 0.3107 - val_accuracy: 0.8820 - val_loss: 0.3388\n", + "Epoch 8/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m16s\u001b[0m 11ms/step - accuracy: 0.8910 - loss: 0.3006 - val_accuracy: 0.8811 - val_loss: 0.3372\n", + "Epoch 9/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m15s\u001b[0m 10ms/step - accuracy: 0.8979 - loss: 0.2823 - val_accuracy: 0.8813 - val_loss: 0.3286\n", + "Epoch 10/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m15s\u001b[0m 10ms/step - accuracy: 0.9007 - loss: 0.2745 - val_accuracy: 0.8852 - val_loss: 0.3224\n", + "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 4ms/step - accuracy: 0.8795 - loss: 0.3436\n", + "Epoch 1/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m31s\u001b[0m 20ms/step - accuracy: 0.7032 - loss: 0.8546 - val_accuracy: 0.8040 - val_loss: 0.5267\n", + "Epoch 2/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m31s\u001b[0m 21ms/step - accuracy: 0.8370 - loss: 0.4605 - val_accuracy: 0.8441 - val_loss: 0.4366\n", + "Epoch 3/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m31s\u001b[0m 20ms/step - accuracy: 0.8585 - loss: 0.3988 - val_accuracy: 0.8585 - val_loss: 0.4034\n", + "Epoch 4/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m30s\u001b[0m 20ms/step - accuracy: 0.8692 - loss: 0.3717 - val_accuracy: 0.8593 - val_loss: 0.3870\n", + "Epoch 5/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m30s\u001b[0m 20ms/step - accuracy: 0.8753 - loss: 0.3466 - val_accuracy: 0.8705 - val_loss: 0.3664\n", + "Epoch 6/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m28s\u001b[0m 19ms/step - accuracy: 0.8818 - loss: 0.3281 - val_accuracy: 0.8736 - val_loss: 0.3524\n", + "Epoch 7/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m25s\u001b[0m 17ms/step - accuracy: 0.8880 - loss: 0.3113 - val_accuracy: 0.8807 - val_loss: 0.3322\n", + "Epoch 8/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m25s\u001b[0m 17ms/step - accuracy: 0.8909 - loss: 0.2989 - val_accuracy: 0.8816 - val_loss: 0.3343\n", + "Epoch 9/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m25s\u001b[0m 17ms/step - accuracy: 0.8971 - loss: 0.2863 - val_accuracy: 0.8797 - val_loss: 0.3302\n", + "Epoch 10/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m29s\u001b[0m 19ms/step - accuracy: 0.9014 - loss: 0.2725 - val_accuracy: 0.8831 - val_loss: 0.3264\n", + "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 6ms/step - accuracy: 0.8765 - loss: 0.3485\n", + "Epoch 1/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m54s\u001b[0m 36ms/step - accuracy: 0.7038 - loss: 0.8560 - val_accuracy: 0.8325 - val_loss: 0.4712\n", + "Epoch 2/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m50s\u001b[0m 34ms/step - accuracy: 0.8340 - loss: 0.4666 - val_accuracy: 0.8488 - val_loss: 0.4233\n", + "Epoch 3/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m60s\u001b[0m 40ms/step - accuracy: 0.8530 - loss: 0.4088 - val_accuracy: 0.8593 - val_loss: 0.3968\n", + "Epoch 4/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m57s\u001b[0m 38ms/step - accuracy: 0.8647 - loss: 0.3746 - val_accuracy: 0.8628 - val_loss: 0.3831\n", + "Epoch 5/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m50s\u001b[0m 33ms/step - accuracy: 0.8691 - loss: 0.3572 - val_accuracy: 0.8671 - val_loss: 0.3681\n", + "Epoch 6/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m47s\u001b[0m 31ms/step - accuracy: 0.8814 - loss: 0.3297 - val_accuracy: 0.8720 - val_loss: 0.3493\n", + "Epoch 7/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m48s\u001b[0m 32ms/step - accuracy: 0.8877 - loss: 0.3110 - val_accuracy: 0.8763 - val_loss: 0.3423\n", + "Epoch 8/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m46s\u001b[0m 31ms/step - accuracy: 0.8932 - loss: 0.3003 - val_accuracy: 0.8808 - val_loss: 0.3308\n", + "Epoch 9/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m46s\u001b[0m 31ms/step - accuracy: 0.8957 - loss: 0.2863 - val_accuracy: 0.8797 - val_loss: 0.3297\n", + "Epoch 10/10\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m46s\u001b[0m 30ms/step - accuracy: 0.9003 - loss: 0.2772 - val_accuracy: 0.8868 - val_loss: 0.3207\n", + "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 8ms/step - accuracy: 0.8791 - loss: 0.3406\n", + "accuracy values on test set: {'filter_size_10': 0.878600001335144, 'filter_size_32': 0.8754000067710876, 'filter_size_64': 0.8758999705314636, 'filter_size_128': 0.8762000203132629}\n", + "loss values on test set: {'filter_size_10': 0.3501667380332947, 'filter_size_32': 0.34822574257850647, 'filter_size_64': 0.3511199355125427, 'filter_size_128': 0.3461157977581024}\n" + ] + } + ], "source": [ - "# A. Test Hyperparameters" + "# A. Test Hyperparameters \n", + "\n", + "results_history = {}\n", + "results_loss = {}\n", + "results_accuracy = {}\n", + "\n", + "# Test filters in: 10, 32, 64, 128\n", + "for filter_size in [10, 32, 64, 128]:\n", + " # Create a simple CNN model\n", + " model = Sequential()\n", + " model.add(Input((28, 28, 1)))\n", + " model.add(Conv2D(filters=filter_size, kernel_size=(5, 5)))\n", + " model.add(Flatten())\n", + " model.add(Dense(128, activation='relu'))\n", + " model.add(Dense(10, activation=\"softmax\"))\n", + " model.compile(\n", + " loss='categorical_crossentropy', # Loss function\n", + " optimizer='sgd', # Optimizer\n", + " metrics=['accuracy'] # Metrics to evaluate the model\n", + " )\n", + " # Train the model\n", + " history = model.fit(\n", + " X_train, y_train,\n", + " epochs=5, batch_size=32, validation_split=0.2\n", + " )\n", + " results_history[f'filter_size_{filter_size}'] = history\n", + "\n", + " # Evaluate the model\n", + " loss, accuracy = model.evaluate(X_test, y_test)\n", + " results_loss[f'filter_size_{filter_size}'] = loss\n", + " results_accuracy[f'filter_size_{filter_size}'] = accuracy\n", + "\n", + "print(\"accuracy values on test set: \", results_accuracy)\n", + "print(\"loss values on test set: \", results_loss)\n" ] }, { "cell_type": "code", - "execution_count": null, - "id": "dc43ac81", + "execution_count": 59, + "id": "e1d0a709", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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2+jevTs0Gg0+//xz9OnTB97e3ggJCbGf3nKX66+/HgCwdOlSTJ06FQqFAr169ULXrl2xcOFCzJ07F8ePH8fYsWPh5+eHs2fP4pdffrGPjDRXY99dXRYvXoxPP/0UTz/9NLy8vPDzzz/bP9NqtQgPD8ewYcPw2GOP4eGHH8bevXsxYsQIeHl5Qa/XY9euXbj++uvrvaurLunp6Th37hwAwGKx4NSpU/j6668B2O4mu+aaawAAzz33HD799FPceuutWLhwIVQqFf7zn/+gvLy81m3sRG7j7qt+idqSqruE6luq7lrZuXOneMstt4heXl6iRqMRhw4dKn777bcObc2ePVuMiooS/fz8RJVKJXbr1k189tlnxYKCAlEURfHs2bNiQkKC2Lt3b9HLy0v09vYW+/XrJ77zzjui2WxutK8HDhwQAYg9e/Z0KH/ttddEAGJiYmKtbWreoSOKopiSkiL27t1bVCgUIgDx5ZdfFkWx/rt8Grs7pkpz7hISRVGcM2eOGBISIspkMhGA+OOPP9o/++abb8SRI0eKWq1WVKlUYpcuXcS7775b3L59e6P7d0Zj350o1v47VN2VVNdy0003ObS/evVqcciQIfZ/P927dxcfeughce/evS7186abbqp3n9X/XqIoikePHhUnTZokarVa0dPTU4yNjRX37dvn8t+G6EoRRFEUWyscERERETUF7xIiIiIiyeM1LERElURRhMViabCOXC5367wkbaGPRFcCR1iIiCp98sknteY/qbmkp6ezj0Ru4NI1LElJSVi/fj0OHTpkv9tg0aJF6NWrV4PbpaenIzExEX/88QdCQkLwwgsvYPr06Q51UlNT8eKLL+LYsWPo3r07XnvttTqfbUFEdKWcP38eJ06caLBOr1694OPj00o9qq0t9JHoSnApsIwdOxb33nsvBg8eDLPZjLlz5+K3337Dn3/+CS8vrzq3OXHiBPr27YtHH30Ujz/+OH766Sc88cQTSElJsc+TkJWVheHDh+OVV17BHXfcgQ0bNuCll17Crl27MGTIkJY5UiIiImqzmnWX0Llz59CxY0ekp6djxIgRddaZNWsWNm3ahIMHD9rLpk+fjgMHDtifXDplyhQYDAZs2bLFXqdq/oTqj2snIiKi9qlZF90WFhYCaPg5E1lZWYiLi3MoGzNmDFatWmV/zH1WVhaeffbZWnWWLFlS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REQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkuB5aMjAxMnDgRISEhEAQB33zzTaPbpKenY9CgQVCr1ejWrRs++OCDWnVSU1MRHh4OlUqF8PBwbNiwwdWuERER0VXK5cBSUlKC/v37Y9myZU7VP3HiBMaPH4/hw4dj//79+Pe//41nnnkGqamp9jpZWVmYMmUK4uPjceDAAcTHx2Py5MnYvXu3q90jIiKiq5AgiqLY5I0FARs2bMCkSZPqrTNr1ixs2rQJBw8etJdNnz4dBw4cQFZWFgBgypQpMBgM2LJli73O2LFj4efnh5SUlDrbNRqNMBqN9nWDwYDQ0FAUFhZCq9U29ZCIiIioFRkMBuh0ukZ/v6/4NSxZWVmIi4tzKBszZgz27t2LioqKButkZmbW225SUhJ0Op19CQ0NbfnOExERkSRc8cCSl5eHwMBAh7LAwECYzWYUFBQ0WCcvL6/edufMmYPCwkL7kpub2/KdJyIiIknwaI2dCILgsF51Fqp6eV11apZVp1KpoFKpWrCXREREJFVXfIQlKCio1khJfn4+PDw8EBAQ0GCdmqMuRERE1D5d8cASHR2NtLQ0h7Jt27YhKioKCoWiwToxMTFXuntERETUBrh8Sqi4uBhHjx61r584cQLZ2dnw9/dH586dMWfOHJw+fRpr1qwBYLsjaNmyZUhMTMSjjz6KrKwsrFq1yuHunxkzZmDEiBFYtGgRbr/9dmzcuBHbt2/Hrl27WuAQiYiIqK1zeYRl7969iIyMRGRkJAAgMTERkZGReOmllwAAer0eOTk59vphYWHYvHkzduzYgQEDBuCVV17Bu+++i7vuusteJyYmBl9++SU+/vhj9OvXD8nJyVi7di2GDBnS3OMjIiKiq0Cz5mGREmfv4yYiIiLpkMw8LERERETNxcBCREREksfAQkRERJLHwEJERESSx8BCREREksfAQkRERJLHwEJERESSx8BCREREksfAQkRERJLHwEJERESSx8BCREREksfAQkRERJLHwEJERESSx8BCREREksfAQkRERJLHwEJERESSx8BCREREksfAQkRERJLHwEJERESSx8BCREREksfAQkRERJLHwEJERESSx8BCREREksfAQkRERJLHwEJERESSx8BCREREksfAQkRERJLHwEJERESSx8BCREREksfAQkRERJLHwEJERESSx8BCREREksfAQkRERJLHwEJERESSx8BCREREktekwLJ8+XKEhYVBrVZj0KBB2LlzZ711ExISIAhCrSUiIsJeJzk5uc465eXlTekeERERXWVcDixr167FzJkzMXfuXOzfvx/Dhw/HuHHjkJOTU2f9pUuXQq/X25fc3Fz4+/vjnnvucain1Wod6un1eqjV6qYdFREREV1VXA4sb7/9NqZNm4ZHHnkEffr0wZIlSxAaGooVK1bUWV+n0yEoKMi+7N27FxcvXsTDDz/sUE8QBId6QUFBTTsiIiIiuuq4FFhMJhP27duHuLg4h/K4uDhkZmY61caqVaswatQodOnSxaG8uLgYXbp0QadOnTBhwgTs37+/wXaMRiMMBoPDQkRERFcnlwJLQUEBLBYLAgMDHcoDAwORl5fX6PZ6vR5btmzBI4884lDeu3dvJCcnY9OmTUhJSYFarcawYcPw119/1dtWUlISdDqdfQkNDXXlUIiIiKgNadJFt4IgOKyLolirrC7Jycnw9fXFpEmTHMqHDh2KBx98EP3798fw4cOxbt06XHfddXjvvffqbWvOnDkoLCy0L7m5uU05FCIiImoDPFyp3KFDB8jl8lqjKfn5+bVGXWoSRRGrV69GfHw8lEplg3VlMhkGDx7c4AiLSqWCSqVyvvNERETUZrk0wqJUKjFo0CCkpaU5lKelpSEmJqbBbdPT03H06FFMmzat0f2Ioojs7GwEBwe70j0iIiK6Srk0wgIAiYmJiI+PR1RUFKKjo7Fy5Urk5ORg+vTpAGynak6fPo01a9Y4bLdq1SoMGTIEffv2rdXmggULMHToUPTs2RMGgwHvvvsusrOz8f777zfxsIiIiOhq4nJgmTJlCs6fP4+FCxdCr9ejb9++2Lx5s/2uH71eX2tOlsLCQqSmpmLp0qV1tnnp0iU89thjyMvLg06nQ2RkJDIyMnDDDTc04ZCIiIjoaiOIoii6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tfHWW2+hpKQEkydPtpf17t0bycnJ2LRpE1JSUqBWqzFs2DD89ddf9baTlJQEnU5nX0JDQ105FCIiImpDmjTzTM17s0VRdOp+7ZSUFMyfPx9r165Fx46Xn/g4dOhQPPjgg+jfvz+GDx+OdevW4brrrsN7771Xb1tz5sxBYWGhfcnNzW3KoRAREVEb4NJFtx06dIBcLq81mpKfn19r1KWmtWvXYtq0afjqq68watSoBuvKZDIMHjy4wREWlUoFlUrlfOeJiIiozXJphEWpVGLQoEFIS0tzKE9LS0NMTEy926WkpCAhIQFffPEFbr311kb3I4oisrOzERwc7Er3iIiI6Crl8m3NiYmJiI+PR1RUFKKjo7Fy5Urk5ORg+vTpAGynak6fPo01a9YAsIWVhx56CEuXLsXQoUPtozMajQY6nW22vAULFmDo0KHo2bMnDAYD3n33XWRnZ+P9999vqeMkIiKiNszlwDJlyhScP38eCxcuhF6vR9++fbF582Z06dIFAKDX65GTk2Ov/+GHH8JsNuPJJ5/Ek08+aS+fOnUqkpOTAQCXLl3CY489hry8POh0OkRGRiIjIwM33HBDMw+PiIiIrgYuz8MiVZyHhYiIqO25IvOwEBEREbkDAwsRERFJHgMLERERSR4DCxEREUkeAwsRERFJHgMLERERSR4DCxEREUkeAwsRERFJHgMLERERSR4DCxEREUkeAwsRERFJHgMLERERSR4DCxEREUkeAwsRERFJHgMLERERSR4DCxEREUkeAwsRERFJHgMLERERSR4DCxEREUkeAwsRERFJHgMLERERSR4DCxEREUkeAwsRERFJHgMLERERSR4DCxEREUkeAwsRERFJHgMLERERSR4DCxEREUkeAwsRERFJHgMLERERSR4DCxEREUkeAwsRERFJHgMLERERSR4DCxEREUkeAwsRERFJXpMCy/LlyxEWFga1Wo1BgwZh586dDdZPT0/HoEGDoFar0a1bN3zwwQe16qSmpiI8PBwqlQrh4eHYsGFDU7pGREREVyGXA8vatWsxc+ZMzJ07F/v378fw4cMxbtw45OTk1Fn/xIkTGD9+PIYPH479+/fj3//+N5555hmkpqba62RlZWHKlCmIj4/HgQMHEB8fj8mTJ2P37t1NPzIiIiK6agiiKIqubDBkyBAMHDgQK1assJf16dMHkyZNQlJS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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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TZuG+Ph43HjjjZgwYQKeeuopqFQqrFmzBj///DMSExMd/1c/evRoTJ8+HUOHDoWvry+OHTuGjz/+GBEREfDw8MCPP/6IRx99FHfccQf69+8PlUqFb7/9Fj/++COee+65RmucOHEinnzySQBwzKRotVpERkZi165dGDp0aJ2Xs1bXt29faLVafPrppxg0aBC8vLzQrVs3x+Etd7n22msBACtXrsTs2bOhVCoxYMAA9O7dG0uXLsXChQvx+++/Y8qUKfD19cX58+fxww8/OGZGWqqx764uy5cvx8cff4zHHnsMnp6e+P777x3v6XQ6hISEYOzYsXjwwQdx33334fDhwxg/fjw8PT1hMBiwf/9+XHvttfVe1VXTiy++iPPnz2P8+PHo3r07CgoK8L///Q/vvfce7rjjDoSFhTn63n777dixYwcWLlyITp061Vkbkdu5+6xfovak6iqh+paqq1b27dsn3nDDDaKnp6eo1WrFMWPGiF999ZXTWM8995wYHh4u+vr6imq1WuzTp4/4xBNPiPn5+aIoiuL58+fF2NhYceDAgaKnp6fo5eUlDh06VPz3v/8tWiyWRms9evSoCEDs37+/U/srr7wiAhDj4uJqbVPzCh1RFMXExERx4MCBolKpFAGIL774oiiK9V/l09jVMVVacpWQKIriggULxG7duokymUwEIO7Zs8fx3pdffilOmDBB1Ol0olqtFnv16iXefvvt4u7duxv9/KZo7LsTxdq/h6qrkuparr/+eqfxP/jgA3H06NGOfz99+/YV7733XvHw4cNNrnHbtm3ipEmTRH9/f1GhUIheXl7iqFGjxFWrVokVFRVOfRv6N12zNiJ3EURRFNsoGxERERE1C68SIiIiIsnjOSxERJXEyrvCNkQul7v1KcztoUaiK4EzLERElT766KNa9z+puaSkpLBGIjdw6RyW+Ph4bN68GcePH3dcbbBs2TIMGDCgwe1SUlIQFxeHX375Bd26dcMzzzyDuXPnOvVJSkrC888/j99++w19+/bFK6+8gltuuaV5e0VE1AwXL15EZmZmg30GDBgAb2/vNqqotvZQI9GV4FJgmTJlCu68806MHDkSFosFCxcuxE8//YRff/0Vnp6edW6TmZmJIUOG4IEHHsBDDz2E7777Dg8//DASExMd90lIS0vDuHHj8NJLL+GWW27Bli1b8MILL2D/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cuVKGAwGx5KdnQ0/Pz/ccccdTv10Op1TP4PBAI1G42p5REREbnH33Xfj66+/xgcffIB77rnH0d6vXz9s3rwZGRkZOHr0KO666y6XZiPuuusuyGQyzJkzB7/++iu2b9+O119/3alPv379cPjwYezcuRMnT57E888/j0OHDjn16d27N3788UecOHEC+fn5qKioqPVZDz/8MLKzs/HYY4/h+PHj2Lp1K1588UXExcU5zl9xF5cPCU2dOhVTp05tcn+9Xg+9Xu9Y//LLL3Hp0iXcd999Tv0EQWg314ITERHVdMMNN8DPzw8nTpzAXXfd5Wj/97//jb///e+IjIxE586d8eyzz8JoNDZ5XC8vL3z11VeYO3cuQkNDERISgmXLluG2225z9Jk7dy4yMjIQHR0NQRDwt7/9DQ8//DB27Njh6PPAAw9g7969CA8PR3FxMfbs2YPevXs7fVb37t2xfft2PP300xg2bBj8/PwwZ84cLFq0qPm/mFYiiE05OFbfxoKALVu2YObMmU3eZsaMGTCZTNi1a5ejLSEhAffffz+6d+8Oq9WK4cOH46WXXkJoaGi945hMJphMJse60WhEUFAQCgsLodPpmrU/RETkPuXl5cjMzERwcDBn2K8yDX23RqMRer2+0b/fbTq/YzAYsGPHDtx///1O7QMHDkRCQgK2bduGxMREaDQajB07FqdOnap3rPj4eMfsjV6vR1BQ0JUun4iIiNykTQNLQkICfHx8as3IjBkzBvfccw+GDRuGcePGYdOmTbjmmmvw1ltv1TvWggULUFhY6Fiys7OvcPVERETkLm12WbMoivjggw8QExMDlUrVYF+ZTIaRI0c2OMOiVquhVqtbu0wiIiKSoDabYUlJScHp06cxZ86cRvuKooiMjAwEBga2QWVEREQkdS7PsBQXF+P06dOO9czMTGRkZMDPzw89e/bEggULkJOTgw0bNjhtt379eowePRpDhgypNeaSJUswZswY9O/fH0ajEatWrUJGRgbefvvtZuwSERG1Zy24FoQkqjW+U5cDy+HDhzFhwgTHelxcHABg9uzZSEhIgMFgqHW74cLCQiQlJTk9ObK6goICPPjgg8jNzYVer0doaChSU1MxatQoV8sjIqJ2quruqaWlpdBqtW6uhlpTaWkpgNp3yHVFiy5rlpKmXhZFRETSZTAYUFBQgK5du8LDw6PW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4cOHY8WKFe4uq8N57rnn8N1333EGWEKmT58Of39/rF+/3tF22223wcPDAx9//LEbK2u/OMNSD7PZjCNHjiAqKsqpPSoqCgcOHHBTVVSlsLAQAODn5+fmSjq2Rx55BDfddBMmTZrk7lI6tG3btiE8PBx33HEHunbtitDQULz33nvuLqtDu+666/DNN9/g5MmTAICjR49i//79mDZtmpsra79cvjV/R5Gfnw+r1VrridH+/v61nixNbUsURcTFxeG6667DkCFD3F1Oh/X555/j//7v/3Do0CF3l9Lh/f7771i7di3i4uLwz3/+Ez/88AMef/xxqNVq3Hvvve4ur0N69tlnUVhYiIEDB0Iul8NqteKVV17B3/72N3eX1m4xsDRCEASndVEUa7VR23r00Ufx448/8uGYbpSdnY158+Zh165d0Gg07i6nw7PZbAgPD8err74KAAgNDcUvv/yCtWvXMrC4ycaNG/HJJ5/gs88+w+DBg5GRkYH58+ejW7dumD17trvLa5cYWOrRuXNnyOXyWrMpeXl5tWZdqO089thj2LZtG1JTU9GjRw93l9NhHTlyBHl5eQgLC3O0Wa1WpKamYvXq1TCZTJDL5W6ssGMJDAxESEiIU9ugQYOQlJTkporo6aefxnPPPYc777wTAHDttdfi7NmziI+PZ2BpJp7DUg+VSoWwsDAkJyc7tScnJyMyMtJNVXVcoiji0UcfxebNm/Htt98iODjY3SV1aBMnTsRPP/2EjIwMxxIeHo67774bGRkZDCttbOzYsbUu8z958iR69erlpoqotLQUMpnzn1i5XM7LmluAMywNiIuLQ0xMDMLDwxEREYF169YhKysLc+fOdXdpHc4jjzyCzz77DFu3boW3t7dj5kuv10Or1bq5uo7H29u71vlDnp6e6NSpE88rcoMnnngCkZGRePXVVzFr1iz88MMPWLduHdatW+fu0jqsGTNm4JVXXkHPnj0xePBgpKen480338Tf//53d5fWfonUoLffflvs1auXqFKpxBEjRogpKSnuLqlDAlDn8uGHH7q7NKp0/fXXi/PmzXN3GR3WV199JQ4ZMkRUq9XiwIEDxXXr1rm7pA7NaDSK8+bNE3v27ClqNBqxT58+4sKFC0WTyeTu0tot3oeFiIiIJI/nsBAREZHkMbAQERGR5DGwEBERkeQxsBAREZHkMbAQERGR5DGwEBERkeQxsBAREZHkMbAQERGR5DGwEBERkeQxsBAREZHkMbAQERGR5P0/KrIzOKtJOeYAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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dPDgQdx+++1QKpXw9/fH4sWLYTAYLJ//6U9/wrx58/DCCy/A29sbfn5+WLZsmc1/r8biCAsREUlXeQnwWkDr7/fvlwGFm01VH3jgAcybNw/fffcdxo4dCwC4fv069u7di6+++gpFRUWYNGkSXnnlFahUKnz88ceYOnUqzp49i27dujXYfnFxMaZMmYK77roLn376KTIzMzF//nyrOiaTCV27dsXWrVvRsWNHHDlyBE8++ST8/f0xffp0PPfcczh9+jS0Wi0++ugjAIC3tzcuX75s1U5OTg4mTZqEmJgYbNmyBWfOnMETTzwBlUplFUo+/vhjxMbG4ujRo0hLS0NMTAxGjRqFu+++26a/WWMwsBARETWBt7c3JkyYgM8//9wSWL788kt4e3tj7NixkMlkGDx4sKX+K6+8gu3bt2PXrl145plnGmz/s88+g9FoxObNm+Hq6ooBAwbg999/x9/+9jdLHblcjuXLl1vWg4ODceTIEWzduhXTp0+Hu7s7XFxcoNPp6p0CWrduHQIDA7F27VoIgoB+/frh8uXLWLRoEV588UU4OZknZgYNGoSXXnoJANC7d2+sXbsW33zzDQMLERG1U3JX82iHI/Zrh0ceeQRPPvkk1q1bB6VSic8++wwPPvggZDIZiouLsXz5cvz73//G5cuXYTAYUFpaiqysLJvaPn36NAYPHgxX15t9Cg8Pr1Fvw4YN+PDDD3Hp0iWUlpZCr9djyJAhdh3H6dOnER4eDkEQLGWjRo1CUVERfv/9d8uI0KBBg6y28/f3R15enl37shcDCxERSZcg2Dw140hTp06FyWTC119/jeHDh+PQoUN45513AADPP/889u7di7feegu9evWCi4sL7r//fuj1epvaFm04n2br1q1YuHAh3n77bYSHh8PDwwNvvvkmjh49atdxiKJoFVaq7r9quVwut6ojCEKNc3iam90n3aampmLq1KkICAho8DpxwHwZVeUJPlWXAQMGWOokJCTUWqesrMzuAyIiImptLi4u+Mtf/oLPPvsMiYmJ6NOnD4YNGwYAOHToEGJiYnDvvffitttug5+fHy5evGhz2yEhITh58iRKS0stZT/88INVnUOHDiEiIgJPP/00QkND0atXL/z6669WdRQKBYxGY4P7OnLkiFVIOnLkCDw8PNClSxeb+9wS7A4sxcXFGDx4MNauXWtT/dWrV0Oj0ViW7OxseHt744EHHrCq5+npaVVPo9FApVLZ2z0iIiKHeOSRR/D1119j8+bNePTRRy3lvXr1wrZt25CRkYGTJ0/i4Ycftms04uGHH4aTkxNmzZqFU6dOYffu3Xjrrbes6vTq1QvHjx/H3r17ce7cOfzjH//AsWPHrOp0794dP/30E86ePYv8/HyUl5fX2NfTTz+N7OxsPPvsszhz5gx27tyJl156CbGxsZbzVxzF7imhiRMnYuLEiTbXV6vVUKvVlvUdO3bg+vXrePzxx63qCYLQZq4FJyIiqu6uu+6Ct7c3zp49i4cffthS/u677+Kvf/0rIiIi0LFjRyxatAhardbmdt3d3fHVV19hzpw5CA0NRUhICFauXIn77rvPUmfOnDnIyMjAjBkzIAgCHnroITz99NPYs2ePpc4TTzyBAwcOICwsDEVFRfjuu+/QvXt3q3116dIFu3fvxvPPP4/BgwfD29sbs2bNwtKlSxv/h2kmgmjL5FhdGwsCtm/fjmnTptm8zdSpU6HT6bBv3z5LWUJCAmbPno0uXbrAaDRiyJAhePnllxEaGlpnOzqdDjqdzrKu1WoRGBiIgoICeHp6Nup4iIjIccrKypCZmYng4GCOsN9i6vtutVot1Gp1g7/frTq+o9FosGfPHsyePduqvF+/fkhISMCuXbuQmJgIlUqFUaNG4fz583W2FR8fbxm9UavVCAwMbOnuExERkYO0amBJSEhAhw4daozIjBw5Eo8++igGDx6MyMhIbN26FX369MF7771XZ1txcXEoKCiwLNnZ2S3ceyIiInKUVrusWRRFbN68GdHR0VAoFPXWdXJywvDhw+sdYVEqlVAqlc3dTSIiIpKgVhthOXjwIC5cuIBZs2Y1WFcURWRkZMDf378VekZERERSZ/cIS1FRES5cuGBZz8zMREZGBry9vdGtWzfExcUhJycHW7Zssdpu06ZNGDFiBAYOHFijzeXLl2PkyJHo3bs3tFot1qxZg4yMDLz//vuNOCQiImrLmnAtCElUc3yndgeW48ePY8yYMZb12NhYAMDMmTORkJAAjUZT43bDBQUFSE5OtnpyZFU3btzAk08+idzcXKjVaoSGhiI1NRW33367vd0jIqI2qvLuqSUlJXBxcXFwb6g5lZSUAKh5h1x7NOmyZimx9bIoIiKSLo1Ggxs3bqBz585wdXWtcZt4altEUURJSQny8vLQoUOHWk/1sPX3m88SIiIiyai8gWhLP0iPWleHDh2afHNYBhYiIpIMQRDg7++Pzp0713rreGp75HI5ZDJZk9thYCEiIsmRyWTN8iNHtw7HPsmIiIiIyAYMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5dgeW1NRUTJ06FQEBARAEATt27Ki3/oEDByAIQo3lzJkzVvWSk5MREhICpVKJkJAQbN++3d6uERER0S3K7sBSXFyMwYMHY+3atXZtd/bsWWg0GsvSu3dvy2dpaWmYMWMGoqOjcfLkSURHR2P69Ok4evSovd0jIiKiW5AgiqLY6I0FAdu3b8e0adPqrHPgwAGMGTMG169fR4cOHWqtM2PGDGi1WuzZs8dSNmHCBHh5eSExMdGmvmi1WqjVahQUFMDT09OewyAiIiIHsfX3u9XOYQkNDYW/vz/Gjh2L7777zuqztLQ0REVFWZWNHz8eR44cqbM9nU4HrVZrtRAREdGtqcUDi7+/PzZu3Ijk5GRs27YNffv2xdixY5Gammqpk5ubC19fX6vtfH19kZubW2e78fHxUKvVliUwMLDFjoGIiIgcy7mld9C3b1/07dvXsh4eHo7s7Gy89dZbGD16tKVcEASr7URRrFFWVVxcHGJjYy3rWq2WoYWIiOgW5ZDLmkeOHInz589b1v38/GqMpuTl5dUYdalKqVTC09PTaiEiIqJbk0MCS3p6Ovz9/S3r4eHhSElJsaqzb98+REREtHbXiIiISILsnhIqKirChQsXLOuZmZnIyMiAt7c3unXrhri4OOTk5GDLli0AgFWrVqF79+4YMGAA9Ho9Pv30UyQnJyM5OdnSxvz58zF69GisXLkS99xzD3bu3In9+/fj8OHDzXCIRERE1NbZHViOHz+OMWPGWNYrzyOZOXMmEhISoNFokJWVZflcr9fjueeeQ05ODlxcXDBgwAB8/fXXmDRpkqVOREQEvvjiCyxduhT/+Mc/0LNnTyQlJWHEiBFNOTYiIiK6RTTpPixSwvuwEBERtT2Suw8LERERUWMxsBAREZHkMbAQERGR5DGwEBERkeQxsBAREZHkMbAQERGR5DGwEBERkeQxsBAREZHkMbAQERGR5DGwEBERkeQxsBAREZHkMbAQERGR5DGwEBERkeQxsBAREZHkMbAQERGR5DGwEBERkeQxsBAREZHkMbAQERGR5DGwEBERkeQxsBAREZHkMbAQERGR5DGwEBERkeQxsBAREZHkMbAQERGR5DGwEBERkeQxsBAREZHkMbAQERGR5DGwEBERkeQxsBAREZHkMbAQERGR5DGwEBERkeQxsBAREZHkMbAQERGR5DGwEBERkeQxsBAREZHk2R1YUlNTMXXqVAQEBEAQBOzYsaPe+tu2bcPdd9+NTp06wdPTE+Hh4di7d69VnYSEBAiCUGMpKyuzt3tERER0C7I7sBQXF2Pw4MFYu3atTfVTU1Nx9913Y/fu3Thx4gTGjBmDqVOnIj093aqep6cnNBqN1aJSqeztHhEREd2CnO3dYOLEiZg4caLN9VetWmW1/tprr2Hnzp346quvEBoaaikXBAF+fn72doeIiIjagVY/h8VkMqGwsBDe3t5W5UVFRQgKCkLXrl0xZcqUGiMw1el0Omi1WquFiIiIbk2tHljefvttFBcXY/r06Zayfv36ISEhAbt27UJiYiJUKhVGjRqF8+fP19lOfHw81Gq1ZQkMDGyN7hMREZEDCKIoio3eWBCwfft2TJs2zab6iYmJmD17Nnbu3Ilx48bVWc9kMmHo0KEYPXo01qxZU2sdnU4HnU5nWddqtQgMDERBQQE8PT3tOg4iIiJyDK1WC7Va3eDvt93nsDRWUlISZs2ahS+//LLesAIATk5OGD58eL0jLEqlEkqlsrm7SURERBLUKlNCiYmJiImJweeff47Jkyc3WF8URWRkZMDf378VekdERERSZ/cIS1FRES5cuGBZz8zMREZGBry9vdGtWzfExcUhJycHW7ZsAWAOK4899hhWr16NkSNHIjc3FwDg4uICtVoNAFi+fDlGjhyJ3r17Q6vVYs2aNcjIyMD777/fHMdIREREbZzdIyzHjx9HaGio5ZLk2NhYhIaG4sUXXwQAaDQaZGVlWep/8MEHMBgMmDt3Lvz9/S3L/PnzLXVu3LiBJ598Ev3790dUVBRycnKQmpqK22+/vanHR0RERLeAJp10KyW2nrRDRERE0mHr7zefJURERESSx8BCREREksfAQkRERJLHwEJERESSx8BCREREksfAQkRERJLHwEJERESSx8BCREREksfAQkRERJLHwEJERESSx8BCREREksfAQkRERJLHwEJERESSx8BCREREksfAQkRERJLHwEJERESSx8BCREREksfAQkRERJLHwEJERESSx8BCREREksfAQkRERJLHwEJERESSx8BCREREksfAQkRERJLHwEJERESSx8BCREREksfAQkRERJLHwEJERESSx8BCREREksfAQkRERJLHwEJERESSx8BCREREksfAQkRERJLHwEJERESSx8BCREREksfAQkRERJJnd2BJTU3F1KlTERAQAEEQsGPHjga3OXjwIIYNGwaVSoUePXpgw4YNNeokJycjJCQESqUSISEh2L59u71dIyIioluU3YGluLgYgwcPxtq1a22qn5mZiUmTJiEyMhLp6en4+9//jnnz5iE5OdlSJy0tDTNmzEB0dDROnjyJ6OhoTJ8+HUePHrW3e0RERHQLEkRRFBu9sSBg+/btmDZtWp11Fi1ahF27duH06dOWsjlz5uDkyZNIS0sDAMyYMQNarRZ79uyx1JkwYQK8vLyQmJhYa7s6nQ46nc6yrtVqERgYiIKCAnh6ejb2kIiIiKgVabVaqNXqBn+/W/wclrS0NERFRVmVjR8/HsePH0d5eXm9dY4cOVJnu/Hx8VCr1ZYlMDCw+TtPREREktDigSU3Nxe+vr5WZb6+vjAYDMjPz6+3Tm5ubp3txsXFoaCgwLJkZ2c3f+eJiIhIEpxbYyeCIFitV85CVS2vrU71sqqUSiWUSmUz9pKIiIikqsVHWPz8/GqMlOTl5cHZ2Rk+Pj711qk+6kJERETtU4sHlvDwcKSkpFiV7du3D2FhYZDL5fXWiYiIaOnuERERURtg95RQUVERLly4YFnPzMxERkYGvL290a1bN8TFxSEnJwdbtmwBYL4iaO3atYiNjcUTTzyBtLQ0bNq0yerqn/nz52P06NFYuXIl7rnnHuzcuRP79+/H4cOHm+EQiYiIqK2ze4Tl+PHjCA0NRWhoKAAgNjYWoaGhePHFFwEAGo0GWVlZlvrBwcHYvXs3Dhw4gCFDhuDll1/GmjVrcN9991nqRERE4IsvvsBHH32EQYMGISEhAUlJSRgxYkRTj4+IiIhuAU26D4uU2HodNxEREUmHZO7DQkRERNRUDCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeY0KLOvWrUNwcDBUKhWGDRuGQ4cO1Vk3JiYGgiDUWAYMGGCpk5CQUGudsrKyxnSPiIiIbjF2B5akpCQsWLAAS5YsQXp6OiIjIzFx4kRkZWXVWn/16tXQaDSWJTs7G97e3njggQes6nl6elrV02g0UKlUjTsqIiIiuqXYHVjeeecdzJo1C7Nnz0b//v2xatUqBAYGYv369bXWV6vV8PPzsyzHjx/H9evX8fjjj1vVEwTBqp6fn1/jjoiIiIhuOXYFFr1ejxMnTiAqKsqqPCoqCkeOHLGpjU2bNmHcuHEICgqyKi8qKkJQUBC6du2KKVOmID09vd52dDodtFqt1UJERES3JrsCS35+PoxGI3x9fa3KfX19kZub2+D2Go0Ge/bswezZs63K+/Xrh4SEBOzatQuJiYlQqVQYNWoUzp8/X2db8fHxUKvVliUwMNCeQyEiIqI2pFEn3QqCYLUuimKNstokJCSgQ4cOmDZtmlX5yJEj8eijj2Lw4MGIjIzE1q1b0adPH7z33nt1thUXF4eCggLLkp2d3ZhDISIiojbA2Z7KHTt2hEwmqzGakpeXV2PUpTpRFLF582ZER0dDoVDUW9fJyQnDhw+vd4RFqVRCqVTa3nkiIiJqs+waYVEoFBg2bBhSUlKsylNSUhAREVHvtgcPHsSFCxcwa9asBvcjiiIyMjLg7+9vT/eIiIjoFmXXCAsAxMbGIjo6GmFhYQgPD8fGjRuRlZWFOXPmADBP1eTk5GDLli1W223atAkjRozAwIEDa7S5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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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OFAMDQ21+XcsiqJoMBjERx99VARg3YYMGdLgsyBqL5wSImqB8vJyHDx4EPfcc4/NFTQymQzx8fH4448/cOLECQDA9ddfj127dmHhwoXYu3cvKisrbdry9/dHnz59sHLlSrzxxhvIzs6G2Wx2qB8TJkzA//73P1RWVuLMmTM4deoU7rvvPgwbNgzp6ekALKMuPXv2RL9+/Vp8voIgIDY21qZsyJAhOHPmTIvbbI2vvvoKRqMRDz30EIxGo3VTqVS48cYbbaaNatWdEnNUc59dcwoKCjBp0iQEBwdj27ZtUCgUAID//Oc/EAQBDz74oE3/g4KCMHToULv9b2tVVVW46667cObMGXz22WcNrgR7/PHHkZaWhjfffBMZGRlITU2FQqHAzTff7LLPnTo3BhaiFrh06RJEUbROU9QVEhICANZpgzVr1mDBggX4/PPPMX78ePj7+2PatGn49ddfAVjCwNdff42JEyfi1VdfxfDhw9G1a1fMmTMHpaWlTfbjlltugV6vx/79+5Geno6AgABERETglltuwZ49ewAAX3/9NW655ZZWna+Hh0eDdQtKpRJVVVWtarelzp8/DwAYOXIk5HK5zZaamoqioiKb+h4eHs1ekWRPc59dU0pLSzFlyhRUV1dj165dNutBzp8/D1EUERgY2KD/3333XYP+tzW9Xo8777wT+/fvx44dOzBq1Cib1//73/9i48aNePfddzFv3jyMGzcO06dPR3p6Oi5evNhgfRNRe+AaFqIW8PPzg5ubm937V5w7dw4AEBAQAADw9PTEsmXLsGzZMpw/f976f+yxsbE4fvw4AMuagY0bNwIATp48iS1btmDp0qUwGAx45513Gu3HqFGj4OXlhT179uD06dOYMGECBEHAhAkT8Prrr+PQoUPIy8trdWCRmtq/7b///W+HLq9t6X1SHPns7Kmursbdd9+N3377Dfv27WtwFVFAQAAEQcC+ffugVCobHG+vrK3o9XpMmzYN3377LbZv3253AXLtYu/atVG1fH190bdvX/z0009XrH9EjWFgIWoBT09PjBo1Clu3bsVrr70GtVoNADCbzfjoo4/Qo0cPXHvttQ2OCwwMREJCAo4ePYpVq1bZvbz22muvxZIlS5CWlob/+7//a7Ifcrkc48aNQ3p6OvLz8/HPf/4TADB27Fi4u7tjyZIl1gDTlNovSGenPK60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p8OaNWuQk5ODt99+uwWnREREHVkrrgUhiWqLz9TpwHL48GGMHz/eup+YmAgAmDFjBpKTk6HVahvcbrikpARpaWk2vxxZV3FxMR577DEUFBRAo9EgIiICmZmZuP76653tHhERdVC1d0+tqKiAWq12cW+oLVVUVABoeIdcZ7TqsmYpcfSyKCIiki6tVovi4mJ069YNHh4eDW4TTx2LKIqoqKhAYWEhfH197S71cPT7m78lREREklF7A9Er/UN61L58fX1bfXNYBhYiIpIMQRAQHByMbt262b11PHU8crkcMpms1e0wsBARkeTIZLI2+ZKjq4drf8mIiIiIyAEMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5DCxEREQkeQwsREREJHkMLERERCR5TgeWzMxMxMbGIiQkBIIg4PPPP2+y/t69eyEIQoPt+PHjNvXS0tIQHh4OpVKJ8PBwbNu2zdmuERER0VXK6cBSXl6OoUOHYu3atU4dd+LECWi1WuvWr18/62tZWVmIi4tDfHw8jh49ivj4eEyfPh0HDx50tntERER0FRJEURRbfLAgYNu2bZg2bVqjdfbu3Yvx48fj0qVL8PX1tVsnLi4OOp0Ou3btspZNmjQJfn5+SElJcagvOp0OGo0GJSUl8PHxceY0iIiIyEUc/f5utzUsERERCA4OxoQJE/Dtt9/avJaVlYWYmBibsokTJ+LAgQONtqfX66HT6Ww2IiIiujpd8cASHByMDRs2IC0tDVu3bkX//v0xYcIEZGZmWusUFBQgMDDQ5rjAwEAUFBQ02m5SUhI0Go11Cw0NvWLnQERERK7lfqXfoH///ujfv791PyoqCvn5+Xjttdcwbtw4a7kgCDbHiaLYoKyuRYsWITEx0bqv0+kYWoiIiK5SLrmsefTo0fj111+t+0FBQQ1GUwoLCxuMutSlVCrh4+NjsxEREdHVySWBJTs7G8HBwdb9qKgopKen29TZvXs3oqOj27trREREJEFOTwmVlZXh1KlT1v3c3Fzk5OTA398fPXv2xKJFi3D27Fls3rwZALBq1Sr07t0bgwYNgsFgwEcffYS0tDSkpaVZ25g7dy7GjRuHFStW4I477sD27duxZ88e7N+/vw1OkYiIiDo6pwPL4cOHMX78eOt+7TqSGTNmIDk5GVqtFnl5edbXDQYDnn76aZw9exZqtRqDBg3Cl19+iSlTpljrREdH49NPP8WSJUvw3HPPoU+fPkhNTcWoUaNac25ERER0lWjVfVikhPdhISIi6ngkdx8WIiIiopZiYCEiIiLJY2AhIiIiyWNgISIiIsljYCEiIiLJY2AhIiIiyWNgISIiIsljYCEiIiLJY2AhIiIiyWNgISIiIsljYCEiIiLJY2AhIiIiyWNgISIiIsljYCEiIiLJY2AhIiIiyWNgISIiIsljYCEiIiLJY2AhIiIiyWNgISIiIsljYCEiIiLJY2AhIiIiyWNgISIiIsljYCEiIiLJY2AhIiIiyWNgISIiIsljYCEiIiLJY2AhIiIiyWNgISIiIsljYCEiIiLJY2AhIiIiyWNgISIiIsljYCEiIiLJY2AhIiIiyWNgISIiIsljYCEiIiLJczqwZGZmIjY2FiEhIRAEAZ9//nmT9bdu3Ypbb70VXbt2hY+PD6KiovDVV1/Z1ElOToYgCA22qqoqZ7tHREREVyGnA0t5eTmGDh2KtWvXOlQ/MzMTt956K3bu3IkjR45g/PjxiI2NRXZ2tk09Hx8faLVam02lUjnbPSIiIroKuTt7wOTJkzF58mSH669atcpm/5VXXsH27dvxxRdfICIiwlouCAKCgoKc7Q4RERF1Au2+hsVsNqO0tBT+/v425WVlZejVqxd69OiBqVOnNhiBqU+v10On09lsREREdHVq98Dy+uuvo7y8HNOnT7eWDRgwAMnJydixYwdSUlKgUqkwZswY/Prrr422k5SUBI1GY91CQ0Pbo/tERETkAoIoimKLDxYEbNu2DdOmTXOofkpKCh555BFs374dt9xyS6P1zGYzhg8fjnHjxmHNmjV26+j1euj1euu+TqdDaGgoSkpK4OPj49R5EBERkWvodDpoNJpmv7+dXsPSUqmpqZg5cyY+++yzJsMKALi5uWHkyJFNjrAolUoolcq27iYRERFJULtMCaWkpCAhIQGffPIJbrvttmbri6KInJwcBAcHt0PviIiISOqcHmEpKyvDqVOnrPu5ubnIycmBv78/evbsiUWLFuHs2bPYvHkzAEtYeeihh7B69WqMHj0aBQUFAAC1Wg2NRgMAWLZsGUaPHo1+/fpBp9NhzZo1yMnJwdtvv90W50hEREQdnNMjLIcPH0ZERIT1kuTExERERETg+eefBwBotVrk5eVZ67/77rswGo148sknERwcbN3mzp1rrVNcXIzHHnsMAwcORExMDM6ePYvMzExcf/31rT0/IiIiugq0atGtlDi6aIeIiIikw9Hvb/6WEBEREUkeAwsRERFJHgMLERERSR4DCxEREUkeAwsRERFJHgMLERERSR4DCxEREUkeAwsRERFJHgMLERERSR4DCxEREUkeAwsRERFJHgMLERERSR4DCxEREUkeAwsRERFJHgMLERERSR4DCxEREUkeAwsRERFJHgMLERERSR4DCxEREUkeAwsRERFJHgMLERERSR4DCxEREUkeAwsRERFJHgMLERERSR4DCxEREUkeAwsRERFJHgMLERERSR4DCxEREUkeAwsRERFJHgMLERERSR4DCxEREUkeAwsRERFJHgMLERERSR4DCxEREUkeAwsRERFJHgMLERERSZ7TgSUzMxOxsbEICQmBIAj4/PPPmz0mIyMDI0aMgEqlwjXXXIN33nmnQZ20tDSEh4dDqVQiPDwc27Ztc7ZrREREdJVyOrCUl5dj6NChWLt2rUP1c3NzMWXKFIwdOxbZ2dn4xz/+gTlz5iAtLc1aJysrC3FxcYiPj8fRo0cRHx+P6dOn4+DBg852j4iIiK5CgiiKYosPFgRs27YN06ZNa7TOggULsGPHDhw7dsxaNmvWLBw9ehRZWVkAgLi4OOh0OuzatctaZ9KkSfDz80NKSorddvV6PfR6vXVfp9MhNDQUJSUl8PHxaekpERERUTvS6XTQaDTNfn9f8TUsWVlZiImJsSmbOHEiDh8+jOrq6ibrHDhwoNF2k5KSoNForFtoaGjbd56IiIgk4YoHloKCAgQGBtqUBQYGwmg0oqioqMk6BQUFjba7aNEilJSUWLf8/Py27zwRERFJgnt7vIkgCDb7tbNQdcvt1alfVpdSqYRSqWzDXhIREZFUXfERlqCgoAYjJYWFhXB3d0eXLl2arFN/1IWIiIg6pyseWKKiopCenm5Ttnv3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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "# B. Test presence or absence of regularization" + "# B. Test presence or absence of regularization ()\n", + "\n", + "\n", + "for key in results_history.keys():\n", + " history = results_history[key]\n", + " #print(history)\n", + " plt.figure()\n", + " plt.plot(history.history['loss'], label='train')\n", + " plt.plot(history.history['val_loss'], label='validation')\n", + " plt.ylim(0, 2)\n", + " plt.legend(loc='best')\n", + " plt.title('Loss with '+ key)" ] }, { @@ -229,6 +1054,20 @@ "**Your answer here**" ] }, + { + "cell_type": "markdown", + "id": "da0c6e52", + "metadata": {}, + "source": [ + "Test accuracy is highest for 64 filters (≈87.9%), but differences are minor\n", + "\n", + "Adding more filters above 10 does not yield significant improvement for this shallow architecture and Fashion MNIST.\n", + "\n", + "Model capacity is sufficient even with a small number of filters; more complex patterns or regularization might be needed for tougher datasets.\n", + "\n", + "Optimal choice: 64 filters is marginally best, but any setting from 10 to 128 works similarly for this setup." + ] + }, { "cell_type": "markdown", "id": "46c43a3d", @@ -244,11 +1083,135 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 39, "id": "31f926d1", "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/30\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m18s\u001b[0m 11ms/step - accuracy: 0.6932 - loss: 0.8879 - val_accuracy: 0.8139 - val_loss: 0.5226\n", + "Epoch 2/30\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m16s\u001b[0m 11ms/step - accuracy: 0.8313 - loss: 0.4790 - val_accuracy: 0.8324 - val_loss: 0.4641\n", + "Epoch 3/30\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m18s\u001b[0m 12ms/step - accuracy: 0.8497 - loss: 0.4251 - val_accuracy: 0.8524 - val_loss: 0.4130\n", + "Epoch 4/30\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m17s\u001b[0m 12ms/step - accuracy: 0.8629 - loss: 0.3857 - val_accuracy: 0.8637 - val_loss: 0.3776\n", + "Epoch 5/30\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m17s\u001b[0m 12ms/step - accuracy: 0.8739 - loss: 0.3560 - val_accuracy: 0.8739 - val_loss: 0.3526\n", + "Epoch 6/30\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m18s\u001b[0m 12ms/step - accuracy: 0.8789 - loss: 0.3369 - val_accuracy: 0.8751 - val_loss: 0.3486\n", + "Epoch 7/30\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m19s\u001b[0m 12ms/step - accuracy: 0.8829 - loss: 0.3235 - val_accuracy: 0.8740 - val_loss: 0.3418\n", + "Epoch 8/30\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m18s\u001b[0m 12ms/step - accuracy: 0.8889 - loss: 0.3051 - val_accuracy: 0.8728 - val_loss: 0.3400\n", + "Epoch 9/30\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m18s\u001b[0m 12ms/step - accuracy: 0.8937 - loss: 0.2888 - val_accuracy: 0.8869 - val_loss: 0.3128\n", + "Epoch 10/30\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m19s\u001b[0m 12ms/step - accuracy: 0.8979 - loss: 0.2777 - val_accuracy: 0.8887 - val_loss: 0.3056\n", + "Epoch 11/30\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m18s\u001b[0m 12ms/step - accuracy: 0.9038 - loss: 0.2669 - val_accuracy: 0.8852 - val_loss: 0.3115\n", + "Epoch 12/30\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m17s\u001b[0m 12ms/step - accuracy: 0.9049 - loss: 0.2589 - val_accuracy: 0.8907 - val_loss: 0.2983\n", + "Epoch 13/30\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m18s\u001b[0m 12ms/step - accuracy: 0.9094 - loss: 0.2437 - val_accuracy: 0.8897 - val_loss: 0.3021\n", + "Epoch 14/30\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m17s\u001b[0m 12ms/step - accuracy: 0.9128 - loss: 0.2378 - val_accuracy: 0.8947 - val_loss: 0.2887\n", + "Epoch 15/30\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m17s\u001b[0m 11ms/step - accuracy: 0.9150 - loss: 0.2331 - val_accuracy: 0.8954 - val_loss: 0.2883\n", + "Epoch 16/30\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m18s\u001b[0m 12ms/step - accuracy: 0.9206 - loss: 0.2195 - val_accuracy: 0.8957 - val_loss: 0.2884\n", + "Epoch 17/30\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m19s\u001b[0m 12ms/step - accuracy: 0.9233 - loss: 0.2133 - val_accuracy: 0.8971 - val_loss: 0.2838\n", + "Epoch 18/30\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m18s\u001b[0m 12ms/step - accuracy: 0.9256 - loss: 0.2042 - val_accuracy: 0.8960 - val_loss: 0.2903\n", + "Epoch 19/30\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m17s\u001b[0m 11ms/step - accuracy: 0.9245 - loss: 0.2054 - val_accuracy: 0.8937 - val_loss: 0.2942\n", + "Epoch 20/30\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m17s\u001b[0m 12ms/step - accuracy: 0.9291 - loss: 0.1952 - val_accuracy: 0.8992 - val_loss: 0.2772\n", + "Epoch 21/30\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m18s\u001b[0m 12ms/step - accuracy: 0.9312 - loss: 0.1889 - val_accuracy: 0.9022 - val_loss: 0.2735\n", + "Epoch 22/30\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m18s\u001b[0m 12ms/step - accuracy: 0.9357 - loss: 0.1784 - val_accuracy: 0.9023 - val_loss: 0.2718\n", + "Epoch 23/30\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m17s\u001b[0m 11ms/step - accuracy: 0.9366 - loss: 0.1764 - val_accuracy: 0.9036 - val_loss: 0.2759\n", + "Epoch 24/30\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m17s\u001b[0m 11ms/step - accuracy: 0.9389 - loss: 0.1692 - val_accuracy: 0.9022 - val_loss: 0.2743\n", + "Epoch 25/30\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m15s\u001b[0m 10ms/step - accuracy: 0.9411 - loss: 0.1647 - val_accuracy: 0.8995 - val_loss: 0.2752\n", + "Epoch 26/30\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m15s\u001b[0m 10ms/step - accuracy: 0.9445 - loss: 0.1586 - val_accuracy: 0.9035 - val_loss: 0.2749\n", + "Epoch 27/30\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m21s\u001b[0m 14ms/step - accuracy: 0.9454 - loss: 0.1520 - val_accuracy: 0.9043 - val_loss: 0.2711\n", + "Epoch 28/30\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m18s\u001b[0m 12ms/step - accuracy: 0.9482 - loss: 0.1508 - val_accuracy: 0.9001 - val_loss: 0.2923\n", + "Epoch 29/30\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m17s\u001b[0m 12ms/step - accuracy: 0.9502 - loss: 0.1412 - val_accuracy: 0.9032 - val_loss: 0.2755\n", + "Epoch 30/30\n", + "\u001b[1m1500/1500\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m17s\u001b[0m 12ms/step - accuracy: 0.9524 - loss: 0.1360 - val_accuracy: 0.9057 - val_loss: 0.2798\n" + ] + }, + { + "data": { + "image/png": "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WcfwzDPP4MSJE40+vJbHW9Oa2m883hrXv39/ZGdno6SkBKmpqZgzZw7S09Ntn7fFscYelyb4+/tDJpM1SIKFhYUNEiM1zd3dHUOGDMGZM2ec3RRJqB2BxePu5gUFBaFnz5489gD86U9/wvbt27F//350797dVs7jrXlN7bfG8HizUigU6Nu3LyIjI5GUlITw8HCsWrWqTY81BpcmKBQKjBgxAmlpaXblaWlpiI6OdlKrpMdgMODkyZMICgpydlMkITQ0FIGBgXbHndFoRHp6Oo87BxUXFyMvL++2PvZEUcQzzzyDLVu2YN++fQgNDbX7nMdb42603xrD461xoijCYDC07bHWRhcOd0pfffWVKJfLxfXr14s///yzuHDhQtHd3V08f/68s5vWYf35z38WDxw4IP7666/i999/L06fPl309PTkPquntLRUzMrKErOyskQA4nvvvSdmZWWJFy5cEEVRFN98801Ro9GIW7ZsEX/88UfxoYceEoOCgkS9Xu/kljtXc/uttLRU/POf/ywePnxYzMnJEffv3y9GRUWJ3bp1u6332x//+EdRo9GIBw4cELVarW2qqKiw1eHx1tCN9huPt8YtXrxYzMjIEHNycsQTJ06IL774ouji4iLu2bNHFMW2O9YYXG7gww8/FHv27CkqFApx+PDhdsPhqKG4uDgxKChIlMvlYnBwsHjfffeJP/30k7Ob1aHs379fBNBgmjNnjiiK1iGqS5YsEQMDA0WlUimOHz9e/PHHH53b6A6guf1WUVEhxsTEiF26dBHlcrnYo0cPcc6cOWJubq6zm+1Uje0vAOKnn35qq8PjraEb7Tceb417/PHHbb+XXbp0ESdNmmQLLaLYdseaIIqi2MoeICIiIqJ2xWtciIiISDIYXIiIiEgyGFyIiIhIMhhciIiISDIYXIiIiEgyGFyIiIhIMhhciIiISDIYXIiIiEgyGFyIiIhIMhhciIiISDIYXIiIiEgy/j/XgXHA5E6towAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - accuracy: 0.8984 - loss: 0.3050\n", + "Final Loss: 0.30\n", + "Final Accuracy: 90.05%\n" + ] + } + ], + "source": [ + "# 5. Training Final Model and Evaluation\n", + "\n", + "filter_size = 32\n", + "include_regularization = False\n", + "\n", + "model = Sequential()\n", + "model.add(Input((28, 28, 1)))\n", + "model.add(Conv2D(filters=filter_size, kernel_size=(5, 5), activation='relu'))\n", + "if include_regularization:\n", + " model.add(Dropout(0.2))\n", + "model.add(Flatten())\n", + "model.add(Dense(128, activation='relu'))\n", + "if include_regularization:\n", + " model.add(Dropout(0.2))\n", + "model.add(Dense(10, activation=\"softmax\"))\n", + "model.compile(\n", + " loss='categorical_crossentropy',\n", + " optimizer='sgd',\n", + " metrics=['accuracy']\n", + ")\n", + "history = model.fit(\n", + " X_train, y_train,\n", + " epochs=30, batch_size=32, validation_split=0.2\n", + ")\n", + "\n", + "plt.figure()\n", + "plt.plot(history.history['loss'], label='train')\n", + "plt.plot(history.history['val_loss'], label='validation')\n", + "plt.ylim(0, 2)\n", + "plt.legend(loc='best')\n", + "plt.title('Loss: Final Model')\n", + "plt.show()\n", + "\n", + "# Final test evaluation\n", + "loss, accuracy = model.evaluate(X_test, y_test)\n", + "print(f'Final Loss: {loss:.2f}')\n", + "print(f'Final Accuracy: {accuracy * 100:.2f}%')\n" + ] }, { "cell_type": "markdown", @@ -257,7 +1220,12 @@ "source": [ "Reflection: How does the final model's performance compare to the baseline and the CNN model? What do you think contributed to the final model's performance? If you had time, what other experiments would you run to further improve the model's performance?\n", "\n", - "**Your answer here**" + "**Your answer here**\n", + "\n", + "Improvement by 6% after 30 epochs\n", + "Filter size 32 without dropout regularization. shows best results. Filter increases did not improve significant results\n", + "with more time I would experiment with additional conv layers deeper networks and try a different regulariation technique possibly.\n", + "\n" ] }, { @@ -287,7 +1255,7 @@ ], "metadata": { "kernelspec": { - "display_name": "deep_learning", + "display_name": "dsi_participant", "language": "python", "name": "python3" }, @@ -301,7 +1269,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.11" + "version": "3.9.19" } }, "nbformat": 4,