{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.7.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"## Part 1. Data Loading & Visualizations","metadata":{}},{"cell_type":"code","source":"import numpy as np\nimport matplotlib.pyplot as plt\nimport os\n\npath_train = os.path.join(\"../input/digit-recognizer\",\"train.csv\")\npath_test = os.path.join(\"../input/digit-recognizer\",\"test.csv\")","metadata":{"execution":{"iopub.status.busy":"2022-11-04T15:38:58.665283Z","iopub.execute_input":"2022-11-04T15:38:58.665798Z","iopub.status.idle":"2022-11-04T15:38:58.698765Z","shell.execute_reply.started":"2022-11-04T15:38:58.665703Z","shell.execute_reply":"2022-11-04T15:38:58.697799Z"},"trusted":true},"execution_count":1,"outputs":[]},{"cell_type":"code","source":"data = np.loadtxt(path_train,skiprows=1, delimiter=\",\")\nprint(f\"- The dataset shape is equal to {data.shape}\")\nX,y = data[:,1:]/255, data[:,0].astype(\"int64\")","metadata":{"execution":{"iopub.status.busy":"2022-11-04T15:38:58.701321Z","iopub.execute_input":"2022-11-04T15:38:58.702421Z","iopub.status.idle":"2022-11-04T15:39:16.364464Z","shell.execute_reply.started":"2022-11-04T15:38:58.702378Z","shell.execute_reply":"2022-11-04T15:39:16.362062Z"},"trusted":true},"execution_count":2,"outputs":[{"name":"stdout","text":"- The dataset shape is equal to (42000, 785)\n","output_type":"stream"}]},{"cell_type":"code","source":"# Checking the unique digits\nnp.unique(y)","metadata":{"execution":{"iopub.status.busy":"2022-11-04T15:39:16.366134Z","iopub.execute_input":"2022-11-04T15:39:16.366833Z","iopub.status.idle":"2022-11-04T15:39:16.381594Z","shell.execute_reply.started":"2022-11-04T15:39:16.366773Z","shell.execute_reply":"2022-11-04T15:39:16.380645Z"},"trusted":true},"execution_count":3,"outputs":[{"execution_count":3,"output_type":"execute_result","data":{"text/plain":"array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])"},"metadata":{}}]},{"cell_type":"code","source":"indices = []\nfor digit in np.unique(y):\n    indices.append(np.where(y == digit)[0])","metadata":{"execution":{"iopub.status.busy":"2022-11-04T15:39:16.385921Z","iopub.execute_input":"2022-11-04T15:39:16.386247Z","iopub.status.idle":"2022-11-04T15:39:16.395137Z","shell.execute_reply.started":"2022-11-04T15:39:16.386217Z","shell.execute_reply":"2022-11-04T15:39:16.393922Z"},"trusted":true},"execution_count":4,"outputs":[]},{"cell_type":"code","source":"# Visualizing some samples\nfig, ax = plt.subplots(figsize = (12,10), nrows = 2, ncols =5)\nfor i,idx in enumerate(indices):\n    r,c = divmod(i,5)\n    img = X[idx,:]\n    img.resize((28,28))\n    ax[r,c].imshow(img, cmap = \"gray\")\n    ax[r,c].axis(\"off\")\nplt.tight_layout()\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2022-11-04T15:39:16.396521Z","iopub.execute_input":"2022-11-04T15:39:16.397182Z","iopub.status.idle":"2022-11-04T15:39:17.040274Z","shell.execute_reply.started":"2022-11-04T15:39:16.397144Z","shell.execute_reply":"2022-11-04T15:39:17.039023Z"},"trusted":true},"execution_count":5,"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 864x720 with 10 Axes>","image/png":"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1dXVhbNF24JmzZoV5jNnzizxdDSUn//852E+ZsyYXNajR4+yrr1gwYIwv/POO3PZe++9F87ecccdZd2T6le0Ba+pK/rZncK+++4b5kOGDMll5557bjjbsWPHMB8wYEAusy2wfl544YXGPkLFLVu2LMyLtlU2Bz7BAgAASETBAgAASETBAgAASETBAgAASETBAgAASKTJbRH8/Oc/n8sGDRpU7+vOnTs3zN966616X7uS/u3f/i3M58+fH+aTJ08u+dq9e/cO8+OOOy6X2SK4edhmm23CfMSIEfW+9n/+53+G+dlnn13va9MwVq1aFebRa/Dtt98ezhZtfYs2UmZZlq1YsaLka0O1a9OmTS779re/Hc6ec845Yb7LLruEebSN+He/+104G/2cz7LibbBsuvXr1zf2EZqc6PmbPXt2I5ykcnyCBQAAkIiCBQAAkIiCBQAAkIiCBQAAkIiCBQAAkEiT2yK488471/sa0Sasjz76qN7XbUqefvrpMI/+7B07dqz0cWiCOnfunMsee+yxcLZoo2Rk9erVYf6LX/yi5GtQXebNm5fLBgwYEM6m2EJ27LHH1vsa5VqwYEGD35NN17Zt2zCPNu+1atUqyT3ffvvtXLbddtuFsz169AjzaHvaTjvtFM7OnDkzzM8777wwj75Ply1bFs7ScIq2s37yyScNfJKm46STTsplRds0q5VPsAAAABJRsAAAABJRsAAAABJRsAAAABJpcksu3n///Xpf47e//W0ue++99+p93aYk+mXbLMuyRx55JJedeuqpZV37qKOOymXt27cPZ9esWVPWtWk47dq1y2V77bVXva9b9MvbRcsv2DyVu8yiZ8+eYX7JJZfksg4dOmzSmUoxZ86cMD/rrLMqdk/SO+KII8I8+kX5FMuzyvXWW2+F+Q9+8INcNnv27HD21VdfTXomGsczzzwT5tEzMm7cuHB2+PDhYd7UF7hNnz49zL/73e/msqLX/Wp9b+ETLAAAgEQULAAAgEQULAAAgEQULAAAgEQULAAAgERq6urqir9YU1P8xXrq2LFjmL/22mu5bOutt673/Yo2WBVt+qlWtbW1ueyhhx6q93W7du0a5pXczlhXV1dT6mwln9Wmrlu3bmH+2GOP5bJ99tmnrGtH248OO+ywcHb9+vVlXXtzUuqz2pyf0xdffDHMU2y2jKxbty7MO3fuHOZNfRtXCs3hNXXLLbfMZSneQxT5+te/HuYnnXRSmC9btiyXFW2IK/qeaQ6aw7M6YMCAXDZjxoxwdu+99w7zhQsXJj1TameeeWaYT5w4MZcdeeSR4ezjjz+e9EypFT2rPsECAABIRMECAABIRMECAABIRMECAABIRMECAABIpGWj3bhlfOtKbvtpDpYsWdLYR6CB3XTTTWHep0+fXFa0NfTpp58O84EDB+ay5rwtkL+vVatWYd66deuK3TPaGHjttdeGs81hW2Bztnbt2lz2xhtvVOx+l156aZiPGzcuzIcNG5bLijbH/eY3vwnzU045Jcw929XliSeeyGVFm5lvuOGGMD/66KNTHim56dOnh3n0fbq58QkWAABAIgoWAABAIgoWAABAIgoWAABAIo225OL9998P83vuuSeXnXbaaRU+DTR93bp1C/N/+Id/KPkaRb8EfdVVV4W5hRaUa9SoUWG+2267VeyeXbp0yWWe3eoTLeZ56623wtkVK1ZU+jj1smHDhjC/8cYbc9nMmTPD2ccffzzMn3nmmTA/+eSTc9kf/vCHoiNSRVauXNnYR9gkRe/1X3rppVx28cUXh7NPPfVUmDf1RRk+wQIAAEhEwQIAAEhEwQIAAEhEwQIAAEhEwQIAAEik0bYIbty4McyjrTkptghOnjw5zAcOHBjma9asqfc9K6lz585hPnHixHpf+9Zbb81lRZtgSG/rrbcO83vvvTfM99133zBft25dLjvvvPPC2YcffrjE08Ff9OrVK8zPOuusit2zaJNWXV1dxe5JekWvcdHP/0MPPTScbepbBMuxcOHCMD/ppJPCfMKECWE+e/bsXFb0Hue1114r8XQ0pGnTpoX5fvvtF+YtW8Zv4z/++OOS77n99tuH+ec///lcduCBB4aztbW1Yd6qVauSr11k9OjRYX7JJZeUfI3G4BMsAACARBQsAACARBQsAACARBQsAACARBQsAACARGo+bftSTU1Ng69m6tSpUy6LNuNkWZbts88+9b7fc889F+ajRo0K86KzVEr37t3D/JprrgnzM844o+Rrf/jhh2G+55575rI333yz5OumUldXV1PqbGM8q5XyjW98I8xvvvnmsq7z61//Opcddthhm3QmPl2pz2q1PqfRa+2UKVPC2Z49e1bsHEOHDg3zn/70pxW75+akqbymFm2a7N+/fy4755xzKnWMqrXTTjuF+cyZM3PZkiVLwtnjjjsuzIveFzS0pvKsNrR+/fqFefTzPMuy7IorrgjzaPPzMcccE84edNBBYd66deuSz3HdddeF+fLly8N80KBBuWzkyJHhbNGGwkcffTTMG1rRs+oTLAAAgEQULAAAgEQULAAAgEQULAAAgEQULAAAgERaNvYB/q+VK1fmsm9+85vh7C233BLmvXv3Lvl+ffv2DfPLLrsszN97772Sr71q1aowjzaztG3bNpydOHFimO+9994ln6PII488EuaNsTGwuRoyZEguu+qqq8q6xtNPPx3mX/3qVzfpTPB/RVumKrkt8OWXXw7zog1WKbRq1SrMd91114rcb+nSpWG+YsWKityvGkQ//8lbvHhxmI8dOzaX3XfffeFs0ea4WbNmbfrBqLf58+eH+WuvvRbm5513XsnXLnrP953vfCfMoy3bRZu3yxW9zhVtEaxWPsECAABIRMECAABIRMECAABIRMECAABIpMktuYjMnTs3zK+44oowv+OOO3JZu3btyrpnv379wvyFF14o+RrvvvtumG+55Za5rNzzpTB58uQGv2dz1alTpzCPnuEOHTqUde1rr702zN9+++2yrgNNRdGiouuvvz7MX3zxxXrfs3379mFetGSpvmbOnBnmJ554YpivW7euIudoDEWvTeeff34uK3rttBAjb9q0abls4cKF4ezgwYPD3JKLxlX0XPfq1auBT1JZy5Yta+wjVJxPsAAAABJRsAAAABJRsAAAABJRsAAAABJRsAAAABKpii2CRe6///4w32GHHXJZ0aa1SurevXuD3zPaQPONb3wjnJ0+fXqlj8NfHX/88WG+88471/vaHTt2rPc14NMsXbo0l61evTqcLXcLZjlqa2vLypuK6O+q6O+pZcuq/rFckjlz5oR5jx49ctlRRx0Vzj7wwANhvnHjxk0/WJXbsGFDLnvnnXfC2QMPPLDSx4FmzSdYAAAAiShYAAAAiShYAAAAiShYAAAAiShYAAAAiWyW64puv/32XHbEEUeEs0cffXSlj1MRH3zwQZifcsopueyxxx6r9HH4Oz766KMwjzZetWgR/7/HJ598Eua77rrrph8MSvDggw/msm9/+9vhbHPYThZtVcyyLBs3blzJ81OnTk16pmqydu3aMB85cmQumzRpUjjbu3fvMP/+97+fy9avX1/G6arXiBEjclmfPn3C2csvv7zSx4FC0WbVefPmhbOf/exnK3uYCvEJFgAAQCIKFgAAQCIKFgAAQCIKFgAAQCI1dXV1xV+sqSn+YpVp27ZtmA8cODDMjzzyyDAfPnx4LqupqQlni/5uo/nx48eHs5dddlmYf/zxx2G+cuXKMK9GdXV18V9soFqf1QULFuSyli3j3TNXXnllmE+cODHpmShfqc9qtT6nkaJfPC56LTv44IPDvH379qmOVC9FixCeeOKJXDZ69Ohw9ve//33SM6VWja+pZ555ZpjfdtttYf7qq6/msu9+97vh7Jw5c8J8zZo1JZ6usvbcc88wHzZsWMn5NddcE84Wvbf48MMPSzxdZVXjs0r9FC1kW7JkSZifffbZlTxOyYqeVZ9gAQAAJKJgAQAAJKJgAQAAJKJgAQAAJKJgAQAAJNJstghSfWwRolo0xy2C5aqtrQ3zjh075rLzzz8/nL355puTnulvrVu3LsynTp1asXs2tM3pNXWfffYJ84suuiiXHXDAAeFsp06dwnzGjBlhPnny5FxWtHVvp512CvODDjoolxVtLd5hhx3CfNGiRWEebfC85ZZbwtmmbnN6Vslr3bp1Lnv22WfD2ZtuuinMJ0yYkPRMm8oWQQAAgApTsAAAABJRsAAAABJRsAAAABJRsAAAABKxRZAmyxYhqoUtglSD5vqa2q5duzAfOXJkmPfr1y/M995771y2du3acLZnz55hPmfOnFw2d+7ccPapp54K88cffzzMN2zYEObVqLk+q1QfWwQBAAAqTMECAABIRMECAABIRMECAABIRMECAABIxBZBmixbhKgWtghSDbymUi08q1QLWwQBAAAqTMECAABIRMECAABIRMECAABIRMECAABIRMECAABIRMECAABIRMECAABIRMECAABIRMECAABIpKaurq6xzwAAALBZ8AkWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIgoWAABAIi0/7Ys1NTV1DXUQ+L/q6upqSp31rNKYSn1WPac0Jq+pVAvPKtWi6Fn1CRYAAEAiChYAAEAiChYAAEAiChYAAEAiChYAAEAiChYAAEAiChYAAEAiChYAAEAiChYAAEAiChYAAEAiLRv7AAD/T4sW8f/5nHLKKWE+atSoXPboo4+Gs6NHj970gwEAlMgnWAAAAIkoWAAAAIkoWAAAAIkoWAAAAIkoWAAAAInU1NXVFX+xpqb4i1BhdXV1NaXOelarT6tWrXLZYYcdFs7OmDEjzJ9//vlc1r9//3B23bp1ZZyuPKU+q55TGpPXVKqFZ5VqUfSs+gQLAAAgEQULAAAgEQULAAAgEQULAAAgEQULAAAgEVsEabJsEdo87LDDDmE+adKkXFa0RXDp0qVhvtdee+WyFStWlHG6NGwRpBp4TaVaeFapFrYIAgAAVJiCBQAAkIiCBQAAkIiCBQAAkIiCBQAAkEjLxj7A5qBXr15hfuGFF4Z5mzZtctk222wTztbW1pZ1lmeffTaXTZkyJZx99NFHw/yll14q656QZVm24447hvns2bPD/HOf+1wu+93vfhfOfvGLXwzzTz75pMTTAQA0DJ9gAQAAJKJgAQAAJKJgAQAAJKJgAQAAJFJTV1dX/MWamuIvbuY6dOgQ5t///vdz2ZlnnhnOtm/fvuT71dTUhPmn/fvU17p168J88uTJueyss86q2DmK1NXVxX8pgeb8rFZS27Ztc9nJJ58czl599dVh3qlTpzB//PHHc9nw4cPD2TfffLPoiE1Cqc+q55TG5DW1fqIFVVtttVVZ1zjmmGNy2e23377JZ/p7WrSI/x/94YcfDvNLLrkkl82bNy/lkUriWW04RT+jd95551z2ta99LZzt3bt3mH/pS18K8+iZv+GGG8LZav357xMsAACARBQsAACARBQsAACARBQsAACARBQsAACARJr9FsGePXuG+a9+9asw79GjR8nXfuSRR8L8o48+ymWNsUXwC1/4Qphvu+22uey2224LZ0eMGBHmGzZs2PSD/ZUtQo3vRz/6US4r2vT3ySefhPmQIUPC/IEHHtj0gzUx1bZF8IQTTgjzo446KsynTp2ay5YtW1bWPRcvXhzmXbt2zWXt2rUr69rlOPjgg8N80KBBYf7KK6/ksmibbJYV/xmbCq+ppdlpp53CPNp8dvjhh5d17ehnfSV/zpf73uLtt9/OZV/+8pfD2bfeemvTD/Z3eFbTGzx4cJhfeumlYb7XXnvlsko+q3Pnzg3z448/PsxXrlxZsbOUwxZBAACAClOwAAAAElGwAAAAElGwAAAAElGwAAAAEmnZ2AdoKG3atAnze++9N8yLtghFG1Tuu+++cPaMM84I840bN4Z5Q2vfvn2Yf/WrX81lJ554Yji75ZZbhnmKLYKkt99++4X5v/7rv4Z5tL1n/vz54exFF10U5rNnzy7tcDSYXr16hfm5554b5kOHDs1l5W4nK9o41q1bt1xW9LpSdO1yNrOVe+7o76poiyDVZbfddgvzou245W4MrJRo01+WxRter7/++nC26D3Odtttl8ui7/8sy7KxY8cWHZEG0qpVqzCfOHFiLqutrQ1nU2xtnTJlSpivW7cuzKP3mf369Qtnv/71r4d50bPdVPgECwAAIBEFCwAAIBEFCwAAIBEFCwAAIJFms+TixhtvDPMDDzywrOvcc889uazol/ubyjKLImvWrAnz2267raSMpqFFi/j/SaJf1L7yyivLusZNN92Uyy6//PJwdtmyZUVHpIkp+vceNmxYmP/617/OZQcffHDSM6VW9AvTp59+elnXiV7zFy9evElnonGcdNJJYR69vmVZlnXt2rWSx6m3oiUXs2bNymUvv/xyOFu05CKydu3akmepn6KlFQcccECYFy2X6NKlS8n3/PDDD8M8Wubz0EMPhbMLFiwI86LvpcGDB+eyomV0bdu2DfOmzidYAAAAiShYAAAAiShYAAAAiShYAAAAiShYAAAAiTSbLYLRxpIsy7Kampow/9nPfhbmF198cS5buXLlJp8LSlW0FSh6JrMsy8aMGZPLip7V8ePHh/ktt9ySy2wLrH6DBg0K8wkTJoT5woULS8qakhNOOCHM6+rqwrxoC1a0SYumq3fv3rms6Lnu0KFDmBc9I03FHnvsEebf+c53ctnWW29d7/v17Nmz3tegNLW1tWH+wAMPlHWdaDPgtGnTwtnrr78+zF944YWy7hl5//33wzzavr169epwtujcTZ1PsAAAABJRsAAAABJRsAAAABJRsAAAABJRsAAAABLZLLcIHnPMMbmsU6dO4WzRtqCizWwpNgZ27tw5l7VsGf9TFJ1v+fLl9T4HTdNWW20V5q+//npZ89GzWrSh6Omnny7xdJXVrVu3MI++Z7IsyxYtWlTB0zQ/vXr1auwjbJJ27drlsp122imcLdoc+8Mf/jDMbc1smtq0aRPm9913Xy4r2hbYokX8f8wbN27c9IP91bvvvhvmH3zwQS477rjjwtmizZbnnXdemP/4xz/OZeX+GefNm5fLxo4dG85SP8OGDctll112WVnXKGf7afS9kUr0vjvLsuzSSy8N82gT5kEHHRTOrlu3btMP1oh8ggUAAJCIggUAAJCIggUAAJCIggUAAJCIggUAAJBIVW8RLNoiFG0t2WKLLcq6djnbArfbbrswjzbEFOVdu3YNZ9evXx/mt912W5iPGDEil23YsCGcpeEUbYk8/PDDc9lPfvKTcLZjx45h/tRTT4X56NGjc1mKbYFF29lOPPHEMN9+++3D/IgjjshlRd8HRVsEb7311lw2cuTIcLa5ijYDFm0LnDBhQqWPUxHRn2f33XcPZ6dMmRLmU6dOTXomKqtLly5h3r59+1xWtI23aJNe0XzktddeC/N+/fqF+YoVK0q+9i677BLm3/rWt8I8OnfRn3Hx4sVhfsEFF+Syoo2I1M+gQYNyWdFzXbQtcMCAAWEe/ZsVvQ9p27ZtmO+44465bPbs2eFs0bnLee8dfe9WM59gAQAAJKJgAQAAJKJgAQAAJKJgAQAAJFLVSy46dOgQ5vvvv3/J13j44YfDfOjQoWE+atSoXNa9e/dwtuh85WjdunWYDx8+PMyXLVuWy6644op6n4P6+fGPfxzm5557bi5bsmRJOHvMMceE+axZszb9YH9V9MvUF154YS47//zzw9lWrVqFedEvSD/zzDO57H/+53/C2dra2jDv27dvmPPpoteJanbXXXflspqamnD2scceC/O1a9cmPROV9fbbb4f5uHHjctn48ePD2aJFWeWI3hNkWfEyi+iehxxySDh75ZVXhvmuu+5a4umybNq0aWFe9B6i6O+V9L70pS+VPFu0iKLoGYkULagaOHBgmEevoeUsgMmyLPv444/D/Mknn8xlf/zjH8u6dlPnEywAAIBEFCwAAIBEFCwAAIBEFCwAAIBEFCwAAIBEaj5tI0hNTU1560IaWNHWsmirWr9+/cq6dtEGqnI2qDz77LNhPn/+/JKvMXjw4DDv1KlTmC9dujSX7bvvvuHsO++8U/I5GkNdXV38jxBoKs/qgAEDwrxoc1n0LJx66qnh7MKFC8s6S8+ePXNZ0bagsWPHhnn0nL300kvh7IMPPhjmd955Z5ivWrUql3Xp0iWcve+++8I8+r4+88wzw9kHHnggzFMo9VltKs9pt27dyppv6lsHP/nkk1xW9FpdtAXztttuS3qmpqgaX1NT2HPPPcO86GdxOT/n33///TAfM2ZMmEeb404//fSS75dlWfbf//3fYf6jH/0ol910001lXbupaA7P6osvvpjLevfu3QgniaXYIvib3/wmzPv3779JZ2qKip5Vn2ABAAAkomABAAAkomABAAAkomABAAAkomABAAAkUtVbBItEm8WeeOKJcLZoE+Hq1avD/J577sllP/zhD8PZxYsXFx2xZK+88kqY77777iVfo2iD4tNPP71JZ2ooTX2LULQxcMqUKeHso48+GuZnnXVWLlu3bl1Z5yj6933ooYdyWceOHcPZu+++O8yvuOKK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\n"},"metadata":{"needs_background":"light"}}]},{"cell_type":"markdown","source":"## Part 2. Deep Learning models","metadata":{}},{"cell_type":"markdown","source":"Preparing the training, validation and test sets","metadata":{}},{"cell_type":"code","source":"from sklearn.model_selection import train_test_split\n\nX_train, X_val, y_train, y_val = train_test_split(\n    X,y, test_size = 0.3, random_state=42\n)\nX_test, X_val, y_test, y_val = train_test_split(\n    X_val, y_val, test_size = 0.5, random_state=42\n)","metadata":{"execution":{"iopub.status.busy":"2022-11-04T15:39:17.04177Z","iopub.execute_input":"2022-11-04T15:39:17.042587Z","iopub.status.idle":"2022-11-04T15:39:18.059463Z","shell.execute_reply.started":"2022-11-04T15:39:17.042545Z","shell.execute_reply":"2022-11-04T15:39:18.058362Z"},"trusted":true},"execution_count":6,"outputs":[]},{"cell_type":"code","source":"print(f\"Training size: {X_train.shape[0]}, Validation size: {X_val.shape[0]}, Test size: {X_test.shape[0]}\")","metadata":{"execution":{"iopub.status.busy":"2022-11-04T15:39:18.061888Z","iopub.execute_input":"2022-11-04T15:39:18.062572Z","iopub.status.idle":"2022-11-04T15:39:18.07073Z","shell.execute_reply.started":"2022-11-04T15:39:18.06253Z","shell.execute_reply":"2022-11-04T15:39:18.06961Z"},"trusted":true},"execution_count":7,"outputs":[{"name":"stdout","text":"Training size: 29400, Validation size: 6300, Test size: 6300\n","output_type":"stream"}]},{"cell_type":"code","source":"import torch\nfrom torch.optim import Adam\nimport seaborn as sns\nfrom torch.optim.lr_scheduler import StepLR","metadata":{"execution":{"iopub.status.busy":"2022-11-04T15:39:18.07206Z","iopub.execute_input":"2022-11-04T15:39:18.072757Z","iopub.status.idle":"2022-11-04T15:39:20.229677Z","shell.execute_reply.started":"2022-11-04T15:39:18.072718Z","shell.execute_reply":"2022-11-04T15:39:20.228558Z"},"trusted":true},"execution_count":8,"outputs":[]},{"cell_type":"code","source":"# The training loop\n\ndef training_loop(model, train_loader, val_loader, epochs,\n                  lr, loss_fn, regularization=None,\n                  reg_lambda=None, mod_epochs=20, early_stopping = False,\n                  patience = None, verbose = None, title = None,\n                  scheduler_bool = False, gamma = 0.1, step_size = 10, model_name = \"model\"):\n    optim = Adam(model.parameters(), lr=lr)\n    if scheduler_bool:\n        scheduler = StepLR(optim, step_size = step_size, gamma = gamma)\n    if torch.cuda.is_available():\n        device = \"cuda\"\n    else:\n        device = \"cpu\"\n\n    train_loss_list = []\n    val_loss_list = []\n    num_train_batches = len(train_loader)\n    num_val_batches = len(val_loader)\n    counter_epochs = 0\n\n    if early_stopping:\n        ear_stopping = EarlyStopping(patience= patience, verbose=verbose, path = model_name+\".pt\")\n\n    for epoch in range(epochs):\n        counter_epochs+=1\n        model.train()\n        train_loss, val_loss = 0.0, 0.0\n        for train_batch in train_loader:\n            X, y = train_batch[0].to(device), train_batch[1].to(device)\n            preds = model(X)\n            loss = loss_fn(preds, y)\n            train_loss += loss.item()\n\n            # Regulirization\n            if regularization == 'L2':\n                l_norm = sum(p.pow(2.0).sum() for p in model.parameters())\n                loss = loss + reg_lambda * l_norm\n            elif regularization == 'L1':\n                l_norm = sum(p.abs().sum() for p in model.parameters())\n                loss = loss + reg_lambda * l_norm\n\n            # Backpropagation\n            optim.zero_grad()\n            loss.backward()\n            optim.step()\n        model.eval()\n        with torch.no_grad():\n            for val_batch in val_loader:\n                X, y = val_batch[0].to(device), val_batch[1].to(device)\n                preds = model(X)\n                val_loss += loss_fn(preds, y).item()\n        train_loss /= num_train_batches\n        val_loss /= num_val_batches\n        train_loss_list.append(train_loss)\n        val_loss_list.append(val_loss)\n        if (epoch + 1) % mod_epochs == 0:\n            print(\n                f\"Epoch: {epoch + 1}/{epochs}{5 * ' '}Training Loss: {train_loss:.4f}{5 * ' '}Validation Loss: {val_loss:.4f}\")\n\n        if early_stopping:\n            ear_stopping(val_loss, model)\n            if ear_stopping.early_stop:\n                print(\"Early stopping\")\n                break\n        if scheduler_bool:\n            scheduler.step()\n    sns.set_style(\"dark\")\n    fig, ax = plt.subplots(figsize=(8, 6))\n    ax.plot(range(1, counter_epochs + 1), train_loss_list, label='Train Loss')\n    ax.plot(range(1, counter_epochs + 1), val_loss_list, label='Val Loss')\n    ax.set_title(\"Train - Val Loss\")\n    ax.set_ylabel(\"Loss\")\n    ax.set_xlabel(\"Epochs\")\n    plt.legend()\n    plt.show()\n\n    if early_stopping:\n        model.load_state_dict(torch.load(model_name+\".pt\"))","metadata":{"execution":{"iopub.status.busy":"2022-11-04T15:39:20.232571Z","iopub.execute_input":"2022-11-04T15:39:20.233208Z","iopub.status.idle":"2022-11-04T15:39:20.249846Z","shell.execute_reply.started":"2022-11-04T15:39:20.233156Z","shell.execute_reply":"2022-11-04T15:39:20.248864Z"},"trusted":true},"execution_count":9,"outputs":[]},{"cell_type":"code","source":"# Early stopping\nclass EarlyStopping:\n    \"\"\"Early stops the training if validation loss doesn't improve after a given patience.\"\"\"\n    def __init__(self, patience=7, verbose=False, delta=0, path='checkpoint.pt', trace_func=print):\n        \"\"\"\n        Args:\n            patience (int): How long to wait after last time validation loss improved.\n                            Default: 7\n            verbose (bool): If True, prints a message for each validation loss improvement.\n                            Default: False\n            delta (float): Minimum change in the monitored quantity to qualify as an improvement.\n                            Default: 0\n            path (str): Path for the checkpoint to be saved to.\n                            Default: 'checkpoint.pt'\n            trace_func (function): trace print function.\n                            Default: print\n        \"\"\"\n        self.patience = patience\n        self.verbose = verbose\n        self.counter = 0\n        self.best_score = None\n        self.early_stop = False\n        self.val_loss_min = np.Inf\n        self.delta = delta\n        self.path = path\n        self.trace_func = trace_func\n    def __call__(self, val_loss, model):\n\n        score = -val_loss\n\n        if self.best_score is None:\n            self.best_score = score\n            self.save_checkpoint(val_loss, model)\n        elif score < self.best_score + self.delta:\n            self.counter += 1\n            if self.counter % 5 == 0: # Print only per 5 degradations of val loss\n                self.trace_func(f'EarlyStopping counter: {self.counter} out of {self.patience}')\n            if self.counter >= self.patience:\n                self.early_stop = True\n        else:\n            self.best_score = score\n            self.save_checkpoint(val_loss, model)\n            self.counter = 0\n\n    def save_checkpoint(self, val_loss, model):\n        '''Saves model when validation loss decrease.'''\n        if self.verbose:\n            self.trace_func(f'Validation loss decreased ({self.val_loss_min:.6f} --> {val_loss:.6f}).  Saving model ...')\n        torch.save(model.state_dict(), self.path)\n        self.val_loss_min = val_loss","metadata":{"execution":{"iopub.status.busy":"2022-11-04T15:39:20.254914Z","iopub.execute_input":"2022-11-04T15:39:20.25525Z","iopub.status.idle":"2022-11-04T15:39:20.268121Z","shell.execute_reply.started":"2022-11-04T15:39:20.255222Z","shell.execute_reply":"2022-11-04T15:39:20.267133Z"},"trusted":true},"execution_count":10,"outputs":[]},{"cell_type":"code","source":"# The test loop \ndef test_loop(model, test_dloader, device='cpu'):\n    predictions_list = np.array([], dtype=np.int64)\n    targets_list = np.array([], dtype=np.int64)\n    model.eval()\n\n    for val_sample in test_dloader:\n        X = val_sample[0].to(device)\n        y = val_sample[1].cpu().numpy()\n        targets_list = np.concatenate((targets_list, y))\n\n        with torch.no_grad():\n            preds = model(X)\n            predictions_list = np.concatenate((predictions_list,\n                                               torch.argmax(preds, dim=-1).cpu().numpy()))\n    acc = len(targets_list[targets_list == predictions_list])/len(targets_list)\n    return predictions_list, targets_list, acc","metadata":{"execution":{"iopub.status.busy":"2022-11-04T15:39:20.269978Z","iopub.execute_input":"2022-11-04T15:39:20.270286Z","iopub.status.idle":"2022-11-04T15:39:20.284134Z","shell.execute_reply.started":"2022-11-04T15:39:20.270259Z","shell.execute_reply":"2022-11-04T15:39:20.282645Z"},"trusted":true},"execution_count":11,"outputs":[]},{"cell_type":"markdown","source":"### 2.1. A Simple MLP","metadata":{}},{"cell_type":"code","source":"accs = [] # A list to hold the accuracy for the three models","metadata":{"execution":{"iopub.status.busy":"2022-11-04T15:39:20.286235Z","iopub.execute_input":"2022-11-04T15:39:20.286817Z","iopub.status.idle":"2022-11-04T15:39:20.293868Z","shell.execute_reply.started":"2022-11-04T15:39:20.286778Z","shell.execute_reply":"2022-11-04T15:39:20.292765Z"},"trusted":true},"execution_count":12,"outputs":[]},{"cell_type":"code","source":"# The Architecture of the MLP\nfrom typing import OrderedDict\nimport torch\nimport torch.nn as nn\nfrom torch.utils.data import Dataset\n\nclass MLP(nn.Module):\n    def __init__(self, in_features = 28*28, out_features = 10,\n                 hidden_layers = [512,256,128]):\n        super(MLP,self).__init__()\n        self.structure = OrderedDict()\n        for i,layer in enumerate(hidden_layers):\n            if i == 0:\n                self.structure[\"Linear \" + str(i+1)] = nn.Linear(in_features=in_features,\n                                                                    out_features=layer, bias=False)\n                self.structure[\"BatchNorm1D \" + str(i+1)] = nn.BatchNorm1d(layer)\n                self.structure[\"Relu \" + str(i+1)] = nn.ReLU()\n                self.structure[\"Dropout \" + str(i+1)] = nn.Dropout(p = 0.2)\n            else:\n                self.structure[\"Linear \" + str(i+1)] = nn.Linear(in_features = hidden_layers[i-1],\n                                                    out_features=layer, bias=False)\n                self.structure[\"BatchNorm1D \" + str(i+1)] = nn.BatchNorm1d(layer)\n                self.structure[\"Relu \" + str(i+1)] = nn.ReLU()\n                self.structure[\"Dropout \" + str(i+1)] = nn.Dropout(p = 0.2)\n        self.structure[\"Out Linear\"] = nn.Linear(in_features=hidden_layers[-1],out_features=out_features)\n        \n        self.linear_relu_stack = nn.Sequential(self.structure)\n        \n    def forward(self,x):\n        return self.linear_relu_stack(x)","metadata":{"execution":{"iopub.status.busy":"2022-11-04T15:39:20.296648Z","iopub.execute_input":"2022-11-04T15:39:20.297472Z","iopub.status.idle":"2022-11-04T15:39:20.311223Z","shell.execute_reply.started":"2022-11-04T15:39:20.297432Z","shell.execute_reply":"2022-11-04T15:39:20.310124Z"},"trusted":true},"execution_count":13,"outputs":[]},{"cell_type":"code","source":"# The dataset for the MLP\nclass mlp_dataset(Dataset):\n    def __init__(self, X, y):\n        self.X = X; self.y = y\n    \n    def __len__(self):\n        return len(self.y)\n    \n    def __getitem__(self,idx):\n        return torch.tensor(self.X[idx,:], dtype=torch.float32), torch.tensor(self.y[idx], dtype=torch.int64)","metadata":{"execution":{"iopub.status.busy":"2022-11-04T15:39:20.314157Z","iopub.execute_input":"2022-11-04T15:39:20.315011Z","iopub.status.idle":"2022-11-04T15:39:20.326889Z","shell.execute_reply.started":"2022-11-04T15:39:20.314951Z","shell.execute_reply":"2022-11-04T15:39:20.325898Z"},"trusted":true},"execution_count":14,"outputs":[]},{"cell_type":"code","source":"# Setting training Hyperparameters and preparing the datasets & dataloaders\nfrom torch.utils.data import DataLoader\n\ndevice = \"cuda\" if torch.cuda.is_available() else \"cpu\"\nBATCH_SIZE = 128\nLR = 1e-3\nPATIENCE = 20\nloss_fn = nn.CrossEntropyLoss().to(device)\nEPOCHS = 300\n\ntrain_dloader = DataLoader(mlp_dataset(X_train,y_train),\n                           batch_size=BATCH_SIZE, shuffle=True)\ntest_dloader = DataLoader(mlp_dataset(X_test,y_test),batch_size=BATCH_SIZE)\nval_dloader = DataLoader(mlp_dataset(X_val, y_val), batch_size=BATCH_SIZE)","metadata":{"execution":{"iopub.status.busy":"2022-11-04T15:39:20.328396Z","iopub.execute_input":"2022-11-04T15:39:20.3305Z","iopub.status.idle":"2022-11-04T15:39:20.459664Z","shell.execute_reply.started":"2022-11-04T15:39:20.330462Z","shell.execute_reply":"2022-11-04T15:39:20.458668Z"},"trusted":true},"execution_count":15,"outputs":[]},{"cell_type":"code","source":"model = MLP(hidden_layers=[512,256,128,64]).to(device)","metadata":{"execution":{"iopub.status.busy":"2022-11-04T16:01:58.109575Z","iopub.execute_input":"2022-11-04T16:01:58.110265Z","iopub.status.idle":"2022-11-04T16:01:58.124797Z","shell.execute_reply.started":"2022-11-04T16:01:58.110224Z","shell.execute_reply":"2022-11-04T16:01:58.123849Z"},"trusted":true},"execution_count":46,"outputs":[]},{"cell_type":"code","source":"# Start training!!\ntraining_loop(model, train_dloader, val_dloader, epochs=EPOCHS, lr = LR,\n              loss_fn=loss_fn, regularization=\"L2\", reg_lambda=1e-4, mod_epochs=10,\n              early_stopping=True, verbose=True, patience=PATIENCE, title = \"MLP training\",\n              scheduler_bool=True, model_name = \"model1\")","metadata":{"execution":{"iopub.status.busy":"2022-11-04T15:39:23.881735Z","iopub.execute_input":"2022-11-04T15:39:23.882191Z","iopub.status.idle":"2022-11-04T15:41:06.591183Z","shell.execute_reply.started":"2022-11-04T15:39:23.882134Z","shell.execute_reply":"2022-11-04T15:41:06.590094Z"},"trusted":true},"execution_count":17,"outputs":[{"name":"stdout","text":"Validation loss decreased (inf --> 0.168354).  Saving model ...\nValidation loss decreased (0.168354 --> 0.124641).  Saving model ...\nValidation loss decreased (0.124641 --> 0.115361).  Saving model ...\nValidation loss decreased (0.115361 --> 0.098323).  Saving model ...\nValidation loss decreased (0.098323 --> 0.098294).  Saving model ...\nValidation loss decreased (0.098294 --> 0.088778).  Saving model ...\nValidation loss decreased (0.088778 --> 0.087091).  Saving model ...\nEpoch: 10/300     Training Loss: 0.0636     Validation Loss: 0.0879\nValidation loss decreased (0.087091 --> 0.068349).  Saving model ...\nValidation loss decreased (0.068349 --> 0.066808).  Saving model ...\nValidation loss decreased (0.066808 --> 0.063984).  Saving model ...\nValidation loss decreased (0.063984 --> 0.062790).  Saving model ...\nValidation loss decreased (0.062790 --> 0.062256).  Saving model ...\nEpoch: 20/300     Training Loss: 0.0147     Validation Loss: 0.0629\nValidation loss decreased (0.062256 --> 0.061941).  Saving model ...\nValidation loss decreased (0.061941 --> 0.061020).  Saving model ...\nValidation loss decreased (0.061020 --> 0.060843).  Saving model ...\nValidation loss decreased (0.060843 --> 0.060324).  Saving model ...\nValidation loss decreased (0.060324 --> 0.060303).  Saving model ...\nEpoch: 30/300     Training Loss: 0.0124     Validation Loss: 0.0617\nEarlyStopping counter: 5 out of 20\nEarlyStopping counter: 10 out of 20\nEpoch: 40/300     Training Loss: 0.0123     Validation Loss: 0.0598\nValidation loss decreased (0.060303 --> 0.059761).  Saving model ...\nEarlyStopping counter: 5 out of 20\nEpoch: 50/300     Training Loss: 0.0122     Validation Loss: 0.0608\nEarlyStopping counter: 10 out of 20\nEarlyStopping counter: 15 out of 20\nEpoch: 60/300     Training Loss: 0.0117     Validation Loss: 0.0610\nEarlyStopping counter: 20 out of 20\nEarly stopping\n","output_type":"stream"},{"output_type":"display_data","data":{"text/plain":"<Figure size 576x432 with 1 Axes>","image/png":"iVBORw0KGgoAAAANSUhEUgAAAfEAAAGDCAYAAAA72Cm3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAAsTAAALEwEAmpwYAABAPUlEQVR4nO3deXxU1f3/8de9s2ZPgJCwBKyIooCIiiKK1gBGQERF26pV26+01i5q3Vq0xUpVurgUbX8qolbr0qpVEWJdACsuaFGwqVstIhC2sGRfZ+bO/f1xJ0MiCQbIZHLJ+/l4DHfWO5+5GeZ9z7n33GvYtm0jIiIirmMmuwARERHZNwpxERERl1KIi4iIuJRCXERExKUU4iIiIi6lEBcREXEphbiIy82cOZPnnnsu2WXs5qKLLuLpp59OdhkiBzRvsgsQ6YlGjx4dv97Q0IDf78fj8QBw8803c+aZZ3Z4XgsWLOj0+gDmz5/P66+/zuOPP97q/vLyck4++WSeffZZDj300H2a9z333MP69eu5/fbbO6NUkR5LIS6SBKtXr45fLyws5JZbbmHcuHG7PS8SieD1Jue/6Zlnnskf/vAHSktLKSgoiN//4osvcuihh+5zgItI51F3ukg38u6773LyySczf/58TjzxRGbNmkVVVRWXXXYZY8eOZcyYMVx22WVs3bo1/pqW3dbPPvss559/Pr/97W8ZM2YMhYWFvP766/tUS35+PmPHjmXhwoWt7n/++eeZPn36V9a1r5YuXcrUqVM59thjueiii/j888/jj82fP5/x48czevRoioqKWLFiBQAlJSWcc845HH300YwbN465c+fudx0ibqAQF+lmduzYQVVVFa+99hq//vWviUajnHPOObz22mu89tprBAIB5syZ0+7rS0pK+NrXvsY777zDzJkzufHGG9nXoyufddZZvPDCC/Hba9eu5dNPP2XatGl7XVdHfPHFF1xzzTXccMMNrFixgpNPPpkf/OAHhEIh1q5dy+OPP84zzzzD6tWrefDBBxkwYAAAt956KxdffDGrVq3i1VdfZfLkyftVh4hbKMRFuhnTNLniiivw+/0Eg0FycnIoKioiJSWF9PR0Lr/8clauXNnu6/v37883vvENPB4PZ599Ntu3b2fHjh37VMukSZPYsWMHq1atAmDhwoWMHz+eXr167XVdHfHiiy9yyimn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\n"},"metadata":{}}]},{"cell_type":"code","source":"# Evaluate on the test set (not the submission test)\nfrom sklearn.metrics import classification_report\n\npreds, targets, acc = test_loop(model,test_dloader,device)\naccs.append(acc)\nprint(classification_report(targets, preds))\nprint(f\"Accuracy score: {100*acc:.2f} %\")","metadata":{"execution":{"iopub.status.busy":"2022-11-04T15:41:06.593187Z","iopub.execute_input":"2022-11-04T15:41:06.593627Z","iopub.status.idle":"2022-11-04T15:41:06.780275Z","shell.execute_reply.started":"2022-11-04T15:41:06.593585Z","shell.execute_reply":"2022-11-04T15:41:06.777498Z"},"trusted":true},"execution_count":18,"outputs":[{"name":"stdout","text":"              precision    recall  f1-score   support\n\n           0       0.99      0.99      0.99       604\n           1       0.98      0.99      0.99       690\n           2       0.99      0.99      0.99       644\n           3       0.98      0.98      0.98       675\n           4       0.98      0.99      0.99       653\n           5       0.99      0.98      0.98       510\n           6       1.00      0.99      0.99       625\n           7       0.98      0.99      0.99       664\n           8       0.98      0.98      0.98       618\n           9       0.99      0.97      0.98       617\n\n    accuracy                           0.98      6300\n   macro avg       0.99      0.98      0.98      6300\nweighted avg       0.98      0.98      0.98      6300\n\nAccuracy score: 98.49 %\n","output_type":"stream"}]},{"cell_type":"markdown","source":"### 2.2. CNN ","metadata":{}},{"cell_type":"code","source":"# The main architecture\n\nclass conv_block(nn.Module):\n    def __init__(self, in_channels, out_channels,\n                 kernel_size = 5, stride = 1, padding = 0, bias = True):\n        super(conv_block,self).__init__()\n        \n        self.conv = nn.Sequential(\n            nn.Conv2d(in_channels = in_channels, out_channels =  out_channels,\n                      kernel_size = kernel_size, stride = stride,\n                      padding = padding, bias = bias),\n            nn.BatchNorm2d(out_channels),\n            nn.ReLU()\n            )\n    def forward(self,x):\n        return self.conv(x)\n        \n        \nclass CNN(nn.Module):\n    def __init__(self,in_channels, out_channels):\n        super(CNN,self).__init__()\n        self.backbone = nn.Sequential(\n            conv_block(in_channels=in_channels,\n                       out_channels=6, bias = False),\n            nn.AdaptiveMaxPool2d(output_size = 12),\n            conv_block(in_channels = 6, out_channels = 16,\n                       bias = False),\n            nn.AdaptiveMaxPool2d(output_size = 4),\n            nn.Flatten()\n        )\n        self.classifier = nn.Sequential(\n            nn.Linear(in_features=4*4*16, out_features=256, bias=False),\n            nn.BatchNorm1d(256),\n            nn.ReLU(),\n            nn.Linear(in_features = 256, out_features = 128, bias = False),\n            nn.BatchNorm1d(128),\n            nn.ReLU(),\n            nn.Linear(in_features = 128, out_features = 10)\n        )\n    \n    def forward(self,x):\n        x = self.backbone(x)\n        return self.classifier(x)","metadata":{"execution":{"iopub.status.busy":"2022-11-04T15:41:06.783251Z","iopub.execute_input":"2022-11-04T15:41:06.784117Z","iopub.status.idle":"2022-11-04T15:41:06.797698Z","shell.execute_reply.started":"2022-11-04T15:41:06.784063Z","shell.execute_reply":"2022-11-04T15:41:06.796464Z"},"trusted":true},"execution_count":19,"outputs":[]},{"cell_type":"code","source":"# The dataset for the CNN\n\nclass cnn_dataset(Dataset):\n    def __init__(self,X,y, transforms = None):\n        self.X = np.expand_dims(X, axis = 0); self.y = y\n        self.transforms = transforms\n    def __len__(self):\n        return len(self.y)\n    \n    def __getitem__(self,idx):\n        if self.transforms is not None:\n            img = np.resize(self.X[:,idx,:], (28,28,1))\n            augmentations = self.transforms\n            features = augmentations(image = img)[\"image\"]\n            features = torch.tensor(np.transpose(features, (2,0,1)), dtype=torch.float32)\n            labels = torch.tensor(self.y[idx], dtype = torch.int64)\n            return features, labels\n        else:\n            features = torch.tensor(self.X[:,idx,:], dtype = torch.float32).view(-1,28,28)\n            label = torch.tensor(self.y[idx], dtype = torch.int64)\n            return features, label","metadata":{"execution":{"iopub.status.busy":"2022-11-04T15:41:06.799373Z","iopub.execute_input":"2022-11-04T15:41:06.800431Z","iopub.status.idle":"2022-11-04T15:41:06.813454Z","shell.execute_reply.started":"2022-11-04T15:41:06.800382Z","shell.execute_reply":"2022-11-04T15:41:06.812555Z"},"trusted":true},"execution_count":20,"outputs":[]},{"cell_type":"code","source":"# Preparing datasets & dataloaders\ntrain_dloader = DataLoader(cnn_dataset(X_train,y_train),\n                           batch_size=BATCH_SIZE, shuffle=True)\ntest_dloader = DataLoader(cnn_dataset(X_test,y_test),batch_size=BATCH_SIZE)\nval_dloader = DataLoader(cnn_dataset(X_val, y_val), batch_size=BATCH_SIZE)","metadata":{"execution":{"iopub.status.busy":"2022-11-04T15:41:06.814848Z","iopub.execute_input":"2022-11-04T15:41:06.816163Z","iopub.status.idle":"2022-11-04T15:41:06.828927Z","shell.execute_reply.started":"2022-11-04T15:41:06.816116Z","shell.execute_reply":"2022-11-04T15:41:06.827688Z"},"trusted":true},"execution_count":21,"outputs":[]},{"cell_type":"code","source":"model = CNN(in_channels=1, out_channels=10).to(device)","metadata":{"execution":{"iopub.status.busy":"2022-11-04T15:41:06.830573Z","iopub.execute_input":"2022-11-04T15:41:06.831119Z","iopub.status.idle":"2022-11-04T15:41:06.845383Z","shell.execute_reply.started":"2022-11-04T15:41:06.831075Z","shell.execute_reply":"2022-11-04T15:41:06.844125Z"},"trusted":true},"execution_count":22,"outputs":[]},{"cell_type":"code","source":"training_loop(model, train_dloader, val_dloader, epochs=EPOCHS, lr = LR,\n              loss_fn=loss_fn, regularization=\"L2\", reg_lambda=1e-4, mod_epochs=10,\n              early_stopping=True, verbose=True, patience=PATIENCE, title = \"CNN Training\",\n              scheduler_bool=True, model_name=\"model2\", step_size = 20)","metadata":{"execution":{"iopub.status.busy":"2022-11-04T15:41:06.847657Z","iopub.execute_input":"2022-11-04T15:41:06.848113Z","iopub.status.idle":"2022-11-04T15:44:03.588729Z","shell.execute_reply.started":"2022-11-04T15:41:06.848069Z","shell.execute_reply":"2022-11-04T15:44:03.587705Z"},"trusted":true},"execution_count":23,"outputs":[{"name":"stdout","text":"Validation loss decreased (inf --> 0.084906).  Saving model ...\nValidation loss decreased (0.084906 --> 0.057585).  Saving model ...\nValidation loss decreased (0.057585 --> 0.049269).  Saving model ...\nValidation loss decreased (0.049269 --> 0.047116).  Saving model ...\nValidation loss decreased (0.047116 --> 0.040816).  Saving model ...\nValidation loss decreased (0.040816 --> 0.040527).  Saving model ...\nEpoch: 10/300     Training Loss: 0.0110     Validation Loss: 0.0359\nValidation loss decreased (0.040527 --> 0.035910).  Saving model ...\nEarlyStopping counter: 5 out of 20\nEpoch: 20/300     Training Loss: 0.0060     Validation Loss: 0.0401\nEarlyStopping counter: 10 out of 20\nValidation loss decreased (0.035910 --> 0.029843).  Saving model ...\nValidation loss decreased (0.029843 --> 0.028659).  Saving model ...\nValidation loss decreased (0.028659 --> 0.028357).  Saving model ...\nValidation loss decreased (0.028357 --> 0.027308).  Saving model ...\nValidation loss decreased (0.027308 --> 0.027150).  Saving model ...\nValidation loss decreased (0.027150 --> 0.026985).  Saving model ...\nEpoch: 30/300     Training Loss: 0.0012     Validation Loss: 0.0273\nValidation loss decreased (0.026985 --> 0.026736).  Saving model ...\nEarlyStopping counter: 5 out of 20\nValidation loss decreased (0.026736 --> 0.026479).  Saving model ...\nValidation loss decreased (0.026479 --> 0.025828).  Saving model ...\nEpoch: 40/300     Training Loss: 0.0012     Validation Loss: 0.0258\nValidation loss decreased (0.025828 --> 0.025805).  Saving model ...\nValidation loss decreased (0.025805 --> 0.025711).  Saving model ...\nValidation loss decreased (0.025711 --> 0.025538).  Saving model ...\nValidation loss decreased (0.025538 --> 0.025466).  Saving model ...\nValidation loss decreased (0.025466 --> 0.025449).  Saving model ...\nEpoch: 50/300     Training Loss: 0.0011     Validation Loss: 0.0254\nValidation loss decreased (0.025449 --> 0.025407).  Saving model ...\nValidation loss decreased (0.025407 --> 0.025329).  Saving model ...\nValidation loss decreased (0.025329 --> 0.025325).  Saving model ...\nValidation loss decreased (0.025325 --> 0.025033).  Saving model ...\nValidation loss decreased (0.025033 --> 0.024772).  Saving model ...\nEpoch: 60/300     Training Loss: 0.0011     Validation Loss: 0.0255\nEarlyStopping counter: 5 out of 20\nValidation loss decreased (0.024772 --> 0.024535).  Saving model ...\nEpoch: 70/300     Training Loss: 0.0011     Validation Loss: 0.0250\nEarlyStopping counter: 5 out of 20\nEarlyStopping counter: 10 out of 20\nEpoch: 80/300     Training Loss: 0.0011     Validation Loss: 0.0255\nEarlyStopping counter: 15 out of 20\nEarlyStopping counter: 20 out of 20\nEarly stopping\n","output_type":"stream"},{"output_type":"display_data","data":{"text/plain":"<Figure size 576x432 with 1 Axes>","image/png":"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\n"},"metadata":{}}]},{"cell_type":"code","source":"from sklearn.metrics import classification_report\n\npreds, targets, acc = test_loop(model,test_dloader,device)\naccs.append(acc)\nprint(classification_report(targets, preds))\nprint(f\"Accuracy score: {100*acc:.2f} %\")","metadata":{"execution":{"iopub.status.busy":"2022-11-04T15:44:03.59023Z","iopub.execute_input":"2022-11-04T15:44:03.591333Z","iopub.status.idle":"2022-11-04T15:44:03.78671Z","shell.execute_reply.started":"2022-11-04T15:44:03.59129Z","shell.execute_reply":"2022-11-04T15:44:03.785525Z"},"trusted":true},"execution_count":24,"outputs":[{"name":"stdout","text":"              precision    recall  f1-score   support\n\n           0       0.99      1.00      0.99       604\n           1       1.00      1.00      1.00       690\n           2       0.99      1.00      0.99       644\n           3       0.99      0.99      0.99       675\n           4       0.99      0.99      0.99       653\n           5       0.99      0.99      0.99       510\n           6       0.99      0.99      0.99       625\n           7       0.99      0.99      0.99       664\n           8       0.99      0.99      0.99       618\n           9       0.99      0.99      0.99       617\n\n    accuracy                           0.99      6300\n   macro avg       0.99      0.99      0.99      6300\nweighted avg       0.99      0.99      0.99      6300\n\nAccuracy score: 99.19 %\n","output_type":"stream"}]},{"cell_type":"markdown","source":"### 2.3. Applying Data Augmentation","metadata":{}},{"cell_type":"code","source":"import albumentations as A","metadata":{"execution":{"iopub.status.busy":"2022-11-04T15:44:03.789124Z","iopub.execute_input":"2022-11-04T15:44:03.789885Z","iopub.status.idle":"2022-11-04T15:44:05.045551Z","shell.execute_reply.started":"2022-11-04T15:44:03.789838Z","shell.execute_reply":"2022-11-04T15:44:05.044484Z"},"trusted":true},"execution_count":25,"outputs":[]},{"cell_type":"code","source":"transforms = [A.HorizontalFlip(p=1),\n              A.OpticalDistortion(distort_limit=1.2,shift_limit=0.6,p=1),\n              A.PixelDropout(dropout_prob=0.01,p=1)]\n\ntransforms_names = [\"Horizontal Flip\", \"Optical Distortion\",\n                    \"PixelDropout\"]","metadata":{"execution":{"iopub.status.busy":"2022-11-04T15:44:05.049067Z","iopub.execute_input":"2022-11-04T15:44:05.049375Z","iopub.status.idle":"2022-11-04T15:44:05.055769Z","shell.execute_reply.started":"2022-11-04T15:44:05.049345Z","shell.execute_reply":"2022-11-04T15:44:05.05415Z"},"trusted":true},"execution_count":26,"outputs":[]},{"cell_type":"code","source":"import random\nimport seaborn as sns\n\ndef visualize_tranforms(digit, X, y, transforms, random_state = 42):\n    indices = np.where(y == digit)[0]\n    random.seed(random_state)\n    idx = indices[random.randint(a=0,b=len(indices)-1)]\n    img = np.resize(X[idx,:], (28,28,1))\n    sns.set_style(\"dark\")\n    fig, ax = plt.subplots(figsize = (10,5), nrows = 1, ncols = len(transforms)+1)\n    for i in range(len(transforms)+1):\n        if i==0:\n            ax[i].imshow(img, cmap = \"gray\")\n            ax[i].axis(\"off\")\n            ax[i].set_title(\"original\")\n        else:\n            transformed_img = transforms[i-1](image = img)[\"image\"]\n            ax[i].imshow(transformed_img, cmap = \"gray\")\n            ax[i].axis(\"off\")\n            ax[i].set_title(transforms_names[i-1])\n    plt.show()","metadata":{"execution":{"iopub.status.busy":"2022-11-04T15:44:05.057775Z","iopub.execute_input":"2022-11-04T15:44:05.058606Z","iopub.status.idle":"2022-11-04T15:44:05.072254Z","shell.execute_reply.started":"2022-11-04T15:44:05.058565Z","shell.execute_reply":"2022-11-04T15:44:05.071179Z"},"trusted":true},"execution_count":27,"outputs":[]},{"cell_type":"code","source":"visualize_tranforms(digit = 6,X = X,y = y,transforms=transforms)","metadata":{"execution":{"iopub.status.busy":"2022-11-04T15:44:05.079083Z","iopub.execute_input":"2022-11-04T15:44:05.079348Z","iopub.status.idle":"2022-11-04T15:44:05.459002Z","shell.execute_reply.started":"2022-11-04T15:44:05.079323Z","shell.execute_reply":"2022-11-04T15:44:05.457908Z"},"trusted":true},"execution_count":28,"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 720x360 with 4 Axes>","image/png":"iVBORw0KGgoAAAANSUhEUgAAAjwAAACXCAYAAAARS4GeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAAsTAAALEwEAmpwYAAAgWElEQVR4nO3deXRN1x4H8K8MN4kgRA2JoVRbVKsuiSRENEJRtOZ62pj6SGJ4VNTSPtpq61lFTUEjimprJiilNTQVnrxoJKipCM+QkDRIECHj+8PKffY+R+7Nzc107vezltX+TvY+d9979zln55xf9q5SUFBQACIiIiINsynvBhARERGVNg54iIiISPM44CEiIiLN44CHiIiINI8DHiIiItI8DniIiIhI86xmwPPxxx9j6dKlFi9blOvXr6N58+bIzc0t8b6odFjqu7akLl264MiRIyWqFx4ejn/+85+WbprVSU5Ohl6vR15eXon2ExgYiM2bN5tdPy4uDt27dy9RG0ri73//O7Zt21Zur1/Z6fV6XLt2rUT7CAsLw5QpUyzUIutkV94NKCufffZZqZSlstOlSxd88cUX6NChg2FbZGQkNm/ejPXr15u1z9L+rq9fv46AgACcPn0adnYlP9ymTZuGXbt2wd7e3rBt1qxZeOONN4RywcHBJX6tyigyMhKrV6/G1atXUa1aNXTt2hWhoaGoUaOGSfXlPubu7o6EhITSbDLCwsIQHh4OnU4HAKhbty46duyI4OBg1K1bFwDg4eGBX375xaR9XblyBfPmzStRe+R9fPPNN2bvz5p06dIFaWlpsLW1hZOTE/z8/DBjxgyL96HC80rVqlUBAE5OTnjllVcwbNgwdOzY0aKvZQklPU9bilXc4Snpb2ekTZW1X7z33ntISEgw/JMHO9Zq1apVmDdvHj744APExcVh48aNSE5OxsiRI5GdnV3ezStSz549kZCQgKNHj2LJkiVIS0tD//79kZqaWqbt4N3okgsPD0dCQgK2bduGU6dO4euvvy611/r999+RkJCAHTt2oEOHDhg/fjwiIyNVy/K7reQDnsTERAQGBsLDwwO9evXCgQMHADz+LfiTTz7B6NGj0aZNG8TGxmLatGlYsGCBoe6KFSvg6+sLX19fbN68Gc2bN8eVK1cM9QvLxsbGws/PD6tWrYKPjw98fX2xdetWw35+++039O3b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\n"},"metadata":{}}]},{"cell_type":"code","source":"visualize_tranforms(digit = 9,X = X,y = y,transforms=transforms)","metadata":{"execution":{"iopub.status.busy":"2022-11-04T15:44:05.460583Z","iopub.execute_input":"2022-11-04T15:44:05.461003Z","iopub.status.idle":"2022-11-04T15:44:05.818935Z","shell.execute_reply.started":"2022-11-04T15:44:05.460943Z","shell.execute_reply":"2022-11-04T15:44:05.817952Z"},"trusted":true},"execution_count":29,"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 720x360 with 4 Axes>","image/png":"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\n"},"metadata":{}}]},{"cell_type":"code","source":"visualize_tranforms(digit = 0,X = X,y = y,transforms=transforms)","metadata":{"execution":{"iopub.status.busy":"2022-11-04T15:44:05.820568Z","iopub.execute_input":"2022-11-04T15:44:05.820945Z","iopub.status.idle":"2022-11-04T15:44:06.176234Z","shell.execute_reply.started":"2022-11-04T15:44:05.820906Z","shell.execute_reply":"2022-11-04T15:44:06.174966Z"},"trusted":true},"execution_count":30,"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 720x360 with 4 Axes>","image/png":"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\n"},"metadata":{}}]},{"cell_type":"code","source":"transforms = A.Compose([\n    A.OpticalDistortion(distort_limit=1.2,shift_limit=0.6,p=0.5),\n    A.OneOf([A.HorizontalFlip(p=1),\n             A.PixelDropout(dropout_prob=0.01,p=1)\n             ], p = 0.5)\n])","metadata":{"execution":{"iopub.status.busy":"2022-11-04T15:44:06.177691Z","iopub.execute_input":"2022-11-04T15:44:06.178299Z","iopub.status.idle":"2022-11-04T15:44:06.184571Z","shell.execute_reply.started":"2022-11-04T15:44:06.178257Z","shell.execute_reply":"2022-11-04T15:44:06.183503Z"},"trusted":true},"execution_count":31,"outputs":[]},{"cell_type":"code","source":"train_dloader = DataLoader(cnn_dataset(X_train,y_train, transforms=transforms),\n                           batch_size=BATCH_SIZE, shuffle=True)\ntest_dloader = DataLoader(cnn_dataset(X_test,y_test),batch_size=BATCH_SIZE)\nval_dloader = DataLoader(cnn_dataset(X_val, y_val), batch_size=BATCH_SIZE)","metadata":{"execution":{"iopub.status.busy":"2022-11-04T15:44:06.186293Z","iopub.execute_input":"2022-11-04T15:44:06.187055Z","iopub.status.idle":"2022-11-04T15:44:06.194517Z","shell.execute_reply.started":"2022-11-04T15:44:06.187005Z","shell.execute_reply":"2022-11-04T15:44:06.193483Z"},"trusted":true},"execution_count":32,"outputs":[]},{"cell_type":"code","source":"model = CNN(in_channels=1, out_channels=10).to(device)","metadata":{"execution":{"iopub.status.busy":"2022-11-04T15:44:06.196252Z","iopub.execute_input":"2022-11-04T15:44:06.196637Z","iopub.status.idle":"2022-11-04T15:44:06.208701Z","shell.execute_reply.started":"2022-11-04T15:44:06.196601Z","shell.execute_reply":"2022-11-04T15:44:06.20758Z"},"trusted":true},"execution_count":33,"outputs":[]},{"cell_type":"code","source":"training_loop(model, train_dloader, val_dloader, epochs=EPOCHS, lr = LR,\n              loss_fn=loss_fn, regularization=\"L2\", reg_lambda=1e-4, mod_epochs=10,\n              early_stopping=True, verbose=False, patience=PATIENCE, title = \"CNN Training with augmentations\",\n              scheduler_bool=True, step_size = 20, model_name = \"model3\")","metadata":{"execution":{"iopub.status.busy":"2022-11-04T15:44:06.210456Z","iopub.execute_input":"2022-11-04T15:44:06.21095Z","iopub.status.idle":"2022-11-04T16:01:18.534464Z","shell.execute_reply.started":"2022-11-04T15:44:06.210911Z","shell.execute_reply":"2022-11-04T16:01:18.533481Z"},"trusted":true},"execution_count":34,"outputs":[{"name":"stdout","text":"Epoch: 10/300     Training Loss: 0.0548     Validation Loss: 0.0498\nEpoch: 20/300     Training Loss: 0.0375     Validation Loss: 0.0400\nEpoch: 30/300     Training Loss: 0.0195     Validation Loss: 0.0324\nEarlyStopping counter: 5 out of 20\nEarlyStopping counter: 10 out of 20\nEpoch: 40/300     Training Loss: 0.0150     Validation Loss: 0.0312\nEarlyStopping counter: 5 out of 20\nEarlyStopping counter: 10 out of 20\nEpoch: 50/300     Training Loss: 0.0152     Validation Loss: 0.0310\nEarlyStopping counter: 15 out of 20\nEarlyStopping counter: 20 out of 20\nEarly stopping\n","output_type":"stream"},{"output_type":"display_data","data":{"text/plain":"<Figure size 576x432 with 1 Axes>","image/png":"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c+bsMT0QCHDTTTcxduxYLrnkEioqKqLTnnjiCcaOHUtxcTHvvvtuPMsUERHpceIW8JZlMX36dJ566ilKSkpYvHgx69at222el19+mYyMDN566y1+/OMfc//99wOwbt06SkpKKCkp4amnnuKee+7BsvZ+IQERERHZU9wCvrS0lIKCAvLz83G73UyYMIGlS5fuNs+yZcu46KKLACguLmbVqlXYts3SpUuZMGECbreb/Px8CgoKKC0tjVepIiIiPU7cAt7n85GXlxd97vV68fl8e8zTt29fAEzTJD09nerq6piWFRERkbZpkJ2IiEgPFLeA93q9VFZWRp/7fD68Xu8e82zZsgWAUChEfX092dnZMS0rIiIibYtbwA8bNoyysjLKy8sJBAKUlJRQVFS02zxFRUXMnz8fgDfeeIPRo0djGAZFRUWUlJQQCAQoLy+nrKyM4cOHx6tUERGRHseM24pNk2nTpjF16lQsy2Ly5MkUFhYya9Yshg4dypgxY5gyZQq33XYbY8eOJTMzk4ceegiAwsJCxo0bx/jx43E6nUybNg2ns+N3PBIRETlU9Zi7yYmIiMguGmQnIiLSAyngRUREeiAFvIiISA+kgBcREemBFPAiIiI9kAJeRESkBzpkA35ft7I91Nx5552ccsopnH/++dHXampquPrqqzn33HO5+uqrqa2t7cIKu8aWLVv40Y9+xPjx45kwYQLPPvssoG2zk9/vZ8qUKVxwwQVMmDCBRx55BIDy8nIuueQSxo4dy0033UQgEOjiSruOZVlceOGF/PSnPwW0bXYqKipi4sSJTJo0iYsvvhjQ39VOdXV13HjjjZx33nmMGzeONWvW7Ne2OSQDPpZb2R5qLr74Yp566qndXpszZw6nnHIKb775JqeccsohuSPkdDq54447eO211/jzn//Miy++yLp167RtWrndbp599lleffVVFixYwLvvvssnn3zC/fffz49//GPeeustMjIyeOWVV7q61C7z3HPPMXDgwOhzbZtdnn32WRYuXMjf/vY3QP9zdpoxYwZnnHEGr7/+OgsXLmTgwIH7tW0OyYCP5Va2h5qTTjqJzMzM3V5bunQpF154IQAXXnghS5Ys6YLKulafPn049thjAUhLS+PII4/E5/Np27QyDIPU1FQgcj+JUCiEYRi8//77FBcXA3DRRRcdsn9flZWVvP3220yZMgUA27a1bdqhvyuor6/nww8/jP7OuN1uMjIy9mvbHJIBr9vRxmbHjh306dMHgNzcXHbs2NHFFXWtiooKvvjiC0aMGKFt8x2WZTFp0iROPfVUTj31VPLz88nIyMA0I1fCzsvLO2T/vu677z5uu+02HI7Iv9rq6mptm++45ppruPjii/nzn/8M6H8ORP7P5OTkcOedd3LhhRdy991309TUtF/b5pAMeOk4wzAwDKOry+gyjY2N3Hjjjdx1112kpaXtNu1Q3zZOp5OFCxfyzjvvUFpayoYNG7q6pG5h+fLl5OTkMHTo0K4upVt66aWXmD9/Pk8++SQvvPACH3744W7TD9W/q1AoxNq1a7nssstYsGABycnJe3THx7ptDsmA1+1oY9OrVy+2bt0KwNatW8nJyeniirpGMBjkxhtvZOLEiZx77rmAts3eZGRkMGrUKD755BPq6uoIhUJApJv6UPz7Wr16NcuWLaOoqIibb76Z999/nxkzZmjbtNr5uXv16sXYsWMpLS3V3xWRXp28vDxGjBgBwHnnncfatWv3a9sckgEfy61sJTLKdcGCBQAsWLCAMWPGdG1BXcC2be6++26OPPJIrr766ujr2jYRVVVV1NXVAdDS0sJ7773HwIEDGTVqFG+88QYA8+fPPyT/vm655RZWrFjBsmXLePDBBxk9ejQPPPCAtg3Q1NREQ0ND9PE//vEPCgsL9XdFpPs9Ly8v2hO2atUqBg4cuF/b5pC9m9w777zDfffdF72V7fXXX9/VJXWpm2++mX/+859UV1fTq1cvfvGLX3DOOedw0003sWXLFvr168fDDz9MVlZWV5d6UH300UdcccUVDB48OHoc9eabb2b48OGH/LYB+PLLL7njjjuwLAvbtjnvvPO44YYbKC8v51e/+hW1tbUMGTKE+++/H7fb3dXldpkPPviAp59+mieeeELbhsipgj//+c+ByBiO888/n+uvv57q6mr9XQFffPEFd999N8FgkPz8fGbOnEk4HO7wtjlkA15ERKQnOyS76EVERHo6BbyIiEgPpIAXERHpgRTwIiIiPZACXkREpAcyu7oAEelaQ4YMYfDgwdHnEyZM4Nprr+2UdVdUVHDdddexePHiTlmfiMROAS9yiEtKSmLhwoVdXYaIdDIFvIjsVVFREeeddx7vvvsuHo+HBx54gIKCAioqKrjrrruorq4mJyeHmTNn0q9fP7Zv386vf/1rysvLAfjNb35Dnz59sCyL//qv/2LNmjV4vV7+3//7fyQlJfHcc8/xpz/9CafTyaBBg3jooYe6+BOL9Cw6Bi9yiGtpaWHSpEnRr9deey06LT09nUWLFvHDH/6Q++67D4B7772Xiy66iEWLFjFx4kTuvffe6OsnnXQSr776KvPnz6ewsBCAjRs3csUVV1BSUkJ6enr0Mq1z5sxhwYIFLFq0iHvuuecgf2qRnk8BL3KI29lFv/Nr/Pjx0Wnnn38+EDku/8knnwCwZs2a6OuTJk3i448/BuD999/n8ssvByJ3mEtPTwegf//+DBkyBIBjjz2WTZs2AXDUUUdx6623snDhQpxOZ/w/qMghRgEvInH13eusO51OLMsCIi34yy+/nLVr1zJlypToHdZEpHMo4EWkTX//+98BeO211xg5ciQAI0eOpKSkBIBFixZx4oknAnDKKafw4osvApEbiNTX17e53nA4zJYtWxg9ejS33nor9fX1NDU1xfOjiBxyNMhO5BC38xj8TmeccQa33norALW1tUycOBG3282DDz4IwH//939z5513Mnfu3OggO4C7776b//7v/+avf/0rDoeD3/zmN+Tm5u71PS3L4rbbbqOhoQHbtrnyyivJyMiI8ycVObTobnIisldFRUW88sor5OTkdHUpIrIf1EUvIiLSA6kFLyIi0gOpBS8iItIDKeBFRER6IAW8iIhID6SAFxER6YEU8CIiIj2QAl5ERKQH+v+pfn6/FTFH6wAAAABJRU5ErkJggg==\n"},"metadata":{}}]},{"cell_type":"code","source":"from sklearn.metrics import classification_report\n\npreds, targets, acc = test_loop(model,test_dloader,device)\naccs.append(acc)\nprint(classification_report(targets, preds))\nprint(f\"Accuracy score: {100*acc:.2f} %\")","metadata":{"execution":{"iopub.status.busy":"2022-11-04T16:01:18.536072Z","iopub.execute_input":"2022-11-04T16:01:18.536663Z","iopub.status.idle":"2022-11-04T16:01:18.717559Z","shell.execute_reply.started":"2022-11-04T16:01:18.536617Z","shell.execute_reply":"2022-11-04T16:01:18.716489Z"},"trusted":true},"execution_count":35,"outputs":[{"name":"stdout","text":"              precision    recall  f1-score   support\n\n           0       1.00      0.99      0.99       604\n           1       0.99      1.00      1.00       690\n           2       0.98      0.98      0.98       644\n           3       1.00      0.99      0.99       675\n           4       0.99      0.99      0.99       653\n           5       0.98      0.98      0.98       510\n           6       0.98      0.98      0.98       625\n           7       0.99      1.00      0.99       664\n           8       0.99      0.99      0.99       618\n           9       0.98      0.99      0.99       617\n\n    accuracy                           0.99      6300\n   macro avg       0.99      0.99      0.99      6300\nweighted avg       0.99      0.99      0.99      6300\n\nAccuracy score: 98.94 %\n","output_type":"stream"}]},{"cell_type":"markdown","source":"## Part 3. Inference & Submissions","metadata":{}},{"cell_type":"markdown","source":"### 3.1. Inference","metadata":{}},{"cell_type":"code","source":"# Finding the best model\nmax_acc = max(accs)\nidx = accs.index(max_acc)\nprint(f\"- The highest accuracy is: {100*max_acc:.2f} by model{idx+1}\")","metadata":{"execution":{"iopub.status.busy":"2022-11-04T16:01:18.719368Z","iopub.execute_input":"2022-11-04T16:01:18.720076Z","iopub.status.idle":"2022-11-04T16:01:18.72685Z","shell.execute_reply.started":"2022-11-04T16:01:18.719912Z","shell.execute_reply":"2022-11-04T16:01:18.725677Z"},"trusted":true},"execution_count":36,"outputs":[{"name":"stdout","text":"- The highest accuracy is: 99.19 by model2\n","output_type":"stream"}]},{"cell_type":"code","source":"test = np.loadtxt(path_test, skiprows=1, delimiter = \",\")\nprint(f\"Test contains {test.shape[0]} samples\")","metadata":{"execution":{"iopub.status.busy":"2022-11-04T16:01:18.729548Z","iopub.execute_input":"2022-11-04T16:01:18.72998Z","iopub.status.idle":"2022-11-04T16:01:31.069101Z","shell.execute_reply.started":"2022-11-04T16:01:18.729911Z","shell.execute_reply":"2022-11-04T16:01:31.067772Z"},"trusted":true},"execution_count":37,"outputs":[{"name":"stdout","text":"Test contains 28000 samples\n","output_type":"stream"}]},{"cell_type":"code","source":"# Load best model - CNN without data augmentation\nif idx ==0:\n    best_model = MLP(hidden_layers=[512,256,128,64]).to(device)\n    best_model.load_state_dict(torch.load(\"model\"+str(idx+1)+\".pt\"))\nelse:\n    best_model = CNN(in_channels=1, out_channels=10).to(device)\n    best_model.load_state_dict(torch.load(\"model\"+str(idx+1)+\".pt\"))","metadata":{"execution":{"iopub.status.busy":"2022-11-04T16:01:31.085349Z","iopub.execute_input":"2022-11-04T16:01:31.086014Z","iopub.status.idle":"2022-11-04T16:01:31.104865Z","shell.execute_reply.started":"2022-11-04T16:01:31.08597Z","shell.execute_reply":"2022-11-04T16:01:31.103997Z"},"trusted":true},"execution_count":38,"outputs":[]},{"cell_type":"code","source":"class submission_dataset(nn.Module):\n    def __init__(self,test_set):\n        self.test_set = test_set\n    def __len__(self):\n        return self.test_set.shape[0]\n    def __getitem__(self,idx):\n        img = torch.tensor(np.expand_dims(self.test_set[idx,:], axis = 0), dtype=torch.float32)\n        return img.view(-1,28,28)/255","metadata":{"execution":{"iopub.status.busy":"2022-11-04T16:01:31.10652Z","iopub.execute_input":"2022-11-04T16:01:31.106967Z","iopub.status.idle":"2022-11-04T16:01:31.113502Z","shell.execute_reply.started":"2022-11-04T16:01:31.106924Z","shell.execute_reply":"2022-11-04T16:01:31.112104Z"},"trusted":true},"execution_count":39,"outputs":[]},{"cell_type":"code","source":"import pandas as pd\ndef submission_loop(model,test, file = \"submission.csv\"):\n    sub_loader = DataLoader(submission_dataset(test), batch_size = 1)\n    device = \"cuda\" if torch.cuda.is_available else \"cpu\"\n    model.eval()\n    submissions = np.zeros(shape = (test.shape[0], 2), dtype=np.int64)\n    with torch.no_grad():\n        for sample_id, img in enumerate(sub_loader):\n            img = img.to(device)\n            pred_digit = int(torch.argmax(model(img), dim = -1).cpu().numpy())\n            submissions[sample_id, 0] = sample_id +1\n            submissions[sample_id, 1] = pred_digit\n    df_submissions = pd.DataFrame({\"ImageId\": submissions[:,0],\n                                   \"Label\": submissions[:,1]})\n    df_submissions.to_csv(file, sep = \",\", header=True, index = False)","metadata":{"execution":{"iopub.status.busy":"2022-11-04T16:01:31.115028Z","iopub.execute_input":"2022-11-04T16:01:31.115679Z","iopub.status.idle":"2022-11-04T16:01:31.124931Z","shell.execute_reply.started":"2022-11-04T16:01:31.11562Z","shell.execute_reply":"2022-11-04T16:01:31.123943Z"},"trusted":true},"execution_count":40,"outputs":[]},{"cell_type":"code","source":"submission_loop(best_model, test)","metadata":{"execution":{"iopub.status.busy":"2022-11-04T16:01:31.126546Z","iopub.execute_input":"2022-11-04T16:01:31.126898Z","iopub.status.idle":"2022-11-04T16:01:54.190885Z","shell.execute_reply.started":"2022-11-04T16:01:31.126863Z","shell.execute_reply":"2022-11-04T16:01:54.189877Z"},"trusted":true},"execution_count":41,"outputs":[]},{"cell_type":"markdown","source":"### 3.2. Visualizing Predictions","metadata":{}},{"cell_type":"code","source":"submissions = np.loadtxt(\"submission.csv\", skiprows=1,\n                         dtype=np.int64, delimiter=\",\")","metadata":{"execution":{"iopub.status.busy":"2022-11-04T16:01:54.192472Z","iopub.execute_input":"2022-11-04T16:01:54.192895Z","iopub.status.idle":"2022-11-04T16:01:54.358902Z","shell.execute_reply.started":"2022-11-04T16:01:54.192839Z","shell.execute_reply":"2022-11-04T16:01:54.357979Z"},"trusted":true},"execution_count":42,"outputs":[]},{"cell_type":"code","source":"def visualize_preds(test, submissions, factor = 5,\n                    seed = 24, ncols = 4):\n    fig,ax = plt.subplots(figsize = (10,10), nrows = factor,\n                      ncols = ncols)\n    np.random.seed(seed)\n    indices = np.random.randint(low = 0, high = test.shape[0],\n                                size = factor*ncols)\n    for i, idx in enumerate(indices):\n        r,c = divmod(i,ncols)\n        img = np.expand_dims(test[idx,:],axis = 0)\n        ax[r,c].imshow(np.resize(img,(28,28,1)),\n                    cmap = \"gray\")\n        ax[r,c].axis(\"off\")\n        ax[r,c].set_title(f\"ID:{idx +1}, Pred: {submissions[idx,1]}\",\n                        fontsize = 10)\n    plt.show()","metadata":{"execution":{"iopub.status.busy":"2022-11-04T16:01:54.360498Z","iopub.execute_input":"2022-11-04T16:01:54.36087Z","iopub.status.idle":"2022-11-04T16:01:54.37005Z","shell.execute_reply.started":"2022-11-04T16:01:54.360834Z","shell.execute_reply":"2022-11-04T16:01:54.367749Z"},"trusted":true},"execution_count":43,"outputs":[]},{"cell_type":"code","source":"visualize_preds(test, submissions, factor = 5,\n                seed = 42, ncols = 5)","metadata":{"execution":{"iopub.status.busy":"2022-11-04T16:01:54.371315Z","iopub.execute_input":"2022-11-04T16:01:54.372265Z","iopub.status.idle":"2022-11-04T16:01:56.208806Z","shell.execute_reply.started":"2022-11-04T16:01:54.37222Z","shell.execute_reply":"2022-11-04T16:01:56.207876Z"},"trusted":true},"execution_count":44,"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 720x720 with 25 Axes>","image/png":"iVBORw0KGgoAAAANSUhEUgAAAjkAAAI8CAYAAAATJrreAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAAsTAAALEwEAmpwYAACmL0lEQVR4nOzdeVhU1f8H8Ddi7ktainuauWWuYWnuIiEgDCLmkqRpLuWSGi6IWC6oaGlqpaWVKakVYmZq7lau4ZK45a7gghsqCoos5/cHP8733JEZhmHYLu/X8/j4udxz7z0zZ86dM/fcc66dEEKAiIiISGcK5XYGiIiIiLIDGzlERESkS2zkEBERkS6xkUNERES6xEYOERER6RIbOURERKRLmW7kNGvWDABw5coVNG7cGF5eXnB1dYWPjw/CwsLS3ebUqVPo2bMn3N3d4eHhgY0bN8p1EydOhKenJzw8PDBy5EjExcXJdRs3boSbmxvc3d3x0Ucfyb83aNAABoMBBoMBQ4cOlX+fMGECOnXqJNedOnXK7GtJew0GgwFubm6YPHkyUlJSMvuWSL6+vjh27JhFaTdv3ox69epZnD47WFOWADBw4EA4OjpiyJAhmr+bev+XLl0q/9a1a1c0aNAA9+7dAwD88MMP6Nq1K9zd3bFs2TLN/lasWIEuXbrA3d0ds2fPzvD1pH0uunbtipEjR+LRo0eZeDe0JkyYgD/++MNsGnOvKy+xtpxnz54Nd3d3uLq6Yvr06UibbeLJkycIDAyEi4sLunTpgs2bNwMAwsPD0a1bN7z88ssZvndpOnXqBA8PD3h4eGDAgAG4deuW1a9z4cKF+PbbbzNM9/XXX8PZ2RkuLi74+++/rT5eTrG2/EydJ02dc69evYp+/frBw8MDvr6+iI6OltuYqvOmLFy4EG3btpV1Y/v27da8dACpr7tr164Zpjt+/Dg8PDzg7Oys+bzmNlt/Z4aEhMDZ2Rn16tVDTEyM/PuBAwfw6quvyjL/4osvAAAXLlyQfzMYDGjevLnmXJvXz7O//fabPEf06tUL//33X+YOIjKpadOmQgghoqKihLu7u/x7ZGSk8PT0FKGhoU9tc+HCBXHx4kUhhBDR0dGidevW4v79+0IIIR48eCDTzZgxQ3z99ddCCCEuXrwoDAaDuHfvnhBCiNu3bz+VB2Pjx48XmzZtsvi1qK8hMTFR9OnTR2zevFmTJjEx0eL99e3bV0RERGSY7sGDB6JPnz6iR48eFqXPLtaUpRBC7N27V2zfvl0MHjxY83dL3v/t27cLX19fIYQQp0+fFu7u7iI+Pl4kJiaKfv36iUuXLgkhhNi3b5/o16+fSEhIEEJoyz+j1yOEEGPGjBHfffedZn1myjKznyX1deU11pTzoUOHRM+ePUVSUpJISkoSb731lti/f78QQoj58+eLuXPnCiGESE5OFnfu3JH7P3XqlBg7dqzF713Hjh3l9p999pmYNm2aZn1KSopITk62aF8LFiwQS5cuNZvm7NmzwsPDQyQkJIjIyEjh5OQkkpKSLNp/brG2npo6T5o6544YMUKEhYUJIVLruJ+fn0xnqs6bopbFuXPnxGuvvfZUOVpaH41ftyndu3cXR44cESkpKWLgwIFi165dFu0/u9n6O/PEiRMiKipKU3eEEGL//v0Zlk9SUpJ44403xJUrV4QQ+eM8e+jQIdkO2LVrl/Dx8bF4/0IIYbPuqurVq2PChAlYsWLFU+tq1aqFmjVrAgAcHBxQvnx52QItVapUWmMLjx8/ltv8/PPPePvtt1G2bFkAwHPPPWerrKarcOHCaNasGS5fvoywsDAMHToU77zzDvr374/4+Hj4+/vDx8cHXl5e2LZtGwDg8ePHGD16NFxdXTFs2DBN/s2ZP38+Bg0ahKJFi2bnS7KaubIEgFatWqFkyZJW7XvDhg3yV9n58+fRuHFjFC9eHIULF0aLFi2wZcsWAMCqVaswePBgFClSBEDmy9/R0RGXL1/GgQMH0KdPHwwdOhTu7u5ITk5GcHAwunfvDg8PD6xevRpA6udv6tSpcHFxQf/+/XHnzh2rX1d+Ya6c7ezs8OTJEyQmJsr/n3/+eQDAmjVr5C/6QoUKoXz58gCAatWqoX79+ihUyLrTSlqZXblyBS4uLhg3bhy6du2K69evY+nSpbLMFixYILdZtGgRXFxc0Lt3b1y8eDHDY2zfvh3u7u4oUqQIqlevjhdeeAERERFW5Te3ZVRPTTF1zj1//jxatmwJAGjZsqXm6ktW6nzt2rVRuHBh3L17F76+vggKCoK3tzeWL1+O48ePo2/fvvD29sbAgQNx8+ZNAKlXZTw9PeHp6Ykff/wxw2PcvHkTDx8+RNOmTWFnZwcvL68sXT3KCdZ+Z7788suoVq2aVcfct28fqlevjqpVqwLIH+fZ5s2by3ZA06ZNNVcYLWHTe3IaNmyICxcuAACOHTuGgICAp9JEREQgMTERNWrUkH/z9/dH69atceHCBfj6+gIALl26hIsXL6JXr15466238Ndff8n0CQkJ8Pb2xltvvSUbHGnmzZsHDw8PzJgxA0+ePLE4748ePcK+fftQt25dAMDJkyexYMEChISEYPHixWjZsiVCQ0OxfPlyzJkzB/Hx8Vi1ahWKFSuGTZs2YcSIEThx4oTcX0BAQLpdUSdOnEB0dDQ6dOhgcd5ygyVlmR5z7/+jR4/w999/48033wQA1K1bF4cOHcLdu3fx6NEj/PXXX/IDfOnSJRw8eBA9evRA3759M/VFlJSUhL/++ktTlgEBAdi8eTNCQ0NRunRprFmzBmvWrMHPP/+MqKgobN26FRcvXsTGjRsRHByMI0eOyP3Nnz/f7AnT+HXlJ6bKuVmzZnj99dfRpk0btGnTBm3btkXt2rURGxsLIPU96datG0aOHInbt2/bJC+7du2SZXb58mX06dMHGzZswMWLF3H58mWEhoZi3bp1OHHiBMLDw3H8+HFs3LgRv/76K5YsWaKpb6tWrcKqVaueOsaNGzdQqVIluezg4IAbN27YJP+5wVw9NXeeTO+cW79+ffkjY+vWrYiLi8Pdu3eznMejR4/Czs5ONoYTExMRFhYGX19fTJ8+HQsWLEBYWBi6d++OefPmyfwFBgbit99+0+zrxo0bGDRo0FPHMC7XSpUq5YtytfY705R///0Xnp6eeO+993D27Nmn1hv/GMtP51kACA0NRbt27SzOIwAUzlTqDAilD7RRo0Zo1KiRZv3NmzcxduxYBAcHa37tzZw5E8nJyZg2bRo2btyI7t27Izk5GZcvX8aKFSsQHR2Nvn37Yv369ShTpgx27twJBwcHREVFoV+/fqhbty5q1KiBMWPGoEKFCkhMTERgYCC++eYbDB8+3GyeIyMjYTAYYGdnBycnJ7Rv3x5hYWFo3bo1nn32WQDA7t27sWPHDnz33XcAUk8e169fR3h4uOYEUa9ePbnfoKCgp46VkpKCWbNmYebMmZl7Y3NBRmWZnoze/507d6J58+byfa1duzbee+89DBw4EMWLF9dcBUhOTsb9+/fx888/49ixYxg1ahS2b98OOzs7k8d//PgxDAYDgNRfGD4+Pjhy5AgaNWqE6tWrAwD27NmD06dPy/tIHjx4gMuXLyM8PBzu7u6wt7eHg4OD/EULAB9++KHZ1238uvITU+V8+fJlnD9/Hn/++ScAYMCAATh48CBefPFFREdHo1mzZvD398f333+P4OBgzJkzx+o89OvXD4UKFUK9evUwatQoxMbGokqVKmjatCmA1DLbs2cPvLy8AADx8fG4dOkS4uLi0LlzZxQvXhxA6v09aXr37m11fvITc/XU1HkSSP+cO27cOEybNg1r166Fo6MjHBwcYG9vb3Xeli1bht9++w0lS5bE559/Luuum5sbAODixYs4c+YM3n33XQCp58cKFSogNjYWDx48QIsWLQAABoNB3jvl4OCAJUuWWJ2nvMba78z0NGzYEDt27EDJkiXx559/YtiwYbLRCqTeS7djxw7N/a356Ty7f/9+hIaGYuXKlWbTGbNpI+fkyZOoXbt2uusePnyIIUOGYPTo0fLkpbK3t4e7u7u8LO3g4IAmTZrgmWeeQfXq1VGzZk1cunQJjRs3hoODA4DUy32vvfYaTp48iRo1aqBixYoAgCJFisDb21s2SsypUaMG1q1b99Tf006caRYsWIAXX3wxw/2ZExcXhzNnzuCdd94BANy6dQvvv/8+Fi1aZFEjIieZK0tTMnr/N2zYAHd3d83fevTogR49egAA5s6dK8vWwcEBzs7OsLOzQ+PGjVGoUCHcvXtX/hpMT7FixdItyxIlSshYCIFJkyahbdu2mjRpX+bWSO915Remynnr1q1o0qSJ7KJo27Ytjhw5gldffRXFixeXV626dOmC0NDQLOXhhx9+0JRrbGzsU2U2ePBg9OrVS7Od8Y3qlnBwcNBc7r5x44b8zOVH5uqpqfNkmvTOuWk3q8bFxWHLli0oU6aM1Xnr378/Bg4c+NTf086tQgjUqVMHP/30k2Z92tXCzDAu1+jo6HxRrln5zjSW1g0JAO3bt8eUKVMQExMj69Zff/2Fhg0bym5nIP+cZ//77z9MmjQJS5YsQbly5TK1rc26q65cuYLZs2ejb9++T6178uQJhg0bBoPBgC5dusi/CyFw+fJlGe/YsUM2JDp37ox//vkHABATE4NLly6hevXquH//vuwGiYmJweHDh/HSSy8BgOzPFUJg27ZtqFOnDoDUy33jxo2z+rW1adMGISEhstV98uRJAECLFi3w+++/AwDOnDmD06dPm91P6dKlceDAAezYsQM7duxA06ZN82QDx1xZmmPq/QdSW/Lh4eFwcnLSbJPWJ3vt2jVs2bIFHh4eAFLL/8CBAwBSf/ElJiaiXLlyuHHjBvr162f1a2vTpg1WrVqFxMREue/4+Hi0aNECmzZtQnJyMm7evCmPnRFTrys/MFfOVapUQXh4OJKSkpCYmIjw8HDUrl0bdnZ26Nixo3x/9u3bZ1FjWK33mdWmTRusWbNGjgK6ceMG7ty5gxYtWmDbtm14/PgxHj58iJ07d2a4r06dOmHDhg148uQJoqKi5A+n/Mhc+Zk6T5o758bExMjRpd988w26d++eYR4+++wzbN261ar816pVCzExMbLLIjExEWfPnkWZMmVQunRpHDx4EACwfv36DPdVsWJFlCpVCv/++y+EEPj111/zfJ205jvTnFu3bsnvqIiICKSkpGgaBOn9GMsP59lr165hxIgRmD17NmrVqpXpvGTpSk5kZCS8vLyQkJCAkiVLwtfXF97e3gBS+xdXr16NoKAgbNq0CQcPHsS9e/ewdu1aAMCsWbNQr149jB8/HnFxcRBCoF69epgyZQqA1F+Oe/bsgZubG+zt7TFu3DiUK1cOhw8fxscffww7OzsIITBo0CDZyPHz88Pdu3chhED9+vXlvq5du4ZixYpZ/To/+OADzJgxA56enkhJSUG1atXw9ddfo3fv3vD394erqytq166Nhg0bym0CAgLQq1evPNeAMcXSsgSAPn364MKFC4iPj0e7du0QFBSEtm3bmnz/gdQrA61bt9a09gFgxIgRuHfvHgoXLoyPP/5Y/nLs3r07Jk6ciK5du+KZZ57BrFmzYGdnh5s3b6JwYes/tj169MDVq1fh7e0NIQTKlSuHr776Cs7Ozti/fz/c3Nw0XSVAal/xK6+8ku5J09TryqssLWcXFxfs378fHh4esLOzQ9u2bWV3kJ+fH8aNG4cZM2agfPnysvs1IiICw4cPR2xsLHbu3ImFCxdiw4YNiImJydJw3jZt2uD8+fPySk6JEiUwZ84cNGzYEG5ubjAYDChfvrymrqXdj2PcbVWnTh24urrK88rkyZOz1CWT0ywtv/Pnz6d7nkxJSTF5zv3nn38wd+5c2NnZwdHRER9//LE8rqk6f+bMGU03YWYUKVIECxYswPTp0/HgwQMkJyejX79+qFOnDmbOnImJEyfCzs4OrVu3ltvcuHFD/qI39vHHH8Pf3x+PHz9Gu3btMn3vRk7I6ndmgwYNsHz5cixduhS3b9+Gp6cn2rdvj6CgIGzevBmrVq2Cvb09ihUrJssSSO3i3bt3L6ZOnarJT344z3755Ze4d++e/Jza29ubnTrBmJ3IytknnwgODobBYED9+vVzOyuURSEhIahcuXKe/5VG/7Nz505ERUXJblrSj4EDB1o0NxHlL3o6zxaIRg4REREVPHysAxEREekSGzlERESkS2zkEBERkS6xkUNERES6ZHaMmLlZDyn7ZNe94CzP3JEd5cmyzB2sm/rCuqkfpsqSV3KIiIhIl9jIISIiIl1iI4eIiIh0iY0cIiIi0iU2coiIiEiX2MghIiIiXcrSU8iJiIhI/9q0aSPjbdu2yfjBgweadA0bNpTxzZs3sz9jGeCVHCIiItIlNnKIiIhIl+yEmSkfOXNj7uCsqvrCWVX1g3VTX1g3raN2SR07dkyzbvbs2TKeMGFCjuWJMx4TERFRgcJGDhEREekSu6vyIF4S1xdeErfO0KFDZbxo0SLNutjYWBl36tRJxocOHcrWPBWkulmlShUZ79y5U7Pu3r17Mm7VqpWMU1JSsj1ftsS6aZ1nnnlGxuHh4Zp1hQr979pJ48aNcyxP7K4iIiKiAoWNHCIiItIlNnKIiIhIlzjjsRkHDhyQsaOjo4y7d++uSffrr7/mVJaIdKVy5cqaZT8/PxmPHDlSxsb3epQqVUrG27dvl7GTk5MmXXbfo6M3vXr1kvHHH38s4zp16pjcZuXKlTK+fPmyyXT//fefjJ9//nnNup9//lnGUVFRMs5v9/gUFImJiTI+ffq0Zl2DBg1yOjtm8UoOERER6RIbOURERKRL+WIIuYODg4zXrl0r42rVqmnSubm5yfj48eOZPo6Hh4dmOTQ0VMb29vYyjoyM1KRzdXWVsfGlO2sUpGGqBQGHqZqmdkkBwLx587K0P7XbAwB69+6dpf0Z01vdrFq1qmZ569atMq5fv35OZwcAMGTIEBkvWbIkW4/Fumkdtbv41KlTmnVnz56VsTq9Q3bjEHIiIiIqUNjIISIiIl3Kk6Or2rRpo1lWu42M78pXqZe+Bw8enOnjBgQEaJbVLirVkydPNMvqaACyXoUKFTTLL7/8sow9PT1lXL58eZP7ULscz58/r1nXtm1bGRuXIdlWjRo1NMvDhw+X8bvvvivj0qVLW7S/Bw8eaJZ//PFHGbdr107Gatcxpa9s2bIyVrungNzrolKNGjVKxhs3btSsu3r1ag7nhtJTvHhxGRvfNvLdd9/ldHbM4pUcIiIi0iU2coiIiEiX2MghIiIiXcqT9+Q0b95cs2zqPpxHjx5plv/+++9MH8vLy0vGlj4xVZ3tEQDi4+MzfVy9U+9n+uSTTzTrXFxcZPz777/L2HimzJ49e1p0rLi4OBmXLFlSxsb37qjL0dHRFu2brOPr66tZ/uijjzK9D3U4+IcffqhZd/PmTRl/9dVXMja+F+/999+XsfGTzAsqdZbpvHAPjjH1PLBlyxbNutdee03Gar2n3GM8dPvgwYO5lJP08UoOERER6RIbOURERKRLeaa7qkOHDjKeNm2aRdvExMRollesWJHp45YpU0bGRYoUsWibxYsXZ/o4BY3aXWE8NF+ldi/du3dPs04dJnzy5EkZ//PPP5p06rBxdRqB8PBwTbq7d+9mkGvKik2bNslYrc/m3LlzR7O8bNkyGU+ZMkXGlnZNGM82q87MWlC98MILmmVrHiickJCgWQ4ODpaxOlXDO++8o0mnTiWgloXxg1lNMe7CVrsj58+fr1nHh3nmnFatWplcl9emVOGVHCIiItIlNnKIiIhIl9jIISIiIl3KM/fkjBkzRsbqfRrmXLlyJcvHNX4Krynqk1aNn3RMT7O0z12d7v/PP//UrLO0j93UVP7G93sY31dAmWd8f0dISIiMHR0dZWzu/rbbt2/LuE+fPpp127dvz2oWyYj6mAQAqFu3rkXbHT58WMYTJ07UrDMe2p3G3H2R6vT/rVu31qxT99+oUSOT+/jss89kbPyE8ocPH5rcjmzrjTfekLHxdBzGj9PJbbySQ0RERLrERg4RERHpUq51V6lPwgWeHipoitpF1atXL6uOXa5cORmPGDHCom3UpyDfunXLquPS08aPHy/jnTt32nTfERERNt0fAe+9955mWb1sbY7aRfX222/LmN1T2UOdcbxixYoWb6d26apdSKa6pzJDPXf/9NNPmnX79u2TsTpjrqnZ7gGgUqVKmuVz585lNYtkRuHC/2sudOvWTcaPHz/WpFO/K/MCXskhIiIiXWIjh4iIiHQp17qrjB/gV6tWLYu2U2dEtXRmxdKlS2uW165dK2NLL+XGxsZalI4y59VXX822faujQ8h6GzdulHHHjh0t2mbv3r2a5YEDB8r4zJkzWc5ThQoVZOzt7Z3l/elBoUL/+80aGBgo4969e1u8D3UmY1t0UVkqMjJSxt99952Mx40bZ3Ibzmads9QuUAcHBxnn5OfEGrySQ0RERLrERg4RERHpEhs5REREpEs5ek+OOguqOnQ4M/777z8ZqzNoAqb7b43v+3j99dczfdzTp0/LWH1yOQA8evRIxomJiZnetx6pQ4aNqU+UnjFjRpaPpd7fpd6ntWbNmizvuyBSh4cCQKdOnWT8zDPPmNxOLXP1CeKAbe7DUdWrV0/G6v058fHxmnQrV6606XHzMrVsJk+ebNU+8sJstZYOBeeQ8ZxlZ2cn46JFi8p4x44duZEdi/FKDhEREekSGzlERESkSznaXTVo0CAZW/oAR2PqAwEtpV5mAwAhRKb3MWzYsHRjQHtJ/J133sn0vvVIHepvPJxY7d67cOFCpvfdpUsXzXL58uVlvHjxYhknJydnet8FlY+Pj4ynT5+uWWeui0ql1u9t27bZJmP/r1ixYppla7u7SevGjRua5bw+HFhl3CU3YcIEGVv6cF+ynFq/1e/Uv/76KzeyYzFeySEiIiJdYiOHiIiIdClHu6vat28vY+MupOykzgQK2P5SpvrAwQMHDmjWffnllzY9Vn6hjjI7ceKETfetXjYFtDNxWjoLNmmpIxXr1KljMt2dO3c0y+vXr5exrR+wWrx4cRnPmjVLs87NzS3dbdRRH4B2ZNiKFStsmLu8p23btpnexrgbUJ3J1rgrK6e89NJLFqXz8/PTLKtd32q3NdlGhw4dZLx161YZnzx5MhdyYzleySEiIiJdYiOHiIiIdImNHCIiItKlHL0n580335SxNcO4rWV8D441x963b5+M69evr1mn9v8uWbIk0/sm28nrs2/mVRUrVrQonTo1AGD+KdFZ5e/vL+Phw4dbtI1x/dP7fTgqg8GQ6W2ePHmiWa5du7aMY2JiZHzlyhXrM5ZJvXr1siidej8YANy/fz87slNgvfDCC5plLy8vGQ8cODCHc2M9XskhIiIiXWIjh4iIiHQpR7urDh8+LON27dpZvJ364L8ffvhBxvPnz9ekK1WqlIwtHdamPpCuR48eJo8bGxsr4xIlSmjS3bx506JjkfXUslWHBQPay+osC8up3RsfffSRyXQ///yzjI0fvJlV6jBxAHjttddk3L9/f4v2oc5svX//fpvkKz86e/ZsprdRH24KAAMGDJBxTnb91qxZU8YlS5Y0mU6douPjjz/WrPv3339tna08QX1vjKfPUKcNuH79umbd888/L2P1u3fXrl2adHv27JHxvXv3ZGzcFa3e9pGf6hmv5BAREZEusZFDREREupSj3VXdu3eXsaWjOQDg8ePHMr58+bLJdMaXLy2hXqqLiIiwaJuHDx9m+jiUNeol27Jly2rWLVy4UMaRkZE5laV8r169ejIuXNj0qWDMmDEyjouLy/Jx1Yfzqg9VBCwfRaVSR1QVpNFUxr7++msZf/7551bt49SpUzK29WilGjVqyPiDDz7QrFO7Jp977jmT+3j99ddlbDwKS6/dVSNGjJDx6NGjTaZTb6kAtOfCoUOHyti4a1rt5tq4caOM3333XU069TP133//ZZDrvINXcoiIiEiX2MghIiIiXWIjh4iIiHQpR+/JuXv3brqxtYzv6xkyZEim96E+uZbyrs6dO5tcx/tw8p433nhDs6wOTXZ1dZVxpUqVrNq/OtRVvSerIFOH0qv3FzZu3NjifYwaNUrG6r2HU6dONbmNeo9VlSpVNOvUaTnUz4A6vNlaer0Hx9js2bNlnJiYqFnn6ekp4+rVq2vWqdNpqNMLdOvWTZNOLT9zMxmr39nlypVL9+95Ea/kEBERkS6xkUNERES6ZCfMPK3Szs4uJ/OSaVWrVtUsmxpebvw6oqOjZdykSRMZqzMc56bsenhpXi9Pc9Rhj3PmzNGsGzt2rIw/++yzHMuTpbKjPG1Rlk2bNpXx3r17ZVy0aFFNOnVYdnx8vEX79vb21iwbz6ybWVFRUZrlwMBAGefksPH8UjfVYdjbt2/XrLO0+yopKUnGd+7cMZmuSJEi6caA+dmLLWH8vnz77bcyHjZsmGZdQkJCpvefV+umpdS6ajxDuDrtRvPmzS3anzqc3MnJSbNO/b49cuSIjHv27KlJd+7cOYuOZWumypJXcoiIiEiX2MghIiIiXcp33VXq5bnJkydr1o0fPz7dbYxfR6tWrWT8zz//2DB3tpFfLonnJPXyqNrFCAB9+vSR8erVq3MsT5bKD5fEb926JePy5cvbdN+ZoXaH/fjjjzI2nsE3t2ZczY9103gk07Zt22ScmZFXucF4Fnp11J6lXafm5Ie6mVuKFSumWQ4ODpbxW2+9JWP18wQAvr6+2ZsxE9hdRURERAUKGzlERESkS2zkEBERkS7lu3ty1KGjlj513Ph1PPvsszJ+8OCBTfJlS/mx3z+7qffkqEOfAe09B+aGuuaW/NDvrz7p2NonWJujvgfq07IvXbqkSbd27VoZ59ZQVHP0UDfV4eXTpk3TrFOfVp2T1CfJ79y5U8bq5wGwbpi4OfmhbpJleE8OERERFShs5BAREZEu5bvuKnVWx6VLl1q0jfFDzdTZV9WH0OUVergkbgtqN9Thw4dlnJKSokn3yiuvyLiglGd2luWqVas0y+pwUXO++OILGasPBwS0s5GHhIRkIXe5S2910/i4Dg4OMlZvB7Dm4cfG1C6pKVOmaNapM+1m13ucnvxWN8k0dlcRERFRgcJGDhEREekSGzlERESkS/nunhx1+OOoUaM06/z9/WW8efNmGc+ePVuT7s8//8yezNmI3vr9reXq6irjDRs2yPibb77RpMutYa+WYr+/frBu6gvrpn7wnhwiIiIqUNjIISIiIl3Kd91VBQEviadSZ94dOXKkjLt3765JZzwral7DS+L6wbqpL6yb+sHuKiIiIipQ2MghIiIiXSqc2xkgMmXlypUy7tmzp4wjIyNzIztERJTP8EoOERER6RIbOURERKRLbOQQERGRLnEIeR7EYar6wmGq+sG6qS+sm/rBIeRERERUoLCRQ0RERLpktruKiIiIKL/ilRwiIiLSJTZyiIiISJfYyCEiIiJdYiOHiIiIdCnTjZxmzZoBAK5cuYLGjRvDy8sLrq6u8PHxQVhYmMntBg4cCEdHRwwZMkTz95CQEDg7O6NevXqIiYmRf79//z6GDRsGDw8P+Pj44MyZM3JdbGwsRo4ciS5dusDV1RVHjhwBACxcuBBt27aFwWCAwWDAn3/+meHradCgAQwGA7p27YqRI0fi0aNHmXo/VBMmTMAff/yRYboDBw7AYDDA3d0dffv2tfp4WZVTZfnbb7/Bw8MDHh4e6NWrF/777z+5btmyZXB3d0fXrl0xZswYJCQkAEh9Lzt16iTL8tSpU2ZfS9prMBgMcHNzw+TJk5GSkpLp9ySNr68vjh07ZjZNWFgYWrZsKfP4yy+/WH28rLKmLE+dOoWePXvC3d0dHh4e2Lhxo1z30UcfwcXFBV27doW/vz8SExMBAOfPn0fPnj3xyiuv4Ntvv9Xsz9/fH61atULXrl01f//vv//Qs2dPeHh4YOjQoXj48GGGryen66W515XbrK2n165dw4ABA+Dq6go3NzdcuXIFgOmyBUyfm0ydc01R64abmxt+/vnnrLwF8j0wJyoqCj169ICzszNGjRqFJ0+eZOmYtmLr86wQAvPmzYOLiwtcXV2xfPlyAMCDBw8wdOhQeHp6wt3dHWvWrJHbpNUng8GAoUOHyr+bOmebkhvn2e+//x5ubm7w8PBAv379cPXq1cwdRGRS06ZNhRBCREVFCXd3d/n3yMhI4enpKUJDQ9Pdbu/evWL79u1i8ODBmr+fOHFCREVFiY4dO4o7d+7Iv8+aNUssXLhQCCHEuXPnxDvvvCPXjRs3Tvz8889CCCESEhLE/fv3hRBCLFiwQCxdutSq1yOEEGPGjBHfffedZn1iYqLF+xo/frzYtGmT2TT3798Xrq6u4urVq0IIIW7fvp2J3NpWTpXloUOHxL1794QQQuzatUv4+PgIIYSIjo4WHTt2FI8ePRJCCDFy5EixZs0aIYRl76VKfQ2JiYmiT58+YvPmzZo0mSnLvn37ioiICLNp1qxZI6ZMmWLxPrOTNWV54cIFcfHiRSFEalm0bt1a1qVdu3aJlJQUkZKSIkaPHi1+/PFHIUTq5/Xo0aNi7ty5T9W1f/75Rxw/flxzfCGE8Pb2FgcOHBBCCPHLL7+IefPmWfx6hMiZemnudeU2a+tp3759xe7du4UQQjx8+FDEx8cLIUyXrblzk6lzrilq3bh9+7Z4/fXXxa1btzRpMlOG6ufBlJEjR4rff/9dCCFEYGCgfF25zdbn2dDQUDF27FiRnJwshPhfOS1atEjMnj1bCCHEnTt3RIsWLURCQoImD8ZMnbNNyY3z7L59++Rn98cffxQffvihxfsXQgibdVdVr14dEyZMwIoVK9Jd36pVK5QsWfKpv7/88suoVq3aU38/f/48WrZsCQCoXbs2rl69itu3b+PBgwcIDw+Hj48PAKBIkSIoU6aMTV6Do6MjLl++jAMHDqBPnz4YOnQo3N3dkZycjODgYHTv3h0eHh5YvXo1gNQW9dSpU+Hi4oL+/fvjzp07GR5j/fr1cHZ2RpUqVQAAzz33nE3ybku2LsvmzZujbNmyAICmTZsiOjparktOTsbjx4+RlJSEx48fo2LFilnOf+HChdGsWTNcvnwZYWFhGDp0KN555x30798f8fHx8Pf3h4+PD7y8vLBt2zYAwOPHjzF69Gi4urpi2LBhePz4cZbzkReYK8tatWqhZs2aAAAHBweUL19e/ppr37497OzsYGdnh8aNG+PGjRsAUj+vjRs3RuHChZ/aX4sWLWQ5qy5duoQWLVoAAFq3bo0tW7Zk6jXkRL0097ryKnNle+7cOSQlJaF169YAgJIlS6J48eIATJetqXNTVs+5zz33HGrUqIFr165hwoQJmDx5Mnr06IE5c+YgMjISAwcOhLe3N/r06YPz588DSL0qk3b1b968eRkeQwiB/fv3w8XFBQDQrVs3bN++3eI85gZrz7OrVq3CsGHDUKhQ6td3WjnZ2dkhLi4OQgjExcWhbNmyGX6eTZ2zLZFT59mWLVvKz67x94clbHpPTsOGDXHhwgUAwLFjxxAQEGD1vurXry9PhhEREbh27Rqio6Nx5coVlC9fHv7+/vDy8kJAQADi4+Pldj/++CM8PDzg7++P+/fvW3y8pKQk/PXXX6hbty4A4OTJkwgICMDmzZsRGhqK0qVLY82aNVizZg1+/vlnREVFYevWrbh48SI2btyI4OBgzSXc+fPnp1vJLl26hNjYWPj6+sLb2xu//vqrle9Q9rJlWapCQ0PRrl07AKlfrAMGDEDHjh3Rpk0blCpVCm3atJFp582bBw8PD8yYMSNTl54fPXqEffv2acpywYIFCAkJweLFi9GyZUuEhoZi+fLlmDNnDuLj47Fq1SoUK1YMmzZtwogRI3DixAm5v4CAAJOXVLds2QIPDw+MHDkS169ft+YtyXaWlGVERAQSExNRo0YNzd8TExOxbt06tG3b1urj16lTR9aFP/74I1PvU07Vy/zKVNleunQJZcqUwfDhw+Hl5YXg4GAkJydrtjUuW1PnpozOuRmJiopCVFSU/GzduHEDq1evhr+/PwIDAxEYGIiwsDCMHz8eU6ZMAQAEBQWhd+/eWL9+/VM/fAwGw1PHuHv3LsqUKSO/1CtVqiQbb3mZNefZqKgobNy4Ed7e3njvvfdw6dIlAMDbb7+N8+fPo23btvD09ERAQIBsCCUkJMDb2xtvvfWWbHBkVU6eZ9Oo3x+WsunPFqHMK9ioUSM0atTI6n0NHjwYQUFBMBgMqFu3Lho0aAB7e3skJSXh5MmTCAwMRJMmTTB9+nR88803GDVqFHr37o0PPvgAdnZ2mD9/PmbNmoWZM2eaPc7jx49lpXF0dISPjw+OHDmCRo0aoXr16gCAPXv24PTp09i8eTOA1F82ly9fRnh4ONzd3WFvbw8HBwd55QkAPvzww3SPl5ycjBMnTmDZsmV4/PgxevXqhSZNmqBWrVpWv1fZwZZlmWb//v0IDQ3FypUrAaTed7V9+3Zs374dpUuXxocffoh169bBYDBgzJgxqFChAhITExEYGIhvvvkGw4cPN7v/yMhIGAwG2NnZwcnJCe3bt0dYWBhat26NZ599FgCwe/du7NixA9999x2A1Mp//fp1hIeHw9fXF0BqA7tevXpyv0FBQeker2PHjujatSuKFCmC1atXY/z48bJ/PC/JqCxv3ryJsWPHIjg4WJ4U00yZMgWOjo5wdHS0+vhBQUEICgrCV199hU6dOqFIkSIZbpPT9TK/MlW2SUlJOHjwIH799VdUrlwZo0ePRlhYGHr06CHTG5etqXOTuXOuORs3bsShQ4dQpEgRTJ06VdbBLl26wN7eHnFxcThy5IimTNJ+zBw5cgQLFy4EkNqo+fTTT2WadevWWf+G5THWnGefPHmCokWLIiwsDFu2bMHEiROxcuVK7N69Gw0aNMDy5csRGRmJd999F46OjihVqhR27twJBwcHREVFoV+/fqhbt+5TP2gsldPn2TTr1q3D8ePHERISkqn82rSRc/LkSdSuXdsm+ypVqpRsoAgh4OTkhOrVq+PRo0eoVKkSmjRpAiC1wnzzzTcAgOeff15u36NHD80NVqYUK1Ys3UpTokQJGQshMGnSpKd+zVpyY7OxSpUq4dlnn0WJEiVQokQJODo64r///stzjRxbliWQevPppEmTsGTJEpQrVw4AsHfvXlSrVg3ly5cHALz55ps4cuQIDAaD/PVWpEgReHt7y8piTo0aNdIty7RLnWkWLFiAF198MasvSb4OAPLye15kriwfPnyIIUOGYPTo0WjatKlm3RdffIGYmBh88cUXWTp+7dq1ZfldvHgRu3btynCbnK6X+ZWpsq1UqRIaNGggG4ROTk44evSoXJ9e2Zo6Nzk6Opo855qTdmOqsbT6KIRAmTJlTDZaMvOgy3LlyiE2NhZJSUkoXLgwoqOj4eDgYPH2ucWa86yDgwOcnZ0BAM7OzvD39weQerP34MGDYWdnhxdeeAHVqlXDhQsX0LhxY/leVK9eHa+99hpOnjxpdSMnp8+zQOp3xeLFixESEmLRjySVzbqrrly5gtmzZ9tstFBsbKxs1f/yyy+yRVqhQgVUqlRJXuLbt2+f/JDcvHlTbr9t2zbUqVMHQOrl0X79+lmdlzZt2mDVqlVyFMLFixcRHx+PFi1aYNOmTUhOTsbNmzdx4MCBDPfl5OSEQ4cOISkpCY8ePUJERIRNGxO2YOuyvHbtGkaMGIHZs2drGnNVqlTB0aNH8ejRIwgh0i1LIYSmLCMiIjBu3Dir89KmTRuEhITIX1AnT54EkHo/ye+//w4AOHPmDE6fPp3hvtTP244dO/JcOQLmy/LJkycYNmwYDAYDunTpoln3yy+/YPfu3Zg7d+5TV3cyK+2emJSUFCxatAi9evUCkLfqZX5krmwbNWqE2NhYeY/VgQMH8NJLLwEwXbamzk3mzrkhISGZ/mWdplSpUqhWrRo2bdoEILWup428bNasGTZs2AAgdXRmRuzs7PD666/Lq3pr165Fp06drMpXTrH2PNu5c2f5mf7nn3/kfXWVK1fGvn37AAC3b9/GxYsXUa1aNdy/f19+l8bExODw4cPys2BKXjrPnjx5EpMnT8aiRYusuoc1S1dyIiMj4eXlhYSEBJQsWVL25QKp/YurV6+Wl6D69OmDCxcuID4+Hu3atUNQUBDatm2L5cuXY+nSpbh9+zY8PT3Rvn17BAUF4fz585gwYQKA1D599VJWYGAg/Pz8kJiYiOrVq8srPnPmzJGVpGrVqpg6dSqA1C+jrNxQ2KNHD1y9ehXe3t4QQqBcuXL46quv4OzsjP3798PNzQ1VqlTR/BKeP38+XnnlFTg5OWn2Vbt2bdlnWqhQIfj4+Mg+zdyUnWX55Zdf4t69e7K/3d7eHmFhYWjSpAlcXFzQrVs3FC5cGA0aNEDPnj0BAH5+frh79y6EEKhfv77c9tq1ayhWrJjVr/ODDz7AjBkz4OnpiZSUFFSrVg1ff/01evfuDX9/f7i6uqJ27dpo2LCh3CYgIAC9evV66lLyihUrsGPHDtjb26Ns2bIZdo3mFEvLctOmTTh48CDu3buHtWvXAgBmzZqFBg0a4OOPP0aVKlVkeTg7O2P48OG4desWunfvjocPH6JQoUL44YcfsHHjRpQqVQpjxozBP//8g7t376Jdu3YYMWIEevTogd9//112UTo7O6N79+4A8la9NPe68hJLy9be3h7jx4+XjciGDRvKripTZWvu3GTqnHvhwgU0b97c6tczZ84cfPLJJ1i0aBGSkpLg5uaG+vXrIyAgAH5+fli6dOlTjRWDwZDulYSxY8di9OjR+Pzzz9GgQQNN11xeYYvz7ODBg+Hn54cffvgBJUqUkOk/+OAD+Pv7w8PDA0II+Pn5oXz58jh8+DA+/vhj2NnZQQiBQYMGyUaOqXN2XjrPzp49G/Hx8bJbs3Llyli8eLHFeSkQD+gMCQlB5cqVnzqxUf4THBwMg8GA+vXr53ZWKItYL/O/IUOGYOHChZnuQqC8TU/n2QLRyCEiIqKCh491ICIiIl1iI4eIiIh0iY0cIiIi0iU2coiIiEiXzI7fzMxkTGQ72XUvOMszd2RHebIscwfrpr6wbuqHqbLklRwiIiLSJTZyiIiISJfYyCEiIiJdYiOHiIiIdImNHCIiItIlNnKIiIhIl9jIISIiIl1iI4eIiIh0yexkgAXB0KFDZfz2229r1vn5+cn4wIEDOZYnIiKijNSsWVPG69ev16xr2LChjD/66CMZP3782Kpjbd26Vcbnzp2zah+5gVdyiIiISJfYyCEiIiJdshNmHt5REJ7BERcXJ+OUlBTNusmTJ8t43rx5OZYnPh9HX/h8HP0oSHWzfv36Mla7KgCgatWqMlbzbu79mTp1qow3btyoWffPP/9Ync+syO91c9++fTJ+7bXXsrw/c2V59uxZGb/33nsyDg8P16RLSEjIcj6swWdXERERUYHCRg4RERHpEhs5REREpEsF8p6c8ePHy3jmzJkyDgwM1KQLCgrKsTypClK/v62VLFlSxtWqVdOsq1Spkox79uwp4+7du2vSVaxYUcbLly/XrOvXr1+m85Tf+/1zUqlSpWSsvvf16tXTpJszZ46Mly1blu35SqO3ulmiRAnNsr+/v4xdXV1l3KxZM5se98aNG5rlgQMHynjTpk02PZY5+b1uBgQEyFgdJg4AxYoVk3HRokUt2p+l91epjL8np02bJuPExESL9mELvCeHiIiIChQ2coiIiEiXCkR3VY8ePTTLX375pYzV4W6vvPKKJt39+/ezN2Mm6O2SeP/+/TXLycnJMt61a5eMo6OjNemeffZZGauXXg0GgyZd+fLlZdyqVSsZv/HGG5p0pUuXtjjPadasWaNZNv4sWSK/XxLPSYsWLZKxOkzVeJbWGTNmyFjtcs5uequbVapU0SxHRUWlm874dT969Mii/Rcu/L9J9YsUKWIy3bVr12T8zjvvyFg9P6SXj6zSc93s0qWLjNeuXStjc+VgTXeVsYULF8p41KhRVu3DGuyuIiIiogKFjRwiIiLSJd12V6ldE//++69mXa1atWQ8ZcqUdOPcpLdL4kuXLtUsDxgwIN10+/fv1yy/9NJLMn7++edtnzETfvnlFxnPnz9fs27v3r2Z3p+eL4lnVdOmTTXLavdgjRo1ZPznn39q0nXu3Dlb82WKHuqm+uDG3377TbNOfeCjSq0TANCrVy+LjqWO0Prmm29kbNxNZoo6WhKw/uGSphSUutmtWzcZv/vuu5p16m0aavlb+97cunVLxm3atJFxdj/Uk91VREREVKCwkUNERES6xEYOERER6ZJu78nZsGGDjNWhdABw9+5dGVevXl3Glg6LzG566PdXGferq/cBvPDCCzJ2cHAwud3FixdlrA43Ncfe3l6zfPToURlXqFBBxsYzrH7//fcyNn4yvTUKSr+/pdSnW//111+adeXKlUt3m9dff12zfPjwYdtnzAL5sW6q9+AAwA8//CBjS2cyNp5x2pr7K9zd3WW8evVqzTrjmZfT8J6c7Kfek6N+H06aNEmTrnHjxjI2VV7GTp8+LeM333xTs+7KlSuZymdGeE8OERERFShs5BAREZEuFc44Sf6hDn9Th64ZdzmoD4PLK11UehYXF6dZ9vLykrF6CTQ0NFST7uzZszJWuxxv3rxp0XELFdK24dVL3w8ePLBoH2R748aNk/Fzzz2nWWeqe/DOnTvZmic9U6fMACzvopo+fbqMTc2EbEytzwDg4+MjY/VBjm+//bYmnfE0E2myq3uQ/uf48ePpxsbd+G+99ZaMV61aZdG+1W5O45nJfX19M5VPa/FKDhEREekSGzlERESkS2zkEBERkS7p6p6c2bNny7hUqVIynjZtmibdunXrcixP9DR1mPDixYtlbDyEXC1PS+/DURnf38H7cHJPpUqVZKw+rsP4vinKXeq9N3///beMExISLNr+999/1yxXrVpVxuqw44kTJ2rSVaxYMVP5pJynPtrj5ZdflnFgYGBuZMdiPMMQERGRLrGRQ0RERLqUr7ur1GHigHa4oto1sXz58hzLEz2tSJEimuWQkBAZq7Ox7tmzR5NuwYIF2ZsxyjFqXW3VqpWMjbsUnzx5IuMvv/xSxjdu3MjG3BVcDx8+1Cy/9957Mt62bZtNjzV69GgZG08r8fHHH9v0WGR76nB+W888nZ14JYeIiIh0iY0cIiIi0qV81131zDPPyHjKlCkm06l3gl+4cCFb80TmffDBB5pl427GNM8++6xmWb28rc54u379epPHiomJkbEtHq5JthEcHGxROrWLys/PL7uyQ//PeNRUVruo+vXrZ9H+unbtqllmd1XeV7x4cRl7enrmYk4yh1dyiIiISJfYyCEiIiJdYiOHiIiIdCnf3ZOjPrW4Q4cOJtNduXJFxup9PACQmJho83yR1tq1a2Xs5ORk0TbqcHJAO+OxpdQnJ8+bN0+z7u7du5neH1ln1KhRmmV15ltzfvvtt2zIDeWUq1ev5nYWCqzSpUtrlvv27SvjuXPnyrho0aIm97F7924ZG58/k5OTZdyyZUur85nTeCWHiIiIdImNHCIiItKlfNddVbNmTYvSqQ8Nc3Z21qxTH9AZGhoqYw41t56jo6NmuVOnTjI+e/asye3UB/p99tlnmnU1atRId39VqlTRpBs3bpyMJ02aJOMXXnhBk854eCtln7Jly2qW7e3tcyknRPpRvXp1zbI6FH/kyJGadXXr1k13H+rMxcbU6T2aNWumWafe5mFuH6acP38+09vYAq/kEBERkS6xkUNERES6lC+6q9Ruiw0bNsjYzs5Ok+748eMyvnbtmoyNu7hmzZqVbjxixAhNOnX2VTLP+FLkq6++KuNz585ZtU+1PNW4QoUKmnSXL1+W8cKFC2Xs7e2tSafOvGz8gECyLeO6WahQ+r+njLuI+SDO/E19wCqgLU8HBwcZGz+0V63Tt27dyqbc5U/qiGL1VgsAaNKkiUX7iI2NlbFxXSxVqlS625QoUcLSLFpEHeGVk3glh4iIiHSJjRwiIiLSJTZyiIiISJfyxT055cqVk7H6pGrjYWyvv/66jB89eiTjkiVLatKpfZDqEGbjPsN///1Xxnv27MlcpgsY49mEs3N2YeM++0WLFsl40KBBMm7atKkm3YwZM2T84YcfZk/mCrBXXnlFxr6+vpp1pp4Ir86MDQCnT5+2fcYox1y6dEmzPHXqVBmr9zi+/PLLmnTqNBBjx47NnszlI+pQcfU+HEvvwTGmTqdhfK+N+h3YvHlzq/Zvyq5du2RsfL9WTuGVHCIiItIlNnKIiIhIl/JFd5Wl1C4qlfFwYXX55MmTMja+VOfp6SljdlflXWXKlJGxWrbGl0e//fbbHMtTQbRgwQIZq9M+mKN2U5DtqA9h5Huc/6gzGVvaRRUeHq5ZXrJkiYwfPnwoY3U4OaB9IsCff/4pY+MHJltjy5YtMn78+HGW92cNXskhIiIiXWIjh4iIiHQpX3dXZfcDNXfs2JGt+yfbULtG1JmWjcXHx+dEdgoUHx8fGbdo0cKibdh9kv3UGacrV65sMp06chXQPrB46NChMr59+7YNc0cZUd97S02ZMkWzvGnTJou2Uz8rxjOVZ5X6oF7jmZZNjbi0NV7JISIiIl1iI4eIiIh0iY0cIiIi0qV8cU9O3759Zaz2Ge7du9ei7dXhlIC27/Kdd96RsXEf5ubNmzOVT8odLi4uMlY/H8YzYickJORYngoKdfbwYsWKWbTNnTt3sis79P/U4bqjR4/WrFNn0DW+T6Jbt24yTk5OlrHxPSLZOaM5actInUncFipVqqRZ3rBhg4zVYePG509rjB8/XsazZs3SrDMeyp5deCWHiIiIdImNHCIiItKlfNFddfjwYRmrl9DUh3Uaq1Kliow//fRTzbqePXvKWL1kpj7AkbKmePHiMjae/fbBgwcyvnbtWqb3bXz5tkOHDjJWuya/++47TbqoqKhMH4vMa926tYyNuz5U6oP6li9fnp1ZIhtRpwd4/vnnNevUhzrOmzdPxsuWLdOka9asWfZkTufUmYIDAgKyvL/Zs2fL2LjrUX2Atbnu/qxas2aNZrlPnz4yNn7osi3xSg4RERHpEhs5REREpEt2wsw1KVvPfmitl19+WcbqiKrSpUtr0h07dkzG6h3kFSpUMLlv9dKd+kCz3GTry4RpbF2e9vb2MlYvWQPaLiTjB73169dPxiEhIRYdy8HBQcbff/+9Zl2XLl1krM7M6ubmpkl38OBBi45la9lRnrlVN427LW7cuCFjczOYqmWxdetW22csh+SXuqlS6ykAPPPMMzI+cOCAZp2lI3nUkVeJiYkyNh7Jaup1GT80We2SWbhwoUV5sIW8WjfVh0Wr9cXcLRrqw6YB7Qi4li1bytj486Ay112ldvernyHj0VqW+vXXX2XcvXt3q/ahMlWWvJJDREREusRGDhEREekSGzlERESkS/ninhxV06ZNZXzo0CHNOlP9icZPnx42bJiM8+Jw1vzS7//VV1/J2NxTc9UpAADA0dFRxupTao2fYv3CCy+keyy1PxjQDj8cPny4jH/55ReTecpJebXf3xrGw/LV+6vM3ZPz0ksvyfjy5cu2z1gOyS9101Jjx47VLBvPSptd/v33X83yq6++miPHNZYf6qaHh4eM1ftYsoM6DcSZM2c069zd3WWsznS+bds2TTrjJ9ubot5Dq36vW4v35BAREVGBwkYOERER6VK+mPFYpV7mNDcUjrJfxYoVLUqndlUAQGRkpIzVrid1mLgx9eGa6mVOAHBycpKxOoScbO/06dMWpZs/f75m+erVq9mRHcqizz//XLOsTrPw4YcfyljtMrEFPz8/m+5Pz9avXy/jvPidZzytRF7DKzlERESkS2zkEBERkS6xkUNERES6lO+GkBcE+WWYqvq4jc2bN2vWVa1aNdP7O378uGY5PDxcxuojN/bv35/pfeem/DBM1Vpff/21jG/evCnj0NBQTbqjR4/mWJ6yU36pm2QZPdfNgoZDyImIiKhAYSOHiIiIdIndVXkQL4nrCy+J6wfrpr6wbuoHu6uIiIioQGEjh4iIiHSJjRwiIiLSJTZyiIiISJfYyCEiIiJdYiOHiIiIdImNHCIiItIlNnKIiIhIl9jIISIiIl0yO+MxERERUX7FKzlERESkS2zkEBERkS6xkUNERES6xEYOERER6VKWGjnNmjUDAFy5cgWNGzeGl5cXXF1d4ePjg7CwMLPbPnz4EO3atcPUqVOfWjd06FB07dpVLgcHB6NLly7w8PDAsGHDEBsbCwD47bffYDAY5L/69evj1KlTZo87YcIEdOrUCQaDAd26dcORI0cy+7KlAwcOYMiQIWbTJCQkwMfHB56ennB3d8eCBQusPp6tWVN+p06dQs+ePeHu7g4PDw9s3LhRrgsJCYGzszPq1auHmJgY+ff79+9j2LBh8PDwgI+PD86cOSPXxcbGYuTIkejSpQtcXV1leXz++efw8PCAwWDAgAEDcOPGDbOvJe01GAwGuLm5YfLkyUhJSbH6vfH19cWxY8fMprl69Sr69esHDw8P+Pr6Ijo62urj2YK19XHgwIFwdHQ0+VmePn263Ldq8+bNqFevnnyf9uzZA29vb3h4eMDb2xv79u17ahvjum1KWFgYWrZsKcvz559/znAbc9LLv7F9+/ahW7duMBgM6N27Ny5fvpylY2aFrcvSVN3ctm2brGfe3t44ePCgXHft2jUMGDAArq6ucHNzw5UrVzT7NPW5MHbgwAG8+uqrMBgMcHV1xRdffGHRe2BKp06dNK8hPaa+M3KDrc+zffr0kd95bdq0wQcffKDZNiIiAi+//DL++OMP+bc5c+aga9eu6Nq1q2ZfQgjMmzcPLi4ucHV1xfLly82+ltw4z4aHh6Nbt25PvSaLiSxo2rSpEEKIqKgo4e7uLv8eGRkpPD09RWhoqMltp02bJsaMGSOmTJmi+fvmzZvFmDFjNPv7+++/RWJiohBCiNmzZ4vZs2c/tb///vtPODk5ZZjn8ePHi02bNsn9du3a9ak0SUlJGe5HCCH2798vBg8ebDZNSkqKePjwoRBCiCdPnggfHx9x5MgRi/af3awpvwsXLoiLFy8KIYSIjo4WrVu3Fvfv3xdCCHHixAkRFRUlOnbsKO7cuSO3mTVrlli4cKEQQohz586Jd955R64bN26c+Pnnn4UQQiQkJMh9PXjwQKb54YcfRGBgoNnXor6GxMRE0adPH7F582ZNmrTPkCX69u0rIiIizKYZMWKECAsLE0IIsXfvXuHn52fx/rODtfVx7969Yvv27el+liMiIoSfn5/cd5oHDx6IPn36iB49esj36cSJEyI6OloIIcTp06dFmzZtNNukV7dNWbNmjTw33L59W7z++uvi1q1bmjSZKU/j/KfnzTffFOfOnRNCCBESEiLGjx9v8f5tzdZlaapuPnz4UKSkpAghhDh16pRwcXGR6/r27St2794t08XHx8t1pj4X6VHPk3FxccLZ2VkcP35ckyYzZWn8GtJjyXdGTrH1eVY1fPhwsXbtWrmclJQkfH19xXvvvSe/53bu3Cn69+8vEhMTRVxcnPD29pbn19DQUDF27FiRnJwshEita+bkxnk2KipKnDp1SowdO1a+pszIlu6q6tWrY8KECVixYkW6648fP447d+6gdevWmr/HxcXh+++/x/vvv6/5e5s2bVC4cGEAQNOmTdP9xbxhwwa4u7tnKp8tWrRAZGQkgNRfB3PmzEG3bt3wxx9/YPfu3ejZsye6deuGkSNHIi4uDgDw119/oUuXLujWrRu2bt2a4THs7OxQsmRJAEBSUhKSkpJgZ2eXqXzmNHPlV6tWLdSsWRMA4ODggPLly8tfVS+//DKqVav21Dbnz59Hy5YtAQC1a9fG1atXcfv2bTx48ADh4eHw8fEBABQpUgRlypQBAJQqVUpu/+jRo0y9Z4ULF0azZs1w+fJlhIWFYejQoXjnnXfQv39/xMfHw9/fHz4+PvDy8sK2bdsAAI8fP8bo0aPh6uqKYcOG4fHjxxkeR31dLVu2xPbt2y3OY07KqD62atVKfkZVycnJmD17NsaOHfvUuvnz52PQoEEoWrSo/NvLL78MBwcHAECdOnWQkJCAJ0+eADBdty3x3HPPoUaNGrh27RomTJiAyZMno0ePHpgzZw4iIyMxcOBAeHt7o0+fPjh//jwAICoqCj179oSHhwfmzZtn8bEePnwo/69YsWKm85rdrC1LU3WzZMmSsm6p9ezcuXNISkqS5+iSJUuiePHiAMx/LjJSokQJNGzYEJcvX8bChQsxduxY9OrVC+PGjUNMTAxGjBiB7t27o3v37jh06BAA4O7duxgwYADc3d0REBAAYcGsJ5Z8Z+Q2a8+zaR4+fIj9+/ejc+fO8m8rVqyAi4sLnnvuOfm3c+fOwdHREYULF0aJEiVQr149/PXXXwCAVatWYdiwYShUKLUpoG6XkZw6z1arVg3169eXecysbLsnp2HDhrhw4QIA4NixYwgICAAApKSkIDg4GOPHj39qm/nz52PAgAEoVqyYyf2uWbMG7dq1e+rvGzduzHQjZ8eOHahbt65cfvbZZ7F27Vq0atUKixYtwvfff4+1a9filVdewffff4+EhAQEBgZi8eLFCAsLw61bt+S26ms0lpycDIPBgDfeeANvvPEGmjRpkql85gZT5aeKiIhAYmIiatSoYXZf9evXx5YtW+Q2165dQ3R0NK5cuYLy5cvD398fXl5eCAgIQHx8vNxu3rx5aN++PdavX48PP/zQ4rw/evQI+/btk2V78uRJLFiwACEhIVi8eDFatmyJ0NBQLF++HHPmzEF8fDxWrVqFYsWKYdOmTRgxYgROnDgh9xcQEJDuJVX1dW3duhVxcXG4e/euxfnMSZaUp7GQkBA4OTk99WV/4sQJREdHo0OHDia33bx5M15++WUUKVIEgGV125SoqChERUXJz9mNGzewevVq+Pv7IzAwEIGBgQgLC8P48eMxZcoUAEBQUBB69+6N9evXP5V/g8GQ7nGCgoIwePBgtGvXDuvWrcPgwYMzndecYE1ZmrN161Z06dIFQ4YMwYwZMwAAly5dQpkyZTB8+HB4eXkhODgYycnJAEx/Lixx9+5dHD16FHXq1AGQ+kNh2bJlmDt3LoKCgtCvXz+sWbMGCxcuxKRJkwAAX375JZo3b44NGzbA2dkZ165dk/sbNGhQhl3Zpr4z8oKsnGe3bduGVq1ayR+EN27cwLZt29C7d29Nuvr16+Pvv//Go0ePEBMTgwMHDshGX1RUFDZu3Ahvb2+89957uHTpksV5z6nzbFYVtvke/5/a2m7UqBEaNWoEAFi5ciXatWuHSpUqadKfOnUKkZGRmDhx4lN9v2kWLVoEe3t7eHp6av5+9OhRFC9eXNNgMWf27NlYtGgRypcvj6CgIPl3Nzc3ub9z587JD0tiYiKaNm2KCxcuoFq1arKF7enpKe8VUF+jMXt7e6xbtw6xsbEYNmwYzpw5Y3Fec4up8ktz8+ZNjB07FsHBwRm2sAcPHoygoCAYDAbUrVsXDRo0gL29PZKSknDy5EkEBgaiSZMmmD59Or755huMGjUKADB69GiMHj0aX3/9NUJCQjBy5Eizx4mMjITBYICdnR2cnJzQvn17hIWFoXXr1nj22WcBALt378aOHTvw3XffAUi9Z+r69esIDw+Hr68vgNSTQr169eR+1c+Iaty4cZg2bRrWrl0LR0dHODg4wN7e3mwec0tG5Wnsxo0b+OOPP576lZmSkoJZs2Zh5syZJrc9e/YsPv30U/keW1K307Nx40YcOnQIRYoUwdSpU2UZdunSBfb29oiLi8ORI0c0DeC0K0dHjhzBwoULAaQ2aj799FOZZt26dekeb9myZfjmm2/QpEkTLF26FDNnzjRZ9rkps2WZEWdnZzg7OyM8PBzz58/HsmXLkJSUhIMHD+LXX39F5cqVMXr0aISFhaFdu3bpfi4ycvDgQXh5eaFQoUIYNGgQ6tSpgz/++AOdOnWSDd+9e/fi3LlzcpuHDx8iLi4O4eHh8j6eDh06oGzZsjLNkiVLzB7X1HdGXpGV8+zvv/+OHj16yOWgoCD4+fk9la5NmzY4duwYevXqhfLly6Np06YyzZMnT1C0aFGEhYVhy5YtmDhxIlauXGk2zzl9ns2qbGvknDx5ErVr137q70eOHMGhQ4ewatUqxMXFITExESVKlECVKlVw/PhxdOrUCUlJSYiJiYGvr6+sTGFhYdi1axeWLVv2VNdFZruqxo0bhy5dujz197TLsUIItG7dGnPnztWsz+im5oyUKVMGr7/+Ov7+++8838gxVX5A6slnyJAhGD16NJo2bZrhvkqVKiW/FIUQcHJyQvXq1fHo0SNUqlRJXtnq0qULvvnmm6e29/DwwODBgzNs5NSoUSPdL7C0ck2zYMECvPjiixnmOyMODg7y5BsXF4ctW7bI7ra8xlx5pietYfLmm28CSP3V5uzsjLCwMJw5cwbvvPMOAODWrVt4//33sWjRIjRq1AjR0dEYPnw4goOD5S/PI0eOmK3bpqTd2GhMradlypQx2WjJTBdnTEwM/vvvP/lZdHNzw3vvvWfx9jkps2VpqRYtWiAqKgoxMTGoVKkSGjRogOrVqwMAnJyccPToUVSoUCHdz0VGXfeOjo74+uuvn/q7WjdTUlLw888/a7pAs8Lcd0ZeYe15NiYmBseOHcOXX34p/3b8+HGMGTMGQOoVsz///BOFCxdG586d8f7778uu4o8++gi1atUCkHoOc3Z2BpDa2PX3988wzzl9ns2qbOmuunLlCmbPno2+ffs+te6zzz7Drl27sGPHDowfPx5eXl7w8/NDnz59ZOtv5cqVqFmzpjwJ/vXXX1i6dCkWLVr01BuZkpKCTZs2PdXIGTduHCIiIqzKf9OmTXH48GE5uiI+Ph4XL17Eiy++iKtXr8r7eDZs2JDhvmJiYuSd/Y8fP8bevXvzRMGbY678njx5gmHDhsFgMKTbUExPbGys/IX9yy+/wNHREaVKlUKFChVQqVIlebl23759ssKrl023b98u37OIiAiMGzfO6tfWpk0bhISEyF9QJ0+eBJB6gv/9998BAGfOnMHp06cz3FdMTIwcWfDNN9+ge/fuVucrO5krT1M6dOiAPXv2YMeOHdixYweKFy+OrVu3onTp0jhw4ID8e9OmTWUDJzY2FoMHD8ZHH32EV199Ve7LXN0OCQlBSEiIVa+rVKlSqFatGjZt2gQgtdHz33//AUgd0ZJWP3/77bcM91WmTBk8ePAAFy9eBJA6Uiw7GhJZZU1ZmnP58mVZF06cOIEnT56gXLlysjzT7gM5cOAAXnrpJZOfCyC12+uzzz6zOi9t2rTRNHzTflS2aNEC69evBwD8+eefuH//fob7MvedkVdk5Ty7efNmdOjQQdMgTCuTHTt2wMXFBR9//DE6d+6M5ORk2Y3+33//4fTp0/Jeq86dO+PAgQMAgH/++Uf2UuSl82xW2exKTmRkJLy8vJCQkICSJUvC19cX3t7eAFL7GlevXm315ahp06bhyZMnePfddwEATZo0kUPPw8PDUblyZfmLI83p06etvnGwfPnymDlzJsaMGSO/nEeNGoVatWph6tSpGDx4MIoXL45XX31V3pBs6jXevHkTEyZMQHJyMoQQ6NKlCzp27GhVvrKTpeW3adMmHDx4EPfu3cPatWsBALNmzUKDBg2wfPlyLF26FLdv34anpyfat2+PoKAgnD9/HhMmTACQekOq+h4FBgbCz88PiYmJqF69urzi89lnn+HixYuws7ND1apV5b0W165ds+q+jjQffPABZsyYAU9PT6SkpKBatWr4+uuv0bt3b/j7+8PV1RW1a9dGw4YN5TYBAQHo1avXU5eS//nnH8ydOxd2dnZwdHTExx9/bHW+bC0z9bFPnz64cOEC4uPj0a5dOwQFBaFt27aZPmZISAgiIyPx5Zdfyl+Y3333ndmbGS9cuIDmzZtb8QpTzZkzB5988gkWLVqEpKQkuLm5oX79+ggICICfnx+WLl2KTp06abYxGAxP/RItXLgwpk+fjpEjR8LOzg5ly5aV96fkNluUpam6uXnzZqxbtw6FCxdGsWLFMG/ePNjZ2cHe3h7jx49Hv379AKTeO6J2jZjKpzpgILMCAgIwdepUeHh4IDk5GY6Ojpg6dSqGDRuGjz76CO7u7mjWrBmqVKkitxk0aBCmT58ub3hPY+47IzfZ4jwLpHblDho0yKJjJiUl4e233waQ+sNgzpw58qbswYMHw8/PDz/88ANKlCghP0d56TwbERGB4cOHIzY2Fjt37sTChQstusCQRpcP6Hz48CEmTpyYp+akIdsIDg6WcyJR/jdkyBAsXLhQ3qBM+Zefnx8mTpyI8uXL53ZWKIv0dJ7VZSOHiIiIiI91ICIiIl1iI4eIiIh0iY0cIiIi0iU2coiIiEiXzA4hz6sTKOlddt0LzvLMHdlRnizL3MG6qS+sm/phqix5JYeIiIh0iY0cIiIi0iU2coiIiEiX2MghIiIiXWIjh4iIiHSJjRwiIiLSJTZyiIiISJfYyCEiIiJdYiOHiIiIdMnsjMe5pWXLlprl7du3y7hYsWImt+vYsaOMK1euLONDhw5p0p07dy6rWSQiIqI8jldyiIiISJfYyCEiIiJdshNmnlCWkw8aU7uXDh8+rFlXoUIFi/Zx9+5dGavdWrdv39ak++WXX2QcGBgo44SEBMsym834EEB94UMATXN0dNQsd+3aVcZOTk4yLlxY27P++PFjGYeEhMj422+/tXUWNfReN0uXLi1j9dzo4+OjSffCCy+ku/3cuXM1y7du3ZLxkiVLZKyeq3MT66blqlevLuPVq1fL+I033tCkS0lJkbG9vX32Z+z/8QGdREREVKCwkUNERES6xEYOERER6VKeuSdH7e/777//NOuKFi1q0T7U/Fra1xoUFCTjzz77TLMuNjbWon3Ymt77/Qsa9vsDJUqUkPGBAwdkXKdOHU26IkWKyPj+/fsyNr5PT91OfS9effVVTbqbN29ameP06b1ujhs3TsYzZszI9PbGr0N9v/bt2yfjt99+W5MuMjIy08eyBdZNy+3Zs0fGr732mowLFdJeK1HvyXnmmWeyP2P/j/fkEBERUYHCRg4RERHpUp7prlK5uLholtu0aSPjihUryrhatWqadF26dJGxNZchjS+Zvvjii5nehy3o7ZK48fs4dOjQdNOdOnVKs6wOP23fvr2M1XIGgJIlS8q4devWMr5+/XrmM5sNCuIl8ebNm2uWv//+exk3atRIxqdPn9akmz17tox37Ngh48uXL5s8ltpFZTy7ua3prW76+flploODg2VszWs1112lUof9A0D//v0zfSxbKIh101pqN5T6vpkrcw4hJyIiIsombOQQERGRLuXJ7ipz1NEXagwA5cqVk/HEiRNl7ObmpklXtWrVdPedlJSkWR49erSMFy1alPnMWkkPl8QXLlwo4w8++ECzLquXwc1tP2fOnHTzAADXrl3L9HFtoaBcEq9Zs6aMDx48qFlXvnx5GW/atEnGxt0UahdlXqSHuqkyrhMODg4yVl+r+pBkQNuVuGHDBhmXKlVKk27FihUyrlWrlozv3bunSVevXj0Z37lzx5Ks20RBqZvWUL//AODTTz+Vsdp1xdFVRERERLmAjRwiIiLSJTZyiIiISJcKZ5wkb3ny5Em6MQA8fPhQxu+//76M1X5hAOjdu3e6+zZ+0rH6RF4yr0qVKpplU+9xdhs7dqyM33rrLc262rVr53R2dK948eIy/uqrr2Ss3oMDAP/++6+Mu3fvLmP1aeLG1P58dRoJQDuVxE8//WR5hgmzZs2S8fPPP28y3Q8//CBj9XwKPH3uNWXv3r0yVu/JefbZZzXpcnKo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REREusRGDhEREekSGzlERESkS2zkEBERkS5l6QGdRERpunfvLuOAgADNOvXp3p988omMFy9erEn36NGj7MkcERVIvJJDREREusRGDhEREekSu6uIyGoNGzaU8YoVK2R8/PhxTbrWrVvL2MnJScZVq1bVpDt37pyts0hEBRiv5BAREZEusZFDREREusTuKsqUatWqyXj48OEm07377rsyrlixombd3LlzZZyYmCjjO3fuaNJ9++23Mn7w4EG621Du6tu3r4wLF/7f6WTAgAGadGr3lXFXFhFRduGVHCIiItIlNnKIiIhIl9jIISIiIl2yE0IIkyvt7HIyL/T/zBRJllhTnuostgAwbdo0GderVy/LebLU+vXrZbxjxw7Nuq+++krGSUlJOZYnS2VHeeaVupmSkiLj3bt3y7hdu3a5kZ1sl5fqJmWdnuumNVxdXWU8YsQIzbouXbpYtI8JEybIePbs2bbJmAVMlSWv5BAREZEusZFDREREusQh5GRWixYtNMs1a9aUcXh4uMntTp48KePq1atr1pUuXVrGzzzzjIybNm1qcn8eHh7pxgDg7Ows427dusk4L3Zd5XcffvihyXULFizIwZxQduvdu7eM1XpvrGjRojIODAzUrCtU6H+/o/fu3Svj33//XZPuzJkzMl6zZk2m80qWU6d6AIAvvvhCxv369ZNxkSJFNOmioqJk/Oyzz8q4VKlSmnTqLQ2RkZEyXr16tXUZziJeySEiIiJdYiOHiIiIdMnmo6sWLlyoWb569aqMZ82alen9FUR5aQRH7dq1NcsVKlSQ8f79+7OcJ/WSqPoQR0D78Mb58+fLWL1UaqxYsWIyziszI+f3ERxqGV28eFGzTu1ufOmll2QcGxub/RnLBXmpbmYHf39/GX/yyScytre3t2p/6usy996pXcvqjNjBwcGadL/88otV+TAlv9dNa4wcOVKzPG/ePBkfOXJExt9//70m3apVq2Rcrlw5GQcEBGjS9e/fX8ZXrlyRsfHtCDExMZZn2gIcXUVEREQFChs5REREpEts5BAREZEu2fyeHHUGVOPlH374QcbfffedJt2ePXsyfSy90nu/vzX+/vtvGb/xxhsm0zVv3lzGR48ezdY8WSq/9/v36NFDxj/99JNm3datW2Xs4uKSY3nKLXqrmzVq1NAsb9++Xca1atWS8a5duzTp1KHB6mzk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5kaNGtW+s0iJsrIyzWvWrHHuXXLJJZrtOka/HECvXr00//jjj6nuYq3xJgcAAASJQQ4AAAhS1qar7DbdRNep5E+NIfU6derkXNuK06nw119/aT5x4kRku/PPP1+zv+01roYNG9bpc4hWVFSkubS0VLNfNmD69OmabQkBZEb79u01r1y5UnPU9JSIyAcffKDZLxexf/9+zS1bttQ8bdq0yJ/Xo0cPzbZ8CNKjc+fOmhctWqT5iy++cNrZbf7ffPONZr9qeba2ikfhTQ4AAAgSgxwAABAkBjkAACBIWVuTk24XXnih5rvuusu5Z+cMbQlxZIbdXm7X2nz22WdOO7ud+NixYwn/XMRdh2Pv+afeRrFzzSIiCxYsiPU5xDdp0iTN9igVv2z/66+/nqkuQc5cr2i3infv3l1zTU1NZLu5c+dq/uqrr5x2TZo00fzkk09qbtasWWSfrrrqquSdRkqNGDFCs/03uLi42GnXtm1bzf3799eca2twfLzJAQAAQWKQAwAAgnTWf5KUfrUVYvPNoEGDNPuvwN9++23N/fr1y1if4qprRd9/k8/fp622OXv2bOfekCFDNDdt2jTyZ9i/v/3Mpk2bUtHFSOn4PnP9u/QrYL/11luaT58+rXnUqFFOu3SWkkiFEJ5NW2V6+/btzj07jXT06FHNjzzyiNNu7dq1CX92z549nevVq1drbteuXaz+9e3bV/POnTtjfaauCvHZvOWWW5zrjRs3arYnAPgVx+13uXDhwvR0rh6ivkve5AAAgCAxyAEAAEHKu91VHTt21Owf7vf9999r7tq1a8b6hNTwvzNbGXfkyJGa7Y4NX7LXz4cPH9bs79BC/dkq135FW1t9+v3339ec69NTITj33HOd62eeeUazv8vJTiVOmTJF87p165x29nP2u7bTwCIirVq1itVHW0F3z549sT6D+Oz3tXz5cufeihUrNNvddv7Byi+88EJ6OpdmvMkBAABBYpADAACCxCAHAAAEKS/W5EycOFGz3cpoqxon42/pe+6551LTMdSJ3Q4+btw4zZMnT3ba2bUE9jus67ZPexL2jBkzNN99991OO1uFGfH17t1bs90GLCJSXV2t+d57781YnyDSq1cv59pWMvZ9+OGHmvft26f52WefddoNGDBAs32u4rInl4uIPPbYY5r/+OOPWv88JHf11VdrPnnypHPPVq/e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\n"},"metadata":{}}]},{"cell_type":"code","source":"visualize_preds(test, submissions, factor = 5,\n                seed = 23, ncols = 5)","metadata":{"execution":{"iopub.status.busy":"2022-11-04T16:01:56.210183Z","iopub.execute_input":"2022-11-04T16:01:56.21114Z","iopub.status.idle":"2022-11-04T16:01:58.104864Z","shell.execute_reply.started":"2022-11-04T16:01:56.211099Z","shell.execute_reply":"2022-11-04T16:01:58.103891Z"},"trusted":true},"execution_count":45,"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 720x720 with 25 Axes>","image/png":"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5BAREZEusZJDREREusRKDhEREelSlq54vG7dOhkbr7r40Ucfydh4NVN1jM6kSZNkvHnzZltnUUOdwjpq1CgZ9+jRQ5OucOHCMv722281+77//vtMyt3L5Y033pCxvb29Zt/du3dlvGrVqqzKEhnp0qWLjN98802T6R48eCBjjsHJucytcvzrr79mYU7IlozHKqrLNugRW3KIiIhIl1jJISIiIl3K0u4qtWla7XYCtKsB9+3bV7NP7b5av369jNUbiwHariG1C+O3337TpFNXwlVXbK1du7YmXa9evWRcvHhxmLJ69WoZT506VbMvs1ZIfdn07NlTxuoNIwFt07kebzCXWxQrVsyidEePHpWx8eqwvF6yl9otb86mTZsyOSdEtsGWHCIiItIlVnKIiIhIl7K0u0p1//59zfann34q44iICM2+Dh06yFi9sWf9+vU16b7++msZqyuzPn36VJOuaNGiMja+4aApatfYnj17NPumTJki46ioKIuOR/SyWrJkiYz//fdfzT7ja4syl/HK1JZ2V3GV49xFXeVYXZkc0N6U8+eff86yPGUVtuQQERGRLrGSQ0RERLrESg4RERHpUraNyTEWGRkp49GjR2v2LVq0SMYjRoyQsbrCKqCdaq6OtSlZsqRVeRo+fLiM1ZV01TtsU9ZQp/0bU/uY8+bNK2Pju+1SzrBs2TIZcwxOzmLq7vFcmiF3U+8o8Pfff2v2VahQIauzk6XYkkNERES6xEoOERER6ZKdMLPEqPFqpDmN8fRvW+dXnYaelSuxZta5cnp5mrNlyxYZu7u7m0xXq1YtGV++fDlT82SpzCjPnFiWn3zyiYy/+uorzb7Dhw/LuHXr1lmVJZvT+7WpTiFfvHixjLt3765Jp5cp5C/Ltan65ptvNNt9+vSRsdqtldk3wLY1U2XJlhwiIiLSJVZyiIiISJdYySEiIiJdytVjcvRK7/3+1mjSpImM9+7dq9mnjh348ssvZfzo0aNMz5clXsZ+f73itakvL+O16erqqtnesWOHjNXbEvXq1UuTbvv27ZmbsQzimBwiIiJ6qbCSQ0RERLrE7qociE3i+vIyNonrFa9NfeG1qR/sriIiIqKXCis5REREpEus5BAREZEusZJDREREusRKDhEREekSKzlERESkS6zkEBERkS6xkkNERES6xEoOERER6ZLZFY+JiIiIciu2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\n"},"metadata":{}}]}]}