diff --git a/main.ipynb b/main.ipynb index 48b0b864ea73fc38bcf1b9b6e379a711ae0d7e12..e1dc11eeb0ddbb56e5a82df007b92a1d9cfd2cd6 100644 --- a/main.ipynb +++ b/main.ipynb @@ -14,20 +14,45 @@ "## Dataset" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### General imports" + ] + }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 17, "metadata": {}, "outputs": [], "source": [ + "from importlib import reload\n", "import numpy as np\n", - "import matplotlib.pyplot as plt\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Read dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "import read_cifar\n", + "reload(read_cifar)\n", "from read_cifar import read_cifar, split_dataset" ] }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -36,7 +61,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -45,7 +70,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -66,6 +91,27 @@ "print(cifar_labels[0:5])" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 0.9 Split" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# Split dataset into training and testing with 90% training and 10% testing\n", + "train_data_09, train_labels_09, test_data_09, test_labels_09 = split_dataset(\n", + " cifar_data,\n", + " cifar_labels,\n", + " 0.9\n", + ")" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -75,10 +121,12 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 19, "metadata": {}, "outputs": [], "source": [ + "import knn\n", + "reload(knn)\n", "from knn import evaluate_knn, distance_matrix, knn_predict" ] }, @@ -91,7 +139,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -108,7 +156,12 @@ "source": [ "example_split = 0.8\n", "example_k = 3\n", - "example_train_data, example_train_labels, example_test_data, example_test_labels = split_dataset(cifar_data, cifar_labels, example_split)\n", + "example_train_data, example_train_labels, example_test_data, example_test_labels = split_dataset(\n", + " cifar_data,\n", + " cifar_labels,\n", + " example_split\n", + ")\n", + "\n", "\n", "print(example_train_data.shape)\n", "print(example_train_labels.shape)\n", @@ -118,19 +171,25 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "0.33066666666666666\n" + "0.3294166666666667\n" ] } ], "source": [ - "example_accuracy = evaluate_knn(example_train_data, example_train_labels, example_test_data, example_test_labels, example_k)\n", + "example_accuracy = evaluate_knn(\n", + " example_train_data,\n", + " example_train_labels,\n", + " example_test_data,\n", + " example_test_labels,\n", + " example_k\n", + ")\n", "\n", "print(example_accuracy)" ] @@ -144,17 +203,7 @@ }, { "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [], - "source": [ - "# Split dataset into training and testing with 90% training and 10% testing\n", - "train_data_09, train_labels_09, test_data_09, test_labels_09 = split_dataset(cifar_data, cifar_labels, 0.9)" - ] - }, - { - "cell_type": "code", - "execution_count": 28, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -164,33 +213,33 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "k = 1, accuracy = 0.3506666666666667\n", - "k = 2, accuracy = 0.30716666666666664\n", - "k = 3, accuracy = 0.3298333333333333\n", - "k = 4, accuracy = 0.3328333333333333\n", - "k = 5, accuracy = 0.3323333333333333\n", - "k = 6, accuracy = 0.3383333333333333\n", - "k = 7, accuracy = 0.3401666666666667\n", - "k = 8, accuracy = 0.3395\n", - "k = 9, accuracy = 0.3416666666666667\n", - "k = 10, accuracy = 0.3388333333333333\n", - "k = 11, accuracy = 0.3416666666666667\n", - "k = 12, accuracy = 0.3426666666666667\n", - "k = 13, accuracy = 0.3435\n", - "k = 14, accuracy = 0.3405\n", - "k = 15, accuracy = 0.3395\n", - "k = 16, accuracy = 0.341\n", - "k = 17, accuracy = 0.3375\n", - "k = 18, accuracy = 0.33816666666666667\n", - "k = 19, accuracy = 0.33466666666666667\n", - "k = 20, accuracy = 0.333\n" + "k = 1, accuracy = 0.35033333333333333\n", + "k = 2, accuracy = 0.3175\n", + "k = 3, accuracy = 0.331\n", + "k = 4, accuracy = 0.3418333333333333\n", + "k = 5, accuracy = 0.346\n", + "k = 6, accuracy = 0.3393333333333333\n", + "k = 7, accuracy = 0.3405\n", + "k = 8, accuracy = 0.33866666666666667\n", + "k = 9, accuracy = 0.346\n", + "k = 10, accuracy = 0.3413333333333333\n", + "k = 11, accuracy = 0.3368333333333333\n", + "k = 12, accuracy = 0.335\n", + "k = 13, accuracy = 0.3363333333333333\n", + "k = 14, accuracy = 0.3378333333333333\n", + "k = 15, accuracy = 0.333\n", + "k = 16, accuracy = 0.33116666666666666\n", + "k = 17, accuracy = 0.33016666666666666\n", + "k = 18, accuracy = 0.3318333333333333\n", + "k = 19, accuracy = 0.3293333333333333\n", + "k = 20, accuracy = 0.32516666666666666\n" ] } ], @@ -206,12 +255,12 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 11, "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkAAAAGwCAYAAABB4NqyAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABVYElEQVR4nO3dd3zTdf4H8FdGk+6ke9EW2gJlFygUUBC0LHHgAtFjlOHAeb3zd6KeOE57eqeiwoGDZRHEgQsZYgEFBcoqQ6BSVls66Ew60zT5/v5ok1Ip0ECSb9K8no9HH3emafquUvrq5/P+fN4SQRAEEBEREbkQqdgFEBEREdkbAxARERG5HAYgIiIicjkMQERERORyGICIiIjI5TAAERERkcthACIiIiKXIxe7AEdkNBpRUFAAHx8fSCQSscshIiKidhAEAVVVVQgPD4dUeuU1HgagNhQUFCAyMlLsMoiIiOga5OXloVOnTld8DgNQG3x8fAA0/Qv09fUVuRoiIiJqD61Wi8jISPPP8SthAGqDadvL19eXAYiIiMjJtKd9hU3QRERE5HIYgIiIiMjlMAARERGRy2EAIiIiIpfDAEREREQuhwGIiIiIXA4DEBEREbkcBiAiIiJyOQxARERE5HIYgIiIiMjlMAARERGRy2EAIiIiIpfDYah2VK83oLRaB4VMimBfd7HLISIicllcAbKj/20/hRvf2Ib3tp4UuxQiIiKXxgBkR2oPNwBAZa1e5EqIiIhcm0MEoEWLFqFz585wd3dHUlISMjMzL/vcdevWITExEWq1Gl5eXkhISEB6enqr58yYMQMSiaTV27hx42z9ZVyV2rMpAGnqGICIiIjEJHoP0Nq1a5GamoolS5YgKSkJCxYswNixY5GdnY3g4OBLnu/v74/nn38e8fHxUCgUWL9+PVJSUhAcHIyxY8eanzdu3DgsX77c/M9KpdIuX8+V+HkqAHAFiIiISGyirwC9/fbbmDNnDlJSUtCzZ08sWbIEnp6eWLZsWZvPHzlyJO666y706NEDsbGxeOqpp9C3b1/s3Lmz1fOUSiVCQ0PNb35+fvb4cq5I1bwCVFnXIHIlRERErk3UANTQ0ID9+/cjOTnZ/JhUKkVycjJ27dp11Y8XBAEZGRnIzs7GiBEjWr1v+/btCA4ORvfu3fHoo4+irKzssq+j0+mg1WpbvdkCe4CIiIgcg6hbYKWlpTAYDAgJCWn1eEhICE6cOHHZj9NoNIiIiIBOp4NMJsP//vc/jB492vz+cePG4e6770aXLl1w6tQpPPfccxg/fjx27doFmUx2yeulpaXh5Zdftt4Xdhnq5i2wqvpGNBqMkMtEX4AjIiJySaL3AF0LHx8fZGVlobq6GhkZGUhNTUVMTAxGjhwJALj//vvNz+3Tpw/69u2L2NhYbN++Hbfccsslrzdv3jykpqaa/1mr1SIyMtLqdfu6t/zr1tTpEeAtfl8SERGRKxI1AAUGBkImk6G4uLjV48XFxQgNDb3sx0mlUsTFxQEAEhIScPz4caSlpZkD0J/FxMQgMDAQOTk5bQYgpVJplyZpuUwKH3c5quobUckAREREJBpR92AUCgUGDhyIjIwM82NGoxEZGRkYOnRou1/HaDRCp9Nd9v35+fkoKytDWFjYddVrDaaj8OwDIiIiEo/oW2CpqamYPn06EhMTMXjwYCxYsAA1NTVISUkBAEybNg0RERFIS0sD0NSvk5iYiNjYWOh0OmzYsAHp6elYvHgxAKC6uhovv/wy7rnnHoSGhuLUqVP4v//7P8TFxbU6Ji8WtYcCeaiDhifBiIiIRCN6AJo8eTJKSkrw4osvoqioCAkJCdi0aZO5MTo3NxdSactCVU1NDebOnYv8/Hx4eHggPj4eq1atwuTJkwEAMpkMhw8fxsqVK1FZWYnw8HCMGTMGr776qkPcBcQVICIiIvFJBEEQxC7C0Wi1WqhUKmg0Gvj6+lr1tR9ffQDrDxfixdt6YuaNXaz62kRERK7Mkp/fPIdtZ+YVII7DICIiEg0DkJ2pPZruAtLUsgeIiIhILAxAdsYVICIiIvExANmZmgNRiYiIRMcAZGfmeWBcASIiIhINA5CdtRyDZw8QERGRWBiA7Iz3ABEREYmPAcjOVM2nwLT1ehiMvIKJiIhIDAxAdqZq7gESBKCqnqtAREREYmAAsjOFXAovhQwAt8GIiIjEwgAkAvNReJ4EIyIiEgUDkAhM22A8CUZERCQOBiARmE6CabgCREREJAoGIBHwKDwREZG4GIBEYDoKzwBEREQkDgYgEfiZB6KyB4iIiEgMDEAiMPcAcQWIiIhIFAxAIlA3b4FV8BQYERGRKBiARKDy5ER4IiIiMTEAiUDtwS0wIiIiMTEAiYA3QRMREYmLAUgELfcANcDIifBERER2xwAkAtMoDKMAVDc0ilwNERGR62EAEoG7mwzubk3/6tkHREREZH8MQCJR8zZoIiIi0TAAiUTN26CJiIhEwwAkElMfEFeAiIiI7I8BSCR+PApPREQkGgYgkbTMA+MWGBERkb0xAInENA6jgltgREREdscAJBKeAiMiIhIPA5BIzFtgPAVGRERkdwxAIlHzFBgREZFoGIBEojLfA8QAREREZG8MQCJhDxAREZF4GIBEcnEPkCBwIjwREZE9MQCJxBSA9AYBtQ0GkashIiJyLQxAIvFwk0Eha/rXzz4gIiIi+2IAEolEImlphOZt0ERERHbFACQi01F4DRuhiYiI7IoBSEQciEpERCQOBiARtWyBMQARERHZk1zsAlyZaQusgj1ARGRF1bpG7D5Vhp05pcivqMO8W+MRG+QtdllEDoUBSEQtdwFxBYiIrp3BKOBwfiV2nCzFzpOlOJBbgUZjy/1iWXmV+HR2ErqH+ohYJZFjYQASkdrUA8QVICKyUG5ZLXbklGDnyVL8mlMKbX1jq/dH+XtieNdAHMitxPFCLaZ8tBurZiWhZ7ivSBUTORYGIBGpOBCViNpJU6fHrlNl2HGyBDtzSnGurLbV+33d5RgWG4jh3QIxPC4IUQGeAJp+wZq6NBNHzmvMIahPJ5UYXwKRQ2EAEpGaA1GJ6DL0BiOy8kzbWiXIyqvERbtakEsl6B+lxvCuQbixayD6Rqggl116rkXtqcCq2UmYviwTWXmVeODj3fhk5mD0j/Kz41dD5HgYgERkGojKe4CISBAEnCmtwY6TpdhxshS7T5ehWtd6WysmyAvD4wIxvGsQhsQGwFvZvr/CVR5uSJ81GDNX7MXesxWYujQTK1IGIbGzvy2+FCKnwAAkopYVIPYAEbmial0jfs4uwY6TJdhxshTnK+tavd/P0w03xAVieNdA3Ng1CBFqj2v+XD7ubliRMhizVu7F7tPlmLYsE8tmDMKQmIDr/TKInBIDkIjYA0TkejS1evx0vBgbjxbil5OlaGg0mt/nJpMgMdofN3YNxIiuQegV7gupVGK1z+2llGP5jMGY88k+7MwpxYzlmVg6fRBuiAu02ucgchYMQCIyrQDpGo2o1xvg7iYTuSIisoWyah22HCvGhqNF+C2ntNUR9S6BXhjVPRjDuwUiqYs/PBW2/WvZQyHDx9MT8ciq/dieXYKZK/big6kDMbJ7sE0/L5GjYQASkbdSDrlUgkajgMpaPUJVDEBEHcUFbT02/16EDUeKsOdMWasG5m4h3hjfOwzj+4Sie4gPJBLrrfK0h7ubDB9MHYjHPj2In44X46FP9mPxXwbglh4hdq2DSEwMQCKSSCRQe7qhtLoBlXUNCFW5i10SEV2H85V12HS0CBuPFGJ/bgWEi0JPr3Bf3NonDON6hzrErcxKuQz/e3AAnvrsIDYeLcIjq/bj/SkDMK53qNilEdkFA5DIVB7NAYh9QERO6VxZDTY2h55D+ZpW70uIVOPWPqEY1yvMfC+PI1HIpXh/Sn/89fND+P5QAR5bfQALJifg9n7hYpdGZHMMQCJrug26hrdBEzmRnAtV2HikCBuOFuF4odb8uEQCDIr2x/g+oRjbKxTh13Fqy17kMinemdQPblIJ1h08j6c+O4hGoxF39e8kdmlENsUAJDI1T4IROTxBEHC8sAqbjhZi49EinLxQbX6fTCrBkBh/jO8dhjG9QhDs43xb2XKZFP+5rx/kMgk+35eP1M8PodEg4L7ESLFLI7IZBiCRqXgbNHVwR89rsOloER4cEoUwleOviFys0WDE4u2n8NWBfJy9aPSEm0yCG+ICcWvvMCT3DIG/l0LEKq1DJpXg33f3hZtMik/35OKZLw9DbxDwQFKU2KUR2QQDkMhMt0FzBYg6GoNRwJKfT+GdLX+g0Shg3YF8fDIrCXHB4jcAt0e93oAn1hzElmPFAAClXIoR3YJwa59Q3BwfYr7HqyORSiX418TecJNJseK3s3ju6yNoNBoxbWhnsUsjsjoGIJGZ7gLS8DZo6kDyymuR+nkW9p6tAAD4KOUo0NRj0ge7sCJlEPp2Uotb4FVU1esx55N92H26HAq5FC/f0Qt39AuHVztHTzgziUSC+bf3hJtMgo92nMGL3/6OhkYjZg+PEbs0Iqu6dHIe2ZV5HAZXgKgDEISmlZ7x7+7A3rMV8FLI8N/7+mH7MyPRJ0KF8poGTPlwN37LKRW71MsqrdZhyke7sft0ObyVcqxIGYQpg6NcIvyYSCQSPHdrDzw2KhYA8K8fjmPx9lMiV0VkXQxAIuM4DOooNLV6PL7mIFI/P4RqXSMGRvth41MjcO/ATgjwVmLNQ0MwLDYANQ0GzFi+F5uOFopd8iXyK2oxackuHD2vRYCXAp89NATDYl1zTIREIsHfx3TH08ldAQBvbDqB9zJOilwVkfUwAIms6Rg8m6DJuf2WU4px7/6CHw4XQiaV4G+ju2HtQ0Na3X3jrZRj2YxBGNsrBA0GI+Z+egBr9+aKWHVrJ4urcO/iXThdWoMItQe+eGQoekeoxC5LVBKJBE8nd8MzY7sDAN7e8gfe+jEbwsU3PDqpC1X1+HxfHq8gcWGus6broEzH4DX8JiQnpGs04K0f/8BHO05DEJrmWr0zOQEJkeo2n+/uJsOiBwbg+a+PYu2+PPzjqyOoqNXjkZti7Vv4nxzMrUDKir2orNUjLtgb6bMGO92JNVt6bFQc3GQSvL7hBN7fmoMGgxHPjou3+wgPayjU1GHJ9lNYszcPDY1GrAjzxeePDIW3C21xUhP+FxeZmsfgyUn9UVyFpz7LMl8EOGVwJF6Y0POqvTJymRT/vqcP1F5u+ODn0/j3xhOoqGnAs+PF+YG642QJHk7fj9oGA/pFqrFixiD4dYBj7db20IhYuMmkePn7Y/jg59PQNwr45209nCYE5ZXX4n/bT+HL/XnQG5pWsORSCY4VavHoqv1YNmMQ3GTcFHElDEAiM22B1TYYoGs0QCnnQFRybIIgYOVvZ5G28QR0jUb4eynw77v7YEyv9s+QkkgkmDe+B/w9FUjbeAIf/HIaFbUNeP2uPpDb8YfQD4cL8fTag9AbBAzvGoglfxnoUs3Olkq5oQvcZFK88M1RLPv1DPQGI16+oxekUscNQWdKa7BoWw6+PngehuaJtEld/PHkLV3h4y7H5A92Y8fJUjy37gjevLev0wQ6un78TheZj1IOqQQwCoCmTo9gHwYgclwXtPX4+5eH8csfJQCAm7oF4T/39b3m248fvikWfp4KPLvuMD7flw9NnR7v3t8f7m62/z74dM85vPDNUQgCMKFPGN6e3I+/gLTDX4ZEQyGT4h/rDiN99zlo6/V4aEQMeob5OlR4OFlchYXbcvD9oQI05x4M7xqIJ27uisFd/M3PW/hAf8z5ZB++2J+PTn6eeKq56Zs6PonQEbrZrEyr1UKlUkGj0cDX19fmn6//Kz+iolaPH/86At1CfGz++Yiuxebfi/DsV4dRUauHUi7Fc7f2wLSh0Vb5obfpaBGeXHMQDQYjhsYE4MNpA+HjbpuLBgVBwP+2n8J/NmcDAB5IisKrd/aGzIFXMRzRugP5+PsXh8zhIsrfE+N7h2J8nzD066QSLQwdK9Bi4baT2Hi0CKafbjfHB+Pxm+MwIMqvzY/5dM85PP/1UQDAf+7tyxEgTsySn98OseG5aNEidO7cGe7u7khKSkJmZuZln7tu3TokJiZCrVbDy8sLCQkJSE9Pv+zzH3nkEUgkEixYsMAGlVuH+SQYj8KTA6rRNeLZrw7j4fT9qKjVo2eYL9Y/cSOmD+tstR9y43qHYsXMQfBWyrHrdBke+GgPyqp1VnntixmNAv71w3Fz+Hl8VBxem8jwcy3uHtAJ6bOSMLZXCJRyKXLLa/HBL6cxcdGvuOHfW/Hy979j79lyGI32+R37cH4lZq/ch1vf24ENR5rCz9heIVj/xI1YNmPQZcMPADyYFI25I5sa8eetO2Je4aSOTfQtsLVr1yI1NRVLlixBUlISFixYgLFjxyI7OxvBwcGXPN/f3x/PP/884uPjoVAosH79eqSkpCA4OBhjx45t9dyvv/4au3fvRnh4uL2+nGvSchcQT4JRa4Ig4MdjxXhz0wmU1zSgX6Qa/SP9kBClRkIntXmWnK0czK3AX9dm4WxZLSQS4KERMUgd3c0mW0XDYgOxZs4QTF+eiSPnNbhvyS6kz05ChJUmqusNRvzjq8NYd+A8AOCFCT14u/F1uiEuEDfEBaK2oRHbs0uw4Ughtp24gAJNPZb/ehbLfz2LIB8lxvYKwa29wzC4i7/Ve7z2nyvHexk5+Lk5tEgkTVuaj98ch/jQ9q/g/31Md5yvrMO3WQWY++kBfP7wUPQMt/0OAIlH9C2wpKQkDBo0CAsXLgQAGI1GREZG4oknnsCzzz7brtcYMGAAJkyYgFdffdX82Pnz55GUlITNmzdjwoQJePrpp/H000+3+fE6nQ46Xctvm1qtFpGRkXbbApuxPBPbs0vw5r19MYlLr9TsdEk1Xvr+2BV/G40J8jIHov6RasSH+ljlB0yjwYhF207hva0nYTAKCFO5461J/exyKeCpkmpMW5qJ85V1CFO5I33WYMQFX9/WcL3egMdXH8BPxy9AJpXgzXv64p6BnaxUMV2sXm/AjpOl2HikEFuOF6OqvtH8Pn8vBUb3CMH4PqEYFhsIhfza/qwKgoDdp8vx/taT+O1UGYCmYa539gvH3FFx1zxvTtdowPRlmdh9uhwhvkp8PfcGhFspgJN9WLIFJuoKUENDA/bv34958+aZH5NKpUhOTsauXbuu+vGCIGDr1q3Izs7GG2+8YX7caDRi6tSpeOaZZ9CrV6+rvk5aWhpefvnla/sirKDlLiBugRFQ29CI97fm4OMdp6E3CFDIpHj4phjcHB+Mw/kaHMytQFZeJc6W1eJ0SQ1Ol9TgqwP5AAB3Nyn6RqjRP0qNhEg1+kf5IVRlWYNyblktnl57EAdyKwEAt/cLx7/u7G3z1SaT2CBvfPHIUExblomcC9W4b8kuLE8ZfNm7ha5GW6/H7BX7kHm2HEq5FIseGIDkniHWLZrM3N1kGN0zBKN7hqCh0YjfTpVi45Ei/HisCOU1DVi7Lw9r9+XB112O5B4hGN8nDMO7Brar8V0QBOw4WYr3t540z5mTSyW4d2AnPDoyFtEBXtdVu1IuwwdTE3Hfkt/wR3E1UpbvxeePDO2Qg29J5ABUWloKg8GAkJDWfxmFhITgxIkTl/04jUaDiIgI6HQ6yGQy/O9//8Po0aPN73/jjTcgl8vx5JNPtquOefPmITU11fzPphUge2m5DZpbYK5MEARsOFKEf/1wDIWaegDAqO5BmH97L3QObPqLvX+UH6YP6wwAKK9pwKG8ShzMrcDBvEpk5VWiqr4RmWfLkXm23Py6ob7urQJRnwgVPBSX/rARBAFf7s/HS9/9jpoGA3yUcrw6sTfuTAi3e0NruNoDXzw8FDNW7MWhvEo88NFufDg1ETd2tWwFqqRKh+nLMnGsUAsfpRwfT09EUkyAjaqmP1PIpRjZPRgjuwfjNUNvZJ4px8ajRdj0exFKqnRYd/A81h08Dy+FDKPig3FrnzCM7B4ET0XrH02CIGDriQt4f2sOsvIqm15bJsXkQZF4ZGSs1bZJgaaWhOUpg3HXol+RXVyFR9L3Y+XMwde8WkWOS/QeoGvh4+ODrKwsVFdXIyMjA6mpqYiJicHIkSOxf/9+vPvuuzhw4EC7/9JWKpVQKpU2rvryOA+Mci5UYf53v+PXnKbl/Eh/D8y/rRdu6RF82T/H/l4KjIoPxqj4pl45o1HA6dJqHMytbApEuZU4UaRFkbYeG48WYePRIgBNWwXxoT7mQJQQqYa/lwIvfHMEG440PWdwZ3+8NakfIv092/zc9uDnpcDq2Ul4OH0/duaUYuaKvVhwfwJu7RPWro/PK6/F1KV7cLasFoHeCqycORi9wl17tIWY5DIphsUFYlhcIF66oxcO5FZg45EibDpaiAJNPdYfLsT6w4Vwd5NiZLdgjO8TipHdg7HrVCne35qD3wuaLtx0d5PigcHRePimGIT4Xtv1C1cTofbA8pRBmLRkF3adLsM/vjqMtyf1c6hj/nT9RO0BamhogKenJ7788ktMnDjR/Pj06dNRWVmJb7/9tl2vM3v2bOTl5WHz5s1YsGABUlNTIZW2pHWDwQCpVIrIyEicPXv2qq9n72Pwy389g5e/P4YJfcOw6IEBNv985DiqdY14L+Mklu08g0ajAKVcikdHxuKRm2KtchdObUMjjuRrzIHoYF4FirWXnq6SSABBaNpO+OvobnjkpliHORmlazTgr2uzsOFIESQS4PW7+mDK4Kgrfkx2URWmLduDYq0Onfw8kD4rCV0Cr297hGxDEAQcytdg49FCbDxShNzy2jaf56mQYerQaMy+MQZBPvb5hfXnP0owc8VeGIwCHh8Vh783z0Qjx+U0PUAKhQIDBw5ERkaGOQAZjUZkZGTg8ccfb/frGI1GcxPz1KlTkZyc3Or9Y8eOxdSpU5GSkmK12q3JNA6DPUCuQxAEfHeoAK9vOG4OJMk9QjD/9p5WXXXxVMiRFBPQatunUFOHg7lNW2YHcytwOF8DXaMRMUFeeHdyf/Tp5FirJEq5DO9PGQCVx1GsyczFvHVHUFHbgEdvim3zN/L95yowc8VeaOr06BbijfRZSTZbKaDrJ5FIkBDZtEX77Lh4HCvUYtPRImw4UohTJTXwUcox44bOmHlDF7uPKLmpWxDS7uqD//vqMBZuy0G42gMPJF05fJPzEH0LLDU1FdOnT0diYiIGDx6MBQsWoKamxhxWpk2bhoiICKSlpQFoalhOTExEbGwsdDodNmzYgPT0dCxevBgAEBAQgICA1nv8bm5uCA0NRffujpne1R7sAXIl2UVVePHbo9hzpqlPp3OAJ+bf3su8lWVrYSoPhPXxMG8l6Q1GnK+oQ4Sfh8POQpJJJXj9rt7w93LDom2n8OambFTUNOC5W1vPovr5jxI8kr4fdXoD+kepsXzGIHOPHTk+iUSCXuEq9ApX4W9juqOgsg4qDzdRx5NMGhSJ/Mo6vJdxEv/89ijCVO52+14l2xI9AE2ePBklJSV48cUXUVRUhISEBGzatMncGJ2bm9tqO6umpgZz585Ffn4+PDw8EB8fj1WrVmHy5MlifQnXzXS6hj1AHZu2Xo8FW05i5a6zMBgFuLtJ8fioOMweHmOX0Q+X4yaTmpusHZlEIsEzY+Ph56nAv344jo92nEFFrR7/vrtpfth3hwrwt8+zoDcIuKlbEBb/ZcAlzbTkXBzlCPpfk7uioLIOX+7Px2OrD2DtQ0MdbqWULCf6PUCOyN49QGdKazDqv9vho5TjyMtjr/4B5FQEQcDXB8/j9Q0nUNp8u/G4XqF44bYe6OQnXpOxM/tyfz7+8dVhGIwCknuEYFhsAF794RgEoenY/lv39eOpHbIqvcGImSv2YsfJUgR6K/H13GGiHhKgtjndKAxXZ7oHqErXCL3BKHI1ZE2/FzTdaJz6+SGUVusQE+iFT2YOxpKpAxl+rsO9AzthyV8GQiGX4qfjxXhlfVP4mTokGgsmJzD8kNW5yaT434MDEB/qg9JqHWYsz+Tt/U6Of0s4AN+LLtnS1HEbrCPQ1Orx4rdHcfv7O7HvXAU8FTL8Y1w8Nj09AiO6BYldXocwumcIPpk5GD7N/SFP3tIVr9zZy2FOr1HH4+PuhhUpgxGmcsepkho89Ml+1OsNYpdF14gb5A5AJpXA110ObX0jKmv1CPQW704iuj5GY9Nlgm9sOoGymqbfDif0DcMLE3ogTOUY/QwdyZCYAGz+6wgUauoxMPrywy6JrCVU5Y7lKYNw3+JdyDxbjr9/cQjv3d8fUgZvp8MA5CDUngpo6xuh4Ukwp3UkX4N/fnvUfFNtXLA3Xr6jF26Is/38LFcWrvZwmGZZcg3xob74YOpATF+eifWHCxGh9sC8W3uIXRZZiFtgDkLNk2BObcnPp3DHop3IyquEl0KG52/tgY1PDWf4IeqghsUF4s17+wIAPvjlND7ZdVbcgshiXAFyEByH4bzyymvx1o/ZEATgzoRwPHdrD168R+QC7urfCecr6vDfH//AS9/9jlBfd4zpFWrTz6mt1+NwngaH8isR4uuOewd2sunn68gYgBxEy0BUBiBn8/7Wk9AbBNwYF4h37+8vdjlEZEePjYrD+co6rMnMw5OfHcSaOUPQP8o6/WgGo4A/iquab26vwMHcSuSUVOPiy2uq6vVIuaGLVT6fq2EAchCmo/AaHqt0KmdKa/DVgfMAgNQx3USuhojsTSKR4NU7e6NIU49t2SWYvXIf1s0dhugAyy8XvaCtb5rbd9GYmtqGS0+ZRfp7INLPE7+dKsMr648hTOWBcb1tu/LUETEAOQhzDxBXgJzKuz/9AYNRwKjuQRhgpd/6iMi5yGVSLHxgACZ/uAtHz2sxY/lefPXoMPhfYXZZvd6A3ws0OJhbaR5WfL6y7pLneSvl6BepQkKkGv0j/ZAQpUagtxKCIOCFb47i0z25eOqzg1g9ZwhPQlqIAchBsAfI+ZwsrsK3hwoAAKmjHXPOHBHZh5dSjmUzBuGuRb/hTGkNZq/ci9VzhsDdTQZBEHCurBYH8yqQ1Rx4jhdqoTe0HsQglQDdQnzQP6ppOGz/KD/EBnm3ebeVRCLBy3f0QpGmHhknLmD2yr1YN/cGdHGCsTaOggHIQbAHyPks+OkkBAEY0zOEc4GICME+7lg5cxDuWbwLB3IrMW1ZJrwUMmTlVaKijV9uA72VF4UdNfp2UsPbgsGvcpkU7z/QH/d/uBuH8zWYsTwT6x4dhgDeJdcuDEAOws+TPUDO5FiBFj8cKQQA/HU0e3+IqElcsA8+nDoQU5dmIvNMuflxhVyK3uG+6B/lZw48EWoPSCTXd4Gip0KOpdMH4e7Fv+JcWS1mrdyHNXOGwEMh3oBlZ8EA5CBMPUBt/ZZAjuedn/4A0HTLc48w2w/MJSLnkRQTgA+nDcTGI0XoEeaD/lF+6BHma7MZdUE+SqxIGYx7Fv+GrLxKPPnZQSz5y0COhbkKXoToIFQezVtgXAFyeIfzK7HlWDGkEuCvyV3FLoeIHNDI7sF4496+mHFDF/SLVNt8QG9skDc+mpYIhVyKLceK8cr3v0MQhKt/oAtjAHIQphUgbX0jDEb+oXVkb29pWv25MyECccE+IldDRNRkUGd/vDMpARIJsHLXOXy844zYJTk0BiAHobpoIryWjdAOa/+5CmzPLoFMKsFTt3D1h4gcy4S+YXi+eS7ZaxuOY/3hApErclwMQA7CTSY1d//zJJjjentLNgDg3gGd0JnHTYnIAc26sQtmDOsMAEhde6hVMza1YAByIC13AbEPyBHtPl2GX3PK4CaT4Ilb4sQuh4ioTRKJBP+8rSfG9gpBg8GIOZ/sQ86FKrHLcjgMQA6Et0E7LkEQ8PaPTb0/kwdFopOfp8gVERFdnkwqwbv390f/KDU0dXrMWL4XF6rqxS7LoTAAORC1+S4gBiBHszOnFJlny6GQS/H4KPb+EJHjc3eT4eNpiegc4In8ijrMWrEPNbpGsctyGAxADkTNo/AOSRAEvNW8+vNgUhRCVe4iV0RE1D4B3k13BPl7KXDkvAaPrz6ARoNR7LIcAgOQA1FxC8whbcu+gKy8Sri7SfHoyFixyyEiskjnQC98PD0R7m5SbMsuwT+/5R1BAAOQQ1FzIKrDuXj1Z/rQzgj24eoPETmfAVF+ePf+/pBIgDWZufjf9lNilyQ6BiAH4tc8EFXDFSCHsfn3IvxeoIWXQoaHb+LqDxE5r7G9QvHS7b0AAP/ZnI1vDp4XuSJxMQA5EJV5Hhh7gByB0SjgnS0nAQApN3SBv5dC5IqIiK7P9GGdMWd4FwDAM18ewm85pSJXJB4GIAfCLTDHsv5IIbKLq+DjLsec4TFil0NEZBXzxvfAhL5h0BsEPLxqP7KLXPOOIAYgB6LmFpjDaDQYsaB54vvsG2PMq3NERM5OKpXgrfv6YXBnf1TVNyJleSaKta53RxADkAMxX4TILTDRfZtVgNMlNVB7umHmjZ3FLoeIyKrc3WT4cNpAxAR5oUBTjxnL96Kq3rV++WYAciCmLTBNnR5GToQXjd5gxLsZTb0/D4+IhY87V3+IqONReyqwMmUwAr2VOF6oxdxPD0DvQncEMQA5EN/mAGQUgCre1imar/bnI7e8FoHeCkwfFi12OURENhPp74llMxLh4SbDjpOleG7dEZe5I4gByIG4u8ng4SYDwHEYYtE1GvD+1hwAwCM3xcJTIRe5IiIi2+rbSY1FD/aHVAJ8sT/fvALe0TEAOZiWgajsAxLD53vzcL6yDiG+SvxlCFd/iMg13Bwfglcn9gYALPjpJD7flydyRbbHAORgVDwKL5p6vQELtzWt/jw2Kg7uzatxRESu4MGkaMxtHvfz3Loj2HikUOSKbIsByMGoOQ9MNJ/uyUWxVodwlTsmD4oUuxwiIrt7Zmx3TEwIR6NRwKOfHsBfPt6Do+c1YpdlEwxADsY0EV7Do/B2VdvQiMXbm1Z/nrilK5Ryrv4QkeuRSCR4895+mH1jF7jJJNiZU4rb3t+Jpz47iLzyWrHLsyoGIAfTchcQV4Ds6ZNd51Ba3YAof0/cO7CT2OUQEYlGIZfihdt6YuvfRuLOhHAATXej3fzWdrz8/e8or+kYv6AzADkY023Q3AKzn2pdIz74uWky8pO3dIWbjN8WRESR/p549/7+WP/EjbgxLhB6g4Dlv57FTW9uw6JtOahrMIhd4nXh3/QORs2BqHa3fOcZVNTqERPohYnNv+0QEVGT3hEqrJqdhPRZg9EzzBdVukb8Z3M2Rv53Gz7LzEWjk16eyADkYMy3QXMLzC40tXp8uOM0AOCp5K6Qc/WHiKhNw7sGYf0TN2LB5AR08vNAsVaHZ9cdwbh3d2DLsWKnu0CRf9s7GJ4Cs6+Pd55GVX0juoV44/a+XP0hIroSqVSCif0jkPG3m/DChB5Qe7oh50I15nyyD5M+2IX95yrELrHdGIAcjKr5FBgHotpeeU0Dlu08AwBIHd0NUqlE5IqIiJyDUi7D7OEx+PmZUZg7MhZKuRR7z1bgnsW/4ZH0/ThVUi12iVfFAORgTCtAGq4A2dwHv5xCTYMBvcJ9MbZXqNjlEBE5HZWHG/5vXDx+fmYUJidGQioBNv1ehDHv/ILnvj6CC9p6sUu8LAYgB3PxMXhn2091JiVVOnzy2zkATas/EglXf4iIrlWoyh1v3NsXm54egeQewTAYBazek4ub/rMdb/+YjWoHHPDNAORgTBchNhoF1Dj5EUNHtnj7KdTpDUiIVOPm+GCxyyEi6hC6hfjg4+mD8PnDQ9E/So06vQHvbc3BTW9uw8rfzqKh0XFOjDEAORh3NykU8qb/LOwDso0iTT1W7eHqDxGRrQzu4o91jw7Dkr8MQEygF8pqGjD/u98x+p2fsf5wgUPscDAAORiJRGI+Cs/boG1j0bYcNDQaMaizH4Z3DRS7HCKiDkkikWBc7zBs/usI/GtibwR6K3GurBaPrz6IiYt+xa5TZaLWxwDkgFyxEVoQBPzyRwl2nCxBoabOZr8d5FfU4rO9uQCA1NHdufpDRGRjbjIp/jIkGj8/MxJ/Te4GL4UMh/I1+DbrvKh1yUX97NQmtfkovGsEIEEQ8PqG4/hoxxnzY95KOeKCvdE12Lvpf0O80TXYBxFqj+s6rr5waw70BgHDYgMwNDbAGuUTEVE7eCnleCq5Kx4cEoVF23LwyE2xotbDAOSAWi5D7Pg9QIIg4OXvj2HFb2cBAF0CvZBbXotqXSOy8iqRlVfZ6vnublLEBrUEo7hgH3QN8Ua0v+dVb3E+V1aDL/bnAwD+NqabLb4cIiK6ikBvJebf3kvsMhiAHJGrTIQ3GgW88O1RrN6TC4kESLurD+4fHIWGRiPOltUg50I1ThZX4+SFKuRcqMbpkhrU6434vUCL3wu0rV7LTSZBl0AvdA32QWzzylHXEG90CfSCUi4DALybcRIGo4CbugVhYLS/GF8yERE5CIsDUOfOnTFz5kzMmDEDUVFRtqjJ5ZknwnfgU2AGo4BnvzqML/bnQyIB/nNvP9w7sBMAQCGXoluID7qF+AB9Wj6m0WBEXkVdUzC6UIWc4mrklFQj50I1ahsM+KO4Gn8Ut759VCoBogO8EBvkha0nLgBoOvlFRESuzeIA9PTTT2PFihV45ZVXMGrUKMyaNQt33XUXlEqlLepzSaoOfgqs0WDEM18extcHz0MqAd6ZnIA7EyKu+nFymRRdAr3QJdALo3uGmB83GgUUaJqCkWnVKKekGieLq6Ctb8SZ0hqcKa0BACT3CEG/SLWtvjQiInISEuEaj9scOHAAK1aswJo1a2AwGPDAAw9g5syZGDBggLVrtDutVguVSgWNRgNfX1+7f/5P95zD818fxeieIfhoWqLdP78t6Q1GpH5+CN8fKoBcKsG79/fHhL5hNvlcgiCgpErXvGJUjZIqHaYNjUawr7tNPh8REYnLkp/f13wMfsCAAXjvvfdQUFCA+fPn4+OPP8agQYOQkJCAZcuWOcQlR87KdApM08FWgBoajXhyzUF8f6gAbjIJFj04wGbhB2i6gyLY1x3D4gIxfVhn/H1sd4YfIiICcB1N0Hq9Hl9//TWWL1+OLVu2YMiQIZg1axby8/Px3HPP4aeffsLq1autWavL6IinwHSNBjz26QH8dPwCFDIplkwdgJvjQ67+gURERDZgcQA6cOAAli9fjjVr1kAqlWLatGl45513EB8fb37OXXfdhUGDBlm1UFfS0XqA6vUGPJy+Hz//UQKlXIoPpyXipm5BYpdFREQuzOIANGjQIIwePRqLFy/GxIkT4ebmdslzunTpgvvvv98qBbqilhWgponwznxbcV2DAXM+2YedOaXwcJNh6fREDIvj+AkiIhKXxQHo9OnTiI6OvuJzvLy8sHz58msuytWZjsE3NBpRrzfCQyETuaJrU6NrxKyVe7H7dDm8FDIsTxmMwV14/w4REYnP4iboCxcuYM+ePZc8vmfPHuzbt88qRbk6L4UM8uZxD87aB1RVr8f0ZZnYfbocPko5PpnF8ENERI7D4gD02GOPIS8v75LHz58/j8cee8wqRbk6iUTi1LdBa+r0mLo0E/vOVcDXXY702Um8eZmIiByKxQHo2LFjbd71079/fxw7dswqRdHFt0E7VwCqrG3AXz7eg6y8Sqg93bB6zhAk8OJBIiJyMBYHIKVSieLi4kseLywshFzO0WLWojafBHOeLbDymgZM+WgPjpzXIMBLgTVzhqB3hErssoiIiC5hcQAaM2YM5s2bB41GY36ssrISzz33HEaPHm3V4lzZxSfBnEFJlQ5TPtyN44VaBHor8dlDQ9AjzP63aBMREbWHxUs2//3vfzFixAhER0ejf//+AICsrCyEhIQgPT3d6gW6KpWH82yBFWvr8cBHu3GqpAYhvkqsnjMEsUHeYpdFRER0WRYHoIiICBw+fBiffvopDh06BA8PD6SkpGDKlClt3glE18ZZboMuqKzDAx/txtmyWoSr3LF6zhB0DvQSuywiIqIruqamHS8vLzz00EPWroUuYuoBcuR5YHnltXjg493IK69DJz8PrJkzBJH+nmKXRUREdFXXPAz12LFj2LRpE7777rtWb9di0aJF6Ny5M9zd3ZGUlITMzMzLPnfdunVITEyEWq2Gl5cXEhISLtl6e+mllxAfHw8vLy/4+fkhOTm5zbuLHJmjH4PPLavF/R82hZ/oAE+sfXgoww8RETmNa7oJ+q677sKRI0cgkUjMU99N4xoMBoNFr7d27VqkpqZiyZIlSEpKwoIFCzB27FhkZ2cjODj4kuf7+/vj+eefR3x8PBQKBdavX4+UlBQEBwdj7NixAIBu3bph4cKFiImJQV1dHd555x2MGTMGOTk5CApyjhlUKtMxeAfcAjtTWoMpH+5GkbYeMUFeWD17CEJVnLJORETOQyKYEkw73X777ZDJZPj444/RpUsXZGZmoqysDH/729/w3//+F8OHD7eogKSkJAwaNAgLFy4EABiNRkRGRuKJJ57As88+267XGDBgACZMmIBXX321zfdrtVqoVCr89NNPuOWWW676eqbnazQa+PqKc5Lplz9KMG1ZJuJDfbDp6RGi1NCWnAtVmPLRHpRU6dA12BufzklCsA/DDxERic+Sn98Wb4Ht2rULr7zyCgIDAyGVSiGVSnHjjTciLS0NTz75pEWv1dDQgP379yM5ObmlIKkUycnJ2LVr11U/XhAEZGRkIDs7GyNGtB0SGhoa8OGHH0KlUqFfv35tPken00Gr1bZ6E5tpC0zjQMfgTxRpMfmD3Sip0iE+1AefPTSE4YeIiJySxQHIYDDAx8cHABAYGIiCggIAQHR0NLKzsy16rdLSUhgMBoSEhLR6PCQkBEVFRZf9OI1GA29vbygUCkyYMAHvv//+JXcQrV+/Ht7e3nB3d8c777yDLVu2IDCw7SnkaWlpUKlU5rfIyEiLvg5bUDvYMXijUcDslftQVtOAXuG+WDNnCAK8lWKXRUREdE0sDkC9e/fGoUOHADRtX7355pv49ddf8corryAmJsbqBbbFx8cHWVlZ2Lt3L1577TWkpqZi+/btrZ4zatQoZGVl4bfffsO4ceMwadIkXLhwoc3XM13saHpra9aZvamaV4Dq9AbU6y3rq7KFC1U65FfUQS6VYPXsIfDzUohdEhER0TWzuAn6hRdeQE1NDQDglVdewW233Ybhw4cjICAAa9eutei1AgMDIZPJLhmtUVxcjNDQ0Mt+nFQqRVxcHAAgISEBx48fR1paGkaOHGl+jpeXF+Li4hAXF4chQ4aga9euWLp0KebNm3fJ6ymVSiiVjrWa4aOUQyoBjAKgrdPD3U0maj3nypr+m0f4eZjDGRERkbOyeAVo7NixuPvuuwEAcXFxOHHiBEpLS3HhwgXcfPPNFr2WQqHAwIEDkZGRYX7MaDQiIyMDQ4cObffrGI1G6HS6636OI5FKJeaBqBUOsA12rrwWABDFo+5ERNQBWLQCpNfr4eHhgaysLPTu3dv8uL+//zUXkJqaiunTpyMxMRGDBw/GggULUFNTg5SUFADAtGnTEBERgbS0NABN/TqJiYmIjY2FTqfDhg0bkJ6ejsWLFwMAampq8Nprr+GOO+5AWFgYSktLsWjRIpw/fx733XffNdcpBrWHG8prGhxiIGpuGQMQERF1HBYFIDc3N0RFRVl818+VTJ48GSUlJXjxxRdRVFSEhIQEbNq0ydwYnZubC6m0ZaGqpqYGc+fORX5+Pjw8PBAfH49Vq1Zh8uTJAACZTIYTJ05g5cqVKC0tRUBAAAYNGoQdO3agV69eVqvbHlQONBA1t3kFKDqAAYiIiJyfxfcALV26FOvWrUN6evp1rfw4Mke4BwgAUpZnYlt2Cd68py8mDRL3ZNqdi37FobxKLPnLAIzrHSZqLURERG2x5Oe3xU3QCxcuRE5ODsLDwxEdHQ0vr9aDLw8cOGDpS9JlqB3oNujc5iboKH8OOiUiIudncQCaOHGiDcqgtqg8HGMemLZeb27EjuIWGBERdQAWB6D58+fbog5qg9pBeoBMDdABXgp4Ky3+I0NERORwrnkaPNmeunkFSCPyCpCpAZqrP0RE1FFY/Ou8VCo1T35vizVPiLk6R+kBMp8A4xF4IiLqICwOQF9//XWrf9br9Th48CBWrlyJl19+2WqF0UXH4EVeATpnugMogA3QRETUMVgcgO68885LHrv33nvRq1cvrF27FrNmzbJKYdSyBSZ2AMotN50A4woQERF1DFbrARoyZEirkRZ0/UxbYBqRm6BNK0C8BJGIiDoKqwSguro6vPfee4iIiLDGy1Ezv+YtsGpdIxoajaLUoDcYUVBZB4A9QERE1HFYvAXm5+fXqglaEARUVVXB09MTq1atsmpxrs7H3Q0SCSAITatAQT72n1h/vqIORgFwd5OK8vmJiIhsweIA9M4777QKQFKpFEFBQUhKSoKfn59Vi3N1MqkEvu5u0NTpoalrECWAXDwF/kqn/4iIiJyJxQFoxowZNiiDLkft2RSAxGqENt8BxBEYRETUgVjcA7R8+XJ88cUXlzz+xRdfYOXKlVYpilqIfRKsZQYY+3+IiKjjsDgApaWlITAw8JLHg4OD8frrr1ulKGqhMl+GKE4A4gkwIiLqiCwOQLm5uejSpcslj0dHRyM3N9cqRVGLlhUgcW6D5hgMIiLqiCwOQMHBwTh8+PAljx86dAgBAQFWKYpamAaiinEXkCAIHINBREQdksUBaMqUKXjyySexbds2GAwGGAwGbN26FU899RTuv/9+W9To0sTsASqtbkBtgwESCRDh52H3z09ERGQrFp8Ce/XVV3H27FnccsstkMubPtxoNGLatGnsAbIBMXuATCMwwlUeUMpldv/8REREtmJxAFIoFFi7di3+9a9/ISsrCx4eHujTpw+io6NtUZ/LE7MHKPeiO4CIiIg6EosDkEnXrl3RtWtXa9ZCbRCzB8g8BZ4BiIiIOhiLe4DuuecevPHGG5c8/uabb+K+++6zSlHUwjQQtUKMFaAyngAjIqKOyeIA9Msvv+DWW2+95PHx48fjl19+sUpR1MK0AiRGE7T5BBgDEBERdTAWB6Dq6mooFIpLHndzc4NWq7VKUdTC1ANUVd+IRoN9J8KfYw8QERF1UBYHoD59+mDt2rWXPP7ZZ5+hZ8+eVimKWqiaAxAAaOsb7fZ5axsaUVKlAwBEcw4YERF1MBY3Qf/zn//E3XffjVOnTuHmm28GAGRkZGD16tX48ssvrV6gq5PLpPBRylGla0RlbQP8vS5dfbOFvPI6AE0BTOXpdpVnExEROReLA9Dtt9+Ob775Bq+//jq+/PJLeHh4oF+/fti6dSv8/f1tUaPLU3m6NQUgO54EO9c8BJX9P0RE1BFZvAUGABMmTMCvv/6KmpoanD59GpMmTcLf//539OvXz9r1ES46Cm/HRmhTA3Qk+3+IiKgDuqYABDSdBps+fTrCw8Px1ltv4eabb8bu3butWRs1U3uYboO231F48xR4BiAiIuqALNoCKyoqwooVK7B06VJotVpMmjQJOp0O33zzDRugbUglwlF4HoEnIqKOrN0rQLfffju6d++Ow4cPY8GCBSgoKMD7779vy9qomRgDUbkFRkREHVm7V4A2btyIJ598Eo8++ihHYNiZvcdhGIwC8itMK0A8Ak9ERB1Pu1eAdu7ciaqqKgwcOBBJSUlYuHAhSktLbVkbNTP3ANlpHEahpg56gwCFTIpQX3e7fE4iIiJ7ancAGjJkCD766CMUFhbi4YcfxmeffYbw8HAYjUZs2bIFVVVVtqzTpZl6gCrstAVmmgHWyc8DMqnELp+TiIjIniw+Bebl5YWZM2di586dOHLkCP72t7/h3//+N4KDg3HHHXfYokaX5+dpOgVmnwBkHoHBBmgiIuqgrvkYPAB0794db775JvLz87FmzRpr1UR/0nIPkH22wMwnwNgATUREHdR1BSATmUyGiRMn4rvvvrPGy9GfmE+B2WkFyLQFFsUGaCIi6qCsEoDItlQXnQIzGgWbf75z5U1jMDgFnoiIOioGICdgmggvCECVHSbCm1aAeAkiERF1VAxATkApl8FTIQNg+3EYlbUN0DaHrEg/BiAiIuqYGICchL1ugzbNAAv2UcKjOXQRERF1NAxATkJlp6Pw5zgDjIiIXAADkJNoWQGy7RZYnukOIH+eACMioo6LAchJ2Gse2LkyngAjIqKOjwHISZgCkL16gLgFRkREHRkDkJNQmQei2jYA5XEMBhERuQAGICfh52n7HiBdowGF2noAHINBREQdGwOQkzBvgdmwByivvA6CAHgpZPD3Utjs8xAREYmNAchJtGyB2W4FqGX7ywsSicRmn4eIiEhsDEBOwh4rQKYTYNz+IiKijo4ByEmYj8HbsAn6HBugiYjIRTAAOQm1R8tN0IJgm4nwpiGovAOIiIg6OgYgJ2FaATIYBVTrbDMRPpdjMIiIyEUwADkJdzcZlPKm/1y2uAvIaBTMAYgrQERE1NExADkRW47DuFClg67RCJlUgnC1h9Vfn4iIyJEwADkRtQ1vgzat/kSoPeAm4x8LIiLq2PiTzomozEfhrX8XkPkIPPt/iIjIBTAAORG1h+0GoppWgCLZ/0NERC6AAciJqG04D8x8AowBiIiIXAADkBPx87RdD9C5Mh6BJyIi18EA5ERUNhyHwS0wIiJyJQxATsRWp8Cq6vUor2naVosO8LLqaxMRETkiBiAn0nIPkHV7gEyrPwFeCngr5VZ9bSIiIkfEAOREbHUKzDQDjNtfRETkKhiAnIiteoDOcQYYERG5GAYgJ6JuPgWmqbXuRHgegSciIlfDAORETFtgDQYj6vQGq72uaQssig3QRETkIhwiAC1atAidO3eGu7s7kpKSkJmZednnrlu3DomJiVCr1fDy8kJCQgLS09PN79fr9fjHP/6BPn36wMvLC+Hh4Zg2bRoKCgrs8aXYlKdCBjeZBIB1+4DOlTeNweAUeCIichWiB6C1a9ciNTUV8+fPx4EDB9CvXz+MHTsWFy5caPP5/v7+eP7557Fr1y4cPnwYKSkpSElJwebNmwEAtbW1OHDgAP75z3/iwIEDWLduHbKzs3HHHXfY88uyCYlEApWVj8LrDUYUVNYDYA8QERG5DolgzWaSa5CUlIRBgwZh4cKFAACj0YjIyEg88cQTePbZZ9v1GgMGDMCECRPw6quvtvn+vXv3YvDgwTh37hyioqKu+nparRYqlQoajQa+vr7t/2LsIPntn5FzoRqr5yRhWGzgdb/eubIa3PSf7VDKpTjx6jhIJBIrVElERGR/lvz8FnUFqKGhAfv370dycrL5MalUiuTkZOzateuqHy8IAjIyMpCdnY0RI0Zc9nkajQYSiQRqtbrN9+t0Omi12lZvjsraR+FNIzCi/D0ZfoiIyGWIGoBKS0thMBgQEhLS6vGQkBAUFRVd9uM0Gg28vb2hUCgwYcIEvP/++xg9enSbz62vr8c//vEPTJky5bJpMC0tDSqVyvwWGRl57V+UjamtPA+MR+CJiMgVid4DdC18fHyQlZWFvXv34rXXXkNqaiq2b99+yfP0ej0mTZoEQRCwePHiy77evHnzoNFozG95eXk2rP76mCfCW+k26Lxy0woQT4AREZHrEHXuQWBgIGQyGYqLi1s9XlxcjNDQ0Mt+nFQqRVxcHAAgISEBx48fR1paGkaOHGl+jin8nDt3Dlu3br3iXqBSqYRSqby+L8ZOTFtgGqttgZlOgHlY5fWIiIicgagrQAqFAgMHDkRGRob5MaPRiIyMDAwdOrTdr2M0GqHT6cz/bAo/J0+exE8//YSAgACr1i0m8wqQlXuAOASViIhcieiTL1NTUzF9+nQkJiZi8ODBWLBgAWpqapCSkgIAmDZtGiIiIpCWlgagqV8nMTERsbGx0Ol02LBhA9LT081bXHq9Hvfeey8OHDiA9evXw2AwmPuJ/P39oVAoxPlCrURl6gGywhaYIAgtW2DsASIiIhciegCaPHkySkpK8OKLL6KoqAgJCQnYtGmTuTE6NzcXUmnLQlVNTQ3mzp2L/Px8eHh4ID4+HqtWrcLkyZMBAOfPn8d3330HoGl77GLbtm1rtU3mjKx5CqyspgE1DQZIJEAnP26BERGR6xD9HiBH5Mj3AO04WYKpSzMRH+qDTU9f/uh/e+w/V4F7Fv+GcJU7fpt3i5UqJCIiEofT3ANEllNb8SZobn8REZGrYgByMtY8Bm9ugOYReCIicjEMQE5G1RyA6vVG1F/nRHjzEFSuABERkYthAHIyPko5ZNKmkRWauuvbBmu5BJEBiIiIXAsDkJNpmgjftApUUXt922AtdwAxABERkWthAHJC1rgMsa7BgAtVTZdHcgWIiIhcDQOQE7LGXUC5zdtfvu5y84BVIiIiV8EA5IRMgUVzHSfBcss5AoOIiFwXA5ATssYKkHkIKvt/iIjIBTEAOSGV+S6g698CY/8PERG5IgYgJ2SN26DNW2AMQERE5IIYgJyQ6RTYdfUAlXEMBhERuS4GICd0vcfgDUYBeRXcAiMiItfFAOSEVNfZBF2krYfeIMBNJkGYysOapRERETkFBiAn1HIM/toCkOkEWKSfp3msBhERkSthAHJCLcfgr60HyNT/E8ntLyIiclEMQE7I1ANU02BAQ6PR4o8/V84ZYERE5NoYgJyQj7sbJM07V5XXcBKMdwAREZGrYwByQjJpy0R4zTU0QueWcQwGERG5NgYgJ2XuA7qGRmjzGAyuABERkYtiAHJSKs9ruw1aU6uHtr4RAAMQERG5LgYgJ3WtJ8HOlTet/gT7KOGhkFm9LiIiImfAAOSkWsZhWLYCdK6MDdBEREQMQE5KfY23QZtPgPEIPBERuTAGICdl7gGy8Bi8+QSYP0+AERGR62IAclLXugJk6gGKCuAMMCIicl0MQE7qWnuAcs09QFwBIiIi18UA5KRMAciSFSBdowGF2noAHINBRESujQHISak8mnqAKiw4Bp9fUQdBALwUMgR4KWxVGhERkcNjAHJS5i0wC1aALp4CLzENEyMiInJBDEBOyq/5FFiVrhF6Q/smwudyCjwREREABiCn5esuN/9/bTsboc9xCCoREREABiCnJZdJ4dMcgto7EDW3+Qh8JG+BJiIiF8cA5MQsPQlm3gJjACIiIhfHAOTE1M0nwTTtuA1aEAT2ABERETVjAHJilqwAXajSoV5vhEwqQbiat0ATEZFrYwByYioLxmGYGqDD1e5wk/E/OxERuTb+JHRi5hWgdjRBt/T/8AQYERERA5ATM/cAteM26Nwy0xBU9v8QERExADkxS1aAzpWbhqAyABERETEAOTFTD1BFO3qAeASeiIioBQOQE1N7WrIF1rwCxC0wIiIiBiBn5tfOLbBqXSPKappCErfAiIiIGICcWnvvATKt/vh7KeDj7mbzuoiIiBwdA5ATUzWfAtPW62EwCpd9nmkGGFd/iIiImjAAOTFTE7QgAFX1l18FMl2CyABERETUhAHIiSnkUngpZACuvA3GGWBEREStMQA5OdNJsCs1QufyDiAiIqJWGICcXMs8sMsfhTdtgUUHcAwGERERwADk9EwnwTSXWQHSG4w4X1kHgCtAREREJgxATu5qR+ELK+thMApQyqUI9lHaszQiIiKHxQDk5ExH4S8XgM5ddAReKpXYrS4iIiJHxgDk5FoGorbdA8Qj8ERERJdiAHJyao8rb4HllXMGGBER0Z8xADm5lh6gK68AcQo8ERFRCwYgJ3e1e4DOcQWIiIjoEgxATs60BaZpYwtMEISWLTB/3gFERERkwgDk5K60AlRe04BqXSMkEiDS38PepRERETksBiAnd3EPkPFPE+FN219hvu5QymV2r42IiMhRMQA5OdMoDKMAVDc0tnpfbnMDdCQboImIiFphAHJy7m4yuLs1/Wf8cx8Qp8ATERG1jQGoA1Bf5jZoDkElIiJqGwNQB3C526Bzm8dgcAuMiIioNQagDkB1mdugzVtgDEBEREStMAB1AC0rQC0BqF5vQLFWB4A9QERERH/GANQBmHuAalq2wEyrPz7ucvMKERERETURPQAtWrQInTt3hru7O5KSkpCZmXnZ565btw6JiYlQq9Xw8vJCQkIC0tPTL3nOmDFjEBAQAIlEgqysLBt/BeJrawUot6zlBJhEIhGlLiIiIkclagBau3YtUlNTMX/+fBw4cAD9+vXD2LFjceHChTaf7+/vj+effx67du3C4cOHkZKSgpSUFGzevNn8nJqaGtx4441444037PVliM58G/RFPUDnzP0/PAFGRET0Z3IxP/nbb7+NOXPmICUlBQCwZMkS/PDDD1i2bBmeffbZS54/cuTIVv/81FNPYeXKldi5cyfGjh0LAJg6dSoA4OzZszat3ZGYVoA0F50Cyy1rOgHGIahERESXEm0FqKGhAfv370dycnJLMVIpkpOTsWvXrqt+vCAIyMjIQHZ2NkaMGHFdteh0Omi12lZvzkTdxikw8xR4ngAjIiK6hGgBqLS0FAaDASEhIa0eDwkJQVFR0WU/TqPRwNvbGwqFAhMmTMD777+P0aNHX1ctaWlpUKlU5rfIyMjrej17U7XVA8Qj8ERERJclehO0pXx8fJCVlYW9e/fitddeQ2pqKrZv335drzlv3jxoNBrzW15ennWKtZM/3wRtMArIL68DwC0wIiKitojWAxQYGAiZTIbi4uJWjxcXFyM0NPSyHyeVShEXFwcASEhIwPHjx5GWlnZJf5AllEollErlNX+82C7uARIEAUXaejQYjHCTSRCm8hC5OiIiIscj2gqQQqHAwIEDkZGRYX7MaDQiIyMDQ4cObffrGI1G6HQ6W5ToNEwBSG8QUNtgMB+B7+TnCZmUR+CJiIj+TNRTYKmpqZg+fToSExMxePBgLFiwADU1NeZTYdOmTUNERATS0tIANPXqJCYmIjY2FjqdDhs2bEB6ejoWL15sfs3y8nLk5uaioKAAAJCdnQ0ACA0NveLKkjPzcJNBIZOiwWBEZZ3ePAOMDdBERERtEzUATZ48GSUlJXjxxRdRVFSEhIQEbNq0ydwYnZubC6m0ZZGqpqYGc+fORX5+Pjw8PBAfH49Vq1Zh8uTJ5ud899135gAFAPfffz8AYP78+XjppZfs84XZmUQigcrTDSVVOlTWNpinwDMAERERtU0iCIIgdhGORqvVQqVSQaPRwNfXV+xy2mX02z/j5IVqrJ6dhNWZuVh/uBAvTOiB2cNjxC6NiIjILiz5+e10p8CobaY+oIpavfkIPFeAiIiI2sYA1EGoTEfh61q2wKIDOAaDiIioLQxAHYRf8wpQblktNM0XIkb68wg8ERFRWxiAOgjTFtjhfA0AIMhHCU+FqD3uREREDosBqIMwTYQ/er4pAHEEBhER0eUxAHUQquaBqFW6RgBsgCYiIroSBqAOwrQFZsIZYERERJfHANRBmAaimkQzABEREV0WA1AHcckKELfAiIiILosBqIMw9QCZRPnzDiAiIqLLYQDqIC5eAfJUyBDorbjCs4mIiFwbA1AH4a2UQyaVAGja/pJIJCJXRERE5LgYgDoIiUQCdfM2GPt/iIiIrowBqANRNW+D8QQYERHRlTEAdSDmFSAOQSUiIroiDovqQO7oF46ymgaM7BYkdilEREQOTSIIgiB2EY5Gq9VCpVJBo9HA19dX7HKIiIioHSz5+c0tMCIiInI5DEBERETkchiAiIiIyOUwABEREZHLYQAiIiIil8MARERERC6HAYiIiIhcDgMQERERuRwGICIiInI5DEBERETkchiAiIiIyOUwABEREZHLYQAiIiIil8MARERERC5HLnYBjkgQBACAVqsVuRIiIiJqL9PPbdPP8SthAGpDVVUVACAyMlLkSoiIiMhSVVVVUKlUV3yORGhPTHIxRqMRBQUF8PHxgUQisepra7VaREZGIi8vD76+vlZ9bVtz5toB566ftYvHmet35toB567fmWsHnLd+QRBQVVWF8PBwSKVX7vLhClAbpFIpOnXqZNPP4evr61R/qC7mzLUDzl0/axePM9fvzLUDzl2/M9cOOGf9V1v5MWETNBEREbkcBiAiIiJyOQxAdqZUKjF//nwolUqxS7GYM9cOOHf9rF08zly/M9cOOHf9zlw74Pz1tweboImIiMjlcAWIiIiIXA4DEBEREbkcBiAiIiJyOQxARERE5HIYgOzkl19+we23347w8HBIJBJ88803YpfUbosXL0bfvn3NF2INHToUGzduFLusdnnppZcgkUhavcXHx4tdVrt17tz5kvolEgkee+wxsUtrl6qqKjz99NOIjo6Gh4cHhg0bhr1794pdVpuu9j26bt06jBkzBgEBAZBIJMjKyhKlzrZcrfaXXnoJ8fHx8PLygp+fH5KTk7Fnzx5xim3D1eqfMWPGJd8D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", + "image/png": "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qVMnsUNpsVWrVsHHxwcTJkwQO5Q2cXZ2RqdOnXDlyhVs3rwZd955p9ghESz36zgzMxOXL1+2qK9hQF8FjoqKspi+r7qUSiW8vb1x6tQp/P3331bxNcwlNjNRWlpa77edc+fOITU1FR4eHujSpYuIkTVvwYIFGD9+PLp06YKSkhJ888032LFjBzZv3ix2aC3y7LPP4o477kBQUBCysrKwaNEiyGQyPPjgg2KH1iI6nQ6rVq3CtGnTIJdb1pf05s2bIQgCevTogdOnT+O5555DeHg44uLixA7tGs19jRYWFiIjIwNZWVkAgPT0dACAn58f/Pz8RIm5ruvF7+npiTfeeAMTJ05Ep06dUFBQgOXLl+PSpUtmMTLierF7eHjglVdewb333gs/Pz+cOXMG//73vxEWFoaxY8eKGHWtlnx/Ly4uxvfff493331XrDAb1Vzs33//Pby9vdGlSxccPXoUc+fOxV133YUxY8aIGLWJiL2NjvS2b98uALjmMW3aNLFDa9ajjz4qBAUFCQqFQvD29hZGjRol/Pnnn2KH1WKTJk0SOnXqJCgUCiEgIECYNGmScPr0abHDarHNmzcLAIT09HSxQ2m19evXCyEhIYJCoRD8/PyEp556SigqKhI7rEY19zW6atWqRj++aNEiUeM2uF78V69eFe6++27B399fUCgUQqdOnYSJEycKBw4cEDtsQRCuH3t5ebkwZswYwdvbW7CzsxOCgoKEGTNmCDk5OWKHbdSS7++ffPKJ4OjoaHb//puL/YMPPhA6d+4s2NnZCV26dBH+85//CBqNRtygTUQiCFbQSUVERERkQuxBIiIiImqACRIRERFRA0yQiIiIiBpggkRERETUABMkIiIiogaYIBERERE1wASJiIiIqAEmSEREREQNMEEiIqoxYsQIPPPMM2KHQURmgAkSERERUQNMkIiIiIgaYIJERNSE3377DUqlEl9//bXYoRBRB5OLHQARkTn65ptvMHPmTHzzzTe4/fbbxQ6HiDoYK0hERA0sX74cs2bNwq+//srkiMhGsYJERFTHDz/8gLy8POzZswcDBgwQOxwiEgkrSEREdfTr1w/e3t744osvIAiC2OEQkUiYIBER1REaGort27fj559/xpw5c8QOh4hEwiU2IqIGunfvju3bt2PEiBGQy+VYsmSJ2CERUQdjgkRE1IgePXpg27ZtGDFiBGQyGd59912xQyKiDiQRuMhOREREVA97kIiIiIgaYIJERERE1AATJCIiIqIGmCARERERNcAEiYiIiKgBJkhEREREDTBBIiIiImqACRIRERFRA0yQiIiIiBpggkRERETUABMkIiIiogb+H9zqzxnfZnCYAAAAAElFTkSuQmCC", "text/plain": [ "<Figure size 640x480 with 1 Axes>" ] @@ -229,12 +278,353 @@ "plt.show()\n" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Artificial Neural Network" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Mathematical Formulation\n", + "\n", + "#### 1\n", + "\n", + "We have that $\\sigma(x) = \\frac{1}{1+e^{-x}}$. We can calculate the derivative of $\\sigma$ as follows:\n", + "\n", + "$$\n", + "\\begin{align}\n", + " \\sigma'(x) &= \\frac{d}{dx} \\frac{1}{1+e^{-x}} \\\\\n", + " &= \\frac{d}{dx} (1+e^{-x})^{-1} \\\\\n", + " &= -(1+e^{-x})^{-2} (-e^{-x}) \\\\\n", + " &= \\frac{e^{-x}}{(1+e^{-x})^{2}} \\\\\n", + " &= \\frac{1}{1+e^{-x}} \\frac{e^{-x}}{1+e^{-x}} \\\\\n", + " &= \\frac{1}{1+e^{-x}} \\frac{1+e^{-x}-1}{1+e^{-x}} \\\\\n", + " &= \\frac{1}{1+e^{-x}} \\left( 1 - \\frac{1}{1+e^{-x}} \\right) \\\\\n", + " &= \\sigma(x) (1 - \\sigma(x))\n", + "\\end{align}\n", + "$$\n", + "\n", + "Therefore we find that $\\sigma'(x) = \\sigma(x) (1 - \\sigma(x))$.\n", + "\n", + "#### 2\n", + "\n", + "We use mean squared error as our loss function. We have that\n", + "\n", + "$$\n", + " C = \\frac{1}{N_{out}} \\Sigma_{i=1}^{N_{out}} (\\hat{y}_i - y_i)^2\n", + "$$\n", + "\n", + "where $N_{out}$ is the number of output neurons, $\\hat{y}_i$ is the predicted value of the $i$-th output neuron and $y_i$ is the true value of the $i$-th output neuron (in our case, $y_i = a^{(2)}_i$). We have that\n", + "\n", + "We can express $\\frac{dC}{dA^{(2)}}$ as follows:\n", + "\n", + "$$\n", + "\\begin{align}\n", + " \\frac{dC}{da^{(2)}_i} &= \\frac{d}{da^{(2)}_i} \\left( \\frac{1}{N_{out}} \\Sigma_{i=1}^{N_{out}} (a^{(2)}_i - y_i)^2 \\right) \\\\\n", + " &= \\frac{d}{da^{(2)}_i} \\left( \\frac{1}{N_{out}} ((a^{(2)}_1 - y_1)^2 + ... + (a^{(2)}_i - y_i)^2 + ... + (a^{(2)}_{N_{out}} - y_{N_{out}})^2) \\right) \\\\\n", + " &= \\frac{1}{N_{out}} 2(a^{(2)}_i - y_i)\n", + "\\end{align}\n", + "$$\n", + "\n", + "And in vector form\n", + "\n", + "$$\n", + " \\frac{dC}{dA^{(2)}} = \\frac{1}{N_{out}} 2(A^{(2)} - Y)\n", + "$$\n", + "\n", + "#### 3\n", + "\n", + "$$\n", + "\\begin{align}\n", + " \\frac{dC}{dZ^{(2)}} &= \\frac{dC}{dA^{(2)}} \\frac{dA^{(2)}}{dZ^{(2)}} \\\\\n", + " &= \\frac{dC}{dA^{(2)}} \\frac{dA^{(2)}}{dZ^{(2)}} \\\\\n", + " &= \\frac{dC}{dA^{(2)}} \\frac{d}{dZ^{(2)}} \\sigma(Z^{(2)}) \\\\ \n", + " &= \\frac{dC}{dA^{(2)}} \\sigma'(Z^{(2)}) \\\\\n", + " &= \\frac{dC}{dA^{(2)}} \\sigma(Z^{(2)}) (1 - \\sigma(Z^{(2)})) \\\\\n", + " &= \\frac{dC}{dA^{(2)}} A^{(2)} (1 - A^{(2)})\n", + "\\end{align}\n", + "$$\n", + "\n", + "#### 4\n", + "\n", + "$$\n", + "\\begin{align}\n", + " \\frac{dC}{dW^{(2)}} &= \\frac{dC}{dZ^{(2)}} \\frac{dZ^{(2)}}{dW^{(2)}} \\\\\n", + " &= \\frac{dC}{dZ^{(2)}} \\frac{d}{dW^{(2)}} \\left( W^{(2)} A^{(1)} + B^{(2)} \\right) \\\\\n", + " &= \\frac{dC}{dZ^{(2)}} A^{(1)}\n", + "\\end{align}\n", + "$$\n", + "\n", + "#### 5\n", + "\n", + "$$\n", + "\\begin{align}\n", + " \\frac{dC}{dB^{(2)}} &= \\frac{dC}{dZ^{(2)}} \\frac{dZ^{(2)}}{dB^{(2)}} \\\\\n", + " &= \\frac{dC}{dZ^{(2)}} \\frac{d}{dB^{(2)}} \\left( W^{(2)} A^{(1)} + B^{(2)} \\right) \\\\\n", + " &= \\frac{dC}{dZ^{(2)}} 1 \\\\\n", + " &= \\frac{dC}{dZ^{(2)}}\n", + "\\end{align}\n", + "$$\n", + "\n", + "#### 6\n", + "\n", + "$$\n", + "\\begin{align}\n", + " \\frac{dC}{dA^{(1)}} &= \\frac{dC}{dZ^{(2)}} \\frac{dZ^{(2)}}{dA^{(1)}} \\\\\n", + " &= \\frac{dC}{dZ^{(2)}} \\frac{d}{dA^{(1)}} \\left( W^{(2)} A^{(1)} + B^{(2)} \\right) \\\\\n", + " &= \\frac{dC}{dZ^{(2)}} W^{(2)}\n", + "\\end{align}\n", + "$$\n", + "\n", + "#### 7\n", + "\n", + "$$\n", + "\\begin{align}\n", + " \\frac{dC}{dZ^{(1)}} &= \\frac{dC}{dA^{(1)}} \\frac{dA^{(1)}}{dZ^{(1)}} \\\\\n", + " &= \\frac{dC}{dA^{(1)}} A^{(1)} (1 - A^{(1)})\n", + "\\end{align}\n", + "$$\n", + "\n", + "#### 8\n", + "\n", + "$$\n", + "\\begin{align}\n", + " \\frac{dC}{dW^{(1)}} &= \\frac{dC}{dZ^{(1)}} \\frac{dZ^{(1)}}{dW^{(1)}} \\\\\n", + " &= \\frac{dC}{dZ^{(1)}} A^{(0)}\n", + "\\end{align}\n", + "$$\n", + "\n", + "#### 9\n", + "\n", + "$$\n", + "\\begin{align}\n", + " \\frac{dC}{dB^{(1)}} &= \\frac{dC}{dZ^{(1)}} \\frac{dZ^{(1)}}{dB^{(1)}} \\\\\n", + " &= \\frac{dC}{dZ^{(1)}}\n", + "\\end{align}\n", + "$$\n" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [], + "source": [ + "import mlp\n", + "reload(mlp)\n", + "from mlp import (\n", + " learn_once_mse,\n", + " one_hot,\n", + " learn_once_cross_entropy,\n", + " run_mlp_training\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Learning pass example" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [], + "source": [ + "N = 30 # number of input data\n", + "d_in = 3 # input dimension\n", + "d_h = 3 # number of neurons in the hidden layer\n", + "d_out = 2 # output dimension (number of neurons of the output layer)\n", + "\n", + "# Random initialization of the network weights and biaises\n", + "w1 = 2 * np.random.rand(d_in, d_h) - 1 # first layer weights\n", + "b1 = np.zeros((1, d_h)) # first layer biaises\n", + "w2 = 2 * np.random.rand(d_h, d_out) - 1 # second layer weights\n", + "b2 = np.zeros((1, d_out)) # second layer biaises\n", + "\n", + "random_data = np.random.rand(N, d_in) # create a random data\n", + "random_targets = np.random.rand(N, d_out) # create a random targets" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Loss: 0.10367831888711801\n" + ] + } + ], + "source": [ + "updated_w1, updated_b1, updated_w2, updated_b2, loss = learn_once_mse(\n", + " w1,\n", + " b1,\n", + " w2,\n", + " b2,\n", + " random_data,\n", + " random_targets,\n", + " 0.1,\n", + ")\n", + "\n", + "print(\"Loss:\", loss)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### One-hot encoding" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0., 1., 0.],\n", + " [0., 0., 1.],\n", + " [1., 0., 0.]])" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "one_hot(np.array([1, 2, 0]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Cross entropy pass example" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [], + "source": [ + "N = 30 # number of input data\n", + "d_in = 3 # input dimension\n", + "d_h = 3 # number of neurons in the hidden layer\n", + "d_out = 5 # output dimension (number of neurons of the output layer)\n", + "\n", + "# Random initialization of the network weights and biaises\n", + "w1 = 2 * np.random.rand(d_in, d_h) - 1 # first layer weights\n", + "b1 = np.zeros((1, d_h)) # first layer biaises\n", + "w2 = 2 * np.random.rand(d_h, d_out) - 1 # second layer weights\n", + "b2 = np.zeros((1, d_out)) # second layer biaises\n", + "\n", + "random_data = np.random.rand(N, d_in) # create a random data\n", + "random_targets = np.random.randint(1, d_out, N) # create a random targets" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Loss: 0.6940785845571713\n" + ] + } + ], + "source": [ + "cross_w1, cross_b1, cross_w2, cross_b2, cross_loss = learn_once_cross_entropy(\n", + " w1,\n", + " b1,\n", + " w2,\n", + " b2,\n", + " random_data,\n", + " random_targets,\n", + " 0.1,\n", + ")\n", + "\n", + "print(\"Loss:\", cross_loss)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### split = 0.9, d_h = 64, learning_rate 0.1, 100 epochs" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [], + "source": [ + "d_h = 64\n", + "learning_rate = 0.1\n", + "num_epoch = 100" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/tracert6/Documents/ECL-S9-DeepLearning/TP/TP1/mlp.py:210: RuntimeWarning: overflow encountered in exp\n", + " z1 = np.matmul(a0, w1) + b1 # input of the hidden layer\n" + ] + } + ], + "source": [ + "training_accuracy_values, test_accuracy = run_mlp_training(\n", + " train_data_09,\n", + " train_labels_09,\n", + " test_data_09,\n", + " test_labels_09,\n", + " d_h,\n", + " learning_rate,\n", + " num_epoch\n", + ")\n", + "\n", + "for (i, training_accuracy) in enumerate(training_accuracy_values):\n", + " print(f\"Epoch {i}: {training_accuracy}\")\n", + "\n", + "print(f\"Test accuracy: {test_accuracy}\")" + ] + }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "# Plot the training accuracy values\n", + "plt.plot(range(num_epoch + 1), training_accuracy_values)\n", + "plt.xlabel(\"Epoch\")\n", + "plt.ylabel(\"Training Accuracy\")\n", + "plt.savefig('./results/mlp.png')\n", + "plt.show()\n" + ] } ], "metadata": {