From d9e049e9646a29015486b11c7d8d1612e92bb919 Mon Sep 17 00:00:00 2001 From: johnwhitegm Date: Mon, 4 May 2026 20:28:40 -0400 Subject: [PATCH 01/11] Created using Colab --- building-a-brain/BuildingABrain.ipynb | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/building-a-brain/BuildingABrain.ipynb b/building-a-brain/BuildingABrain.ipynb index 2af0b0c..ab04a23 100644 --- a/building-a-brain/BuildingABrain.ipynb +++ b/building-a-brain/BuildingABrain.ipynb @@ -4,8 +4,7 @@ "metadata": { "colab": { "name": "BuildingABrain.ipynb", - "provenance": [], - "collapsed_sections": [] + "provenance": [] }, "kernelspec": { "name": "python3", @@ -36,7 +35,7 @@ "source": [ "# Building a Brain in 10 Minutes\n", "\n", - "Many decades ago, artificial neural networks were developed to mimic the learning capabilities of humans and animals. Below is an excerpt from [The Machine that Changed the World](https://www.youtube.com/watch?v=enWWlx7-t0k&t=166s), a 1992 documentary about Artificial Intelligence." + "Many decades ago, artificial neural networks were developed to mimic the learning capabilities of humans and animals. Below is an excerpt from [The Machine that Changed the World](https://www.youtube.com/watch?v=enWWlx7-t0k&t=166s), a 1992 documentary about Artificial Intelligence. Test" ] }, { @@ -566,4 +565,4 @@ ] } ] -} +} \ No newline at end of file From 78e28e7ddb3d3550e58e3e3b92582cd0bb64084a Mon Sep 17 00:00:00 2001 From: johnwhitegm Date: Mon, 4 May 2026 20:55:59 -0400 Subject: [PATCH 02/11] Created using Colab --- building-a-brain/BuildingABrain.ipynb | 686 ++++++++++++++++++++++++-- 1 file changed, 632 insertions(+), 54 deletions(-) diff --git a/building-a-brain/BuildingABrain.ipynb b/building-a-brain/BuildingABrain.ipynb index ab04a23..1ec2eae 100644 --- a/building-a-brain/BuildingABrain.ipynb +++ b/building-a-brain/BuildingABrain.ipynb @@ -35,20 +35,51 @@ "source": [ "# Building a Brain in 10 Minutes\n", "\n", - "Many decades ago, artificial neural networks were developed to mimic the learning capabilities of humans and animals. Below is an excerpt from [The Machine that Changed the World](https://www.youtube.com/watch?v=enWWlx7-t0k&t=166s), a 1992 documentary about Artificial Intelligence. Test" + "Many decades ago, artificial neural networks were developed to mimic the learning capabilities of humans and animals. Below is an excerpt from [The Machine that Changed the World](https://www.youtube.com/watch?v=enWWlx7-t0k&t=166s), a 1992 documentary about Artificial Intelligence." ] }, { "cell_type": "code", "metadata": { - "id": "Jj9625DV7oKS" + "id": "Jj9625DV7oKS", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 336 + }, + "outputId": "385cfabb-dbbd-43c0-ca60-39b705fb3ff2" }, "source": [ - "from IPython.display import YouTubeVideo\n", - "YouTubeVideo('cNxadbrN_aI')" + "from IPython.display import HTML\n", + "\n", + "HTML(\"\"\"\n", + "\n", + "\"\"\")" ], - "execution_count": null, - "outputs": [] + "execution_count": 16, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ], + "text/html": [ + "\n", + "\n" + ] + }, + "metadata": {}, + "execution_count": 16 + } + ] }, { "cell_type": "markdown", @@ -64,15 +95,30 @@ { "cell_type": "code", "metadata": { - "id": "boTcxf3jUGum" + "id": "boTcxf3jUGum", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "d119a6a7-7841-40db-ae7f-895e4d7398cf" }, "source": [ "import tensorflow as tf\n", "\n", "tf.config.list_physical_devices('GPU')" ], - "execution_count": null, - "outputs": [] + "execution_count": 17, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]" + ] + }, + "metadata": {}, + "execution_count": 17 + } + ] }, { "cell_type": "markdown", @@ -98,14 +144,33 @@ { "cell_type": "code", "metadata": { - "id": "ijLiERH_n6q_" + "id": "ijLiERH_n6q_", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "0b47c992-29f7-4541-c61c-f233bd88ae86" }, "source": [ "fashion_mnist = tf.keras.datasets.fashion_mnist\n", "(train_images, train_labels), (valid_images, valid_labels) = fashion_mnist.load_data()" ], - "execution_count": null, - "outputs": [] + "execution_count": 18, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-labels-idx1-ubyte.gz\n", + "\u001b[1m29515/29515\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 0us/step\n", + "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-images-idx3-ubyte.gz\n", + "\u001b[1m26421880/26421880\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 0us/step\n", + "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-labels-idx1-ubyte.gz\n", + "\u001b[1m5148/5148\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 0us/step\n", + "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-images-idx3-ubyte.gz\n", + "\u001b[1m4422102/4422102\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 0us/step\n" + ] + } + ] }, { "cell_type": "markdown", @@ -121,7 +186,12 @@ { "cell_type": "code", "metadata": { - "id": "sogb0Tt1xfni" + "id": "sogb0Tt1xfni", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 430 + }, + "outputId": "828cee7e-54f1-4c88-ee95-110a6e01b56e" }, "source": [ "import matplotlib.pyplot as plt\n", @@ -135,8 +205,19 @@ "plt.grid(False)\n", "plt.show()" ], - "execution_count": null, - "outputs": [] + "execution_count": 19, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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\n" + }, + "metadata": {} + } + ] }, { "cell_type": "markdown", @@ -165,13 +246,28 @@ { "cell_type": "code", "metadata": { - "id": "CQdadtT11iI8" + "id": "CQdadtT11iI8", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "398a0772-8357-4406-830f-e51d89eca2cc" }, "source": [ "train_labels[data_idx]" ], - "execution_count": null, - "outputs": [] + "execution_count": 20, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "np.uint8(9)" + ] + }, + "metadata": {}, + "execution_count": 20 + } + ] }, { "cell_type": "markdown", @@ -187,7 +283,12 @@ { "cell_type": "code", "metadata": { - "id": "ZNrxxfNk3it1" + "id": "ZNrxxfNk3it1", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 430 + }, + "outputId": "3d41b1e3-50b7-4373-e589-f6dcffa4eea9" }, "source": [ "import matplotlib.pyplot as plt\n", @@ -201,19 +302,45 @@ "plt.grid(False)\n", "plt.show()" ], - "execution_count": null, - "outputs": [] + "execution_count": 21, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAfAAAAGdCAYAAADtxiFiAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAALwRJREFUeJzt3X1wVGWa/vGrE0h4S3cMIelEEiaAghhAJ0LIgIiSJQSXEchWieIMWBSsbGIJrC/LroKy7qZkXHWkEHanFHRWHIfdAQtqh60YJAxlQMViGVwmAyncxA0dBCfdEMwL5Pz+4EevLW85ne50Hs73U3WqSPe5+zx97OTyfk53Py7LsiwBAACjxMV6AAAAwD4CHAAAAxHgAAAYiAAHAMBABDgAAAYiwAEAMBABDgCAgQhwAAAM1CvWA/i+jo4ONTQ0KCkpSS6XK9bDAQDYZFmWzpw5o8zMTMXFRa9PbGlpUVtbW5cfJyEhQX369InAiLpXjwvwhoYGZWVlxXoYAIAuqq+v1+DBg6Py2C0tLcrJyZHP5+vyY3m9Xh0/fty4EO9xAZ6UlBTrIQAAIiCaf8/b2trk8/lUV1cnt9sd9uMEAgFlZ2erra2NAL9k3bp1+tnPfiafz6exY8dq7dq1Gj9+/HXrmDYHgBtDd/w9d7vdXQpwk0Xl4sT777+v5cuXa9WqVfr88881duxYFRUV6eTJk9E4HADAoSzL6vJmR3l5ucaNG6ekpCSlpaVp1qxZqqmpCdlnypQpcrlcIdtjjz0Wsk9dXZ3uv/9+9evXT2lpaXrqqad0/vx5W2OJSoC/8sorWrRokR599FGNGjVKGzZsUL9+/fTWW29F43AAAIfq7gCvqqpSaWmp9u3bp4qKCrW3t2vatGlqbm4O2W/RokU6ceJEcFuzZk3wvgsXLuj+++9XW1ubPv74Y7399tvatGmTVq5cafvJR1Rra6sVHx9vbd26NeT2n/70p9aPf/zjy/ZvaWmx/H5/cKuvr7cksbGxsbEZvvn9/khHTJDf77ckWadPn7ba29vD3k6fPt2lsZ48edKSZFVVVQVvu+eee6wnnnjiqjX/8R//YcXFxVk+ny942/r16y232221trZ2+tgR78BPnTqlCxcuKD09PeT29PT0K75bsLy8XB6PJ7jxDnQAQHcLBAIhW2tra6fq/H6/JCklJSXk9nfffVepqanKzc3VihUrdO7cueB91dXVGj16dEhOFhUVKRAI6Isvvuj0mGP+RS4rVqyQ3+8PbvX19bEeEgDAEFaEptCzsrJCmsny8vLrHrujo0NLly7VxIkTlZubG7z94Ycf1r/+67/qo48+0ooVK/TLX/5SjzzySPB+n893xSb30n2dFfF3oaempio+Pl6NjY0htzc2Nsrr9V62f2JiohITEyM9DACAA1hhXMf+fr108TPr3303e2dyqbS0VIcPH9bevXtDbl+8eHHw36NHj1ZGRoamTp2q2tpaDRs2LOyxfl/EO/CEhATl5eWpsrIyeFtHR4cqKytVUFAQ6cMBANBllz6Odmm7XoCXlZVpx44d+uijj677ZTX5+fmSpGPHjkm6+MUxV2pyL93XWVGZQl++fLl+8Ytf6O2339aRI0e0ZMkSNTc369FHH43G4QAADhWpKXQ7xysrK9PWrVu1a9cu5eTkXLfm4MGDkqSMjAxJUkFBgX7/+9+HfLS6oqJCbrdbo0aNsjWYqFi7dq2VnZ1tJSQkWOPHj7f27dvXqbpL7yxkY2NjYzN76453oTc2Nlrffvtt2FtjY6OtsS5ZssTyeDzW7t27rRMnTgS3c+fOWZZlWceOHbNWr15tffbZZ9bx48etDz74wBo6dKg1efLk4GOcP3/eys3NtaZNm2YdPHjQ2rlzpzVo0CBrxYoVts5B1AI8XAQ4Gxsb242x3YgBfrXnunHjRsuyLKuurs6aPHmylZKSYiUmJlrDhw+3nnrqqcse/8svv7SKi4utvn37WqmpqdZf//VfW+3t7bbOgev/D6jHCAQC8ng8sR4GAKCL/H5/1L7m9FJW+Hy+Ln8XutfrjepYo6XHLWYCAEBnWRF6F7qJYv45cAAAYB8dOADAWE7uwAlwAICxCHAAAAzk5ADnGjgAAAaiAwcAGMvJHTgBDgAwlpMDnCl0AAAMRAcOADCWkztwAhwAYCwnBzhT6AAAGIgOHABgLCd34AQ4AMBoJodwVzCFDgCAgejAAQDGYgodAAADEeAAABjIyQHONXAAAAxEBw4AMJaTO3ACHABgLCcHOFPoAAAYiA4cAGAsJ3fgBDgAwFhODnCm0AEAMBAdOADAWE7uwAlwAICxnBzgTKEDAGAgOnAAgLGc3IET4AAAYxHgAAAYyMkBzjVwAAAMRAcOADCWkztwAhwAYCwnBzhT6AAAGIgOHABgLCd34AQ4AMBYTg5wptABADAQHTgAwFhO7sAJcACA0UwO4a5gCh0AAAPRgQMAjMUUOgAABiLAAQAwkJMDnGvgAAAYiA4cAGAsJ3fgBDgAwFhODnCm0AEAMBAdOADAWE7uwAlwAICxnBzgTKEDAGAgOnAAgLGc3IET4AAAYzk5wJlCBwDAQBEP8Oeff14ulytkGzlyZKQPAwBAsAPvymaqqEyh33777frwww//7yC9mKkHAESek6fQo5KsvXr1ktfrjcZDAwAQ5OQAj8o18KNHjyozM1NDhw7VvHnzVFdXd9V9W1tbFQgEQjYAAHBtEQ/w/Px8bdq0STt37tT69et1/Phx3X333Tpz5swV9y8vL5fH4wluWVlZkR4SAOAG5eRr4C4ryqNvamrSkCFD9Morr2jhwoWX3d/a2qrW1tbgz4FAgBAHgBuA3++X2+2OymMHAgF5PB7t3r1bAwYMCPtxzp49qylTpkR1rNES9XeXJScn69Zbb9WxY8eueH9iYqISExOjPQwAAG4oUf8c+NmzZ1VbW6uMjIxoHwoA4DDdPYVeXl6ucePGKSkpSWlpaZo1a5ZqampC9mlpaVFpaakGDhyoAQMGqKSkRI2NjSH71NXV6f7771e/fv2Ulpamp556SufPn7c1logH+JNPPqmqqip9+eWX+vjjjzV79mzFx8froYceivShAAAO190BXlVVpdLSUu3bt08VFRVqb2/XtGnT1NzcHNxn2bJl2r59u7Zs2aKqqio1NDRozpw5wfsvXLig+++/X21tbfr444/19ttva9OmTVq5cqWtsUT8GvjcuXO1Z88enT59WoMGDdKkSZP0D//wDxo2bFin6i9d1wAAmK07roHv2rWry9fA77vvvrDH+vXXXystLU1VVVWaPHmy/H6/Bg0apM2bN+sv/uIvJEl/+MMfdNttt6m6uloTJkzQb3/7W/35n/+5GhoalJ6eLknasGGDnnnmGX399ddKSEjo1LEjfg38V7/6VaQfEgCAK4rU58C//xHmzr4/y+/3S5JSUlIkSQcOHFB7e7sKCwuD+4wcOVLZ2dnBAK+urtbo0aOD4S1JRUVFWrJkib744gvdeeednRo734UOADBaJKbPs7KyQj7SXF5eft3jdnR0aOnSpZo4caJyc3MlST6fTwkJCUpOTg7ZNz09XT6fL7jPd8P70v2X7ussvuMUAOB49fX1IVPonem+S0tLdfjwYe3duzeaQ7sqAhwAYKxITaG73W5b18DLysq0Y8cO7dmzR4MHDw7e7vV61dbWpqamppAuvLGxMfgV416vV5988knI4116l7qdryFnCh0AYKzufhe6ZVkqKyvT1q1btWvXLuXk5ITcn5eXp969e6uysjJ4W01Njerq6lRQUCBJKigo0O9//3udPHkyuE9FRYXcbrdGjRrV6bHQgQMAjNXdi5mUlpZq8+bN+uCDD5SUlBS8Zu3xeNS3b195PB4tXLhQy5cvV0pKitxutx5//HEVFBRowoQJkqRp06Zp1KhR+slPfqI1a9bI5/Pp2WefVWlpqa0vNiPAAQDopPXr10uSpkyZEnL7xo0btWDBAknSq6++qri4OJWUlKi1tVVFRUV64403gvvGx8drx44dWrJkiQoKCtS/f3/Nnz9fq1evtjWWqH8Xul18DhwAbgzd8Tnw//zP/1T//v3Dfpzm5mYVFRXxXegAAHQn1gMHAABGoQMHABjLyR04AQ4AMJaTA5wpdAAADEQHDtzAfvGLX4RV990vmOisv/u7vwvrWHa5XC7bNd3ZZcXHx9uuuXDhQhRG4gxO7sAJcACAsZwc4EyhAwBgIDpwAICxnNyBE+AAAGMR4AAAGMjJAc41cAAADEQHDgAwlpM7cAIcAGAsJwc4U+gAABiIDhwAYCwnd+AEOADAWE4OcKbQAQAwEB04AMBYTu7ACXB0q969e9uuaW9vj8JIIqcnr46VmpoaVt2sWbNs17z11lu2a2pra23XxMXZnzgMd7WvcF6v4RwrnBXMOjo6bNdIZgfW1dyIz6kzmEIHAMBAdOAAAGMxhQ4AgIEIcAAADOTkAOcaOAAABqIDBwAYy8kdOAEOADCWkwOcKXQAAAxEBw4AMJaTO3ACHABgLCcHOFPoAAAYiA4cAGAsJ3fgBDi6VTgLk/TkxUK681g/+clPbNfk5uaGdSy/32+7JtwFQ3rqcaSev5BOOHr675NdTg5wptABADAQHTgAwFhO7sAJcACAsQhwAAAM5OQA5xo4AAAGogMHABjLyR04AQ4AMJaTA5wpdAAADEQHDgAwlpM7cAIcAGAsJwc4U+gAABiIDhwAYCwnd+AEOHq8cBZfCKdGkjo6OsKqs2vt2rW2a4qKimzX7N2713aNJE2cONF2zfnz58M6ll1xcfYnDsP97zp79mzbNStWrLBd8/7779uu+ad/+ifbNVJ4gWX396m7FxNyaoAzhQ4AgIHowAEARjO5i+4K2x34nj17NHPmTGVmZsrlcmnbtm0h91uWpZUrVyojI0N9+/ZVYWGhjh49GqnxAgAQdGkKvSubqWwHeHNzs8aOHat169Zd8f41a9bo9ddf14YNG7R//371799fRUVFamlp6fJgAQD4LicHuO0p9OLiYhUXF1/xPsuy9Nprr+nZZ5/VAw88IEl65513lJ6erm3btmnu3LldGy0AAJAU4TexHT9+XD6fT4WFhcHbPB6P8vPzVV1dfcWa1tZWBQKBkA0AgM5wcgce0QD3+XySpPT09JDb09PTg/d9X3l5uTweT3DLysqK5JAAADcwAjyGVqxYIb/fH9zq6+tjPSQAAHq8iH6MzOv1SpIaGxuVkZERvL2xsVF33HHHFWsSExOVmJgYyWEAAByCL3KJkJycHHm9XlVWVgZvCwQC2r9/vwoKCiJ5KAAAHD2FbrsDP3v2rI4dOxb8+fjx4zp48KBSUlKUnZ2tpUuX6sUXX9Qtt9yinJwcPffcc8rMzNSsWbMiOW4AABzNdoB/9tlnuvfee4M/L1++XJI0f/58bdq0SU8//bSam5u1ePFiNTU1adKkSdq5c6f69OkTuVEDACBnT6HbDvApU6Zc8wm7XC6tXr1aq1ev7tLA0PN116IS3bXASLhee+012zWLFi2yXfPLX/7Sds3nn39uu0a6+PFPu8JZACWcRTy68/WwYcMG2zWpqam2a/r372+75mpfpnU9N9qXahHgAAAYyMkBHvOPkQEAAPvowAEAxqIDBwDAQLH4GNn1VuVcsGCBXC5XyDZ9+vSQfb755hvNmzdPbrdbycnJWrhwoc6ePWtrHAQ4AAA2XG9VTkmaPn26Tpw4Edzee++9kPvnzZunL774QhUVFdqxY4f27NmjxYsX2xoHU+gAAGPFYgr9WqtyXpKYmBj8dtLvO3LkiHbu3KlPP/1Ud911lyRp7dq1mjFjhl5++WVlZmZ2ahx04AAAY0VqCv37q2K2trZ2aVy7d+9WWlqaRowYoSVLluj06dPB+6qrq5WcnBwMb0kqLCxUXFyc9u/f3+ljEOAAAMfLysoKWRmzvLw87MeaPn263nnnHVVWVuqll15SVVWViouLdeHCBUkXV+5MS0sLqenVq5dSUlKuunLnlTCFDgAwVqSm0Ovr6+V2u4O3d2WRrblz5wb/PXr0aI0ZM0bDhg3T7t27NXXq1LAf9/vowAEAxorUFLrb7Q7ZIrlK5tChQ5WamhpcR8Tr9erkyZMh+5w/f17ffPPNVa+bXwkBDgBAFH311Vc6ffp0cJntgoICNTU16cCBA8F9du3apY6ODuXn53f6cZlCBwAYKxbvQr/WqpwpKSl64YUXVFJSIq/Xq9raWj399NMaPny4ioqKJEm33Xabpk+frkWLFmnDhg1qb29XWVmZ5s6d2+l3oEt04AAAg8Xii1w+++wz3XnnnbrzzjslXVyV884779TKlSsVHx+vQ4cO6cc//rFuvfVWLVy4UHl5efrd734XMi3/7rvvauTIkZo6dapmzJihSZMm6V/+5V9sjcNl9bDvkQsEAsGVkFwuV6fretjTuIyd59KVmnD09NW+wrFw4cKw6v7xH//Rds0rr7xiu+aPf/yj7ZpwluTNy8uzXSNJt99+u+2aS9ODdlRUVNiu2bVrl+2an//857ZrJKl37962a2pqarrlOIcPH7ZdI0lPPPFEWHXh8Pv9IW8Mi6RLWfHSSy91abnqlpYWPfPMM1Eda7TQgQMAYCCugQMAjOXkxUwIcACAsZwc4EyhAwBgIDpwAICxnNyBE+AAAGM5OcCZQgcAwEB04AAAYzm5AyfAAQDGcnKAM4UOAICB6MABAMZycgdOgAMAjEWA91B2Tmx3LhYSTl1cnP2rFe3t7bZrerp///d/t11z6tQp2zWjRo2yXSNJf/M3f2O7ZtKkSbZrFi1aZLvmuysZdVYgELBdI0k+n892TUNDg+2aH/7wh7ZrZs+ebbumtbXVdo0U3oIh/fv3t11z4cIF2zXjxo2zXXMjcnKAcw0cAAAD9egOHACAa3FyB06AAwCM5eQAZwodAAAD0YEDAIzl5A6cAAcAGMvJAc4UOgAABqIDBwAYy8kdOAEOADCWkwOcKXQAAAxEBw4AMJaTO3ACHABgLAK8h7KzaEg4/xG68z9cOIsV9OvXz3bNM888Y7umuLjYdo0knT9/3nZNRUWF7ZrU1FTbNT//+c9t10jSyJEjbdc88MADtmv8fr/tmm+++cZ2zU033WS7RpL69Olju2b//v22a8L5b3vkyBHbNeH+rg8ZMsR2zVdffWW7Jisry3ZNc3Oz7Zoblckh3BVcAwcAwEA9ugMHAOBamEIHAMBATg5wptABADAQHTgAwFhO7sAJcACAsZwc4EyhAwBgIDpwAICxnNyBE+AAAGM5OcCZQgcAwEB04AAAYzm5AyfAAQDGIsB7qGif2ISEhLDqRo0aZbvmBz/4ge2aqVOn2q6ZMGGC7ZqTJ0/arpGktLQ02zVDhw61XRPOIh4//elPbddI0unTp23XvPXWW7Zrhg8fbrtmwIABtmv+67/+y3aNJCUmJtqu6d+/v+0at9vdLTUtLS22a6TwFiaJi7N/ZTKcv3Xh/E2Rwvu719bWFtaxuoOTA5xr4AAAGKhHd+AAAFwLHbgNe/bs0cyZM5WZmSmXy6Vt27aF3L9gwQK5XK6Qbfr06ZEaLwAAQZcCvCubqWwHeHNzs8aOHat169ZddZ/p06frxIkTwe29997r0iABAEAo21PoxcXFKi4uvuY+iYmJ8nq9YQ8KAIDOYAo9wnbv3q20tDSNGDFCS5YsueY7e1tbWxUIBEI2AAA6gyn0CJo+fbreeecdVVZW6qWXXlJVVZWKi4t14cKFK+5fXl4uj8cT3LKysiI9JAAAbjgRfxf63Llzg/8ePXq0xowZo2HDhmn37t1X/FzzihUrtHz58uDPgUCAEAcAdApT6FE0dOhQpaam6tixY1e8PzExUW63O2QDAKAzmEKPoq+++kqnT59WRkZGtA8FAIBj2J5CP3v2bEg3ffz4cR08eFApKSlKSUnRCy+8oJKSEnm9XtXW1urpp5/W8OHDVVRUFNGBAwDg5Cl02wH+2Wef6d577w3+fOn69fz587V+/XodOnRIb7/9tpqampSZmalp06bp7//+78P6bmUAAK7FyQHusnrY6AOBgDwej+Li4uRyuTpdt2jRItvHCvez6h0dHd1SE87CGqdOnbJdc+7cOds1Unjnb86cObZrjhw5YrvGzmvnu3Jzc23XhLPQQzgLXnRXjSQNHDjQdk16errtmsGDB9uu+Z//+R/bNeGehz59+tiuaW1ttV3z4Ycf2q4ZMWKE7Zpw/ehHPwqrzu/3R+19TZey4i//8i/DXphKuvj7+8///M9RHWu0sJgJAAAGYjETAICxnDyFToADAIzl5ABnCh0AAAPRgQMAjOXkDpwABwAYy8kBzhQ6AAAGogMHABjLyR04AQ4AMJaTA5wpdAAAbNizZ49mzpypzMxMuVwubdu2LeR+y7K0cuVKZWRkqG/fviosLNTRo0dD9vnmm280b948ud1uJScna+HChTp79qytcRDgAABjxWI50ebmZo0dO1br1q274v1r1qzR66+/rg0bNmj//v3q37+/ioqK1NLSEtxn3rx5+uKLL1RRUaEdO3Zoz549Wrx4sa1xMIUOADBWLKbQi4uLVVxcfNXHe+211/Tss8/qgQcekCS98847Sk9P17Zt2zR37lwdOXJEO3fu1Keffqq77rpLkrR27VrNmDFDL7/8sjIzMzs1DjpwAICxItWBBwKBkC2cRWmki0ts+3w+FRYWBm/zeDzKz89XdXW1JKm6ulrJycnB8JakwsJCxcXFaf/+/Z0+Vo/twCdMmKBevTo/vDFjxtg+Rm1tre0aSTp//rztmnBWCevs/4V1taa+vt52jSTdfPPNtmt+97vf2a7JycmxXRPOyliSNGTIENs1ycnJtmu6snqSHf/7v/8bVl0456GiosJ2TX5+vu2ahoYG2zXjx4+3XSNJP/zhD23X/Nu//ZvtmnD+PoTrjjvusF1j9zVuWZb8fr/t48RSVlZWyM+rVq3S888/b/txfD6fpMv/BqWnpwfv8/l8SktLC7m/V69eSklJCe7TGT02wAEAuJ5ITaHX19eHLCeamJjY5bFFG1PoAABjRWoK3e12h2zhBrjX65UkNTY2htze2NgYvM/r9erkyZMh958/f17ffPNNcJ/OIMABAIiQnJwceb1eVVZWBm8LBALav3+/CgoKJEkFBQVqamrSgQMHgvvs2rVLHR0dti4rMYUOADBWLN6FfvbsWR07diz48/Hjx3Xw4EGlpKQoOztbS5cu1YsvvqhbbrlFOTk5eu6555SZmalZs2ZJkm677TZNnz5dixYt0oYNG9Te3q6ysjLNnTvX1vuYCHAAgLFiEeCfffaZ7r333uDPy5cvlyTNnz9fmzZt0tNPP63m5mYtXrxYTU1NmjRpknbu3Kk+ffoEa959912VlZVp6tSpiouLU0lJiV5//XVb4yDAAQCwYcqUKdcMfpfLpdWrV2v16tVX3SclJUWbN2/u0jgIcACAsZz8XegEOADAWE4OcN6FDgCAgejAAQDGcnIHToADAIxFgAMAYCiTQ7gremyA5+Xl2foqu+9/EX1nhLvgRTjCGV8gELBdM2DAANs14SxKIkkHDx60XRPOwimffvqp7Zrm5mbbNZI0Y8YM2zUvvvii7ZqamhrbNbNnz7ZdE87CFZL02muv2a7505/+FNaxusMnn3zSrXV2ZWRk2K4J5++DFN7vrd2/K04N1O7WYwMcAIDrYQodAAADOTnA+RgZAAAGogMHABjLyR04AQ4AMJaTA5wpdAAADEQHDgAwlpM7cAIcAGAsJwc4U+gAABiIDhwAYCwnd+AEOADAWAQ4AAAGcnKAu6weNvpAICCPx6O+ffvK5XJ1uu6JJ56wfawzZ87YrpGkESNG2K758ssvbddkZ2fbromLs/+2hg8//NB2jSQdOXLEds0f//jHsI6Fnq9v3762a3r37m27prW11XZN//79bddI0rfffmu75vz587Zr2tvbbdeEs3CRJJ09ezasunD4/X653e6oPPalrJg5c2ZYr6NL2tvbtX379qiONVrowAEAxnJyB06AAwCM5eQA52NkAAAYiA4cAGAsJ3fgBDgAwFhODnCm0AEAMBAdOADAWE7uwAlwAICxnBzgTKEDAGAgOnAAgLGc3IET4AAAYxHgAAAYiADvgewuIvDyyy/bPkZeXp7tGim8RTwqKyvDOlZ3sLNozHd11wu/T58+3XIcSbrnnnts1zQ1NdmuOXz4sO2aQYMG2a7p6OiwXROucBYHCqcmnNddOIuSSFJCQoLtmnBer+EsTJKYmGi7RpImTJhguyYpKcnW/m1tbXrzzTdtHwf29NgABwCgM0zuoruCAAcAGMvJU+i2PkZWXl6ucePGKSkpSWlpaZo1a5ZqampC9mlpaVFpaakGDhyoAQMGqKSkRI2NjREdNAAATmcrwKuqqlRaWqp9+/apoqJC7e3tmjZtmpqbm4P7LFu2TNu3b9eWLVtUVVWlhoYGzZkzJ+IDBwDgUgfelc1UtqbQd+7cGfLzpk2blJaWpgMHDmjy5Mny+/168803tXnzZt13332SpI0bN+q2227Tvn37wnrzBAAAV8MUepj8fr8kKSUlRZJ04MABtbe3q7CwMLjPyJEjlZ2drerq6is+RmtrqwKBQMgGAACuLewA7+jo0NKlSzVx4kTl5uZKknw+nxISEpScnByyb3p6unw+3xUfp7y8XB6PJ7hlZWWFOyQAgMM4eQo97AAvLS3V4cOH9atf/apLA1ixYoX8fn9wq6+v79LjAQCcw8kBHtbHyMrKyrRjxw7t2bNHgwcPDt7u9XrV1tampqamkC68sbFRXq/3io+VmJgY9hcSAADgVLY6cMuyVFZWpq1bt2rXrl3KyckJuT8vL0+9e/cO+daxmpoa1dXVqaCgIDIjBgDg/6MD76TS0lJt3rxZH3zwgZKSkoLXtT0ej/r27SuPx6OFCxdq+fLlSklJkdvt1uOPP66CggLegQ4AiDgnvwvdVoCvX79ekjRlypSQ2zdu3KgFCxZIkl599VXFxcWppKREra2tKioq0htvvBGRwQIA8F1ODnCX1cNGHwgE5PF4Yj2Ma/rRj35ku6alpcV2zSOPPGK75uabb7Zd895779mukS7/H7nOCGfRhnAWogjnONLFjzXa1auX/beSnDp1ynZNOL8X4S7i8f3vfOiMP/uzP7Ndk5aWZrtm9+7dtmuGDh1qu0aS3G637ZotW7bYrpk9e7btmnBeQ1J4C+ls3749rGP5/f6wzmFnXMqKSZMmhfU7eMn58+e1d+/eqI41WvgudACAsZzcgRPgAABjOTnAu/RNbAAAIDbowAEAxnJyB06AAwCM5eQAZwodAAAD0YEDAIzl5A6cAAcAGMvJAc4UOgAABqIDBwAYy8kdOAEOADAWAQ4AgIGcHOBcAwcAwECsRgYAiIruWI0sLy9P8fHxYT/OhQsXdODAAVYjAwCgOzGFDgAAjEKAAwCMdakD78pmx/PPPy+XyxWyjRw5Mnh/S0uLSktLNXDgQA0YMEAlJSVqbGyM9NOWRIADAAzW3QEuSbfffrtOnDgR3Pbu3Ru8b9myZdq+fbu2bNmiqqoqNTQ0aM6cOZF8ykFcAwcAwIZevXrJ6/Vedrvf79ebb76pzZs367777pMkbdy4Ubfddpv27dunCRMmRHQcdOAAAGNFqgMPBAIhW2tr61WPefToUWVmZmro0KGaN2+e6urqJEkHDhxQe3u7CgsLg/uOHDlS2dnZqq6ujvhzJ8ABAMaKVIBnZWXJ4/EEt/Ly8iseLz8/X5s2bdLOnTu1fv16HT9+XHfffbfOnDkjn8+nhIQEJScnh9Skp6fL5/NF/LkzhQ4AcLz6+vqQz4EnJiZecb/i4uLgv8eMGaP8/HwNGTJEv/71r9W3b9+oj/O76MABAMaKVAfudrtDtqsF+PclJyfr1ltv1bFjx+T1etXW1qampqaQfRobG694zbyrCHAAgLFi8S707zp79qxqa2uVkZGhvLw89e7dW5WVlcH7a2pqVFdXp4KCgq4+1cswhQ4AMFZ3fxPbk08+qZkzZ2rIkCFqaGjQqlWrFB8fr4ceekgej0cLFy7U8uXLlZKSIrfbrccff1wFBQURfwe6RIADANBpX331lR566CGdPn1agwYN0qRJk7Rv3z4NGjRIkvTqq68qLi5OJSUlam1tVVFRkd54442ojIXFTAAAUdEdi5mMGjWqy4uZ/Pd//zeLmQAA0J1YzAQAABiFDhwAYCwnd+AEOADAWE4OcKbQAQAwEB04AMBYTu7ACXAAgLGcHOBMoQMAYCA6cACAsZzcgRPgAABjEeAAABjIyQHONXAAAAxEBw4AMJrJXXRXEOAAAGMxhQ4AAIxCBw4AMJaTO3ACHABgLCcHOFPoAAAYiA4cAGAsJ3fgBDgAwFhODnCm0AEAMBAdOADAWE7uwAlwAICxCHAAAAzk5ADnGjgAAAaiAwcAGMvJHTgBDgAwlpMDnCl0AAAMZCvAy8vLNW7cOCUlJSktLU2zZs1STU1NyD5TpkyRy+UK2R577LGIDhoAAOn/OvCubKayFeBVVVUqLS3Vvn37VFFRofb2dk2bNk3Nzc0h+y1atEgnTpwIbmvWrInooAEAkJwd4Lauge/cuTPk502bNiktLU0HDhzQ5MmTg7f369dPXq83MiMEAACX6dI1cL/fL0lKSUkJuf3dd99VamqqcnNztWLFCp07d+6qj9Ha2qpAIBCyAQDQGXTgYejo6NDSpUs1ceJE5ebmBm9/+OGHNWTIEGVmZurQoUN65plnVFNTo9/85jdXfJzy8nK98MIL4Q4DAOBgTn4XussKc/RLlizRb3/7W+3du1eDBw++6n67du3S1KlTdezYMQ0bNuyy+1tbW9Xa2hr8ORAIKCsrK5whAQB6EL/fL7fbHZXHDgQC8ng8Sk1NVVxc+JPJHR0dOnXqVFTHGi1hdeBlZWXasWOH9uzZc83wlqT8/HxJumqAJyYmKjExMZxhAAAczskduK0AtyxLjz/+uLZu3ardu3crJyfnujUHDx6UJGVkZIQ1QAAAroYA76TS0lJt3rxZH3zwgZKSkuTz+SRJHo9Hffv2VW1trTZv3qwZM2Zo4MCBOnTokJYtW6bJkydrzJgxUXkCAADncnKA27oG7nK5rnj7xo0btWDBAtXX1+uRRx7R4cOH1dzcrKysLM2ePVvPPvtsp68tXLquAQAwW3dcA7/pppu6fA38T3/6041/Dfx6WZ+VlaWqqqouDQgAADtM7qK7gsVMAADG6mp4mxz+LGYCAICB6MABAMZycgdOgAMAjOXkAGcKHQAAA9GBAwCM5eQOnAAHABjLyQHOFDoAAAaiAwcAGMvJHTgBDgAwFgEOAICBnBzgXAMHAMBAdOAAAGM5uQMnwAEAxnJygDOFDgCAgejAAQDGcnIHToADAIzl5ABnCh0AAAPRgQMAjOXkDpwABwAYy8kBzhQ6AAAGogMHABiLDhwAAANZltXlLRzr1q3TD37wA/Xp00f5+fn65JNPIvzMro8ABwAYKxYB/v7772v58uVatWqVPv/8c40dO1ZFRUU6efJkFJ7h1RHgAADY8Morr2jRokV69NFHNWrUKG3YsEH9+vXTW2+91a3j6HEBbvL1CADA/+muv+eR6L4DgUDI1traesVjtbW16cCBAyosLAzeFhcXp8LCQlVXV0f9uX5XjwvwM2fOxHoIAIAIiObf84SEBHm93og81oABA5SVlSWPxxPcysvLr7jvqVOndOHCBaWnp4fcnp6eLp/PF5HxdFaPexd6Zmam6uvrlZSUJJfLFXJfIBBQVlaW6uvr5Xa7YzTC2OM8XMR5uIjzcBHn4aKecB4sy9KZM2eUmZkZtWP06dNHx48fV1tbW5cfy7Ksy/ImMTGxy48bbT0uwOPi4jR48OBr7uN2ux39C3oJ5+EizsNFnIeLOA8Xxfo8eDyeqB+jT58+6tOnT9SP812pqamKj49XY2NjyO2NjY0RmxHorB43hQ4AQE+VkJCgvLw8VVZWBm/r6OhQZWWlCgoKunUsPa4DBwCgJ1u+fLnmz5+vu+66S+PHj9drr72m5uZmPfroo906DqMCPDExUatWrTLi2kQ0cR4u4jxcxHm4iPNwEech+h588EF9/fXXWrlypXw+n+644w7t3Lnzsje2RZvL4nNbAAAYh2vgAAAYiAAHAMBABDgAAAYiwAEAMJAxAd4Tlm6Lteeff14ulytkGzlyZKyHFXV79uzRzJkzlZmZKZfLpW3btoXcb1mWVq5cqYyMDPXt21eFhYU6evRobAYbRdc7DwsWLLjs9TF9+vTYDDZKysvLNW7cOCUlJSktLU2zZs1STU1NyD4tLS0qLS3VwIEDNWDAAJWUlFz2pRum68x5mDJlymWvh8ceeyxGI0Y0GBHgPWXptp7g9ttv14kTJ4Lb3r17Yz2kqGtubtbYsWO1bt26K96/Zs0avf7669qwYYP279+v/v37q6ioSC0tLd080ui63nmQpOnTp4e8Pt57771uHGH0VVVVqbS0VPv27VNFRYXa29s1bdo0NTc3B/dZtmyZtm/fri1btqiqqkoNDQ2aM2dODEcdeZ05D5K0aNGikNfDmjVrYjRiRIVlgPHjx1ulpaXBny9cuGBlZmZa5eXlMRxV91u1apU1duzYWA8jpiRZW7duDf7c0dFheb1e62c/+1nwtqamJisxMdF67733YjDC7vH982BZljV//nzrgQceiMl4YuXkyZOWJKuqqsqyrIv/7Xv37m1t2bIluM+RI0csSVZ1dXWshhl13z8PlmVZ99xzj/XEE0/EblCIuh7fgfekpdt6gqNHjyozM1NDhw7VvHnzVFdXF+shxdTx48fl8/lCXh8ej0f5+fmOfH3s3r1baWlpGjFihJYsWaLTp0/HekhR5ff7JUkpKSmSpAMHDqi9vT3k9TBy5EhlZ2ff0K+H75+HS959912lpqYqNzdXK1as0Llz52IxPERJj/8mtmst3faHP/whRqOKjfz8fG3atEkjRozQiRMn9MILL+juu+/W4cOHlZSUFOvhxcSl5ft6wtJ+sTZ9+nTNmTNHOTk5qq2t1d/+7d+quLhY1dXVio+Pj/XwIq6jo0NLly7VxIkTlZubK+ni6yEhIUHJyckh+97Ir4crnQdJevjhhzVkyBBlZmbq0KFDeuaZZ1RTU6Pf/OY3MRwtIqnHBzj+T3FxcfDfY8aMUX5+voYMGaJf//rXWrhwYQxHhp5g7ty5wX+PHj1aY8aM0bBhw7R7925NnTo1hiOLjtLSUh0+fNgR7wO5lqudh8WLFwf/PXr0aGVkZGjq1Kmqra3VsGHDunuYiIIeP4Xek5Zu62mSk5N166236tixY7EeSsxceg3w+rjc0KFDlZqaekO+PsrKyrRjxw599NFHIcsPe71etbW1qampKWT/G/X1cLXzcCX5+fmSdEO+Hpyqxwd4T1q6rac5e/asamtrlZGREeuhxExOTo68Xm/I6yMQCGj//v2Of3189dVXOn369A31+rAsS2VlZdq6dat27dqlnJyckPvz8vLUu3fvkNdDTU2N6urqbqjXw/XOw5UcPHhQkm6o14PTGTGF3lOWbou1J598UjNnztSQIUPU0NCgVatWKT4+Xg899FCshxZVZ8+eDekajh8/roMHDyolJUXZ2dlaunSpXnzxRd1yyy3KycnRc889p8zMTM2aNSt2g46Ca52HlJQUvfDCCyopKZHX61Vtba2efvppDR8+XEVFRTEcdWSVlpZq8+bN+uCDD5SUlBS8ru3xeNS3b195PB4tXLhQy5cvV0pKitxutx5//HEVFBRowoQJMR595FzvPNTW1mrz5s2aMWOGBg4cqEOHDmnZsmWaPHmyxowZE+PRI2Ji/Tb4zlq7dq2VnZ1tJSQkWOPHj7f27dsX6yF1uwcffNDKyMiwEhISrJtvvtl68MEHrWPHjsV6WFH30UcfWZIu2+bPn29Z1sWPkj333HNWenq6lZiYaE2dOtWqqamJ7aCj4Frn4dy5c9a0adOsQYMGWb1797aGDBliLVq0yPL5fLEedkRd6flLsjZu3Bjc59tvv7X+6q/+yrrpppusfv36WbNnz7ZOnDgRu0FHwfXOQ11dnTV58mQrJSXFSkxMtIYPH2499dRTlt/vj+3AEVEsJwoAgIF6/DVwAABwOQIcAAADEeAAABiIAAcAwEAEOAAABiLAAQAwEAEOAICBCHAAAAxEgAMAYCACHAAAAxHgAAAYiAAHAMBA/w9jx8Z4NvSZ9AAAAABJRU5ErkJggg==\n" + }, + "metadata": {} + } + ] }, { "cell_type": "code", "metadata": { - "id": "AeJ68DMn4f3g" + "id": "AeJ68DMn4f3g", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "0d137043-801f-48d3-c830-a5e913219322" }, "source": [ "valid_labels[data_idx]" ], - "execution_count": null, - "outputs": [] + "execution_count": 22, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "np.uint8(7)" + ] + }, + "metadata": {}, + "execution_count": 22 + } + ] }, { "cell_type": "markdown", @@ -232,7 +359,7 @@ "\n", "## Defining the architecture\n", "
\n", - "\"Blausen\n", + "\"Blausen\n", "

\n", "Image courtesy of Wikimedia Commons\n", "

\n", @@ -255,14 +382,222 @@ { "cell_type": "code", "metadata": { - "id": "dHq93yV8_FWR" + "id": "dHq93yV8_FWR", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 68 + }, + "outputId": "dd8a1fcb-beac-4848-dcf2-cd8f282c4169" }, "source": [ "# 28 lists with 28 values each\n", "valid_images[data_idx]" ], - "execution_count": null, - "outputs": [] + "execution_count": 23, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0],\n", + " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0],\n", + " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0],\n", + " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0],\n", + " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0],\n", + " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0],\n", + " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0],\n", + " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 155, 133, 0, 0, 1, 0, 0, 3, 0, 0,\n", + " 0, 0],\n", + " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0,\n", + " 1, 0, 0, 175, 235, 35, 0, 3, 0, 5, 2, 3, 1,\n", + " 0, 0],\n", + " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,\n", + " 0, 0, 93, 219, 220, 32, 0, 0, 0, 0, 0, 0, 0,\n", + " 1, 0],\n", + " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0,\n", + " 0, 147, 218, 159, 218, 28, 0, 2, 0, 82, 202, 115, 0,\n", + " 0, 1],\n", + " [ 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0,\n", + " 144, 248, 155, 105, 174, 87, 0, 0, 0, 233, 253, 213, 8,\n", + " 0, 1],\n", + " [ 1, 0, 0, 0, 1, 2, 2, 0, 0, 0, 0, 99, 233,\n", + " 119, 81, 89, 140, 183, 208, 139, 74, 218, 223, 184, 189, 145,\n", + " 0, 0],\n", + " [ 0, 1, 2, 3, 5, 0, 0, 0, 0, 173, 153, 195, 97,\n", + " 157, 220, 228, 213, 189, 182, 189, 220, 213, 174, 185, 186, 198,\n", + " 0, 0],\n", + " [ 1, 0, 0, 0, 0, 10, 129, 202, 198, 129, 149, 84, 124,\n", + " 236, 221, 209, 226, 221, 166, 186, 179, 178, 205, 177, 206, 196,\n", + " 0, 0],\n", + " [ 0, 0, 6, 49, 80, 148, 203, 181, 203, 164, 145, 178, 159,\n", + " 138, 174, 186, 162, 169, 177, 200, 214, 206, 178, 179, 205, 227,\n", + " 6, 0],\n", + " [ 3, 104, 128, 126, 124, 105, 85, 75, 99, 181, 140, 141, 185,\n", + " 179, 181, 183, 185, 204, 227, 255, 224, 226, 234, 227, 159, 198,\n", + " 198, 0],\n", + " [ 62, 150, 115, 111, 91, 117, 131, 102, 129, 120, 153, 176, 216,\n", + " 232, 238, 238, 211, 242, 173, 26, 0, 54, 104, 20, 0, 0,\n", + " 48, 16],\n", + " [116, 179, 173, 173, 202, 188, 200, 228, 179, 150, 100, 89, 164,\n", + " 39, 0, 82, 129, 17, 0, 0, 0, 0, 0, 0, 25, 11,\n", + " 0, 12],\n", + " [ 10, 122, 108, 148, 115, 145, 148, 79, 38, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 9, 14, 7, 18, 9, 5, 0, 12,\n", + " 0, 0],\n", + " [ 0, 5, 57, 67, 0, 0, 0, 1, 0, 0, 8, 8, 71,\n", + " 55, 11, 32, 30, 30, 17, 4, 3, 9, 15, 17, 29, 37,\n", + " 92, 106],\n", + " [ 0, 0, 0, 58, 50, 142, 169, 80, 144, 156, 148, 159, 152,\n", + " 156, 136, 151, 142, 70, 139, 161, 98, 131, 145, 60, 141, 121,\n", + " 77, 0],\n", + " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0],\n", + " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0],\n", + " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0],\n", + " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0],\n", + " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0],\n", + " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0]], dtype=uint8)" + ], + "text/html": [ + "\n", + "
ndarray (28, 28) 
array([[  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
+              "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
+              "          0,   0],\n",
+              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
+              "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
+              "          0,   0],\n",
+              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
+              "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
+              "          0,   0],\n",
+              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
+              "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
+              "          0,   0],\n",
+              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
+              "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
+              "          0,   0],\n",
+              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
+              "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
+              "          0,   0],\n",
+              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
+              "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
+              "          0,   0],\n",
+              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
+              "          0,   0,   0, 155, 133,   0,   0,   1,   0,   0,   3,   0,   0,\n",
+              "          0,   0],\n",
+              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   5,   0,   0,   0,\n",
+              "          1,   0,   0, 175, 235,  35,   0,   3,   0,   5,   2,   3,   1,\n",
+              "          0,   0],\n",
+              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   1,   0,   0,\n",
+              "          0,   0,  93, 219, 220,  32,   0,   0,   0,   0,   0,   0,   0,\n",
+              "          1,   0],\n",
+              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   2,   2,   0,\n",
+              "          0, 147, 218, 159, 218,  28,   0,   2,   0,  82, 202, 115,   0,\n",
+              "          0,   1],\n",
+              "       [  0,   0,   0,   0,   0,   0,   0,   0,   2,   0,   0,   0,   0,\n",
+              "        144, 248, 155, 105, 174,  87,   0,   0,   0, 233, 253, 213,   8,\n",
+              "          0,   1],\n",
+              "       [  1,   0,   0,   0,   1,   2,   2,   0,   0,   0,   0,  99, 233,\n",
+              "        119,  81,  89, 140, 183, 208, 139,  74, 218, 223, 184, 189, 145,\n",
+              "          0,   0],\n",
+              "       [  0,   1,   2,   3,   5,   0,   0,   0,   0, 173, 153, 195,  97,\n",
+              "        157, 220, 228, 213, 189, 182, 189, 220, 213, 174, 185, 186, 198,\n",
+              "          0,   0],\n",
+              "       [  1,   0,   0,   0,   0,  10, 129, 202, 198, 129, 149,  84, 124,\n",
+              "        236, 221, 209, 226, 221, 166, 186, 179, 178, 205, 177, 206, 196,\n",
+              "          0,   0],\n",
+              "       [  0,   0,   6,  49,  80, 148, 203, 181, 203, 164, 145, 178, 159,\n",
+              "        138, 174, 186, 162, 169, 177, 200, 214, 206, 178, 179, 205, 227,\n",
+              "          6,   0],\n",
+              "       [  3, 104, 128, 126, 124, 105,  85,  75,  99, 181, 140, 141, 185,\n",
+              "        179, 181, 183, 185, 204, 227, 255, 224, 226, 234, 227, 159, 198,\n",
+              "        198,   0],\n",
+              "       [ 62, 150, 115, 111,  91, 117, 131, 102, 129, 120, 153, 176, 216,\n",
+              "        232, 238, 238, 211, 242, 173,  26,   0,  54, 104,  20,   0,   0,\n",
+              "         48,  16],\n",
+              "       [116, 179, 173, 173, 202, 188, 200, 228, 179, 150, 100,  89, 164,\n",
+              "         39,   0,  82, 129,  17,   0,   0,   0,   0,   0,   0,  25,  11,\n",
+              "          0,  12],\n",
+              "       [ 10, 122, 108, 148, 115, 145, 148,  79,  38,   0,   0,   0,   0,\n",
+              "          0,   0,   0,   0,   0,   9,  14,   7,  18,   9,   5,   0,  12,\n",
+              "          0,   0],\n",
+              "       [  0,   5,  57,  67,   0,   0,   0,   1,   0,   0,   8,   8,  71,\n",
+              "         55,  11,  32,  30,  30,  17,   4,   3,   9,  15,  17,  29,  37,\n",
+              "         92, 106],\n",
+              "       [  0,   0,   0,  58,  50, 142, 169,  80, 144, 156, 148, 159, 152,\n",
+              "        156, 136, 151, 142,  70, 139, 161,  98, 131, 145,  60, 141, 121,\n",
+              "         77,   0],\n",
+              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
+              "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
+              "          0,   0],\n",
+              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
+              "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
+              "          0,   0],\n",
+              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
+              "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
+              "          0,   0],\n",
+              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
+              "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
+              "          0,   0],\n",
+              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
+              "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
+              "          0,   0],\n",
+              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
+              "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
+              "          0,   0]], dtype=uint8)
" + ] + }, + "metadata": {}, + "execution_count": 23 + } + ] }, { "cell_type": "markdown", @@ -286,14 +621,29 @@ { "cell_type": "code", "metadata": { - "id": "SIgbDeIbqELs" + "id": "SIgbDeIbqELs", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "9c1efbcc-b259-4093-c675-26779293ce39" }, "source": [ "number_of_classes = train_labels.max() + 1\n", "number_of_classes" ], - "execution_count": null, - "outputs": [] + "execution_count": 24, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "np.uint8(10)" + ] + }, + "metadata": {}, + "execution_count": 24 + } + ] }, { "cell_type": "code", @@ -302,11 +652,12 @@ }, "source": [ "model = tf.keras.Sequential([\n", - " tf.keras.layers.Flatten(input_shape=(28, 28)),\n", - " tf.keras.layers.Dense(number_of_classes)\n", + " tf.keras.Input(shape=(28, 28)), # Use Input layer to define shape\n", + " tf.keras.layers.Flatten(),\n", + " tf.keras.layers.Dense(int(number_of_classes))\n", "])" ], - "execution_count": null, + "execution_count": 30, "outputs": [] }, { @@ -323,13 +674,96 @@ { "cell_type": "code", "metadata": { - "id": "wYSHZNPEA1tb" + "id": "wYSHZNPEA1tb", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 193 + }, + "outputId": "85d482b0-286a-413a-f9a8-99d19325ca49" }, "source": [ "model.summary()" ], - "execution_count": null, - "outputs": [] + "execution_count": 31, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1mModel: \"sequential_4\"\u001b[0m\n" + ], + "text/html": [ + "
Model: \"sequential_4\"\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n", + "┃\u001b[1m \u001b[0m\u001b[1mLayer (type) \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m Param #\u001b[0m\u001b[1m \u001b[0m┃\n", + "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n", + "│ flatten_5 (\u001b[38;5;33mFlatten\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m784\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", + "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", + "│ dense_4 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m) │ \u001b[38;5;34m7,850\u001b[0m │\n", + "└─────────────────────────────────┴────────────────────────┴───────────────┘\n" + ], + "text/html": [ + "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
+              "┃ Layer (type)                     Output Shape                  Param # ┃\n",
+              "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
+              "│ flatten_5 (Flatten)             │ (None, 784)            │             0 │\n",
+              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
+              "│ dense_4 (Dense)                 │ (None, 10)             │         7,850 │\n",
+              "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m7,850\u001b[0m (30.66 KB)\n" + ], + "text/html": [ + "
 Total params: 7,850 (30.66 KB)\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m7,850\u001b[0m (30.66 KB)\n" + ], + "text/html": [ + "
 Trainable params: 7,850 (30.66 KB)\n",
+              "
\n" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n" + ], + "text/html": [ + "
 Non-trainable params: 0 (0.00 B)\n",
+              "
\n" + ] + }, + "metadata": {} + } + ] }, { "cell_type": "markdown", @@ -343,17 +777,32 @@ { "cell_type": "code", "metadata": { - "id": "00aNzMfrQARw" + "id": "00aNzMfrQARw", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "8e40f331-7b39-4001-fbb4-3dfaf7b592ea" }, "source": [ "image_height = 28\n", "image_width = 28\n", "\n", - "number_of_weights = image_height * image_width * number_of_classes\n", + "number_of_weights = image_height * image_width * int(number_of_classes)\n", "number_of_weights" ], - "execution_count": null, - "outputs": [] + "execution_count": 34, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "7840" + ] + }, + "metadata": {}, + "execution_count": 34 + } + ] }, { "cell_type": "markdown", @@ -369,13 +818,30 @@ { "cell_type": "code", "metadata": { - "id": "3wY9VLOKKyKw" + "id": "3wY9VLOKKyKw", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 498 + }, + "outputId": "0f8eeba3-c825-4122-e7a4-501f3873ba70" }, "source": [ "tf.keras.utils.plot_model(model, show_shapes=True)" ], - "execution_count": null, - "outputs": [] + "execution_count": 35, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABDYAAAJNCAYAAADK5vV0AAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzdd3gU1f748U96ID0BQwlFmgj4lSYIaASlBfDSkaIg2ECuSlOKcuXS2wX8XepFRFFAKTZKUOGCdOEiTREkApfQCSEkRNLI+f3Bl3wz2dnd2WQ3yWTfr+eZ58nOnnPmzM7uziefnXPGQymlBAAAAAAAwHz2eRZ1DwAAAAAAAPKLxAYAAAAAADAtEhsAAAAAAMC0SGwAAAAAAADTIrEBAAAAAABMi8QGAAAAAAAwLRIbAAAAAADAtEhsAAAAAAAA0yKxAQAAAAAATIvEBgAAAAAAMC1vI4V27Nghzz//vKv7AgAAAAAAICIiv/32mwQFBdktZyixkZaWJhcvXixwpwAAAAAAAIzIzs42VI6hKAAAAAAAwLRIbAAAAAAAANMisQEAAAAAAEyLxAYAAAAAADAtEhsAAAAAAMC0SGwAAAAAAADTIrEBAAAAAABMi8QGAAAAAAAwLRIbAAAAAADAtEhsAAAAAAAA0yKxAQAAAAAATIvEBgAAAAAAMC0SGwAAAAAAwLRIbAAAAAAAANMisQEAAAAAAEyLxAYAAAAAADAtEhsAAAAAAMC0SGwAAAAAAADTIrEBAAAAAABMi8QGAAAAAAAwLRIbAAAAAADAtEhsAAAAAAAA0yKxAQAAAAAATIvEBgAAAAAAMC0SGwAAAAAAwLRIbAAAAAAAANMisQEAAAAAAEyLxAYAAAAAADAtEhsAAAAAAMC0SGwAAAAAAADTIrEBAAAAAABMi8QGAAAAAAAwLRIbAAAAAADAtEhsAAAAAAAA0yKxAQAAAAAATIvEBgAAAAAAMC0SGwAAAAAAwLRIbAAAAAAAANMisQEAgMkkJCSIUspiiYqKKuquAQAAFDoSGwAAAAAAwLRIbAAAUEChoaG6V1A4Y2ndunVR7x4AAECxRmIDAAA41ZQpUzTJmVGjRrm0HgAAcG8kNgAAgNN4enrKCy+8UGj1AAAASGwAAACnad26tVSqVKnQ6gEAAJDYAAAATjNw4MBCrQcAAOBd1B0AAKAki4mJkS1bthR1NwpFaGiodOnSpdDqAQAAiHDFBgAAbsfT01NatWolc+fOlR9//FEuXrwoKSkpkpmZKdevX5djx47J0qVLpUuXLuLl5WWzrTFjxuRM9nnz5k3x9/e3KDNr1izNpKBxcXH5rmePn5+f9OnTR/71r3/J0aNH5erVq5KRkSEJCQnyyy+/yJo1a6R3794SEBBg6LWydsebjRs3aspFRETI2LFjZc+ePZKYmCgZGRly5coV2b9/v4wbN04eeOABQ9sDAAD5oAyIjY1VIsLCwsLCwsKis4SGhlo9h7Zv397p20tISNDdVlRUlN26HTp0UL///ruR079SSqmzZ8+qVq1aWW1vzJgxhtu6Ly4uLt/1rPXDw8NDDRs2TF29etVQW5cvX1a9evWy+3p5e3vr1t+zZ09OmR49eqikpCSb20tMTFQ9e/Ys8vcqCwsLCwuLmRZ759f/tZcrNgAAcBPjx4+XTZs2Sc2aNQ3XqVq1qmzdulX69+/vwp4VTGBgoGzatEnmzp1r+MqIcuXKyRdffCEzZ860WS4rK0syMzMt1oeFhYmIyHPPPSdr1qyRkJAQm+2EhYXJ6tWr5dlnnzXUPwAAYByJDQAA3EC/fv1k4sSJ+arr6ekpH374oTRo0MDJvSo4T09PWbVqlcTExOSr/ttvvy2jRo2yWSYtLc1iXVBQkFSrVk2WLVsmHh4ehrbl5eUlS5YskaCgoHz1FQAAWGHkug6GorCwsLCwsFhfivtQFH9/f6tDNP7zn/+oZ555RoWGhqrw8HDVtm1bq0NV7MUDkydP1q03atQol9QTETVq1CjduikpKWrEiBGqatWqysfHR5UrV069/PLL6sqVKxZl79y5ox588EGr20hMTLSok5CQoNauXau7bXsGDx5c5O9ZFhYWFhYWMywMRQEAACIi0qVLF90hGunp6dKpUyfZtm2bJCUlSWJionz//ffSpUsXUUpZlG/Xrp2ULVu2MLpsSFBQkIwZM8ZifWZmprRp00bmzJkj586dk8zMTLly5Yp8+OGH0qxZM0lMTNSU9/f3l0mTJlndTnZ2tsW68PBw6d69u4iIHD58WDp27CghISESEhIiHTt2lN9++81qe/frAQAA5yCxAQBACRcaGiq7du2Sw4cPS1xcnFy5ckVu374tO3fulCtXrliUP3HihBw4cMBivYeHh0RHRxdGlw15+eWXJSIiwmL9p59+Kvv379etc/bsWZk2bZrF+q5duxq+U4rIvdfCw8NDtm/fLs2aNZPNmzdLcnKyJCcny+bNm+XJJ5+UCxcu6NZt2LCh4e0AAAD7SGwAAOBCsbGxurcLNbLs3r3bKX1YvHixREdHS8OGDaVmzZpSvnx5CQoKkrZt21qtc+zYMd31FSpUcEqfnKFbt26667/88kub9dasWWOxrnTp0tKhQweHtv/nn39K//79JT093eK5GzduyPTp03XrhYeH50w+CgAACo7EBgAAsHDr1i3d9cXlH3Jvb29p3Lix7nOnTp2yWff8+fO6+/fYY4851Ic1a9ZYvSpDRGTjxo1Wn7N3FxUAAGCcd1F3AAAAFD1vb2/x8fERHx8f8fb2Fj8/P91ynp7F4zeRKlWqiL+/v+5zp0+fzlebjzzyiEPlt2zZYvP5+Ph4yc7O1n3NrL2+AADAcSQ2AABwIzVq1JDu3btLixYtpE6dOlKmTBkJDg42fMvS4qJcuXJOb/PBBx90qLytCUJF7k06mpCQoDtxq9lebwAAijMSGwAAuIGyZcvKvHnzpE+fPiXin+pSpUo5vc2goCCHylsbrpNbSkqKbmIDAAA4D4kNAABcKCYmxu6QBVeLioqSHTt2SPXq1Yu0H86UkZHh9DaDg4MdKn/37l2n9wEAADiueAyUBQAALrNixQrDSY27d+9Kenq6ZGZmurhXBXPz5k2rz0VFReXcjtWRxdErNgAAQPFAYgMAgBLs8ccfl1atWuk+d+bMGXnzzTelXr16Eh4eLp6enuLt7S3+/v4yZ86cQu6pYxITE60+FxkZWYg9AQAARY2hKAAAlGDPPvus7vqkpCRp0aKFXLlyRff54n71wsWLF+XGjRsSERFh8ZwrJhYFAADFF1dsAABQglWqVEl3/ZYtW6wmNUTuXenhLPm9Ray9evv27dNd37x583xtDwAAmBOJDQAASrCAgADd9bYm32zZsqU0bNhQ9zl/f3+H+5Dfu4LYq7dp0ybd9f379xdfX1+r9dq3by/Jycly+vRp2b17t6xbt04WLFggrVu3zlc/AQBA0SKxAQBACXb9+nXd9U2bNhUvLy+L9dWqVZMVK1ZYbc/WMI+0tDTd9U899ZTNPua33qeffqo7iWilSpVkxowZunVKlSolEydOlKCgIKlRo4a0aNFCunfvLkOGDJFr167Z3B4AACieSGwAAFCCHThwQHf9Qw89JB9//LHUqFFD/Pz8pHr16jJ69Gg5dOiQVKpUSRITE+X06dMW9dq0aSOhoaG6bV69elV3fePGjWXatGlSoUIF8ff3lzp16oifn1+B66WmpsrMmTN16w4bNkzWrl0rTZs2lYCAAImIiJD27dvL9u3b5bHHHrMo//HHH8uxY8d02wIAAMWcMiA2NlaJCAsLCwsLC4vOEhoaavUc2r59e6dvLyEhQXdbUVFRFmXDw8PVrVu3jJzuNbp3764WLVqk+9z58+fV119/rebMmaPZ1iOPPGK4/dx9zW89EVGenp5q27ZthuvrOX36tAoODnbK6513iYuL061bu3btIn/fsrCwsLCwFPclKSnJyKl8L1dsAABQgiUmJsrYsWMdqjN58mRZv369rFmzRvf5SpUqSefOnS3m4Th+/Ljs3bvX4T7mt56ISHZ2tnTv3l22bt2ar/onT56UVq1aSXJycr7qAwCAokdiAwCAEm7hwoUyevRoycrKslnuzp07MnDgQBk/fryIiGzfvl0+/fRTh7Y1YMAAuXjxosN9zG89kXu3ro2JiZF3331Xd84NPWlpaTJ37lxp1KiRXLhwIV/bBQAAxYN3UXcAAAC43syZM+XLL7+U119/XVq2bCnVqlWTwMBASUlJkVOnTsl3330nS5YskUuXLmnqDRgwQLZu3Spdu3aVKlWqiKenp9y4cUNOnjype1eSuLg4adCggYwaNUqeffZZefDBB8XDw0Nu3boliYmJcuzYMdm7d68kJCQ4pd59WVlZMnXqVJk/f75069ZNnnnmGWnUqJGULVtWQkNDJTU1VRITE+X48eOyfft2WblypdWJVQEAgLl4KKWUvUJbtmyRmJiYwugPAAAAAACAJCUlSUhIiL1i+xiKAgAAAAAATIvEBgAAAAAAMC0SGwAAAAAAwLRIbAAAAAAAANMisQEAAAAAAEyLxAYAAAAAADAtEhsAAAAAAMC0SGwAAAAAAADTIrEBAAAAAABMi8QGAAAAAAAwLRIbAAAAAADAtEhsAAAAAAAA0yKxAQAAAAAATIvEBgAAAAAAMC0SGwAAAAAAwLRIbAAAAAAAANMisQEAAAAAAEyLxAYAAAAAADAtEhsAAAAAAMC0SGwAAAAAAADTIrEBAAAAAABMi8QGAAAAAAAwLRIbAAAAAADAtEhsAAAAAAAA0yKxAQAAAAAATIvEBgAAAAAAMC0SGwAAAAAAwLRIbAAAAAAAANMisQEAAAAAAEyLxAYAAAAAADAtEhsAAAAAAMC0SGwAAAAAAADTIrEBAAAAAABMi8QGAAAAAAAwLRIbAAAAAADAtEhsAAAAAAAA0yKxAQAAAAAATIvEBgAAAAAAMC0SGwAAAAAAwLRIbAAAAAAAANMisQEAAAAAAEyLxAYAAAAAADAtEhsAAAAAAMC0SGwAAAAAAADTIrEBAAAAAABMi8QGAAAAAAAwLRIbAAAAAADAtEhsAAAAAAAA0yKxAQAAAAAATIvEBgAAAAAAMC0SGwAAAAAAwLRIbAAAAAAAANMisQEAAAAAAEzL21kNjRkzRvz8/JzVHAAAKEE+++wz+eOPP6w+36BBA/nLX/5SiD0CAABFKS4uTlauXOmUtpya2AgJCXFWcwAAoATZt2+f3cTGhAkTCq9DAACgSG3ZssVpiQ2GogAAAAAAANMisQEAAAAAAEyLxAYAAAAAADAtEhsAAAAAAMC0SGwAAAAAAADTIrEBAAAAAABMi8QGAAAAAAAwLRIbAAAAAADAtEhsAAAAAAAA0yKxAQAAAAAATIvEBgAAAAAAMC0SGwAAAAAAwLRIbAAAAAAAANMisQEAAAAAAEyLxAYAAAAAADAtEhsAAAAAAMC0SGwAAAAAAADTIrEBAAAAAABMi8QGAAAAAAAwLRIbAAAAAADAtEhsAAAAAAAA0yKxAQAAAAAATIvEBgAAAAAAMC0SGwAAAAAAwLRIbAAAAAAAANMisQEAAAAAAEyLxAYAAAAAADAtEhsAAAAAAMC0SGygWNi4caN4eHjkLOfOnSvqLsEBbdq00Rw/Dw8PGThwYFF3C3AL/fr1s/j8dejQoai7BbgV4hjzIoZBSeSOsUGJSWwsXrxYc+B2795d1F0C3MKHH34oW7du1awrV66czJkzJ+f5vF+s95dvvvnG8HZmz55tUX/MmDFO3Rc4ZseOHfLmm29Kw4YNJTIyUnx9fSUoKEgqV64sHTp0kKlTp0p8fLzh9jIzM2X9+vXy0ksvyaOPPiply5YVX19fCQwMlIoVK0p0dLSMHDlS9u/f78K9sq+47fcHH3wgZcuW1ayLjY2VTz75pED7if+TmJgoa9eulcGDB0uTJk2kWrVqEhwcLP7+/lKxYkWpX7++9OjRQxYtWiRxcXFF3V0ABhHDuId169ZZPY6OLP7+/la3UZgxzMKFC3X7V65cuZwybhkbKANiY2OViNhckpKSjDTlMosWLdL0Z9euXUXan+IoMzNTlSpVSomIWrRoUVF3R2PDhg2a43f27Nmi7hIMuHHjhgoLC7P4Pli1alVOmaVLl1r93qhZs6bKyMgwtK1Zs2ZZ1B89erSrdg02nD59WjVv3tzueUFElKenpxo8eLBKSUmx2eY333yjKlasaKhNEVHNmjVTJ06cKKQ9vqc47/fHH39sUTYiIkLdvHnTVS+Hw9q2bWtz3wYNGlTUXbRw4cIFNXToUOXn52f4GImIateundq3b19Rd79Yn/fzozjvD3GM+RDDuI+1a9c69B1ubfHz89NtvzBjmLNnz6rAwEDddiMjIzVlzRAbODHPsLfEXLEB+3799Ve5c+dOUXcDJciECRPk5s2bmnVNmjSR3r17G6p/+vRpmT9/viu6Bhf5+eefpXHjxrJ3715D5bOzs2Xx4sXyzDPPyO3bt3XLzJ8/Xzp37iwXL1403I99+/ZJ06ZN5cCBA4brFERx3+8XXnhB6tevr1l348YNmTRpkuG2obVixQqpUaOGLFiwQNLT0x2q+91330mzZs1k8ODBkpmZ6aIe2lfSzvslbX9QtIhh4AyFGcMopWTQoEFW44q83C02ILHhRv7zn/8UdRdQgpw/f14WL15ssX7GjBni4eFhuJ1JkyZJYmKiM7sGF0lOTpZnn31Wbt265XDdAwcOyLBhwyzWHz58WN5666189SclJUWee+45h//pdJQZ9tvT01OmTp1qUXb+/Ply6dKlfG3HnY0ZM0YGDBggaWlpOesiIiJkyJAh8u2330pcXJzcunVL0tLS5Pz587Jr1y4ZP368PPTQQ5p2lixZIq1bt5bk5OTC3gURKXnn/ZK2Pyg6xDDID09P7b/OhR3DLFq0SLZv3264vLvFBiQ23AgBAZxpzpw5Fr9ENmnSRFq2bOlQOzdv3pQJEyY4r2NwmVmzZumeCJ966inZu3evJCcnS3x8vCxbtkzKlCljUW758uVy9uxZzbopU6ZIdna2RdkXXnhBjh8/Lunp6XLr1i3ZuHGjPPzwwxblzp07J6tXry7AXtlnlv2OiYmRRx99VLMuIyND5s2bZ2g/cc/SpUtlxowZOY89PDxk1KhR8scff8jChQvl2WeflerVq0twcLD4+flJpUqV5IknnpCJEyfKr7/+Kh9++KEEBwfn1N+5c6cMGjSoKHalxJ33S9r+oOgQw7iXHj16iFLKoWXdunUW7eT9Li/MGObs2bMyevTonMdGE3DuFBuQ2HAjhw4dKuouoIS4ffu2LFu2zGL9iBEj8tXeokWL5NSpUwXtFlwoOztb95jXq1dPtm7dKs2aNZOgoCCJioqSQYMGycqVK3Xb+PbbbzWPY2NjLco1bdpUVqxYIfXq1RNfX18JDg6Wjh07yldffSVeXl4W5bds2VLAvbPObPut9xn817/+xeX7Bp04cULeeOONnMfe3t6yYsUKmTVrloSEhNit7+XlJS+99JLs3LlTM4nb+vXrZcGCBS7psy0l7bxf0vYHRYMYBvYkJibK0KFDNeseeOABmTx5cs7jwoxhlFLy0ksvaYagdO7c2fD+uEts4HaJjeXLl+fMHFurVq2c9Uop+frrr6Vdu3bywAMPiI+Pj4SGhsojjzwib775ppw+fVq3vVmzZuW0V61atZz1CQkJ8re//U2aNGkiFSpUED8/P6lQoYI88cQTMnfuXJuXNE+fPj2nTW9vb0P7NW/ePN06ue8Wc/DgwZz1Q4YM0cyiW5BfQTIyMmTNmjXSr18/eeSRRyQ8PFx8fHykVKlSUr58eXniiSdk9OjRcvjwYcNt3s9CZmVlybJly6Rdu3ZSrVo18ff3l7CwMKlXr5689dZb8scffxhq7+7du7Jp0yZ56aWXpH79+hIRESG+vr4SEBAgUVFR0r59e5k5c6Zcu3bNahuuONZ5Xbp0SaZMmSJt2rSRqKgoKVWqlAQHB0uNGjWkY8eOsmTJEovxoHpyvx88PDyc/o/f+vXrLcb3hYaGSpcuXQzVb968ueZxVlaWjBo1ymn9y23Pnj0ybtw4adasmVSpUkVKly4tgYGBUrVqVWnWrJmMGzfO0F2Uli1bZjH7dLt27XKeV0rJF198IR07dpTIyEjx8fGRsmXLyuOPPy7Tp0+XlJQUw31OTk6WRYsWSc+ePXN+Gfb395eqVatKq1at5P/9v/9n873qCkeOHJHLly9brH/33Xd1v6fatm0rlSpVslj/yy+/5Px97do1+fPPPy3KPPfcc7p9eOihh6RRo0YW6//73//a7HtBmG2/e/ToIYGBgZp1t27d0iRWYN2kSZM0lwX/7W9/k+eff97hdh599FH5/PPPNZctT5o0STO0JbeiPO8TxxT/OMYZMYwIccx9xDDuF8M4avjw4XL16lXNupkzZ0poaGjO48KMYRYuXKgZghIeHu7Qe85tYoNCnq3UZYzeFWXlypU5ZcqVK6eUUurmzZt2Z7r39fVVK1eutGhv4cKFmllmlVJq37596oEHHrDZXqVKldSePXt0+zht2rSccl5eXob2f+7cubp18r4u1paDBw8a2k5e+/fvVzVq1DA8C3CPHj103yt5ZxOPj49Xly9fVo0bN7Z7XHLPXq3n+PHjqn79+ob6FxAQoJYuXarbjiuO9X2ZmZnqnXfeUb6+vnb7GBERoZYvX26zvdzvBxFRsbGxNss7ql27dhb9euWVV3TL6s0o/sEHH6jKlStbrN+6davVbTo6o/hPP/2knnzyScPvzRYtWti8i8Hq1ast6jRt2lQpdW9m9ZYtW9psv2LFiuro0aM2X9fs7Gw1e/ZsFRQUZLe/wcHBVt+rrrB9+3bVqlUr1bBhQ1WjRg1VtmxZ5efnp65cuWK1jt7r361bt5znL168qLtvn332mdU2O3XqZFG+SZMmTt3X3My43y+88IJF2c6dO+f/RXCS4n5XlDNnzigvL6+c/tSpU0dlZWUVqM0hQ4Zo9tHanTyK8rxPHFO84xhnxTBKEcfcRwxzb3GnGMYRev/3tmjRQmVnZ2vKFVYMc+bMGRUQEKCps3z5cvXzzz9btJX3rii5FdfYgLuiFICvr2/O33/++adkZGRI69at7c50n5GRIYMGDZLffvtNsz73rwq3b9+WCxcuSIcOHexmIuPj46VTp07y+++/52Mviofff/9dWrduLXFxcYbrrFu3Trp06SJKKZvlPDw8pH379nZ/gcnIyJD+/fvLiRMndJ8/ffq0REdHy5EjRwz1LzU1VV555RX5+OOPLZ5z1bHOysqSTp06ycyZMyUjI8NuH2/cuCEDBw6U6dOn2y3rCmlpafLjjz9arO/QoYPhNlJSUmTKlCkW60eMGKE7VtFRn376qTz55JOya9cuw3X27Nkj0dHRsmLFCt3n/fz8LNYlJyfnHL8dO3bYbP/ixYvSpk0buXHjhu7z2dnZ0qtXLxk1apShX0aSk5PllVdekb///e92yzpDy5Yt5d///rccOnRITp8+LdeuXZO0tDSJjIy0Wuf69esW68LDw3P+LleunO7l/bYmtMr7C4qISO3ate11P9/MuN96n8Vt27YV6d05zODLL7+Uu3fv5jx+8803dS8bdsSwYcM046C/+OKLArXnCsQxxTeOcWYMI0IcI0IMk5s7xTBGpaSkyGuvvaZZ5+XlJQsXLrSY06IwYhj1v3dBSU1NzVnXsWNHefHFFzXnKyPcITZwu8SGj49Pzt9paWkyY8YMOXTokDz88MOycuVKuXz5smRmZkpCQoJs3LhR/ud//ienfHp6unzwwQea9nIHPenp6fLOO+/IzZs3pXnz5vL111/LlStXJCMjQ65cuSKrV6+WGjVq5JS/efNmvmfSNWrw4MGilLIYQ7Vo0SLNBDmNGzd2uO13330351I+X19fGTt2rBw8eFBu3rwpWVlZkpKSInFxcbJq1SrNZXs7duyQtWvX2mx71qxZcvToUXnooYfkk08+kUuXLklGRoZcv35dvvzyS6lbt25O2aysLJk9e7ZuO0OHDtVc8tixY0fZsGGDXLx4UdLT0yU1NVV+/vlneeuttzSXDI8YMcLi0ktXHeuxY8fKd999l/O4Zs2a8q9//UtOnDghqampcvv2bTl27JhMmzZNIiIiNPW2bdtm83V0hT179lhcTu3l5SWtWrUy3MbNmzelX79+Fu+7Y8eO6Y57dcTmzZtlwIABhoKrvDIzM+XFF1+UH374weK53EnR+5KTk2XWrFmyb98+Q+1fu3ZNJk6cqPvc22+/rTtRlT0TJkyQr776yuF6rnb48GE5efKkxfqaNWvm/O3p6Sk9evSwKPPZZ5/pBod//PGH7j8JvXr1KmBvnac47Hfr1q0tArDbt2/L/v377fbfneUO7D08PKxeTuyIWrVqab7n9u/f7/K7+Dh63ieOKb5xjDNjGBHiGBFimNyIYSyNHTtWzp8/r1n3+uuva/4fvK8wYpgFCxZozk3h4eGydOlSW7tglVvEBoV8iYjLGB2KkvtSQQ8PD+Xv76/atm2r/vzzT93yCQkJKjw8PKdOlSpVNM8vX77c4rXo0qWLyszM1G0vKSlJ1apVS1P+2LFjmjLOvITzvjt37mi2ae1yWKOys7NV6dKlc9qbPXu23TrPP/+8ioyMVI0bN1Zz5szRPJf3Ek4/Pz/VunVrlZqaqtvWjRs3VJkyZTSXyOX1xx9/WBwXW6ZPn64pn/fSUFcc6zNnzihvb++c52NiYqy+F5VS6sKFC6pq1ao55evVq2dzn1wh9/vz/lK3bl2r5fUu4xw6dKhSSqkff/xR9zK65ORki3aMXMaZmJioeV/kXvr166f27dunUlJS1O3bt9XevXtVjx49dMuWL1/e4r23efNmi3KlS5dWISEhytPTUw0fPlzFxcWptLQ0deTIEfXss8/qth0REWHxnvnll1+Up6enRdkGDRqozZs3q8uXL6ukpCS1Z88eFRMTY1GuWrVqKj09Pb+H1OkyMjJUkyZNdPc/Li5OUzY+Pl6FhoZalOvatas6cuSISktLU8nJyWrLli3q4Ycftij39NNPW1weWlSK0xm82hgAACAASURBVH5Xr17dos7cuXNd/RLYVNyHokREROT0pU6dOk5rd/jw4Zr91LukvyjP+8QxxTOOcXYMoxRxjFLEMLkXYhitI0eOaIYjiogKCQlRCQkJVuu48lyuNwQl9+f64MGDuu8/W4pjbODMoShundgQERUaGqquX79us+3Bgwdr6qSkpOQ8l/ckERgYaPMDoJRSX3/9tabO1KlTNc+bISBITEzUtPfDDz8UqL28xyUsLMzucfnrX/9q9bgopdTOnTvVk08+qWrVqqWCg4Ntjn1USqnU1FTl4+OT097IkSM1z7viWL/xxhs5z5UtW1bdvHnTZntKKbVlyxZNm/kdV5xfvXv3tvj89+3b12p5vaDgtddey3m+c+fOFs+PHTvWoh0jQcHUqVN1v5/+/ve/W+1f3vfR/SXv2E9b34P//Oc/LdrNysqyOnfP8ePHNWX79OljUaZq1arq1q1bun3u2LGjRfnPP//c6j4Wprt376p+/frp7nfXrl116+zevVvzT6XRpXnz5ioxMbGQ91Bfcdvvrl27WtR78cUXXbHrhhXnxEZmZqamL927d3da28uWLdO0vW7dOosyxSmxQRyTP86OY5wdwyhFHKMUMYzeQgxzT3R0tEW/pk2bZreeK87l2dnZFvOe5D0v5SexURxjA+bYcKIXX3xRypQpY7NM/fr1NY9tzebcs2dPzWV2ejp27KiZmXbPnj0Gelq8BAcHay5p3LRpk1PbHzRokN3j8sgjj2geJyYmah4/+eSTsnPnTjl16pTcunVLnnnmGZvtlS5dWnM3g4SEBJvlnXGsc98mql+/fprZlq1p166dpp8bNmywW8eZ9MYiP/TQQ/lub+bMmZohYiIic+fOzdedLvQuz6tdu7a89957VuvMmDFDM//BfZ9++qmhbTZu3Fj++te/Wqz38vKyOmN17rss3b17V/d2YcOGDZPg4GCrfc4rP5eAOltmZqb0799f95angYGBVoeMtWjRQo4dOyZvvPGG5haZejw8PKR58+ayZMkS+fHHHyUsLMwpfS+I4rjfep9Jo3eRckd5x43rfSfkV962rI1RLy6IY5yjoHGMq2MYEfeMY4hhtIhh7lm/fr3s3LlTsy4yMtLQUDtXnMvzDkEpW7asLFq0yP6O2FHSYwO3T2zYO1GIiMWJSe/WPvcZGaPn7e0tDRo0yHls7VayxZmXl5e0bNky5/G8efPkjTfekIsXLzql/datW9stk/e4OONezKVKlcr5Oysry2bZgh7ry5cva06wucvZ8/jjj+f8fezYMcP1nEFvUqTy5cvnu71atWrJ4MGDNevS0tJkzJgxDrVz/vx5OXv2rMX6vn37asYe51W6dGnp1KmTxfqDBw/afQ+I3EuOWpP3lnD3JSUl5fx9+PBhzeP7mjRpYrXdOnXqWJwMc98GrCjcvHlTOnTooPvPvYeHhyxfvlxze8G8Lly4ILdu3bI7IZ9SSi5duiTHjx+Xc+fOFbTbBVZc97tixYq624K+vLd+LF26tNPaznuLvbzbKm6IY8wbxzgSw4i4ZxxDDKNFDHPv/DphwgSL9cOHD9d8pmxx5rn8zJkzFu+fxYsXS9myZQ31xZaSHhu4fWKjatWqdsvknUnY1ps2b/bdmipVquT8HR8fb6hOcTNr1izNB37+/PlSuXJladGihYwfP162bdtmMUGTUZUrV7ZbJu9ESLaOy9WrV+Wjjz6SQYMGyRNPPCE1a9aUyMhICQsLk8DAQPH39xdvb2/59ddfDfexoMc67+REAwYMsLjHuLUl96RlhT0jvd4dH+xlqO15//33LWaW/vzzzx2a0OjQoUO6641MKKcXjN25c8fQTPm5g7O8ypQpoxuQ5J48UC+QEbkXUFg7/p6enhZXjt24cUN3tu3CEBcXJ48//rhs3bpV9/kPPvhAd4ItkXszqY8cOVIef/xxWbFihaF9OHfunMyfP1/q1q0rCxcuLFDfC6I477deoF5U7w8zyPsrs97Ei/mVt63icJWRLcQxxS+OcUUMI+KecQwxjBYxjMjatWvll19+0awLCQmRIUOG2K3r7HO50rkLSr9+/aRbt24G98a2kh4buH1iI+8vKQVl9PLV3F+Ad+7cccrtoQpbgwYN5IcffpAHH3wwZ112drbs3btXJk+eLK1bt5awsDBp3769fPjhhw4Fis76tSw9PV2GDx8uVapUkZdeekmWL18ue/bskbi4OLl27ZokJSVJamqqpKenO3zbpIIe67xDZ/JLL1PuKpmZmbq3hSro8YqIiJB3333XYv3w4cNz/s47k3NeesGKiEiFChXsbt9aUGPkGNkKiLy8vHRvBeboNoxy5JaFzrJnzx5p1qyZbmDq7e0tS5YskTfeeMNq/fHjx8ucOXM0Ab23t7eMHz9eTp06Jenp6XLr1i358ccf5S9/+YumbkZGhgwdOrRILmEt7vut95l0xlVtJVVYWJjmO8bIZfxG5f2M27v0v6gRxxSfOMaVMYyI+8UxxDDG64q4Rwwjcm84UV4DBgywOpQmN2efy+fPn6+5HXH58uXln//8Z352S1dJjw3cPrHhbAEBAYbK5c3S5+e2TsVBixYt5PTp0/LZZ59J06ZNLb6409LS5LvvvpNXXnlFqlatKtOmTSu04Cc9PV2efvppmTdvnktur1fQY507G1sQhXlZs7XX0d/fv8Btv/nmmxZXUO3fv19Wr14tIvdOFLZYu2+6kcsIrZUxci92vXvD52brElIR5x6/5ORkp7VlxJo1a+SZZ57R/ScwLCxMNm7cKK+++qrV+qdPn9YNKObMmSMTJ06UWrVqia+vrwQHB0t0dLR88803urdFGzlypKFLbp3FDPut955WSrn8VqNm5enpqRnzf/jwYae1ffToUc3j3L9+F0fEMcUjjnF1DCPifnEMMYwld45hREQOHDige7XMwIED7dZ19rn8zJkzMnbsWM1zS5cudepVfiU9NiCx4WRG3xi5L2308PCw+8VSnHl5eUm/fv1k//79cvnyZVm+fLn07t3bYixYUlKSjBs3Trp165avXxYcNX78eNm7d2/OYx8fHxkwYIB8/vnn8p///EfOnDkjiYmJkpKSInfu3JGsrCzNfeXtKeixDgoK0pT77rvvRCnl8OLMS6bzy96YQiP8/Pxk2rRpFuvHjBkjaWlpdgMPa5l1I4GXtTL2fqlwhrzvg4IwEsQ4y4oVK6RPnz66n4N69erJwYMHpV27djbb+Oyzzyz+MQ8NDbUYr5yb3iRn58+f13zWXcks++2Mz6S7adGiRc7fFy9edNocLrkvRw8PDzd8+X9RIY4pHnGMq2MYEeKY+4hh8s+sMcx9ehNyPvrooxY3jtDj7HP5999/b3EsO3XqZHVIz2OPPWbR1tWrVzVlJk+erHm+pMcGJDaczOiXc+7L7oKCguxeomZPUWQ59URGRsqLL74oq1evlqtXr8qhQ4dkzJgxmvHL33zzjVNm9rUlLS1NM7t0WFiY/PTTT/Lxxx/Lc889J40aNZIHH3xQMz7Vy8vLoUCloMc675ju4j5Tvoj1XwXyOwY5r969e0vTpk01686fPy9z5syxO9O6tUmVjEyKZG2yOGdM1GSPtUz8zz//7HBwqPdLgCusWbNGBg4cqPurZZcuXWTfvn1SvXp1u+0cOXLEYl2tWrUsZpjP+7ye48eP291eQZlpv/U+k2b/59PVoqOjNY+XL19e4DZPnTql+TXwqaeesvsLqFGuOu8TxxR9HFMYMYyI+8UxxDDOZ8YY5r6MjAz58ssvLdZ3797dUH2zxTAiJT82ILHhZCdPnjRULvcvQXkvS80dHNy9e9fQiao43B0gLw8PD2nYsKFMmzZNfv31V6lZs2bOc3qXbjnT8ePHNSficePG2Z2tOyMjw6EJ0Ap6rB966CHNsc47cVFx5OXlpfuFbetOQY76xz/+YbFu+vTpdj8HDRs21F1/4MABu9vUKxMWFmbzbhbO8vDDD+uuL66T8e3evVv69++v+8/966+/LuvXrzc8d5HerzN6459zszYW1JnvQT1m22+99c6800dJ1LNnT81rtHjx4gL/s513bPSAAQN0yxWn8z5xzP8pqjimMGIYEfeLY4hhnM9sMUxu27dv1/2Oj4mJMVTfTDGMre2UpNiAxIaT7dq1y26ZjIwMTZYv7z2F82aU7WXAs7Oz5d///rcDvSx8FSpU0EysFB8f79JLzi5fvqx5bGvW5/u+/fZbh8aLFvRYh4aGaoKkjRs3Gt52UXrggQcs1l27ds1p7bdo0cIiW56SkiILFiywWa9y5cq6dzlatWqVzfkXEhMTZfPmzRbro6OjC/wLpBF169bV/SXHyPursN24cUOee+453cuXJ02aJAsWLHDo1+i8tzoUuXebM1sB4JkzZ3TXu/KXKTPud97vQJGCz/xf0kVERGhufXjt2jUZNmxYvtvbv3+/5lf9unXrWkwed19xOu8Tx+grzDimMGIYEfeMY4hhnMtMMUxeGzZssFhXpkwZadSokaH6ZolhcivpsQGJDSdbtWqV3Yl0vvrqK03GLvd91EUsZ6nWu9Qpt/Xr18t///tfh/pZ0LGhCxYskB49ekjVqlVl1apVhurkvcWQsy7H1ZO3bXvBR1JSksU9o+1dmuiMY507yD127JjExsbabE/k3pjY+vXrS8+ePeXjjz8u1LuiiOjP0K13X/iCmDFjhsVkZUbmUNCbsPHMmTMyadIk3fLZ2dny+uuv62awX3vtNYO9LRgPDw/p0qWLxfrFixdbnSF88+bNEhgYKNWqVZPHH39c/vKXv2hmXxcR2bJli+6YzN27d+e7r0OHDtU91q+99pq89957Dren9wvVrVu3ZMWKFVbrLFmyRHf9/bGm7rrfeen1V+/+9dAaO3as5hy8fPlymThxosPtnDhxQrp3755zhY+Hh4fMmDHD6j8axem8TxxjXWHFMYURw4i4ZxxDDONcZoph8tI7Jo0aNTKcEHL2uXzw4MEODd05ePCgRTuRkZGaMnljlJIeG5DYcLJr167JG2+8YXVyloSEBBk9enTOYy8vL+nUqZOmTJ06dTSPFy9ebHV7J06ckKFDh9qdlMjLy0vzuKCXiO3fvz8nEHn33XetZiBzy33P8qioKMOzcedH7lu3iYjN2yJeunRJ2rdvL4mJidKkSZOc9fYui3XGsX7ttdc0AcygQYPk1KlTVreZkZEhL730khw9elTWrVsnr776aqFPupX715n7bPU5P6pXry5Dhw51uN6QIUN0M+gTJ06Ul19+WY4ePSrp6emSlJQkP/zwg7Rp00a++OILi/KNGzeW9u3b56vv+TFixAiLE+nt27fliSeekI8++kiuXr0qmZmZEh8fL/Pnz5fevXtLamqqnD17Vn766SfZsGGDy8dHHjhwQPe1KleunO6lt0Z0797d4rtJ5N7n4v3335dTp05JRkaG3LlzRw4dOiR9+/aVNWvWWJSvW7euw5PmGWXW/db7TNaoUSNf/XUnUVFR8tFHH2nWvf/++9K3b1+r49hzU0rJJ598ItHR0ZoA8u2335aOHTtarVeczvvEMdYVVhxTGDGMiHvGMcQwzmeGGCavrKwsOXHihMX6evXqGW7DDDFMXiU+NlAGxMbGKhGxuSQlJRlpymUWLVqk6c+uXbt0y23YsEFT7uzZs3bbzlvnt99+y3lu+fLlmud69eqlRERFR0erb775Rl29elVlZGSoy5cvq08//VRVqVJFU/7555+32F5mZqYqV66cplz//v3VoUOHVGpqqkpPT1cnT55UkyZNUkFBQcrLy0tNnjw5p6yXl5fufgQGBuaUKVeunNq7d69KS0tT165dU//973+NvdD/6+DBg8rDwyOnvfDwcDV58mR18OBBlZSUpLKystTt27dVfHy82rRpk+rcubNmf8aNG+fS45Kdna2ioqI0zw8dOlT9+uuv6s6dOyoxMVHt27dPvfPOOzmvy6JFi9SQIUNyynt4eKhVq1apO3fuqOTkZJcca6WUGj16tKZcQECAev/999WxY8fU7du3VXJysjp58qRatGiRqlevnqbskCFDdNucO3euplxsbKzxg2vHjBkzLD7/devWtVp+6dKlFuVfe+01u9tJTExUYWFhNr93Ro8ebVEvNjZW8950dAkKClK///67brt65a9fv25zPyIiIizqLFq0yKLciBEj8t3natWqqeTkZEP9tfbdaM+gQYPy3b+8S+7P9+uvv17g9jZu3Oj2+51X9erVLcrPmzcvX6+Bs7Rt29bm/gwaNKhI+5fbvHnzlKenp6Z/AQEBqn///mrdunXq9OnT6tatWyotLU3Fx8ervXv3qr///e/qkUcesdivfv36qaysLJvbK8rzPnHMvfaKUxzjihjGVcdaKXPFMcQw2sVdYpi8jh8/rtv+Rx995FA7rj6X23Lw4EGLtiIjI23WKY6xgRPzDHtJbDg5sfH777+rkJAQQ2/kqKgodeXKFd1tzp492/AHYty4cWrr1q05jz08PHTbbN26tdU2Ro4caf9FzmPs2LH5+gD/z//8j0pNTbX5Ghf0uChl+Z6wtfTq1UvdvXtXffLJJ7rPd+7c2WXHOj09XcXExDj8OjZq1Ejdvn1bt01XJja2bdtm0RcvLy+r3wH5DQqUUmrOnDk2XwO9oEAppT755BPl6+vr8GtatmxZtXv3bt02XR0UZGRkqE6dOjnc58jISHX8+HHD/c1vUNCvX798fd71ltyf7/T0dLv/8Npapk+fzn7nkZCQoBsYW3tvFxYzJTaUUuqrr74y/B2vt3h5eakpU6YY3l5RnfeJYxw/toURxzg7hlHKdcfaTHEMMYx2cZcYJq/vvvtOt/1NmzY51I4rz+X2OJrYKK6xgTMTGwxFcbLy5ctLbGys3YlYateuLVu2bJHIyEjd54cPHy4vvPCC3e2NGjVKpkyZopnRViklGRkZFmXHjRvn1PGgU6ZMkVmzZlm9fZae3r17y48//lgoM/AOHjzY0KWAAwcOlFWrVomnp6d0797d8FgzZx1rX19f+fbbb+Xtt982dCmeh4eHDBo0SLZv3+7S4TzWtGjRwuKY3717V7Zv3+70bQ0dOtTQ7TPz6t+/v+zatUuaN29uqLyHh4f06tVLDh48KC1atHB4e87g4+Mj33zzjUyYMMHwce3QoYMcPHjQoUsnXTm3TX74+vrK5s2bZerUqRIUFGS43oMPPiibNm3SXCZtizvt9w8//GBxaXlQUJDFbQhhW5cuXeTMmTMycuRIu8MkcvP09JQ+ffrIiRMnZNy4cYbrFZfzPnGMbYUVx7g6hhFxzziGGMY1zBbDWBv+FBwc7FA7hRXDOIM7xAbFK9IrAe7evSvNmjWTU6dOyYIFCyQ6OloqVqwovr6+Ur58eYmOjpaFCxfKoUOHbI6n8vT0lBUrVsimTZukR48eUrlyZfH39xdfX1+pXLmy9O/fX44cOSKzZs0SEbG4zaDezNitWrWS2NhYeeKJJ6R06dLi6+srkZGR0rJlS3nyyScd3lcPDw8ZNWqUnD9/XubOnSudOnWS6tWrS2BgoHh6ekqpUqWkQoUK8vTTT8t7770nv/76q6xevdruvbydaf78+fL9999Ljx49JCoqSnx9fcXf31+qV68u/fv3l507d8pHH32UM0YuICBAfvjhB2nbtq0EBASIn5+fVK1aVfdD76xjLSLi7e0tM2fOlNOnT8vUqVPl6aeflqioKClVqpT4+flJZGSkREdHy3vvvSenTp2SZcuWOfQF6kx+fn7y1FNPWazXm5W7oHx9fWXGjBn5qtukSRPZs2eP7NixQ0aNGiWPPfaYVKhQQfz8/CQwMFCqVq0qTz/9tEyZMkV++eUX+eKLLyxuWVjYPD095f3335dz587JnDlzpFOnTlK1alUJDAwUX19fKVu2rDz22GMyfPhwOXTokGzatEkqVark0DaM3pK0MHl5ecnYsWPl4sWLsnTpUnn++eelTp06UqZMGfHx8RF/f38pV66cPPbYY/L666/Lhg0bJC4uTjp06GB4G+6033qfxWeeeUa8vb1dtSslVnh4uMyePVsuXboky5cvl/79+0uDBg0kIiJCfHx8xM/PTypWrCj169eXPn36yPLlyyU+Pl5WrVoltWrVcmhbxeW8TxxTfOIYV8YwIu4ZxxDDuI6ZYhhnJTZECieGcQa3iA0K+RKREifvZX03b94s6i7BRTjW/0fvctfQ0FCVlpZW1F2DjsqVK+ccJ0fHoZuZO+53amqqZh6C+8sXX3xR1F0z3VAUd8G5zX1wrO8hhjEXdzyXO1txjg0YigKgSHXv3t0ia56UlCRff/11EfUI1qSmpsqFCxdERKR06dK6t7oridx1v9etW2dx+8aQkBDNLRkBwJ0Rw5iHu57Lnc1dYgMSGwAcFhAQIC+//LLF+jlz5hRBb2DLhg0bJDs7W0Tu3Z+9RF1yaIO77rfeZ/DVV191aI4IACjJiGHMw13P5c7mLrEBiQ0A+TJixAjx8fHRrDtw4IDs2LGjaDoEXQsXLsz5u0uXLkXYk8LljvsdGxsrR48e1azz9fWVYcOGFVGPAKB4IoYxB3c8lzubO8UGJDYA5EulSpVk8ODBFutHjx5tMesyisaGDRtk165dInLvEk4jdygoCdxxv7Ozs3XvwPHXv/6VS3cBIA9imOLPHc/lzuZusQGJDQD5NmHCBAkLC9OsO3DggKxevbqIeoT7rl27Jq+++mrO4/fee0/Kli1bhD0qHO663ytWrJAjR45o1kVERMj48eOLqEcAULwRwxRf7noudzZ3iw0YqAQg38LDw2XmzJnyyiuvaNaPHDlSYmJiLAIGFJ4HHnhALl++XNTdKHTuuN8JCQnyzjvvWKz/xz/+Uai31wYAMyGGKb7c8VzubO4YG3DFBoACefnll6V169aadVeuXJHhw4cXUY8A9/LWW2/J9evXNevat28vAwYMKKIeAYA5EMOgpHLH2MBDGRhItmXLFomJibFZJikpSUJCQpzWMQAAUHK0a9dOvv/+e6vPDxo0SJYtW1aIPQIAAEXJiXmGfVyxAQAAAAAATIvEBgAAAAAAMC0SGwAAAAAAwLRIbAAAAAAAANMisQEAAAAAAEyLxAYAAAAAADAtEhsAAAAAAMC0SGwAAAAAAADTIrEBAAAAAABMi8QGAAAAAAAwLRIbAAAAAADAtEhsAAAAAAAA0yKxAQAAAAAATIvEBgAAAAAAMC0SGwAAAAAAwLRIbAAAAAAAANMisQEAAAAAAEyLxAYAAAAAADAtEhsAAAAAAMC0SGwAAAAAAADTIrEBAAAAAABMi8QGAAAAAAAwLRIbAAAAAADAtEhsAAAAAAAA0yKxAQAAAAAATIvEBgAAAAAAMC0SGwAAAAAAwLRIbAAAAAAAANMisQEAAAAAAEyLxAYAAAAAADAtEhsAAAAAAMC0SGwAAAAAAADTIrEBAAAAAABMy9tZDU2fPl38/Pyc1RwAAChB/vjjD5vPHz58WCZMmFA4nQEAAEUuLi7OaW15KKWUvUJbtmyRmJgYp20UAAAAAADAlqSkJAkJCbFXbB9DUQAAAAAAgGmR2AAAAAAAAKZFYgMAAAAAAJgWiQ0AAAAAAGBaJDYAAAAAAIBpGbrda+3ateUf//iHq/sCAABKiEmTJklSUpJm3aOPPir9+/cvoh4BAACzKVWqlKFyhm73CgAA4IjKlStLfHy8Zl3Pnj1lzZo1RdQjAABQQnG7VwAAAAAAYF4kNgAAAAAAgGmR2AAAAAAAAKZFYgMAAAAAAJgWiQ0AAAAAAGBaJDYAAAAAAIBpkdgAAAAAAACmRWIDAAAAAACYFokNAAAAAABgWiQ2AAAAAACAaZHYAAAAAAAApkViAwAAAAAAmBaJDQAAAAAAYFokNgAAAAAAgGmR2AAAAAAAAKZFYgMAAAAAAJgWiQ0AAAAAAGBaJDYAAAAAAIBpkdgAAAAAAACmRWIDAAAAAACYFokNAAAAAABgWiQ2AAAAAACAaZHYAAAAAAAApkViAwAAAAAAmBaJDQAAAAAAYFokNgAAAAAAgGmR2AAAAAAAAKZFYgMAAAAAAJgWiQ0AAAAAAGBaJDYAAAAAAIBpkdgAAAAAAACmRWIDAAAAAACYFokNAAAAAABgWiQ2AAAAAACAaZHYAAAAAAAApkViAwAAAAAAmBaJDQAAAAAAYFokNgAAAAAAgGmR2AAAAAAAAKZFYgMAAAAAAJgWiQ0AAAAAAGBaJDYAAAAAAIBpkdgAAAAAAACmRWIDAAAAAACYFokNAAAAAABgWiQ2AAAAAACAaZHYAAAAAAAApkViAwAAAAAAmBaJDQAAAAAAYFokNgAAAAAAgGmR2AAAAAAAAKZFYgMAAAAAAJgWiQ0AAAAAAGBaJDYAAAAAAIBpkdgAAAAAAACmRWIDAAAAAACYFokNAAAAAABgWiQ2AAAAAACAaZHYAAAAAAAApkViAwAAAAAAmBaJDQAAAAAAYFokNgAAAAAAgGmR2AAAAAAAAKZFYgMAAAAAAJgWiQ0AAAAAAGBaJDYAAAAAAIBpkdgAAAAAAACmRWIDAAAAAACYFokNAAAAAABgWh5KKVXUnQAAAMXf3/72N1m5cqWhsufPn5esrCzNuoCAAImMjDRUf/bs2dK1a1eH+wgAANzOPhIbAADAkG3btknr1q1dvh1fX1+5fPmyhIeHu3xbAADA9PYxFAUAABjSsmVLqVChgsu3ExMTQ1IDAAAYRmIDAAAY4uXlJb169XL5dvr27evybQAAgJKDoSgAAMCwAwcOSNOmTV3WfkBAgFy9elUCAgJctg0AAFCiMBQFAAAY16RJE6lRo4bL2u/atStJDQAA4BASGwAAwCF9+vQxZdsAAKBkYigKAABwyMmTJ+Xhhx92ertlypSRS5cuiY+Pj9PbBgAAJRZDUQAAgGNq164t9evXd3q7PXv2JKkBAAAcRmIDAAA4zBVDRhiGUdkxRQAAIABJREFUAgAA8oOhKAAAwGHx8fFStWpVyc7Odkp7lSpVknPnzomnJ7+5AAAAhzAUBQAAOK5SpUrSokULp7XXp08fkhoAACBfiCAAAEC+OHPoCMNQAABAfjEUBQAA5EtCQoJUqFBBMjMzC9RO7dq15bfffnNSrwAAgJthKAoAAMifMmXKSJs2bQrcTt++fZ3QGwAA4K5IbAAAgHxzxhCS3r17O6EnAADAXTEUBQAA5FtqaqpERkZKampqvuo3adJEfvrpJyf3CgAAuBGGogAAgPwLCAiQTp065bs+k4YCAICCIrEBAAAKJL/JCU9PT+nZs6eTewMAANwNiQ0AAFAgMTExEh4e7nC9Vq1aScWKFV3QIwAA4E5IbAAAgALx9fWVbt26OVyPYSgAAMAZSGwAAIACczRJ4evrK127dnVRbwAAgDshsQEAAArsqaeekgoVKhgun9/hKwAAAHmR2AAAAAXm5eUlvXr1Mly+b9++LuwNAABwJx5KKVXUnQAAAOZ34MABadq0qd1yAQEBcvXqVQkICCiEXgEAgBJuH1dsAAAAp2jSpInUqlXLbrlu3bqR1AAAAE5DYgMAADjNc889Z7cMd0MBAADOxFAUAADgNCdPnpSHH37Y6vNlypSRS5cuiY+PTyH2CgAAlGAMRQEAAM5Tu3ZtqV+/vtXne/bsSVIDAAA4lXdRd8CeJUuWyMmTJ4u6GwAAwKDAwECrzyUkJMjw4cMLsTcAAKAg2rdvL+3atSvqbthU7BMbX375pXz//fdF3Q0AAOAEa9euLeouAAAAB4SEhBT7xAZDUQAAAAAAgGmR2AAAAAAAAKZFYgMAAAAAAJgWiQ0AAAAAAGBaJDYAAAAAAIBpkdgAAAAAAACmRWIDAAAAAACYFokNAAAAAABgWiQ2AAAAAACAaZHYAAAAAAAApkViAwAAAAAAmBaJDQAAAAAAYFokNgAAAAAAgGmR2AAAAAAAAKZFYgMAAAAAAJgWiQ0AAAAAAGBaJDYAAAAAAIBpkdgAAAAAAACmRWIDAAAAAACYFokNAAAAAABgWiQ2AAAAAACAaZHYAAAAAAAApkViAwAA4P+3d+dhVVX748c/BxQQFBE0RHFOzaHU66zpNcNZy6tklqWlDZrXyiGn8urNLKer1VdFM7XMIcuhnNO8WoYTaQ5pTmEOiCIiIigckPX7w59cDnufCQ4cNr5fz7Oeh7PO2muvs/eB/eGz914bAAAYFokNAAAAAABgWCQ2AAAAAACAYZHYAAAAAAAAhkViAwAAAAAAGBaJDQAAAAAAYFgkNgAAAAAAgGGR2AAAAAAAAIZFYgMAAAAAABgWiQ0AAAAAAGBYJDYAAAAAAIBhkdgAAAAAAACGRWIDAAAAAAAYFokNAAAAAABgWCQ2AAAAAACAYZHYAAAAAAAAhkViAwAAAAAAGBaJDQAAAAAAYFjF3D0AAACKqoCAALlx44bD7W/fvi2JiYly48YNuXz5skRFRcn+/fslMjJSrl+/no8jBQAAMC4SGwAAFBK+vr7i6+srFSpUkHr16kmHDh1ERCQ9PV3WrVsnCxYskP/+979uHiUAAEDhwq0oAAAUcsWLF5c+ffrIjh07ZMeOHVKlShV3DwkAAKDQILEBAICBtG/fXo4dOybPPvusu4cCAABQKJDYAADAYEqVKiXLly+Xnj17unsoAAAAbkdiAwAAN+jSpYuYTCaL4u/vL1WrVpUePXrItGnTJCYmxurynp6e8vXXX0vLli0LcNQAAACFD4kNAAAKiVu3bsn58+dl48aNMnbsWKlataq8+uqrkpycrNve29tb5s6dKx4ejh3Ovb295bnnnpPPPvtMjhw5IlevXhWz2Szx8fHy+++/yzfffCN9+/YVPz8/h/oLCAgQpZSmbNy40aJdUFCQjBs3TiIjIyUhIUHMZrNcuXJF9u3bJ+PHj5eHHnrIofVl5+XlJU8//bRERETInj175PLly5KcnCwZGRmSmJgop06dku+++07eeustqVSpktP93+fqbQYAAPKBKuQ6duyoRIRCoVAoFMOVgIAAq8e3zp07O9xP7dq11dWrV6321b9/f5vLm0wm9fbbb9vsI7vY2FjVp08fu+MqVqyY7vKRkZFZbcLDw1ViYqLN9SUkJKhnnnnGoW3h4eGhhgwZoq5du+bQZ1FKKbPZrD777DNVunRph7d5fm0zCoVCoVCMViZOnOjwMddN9pDYoFAoFAoln4qrEhsiolq0aKHS09N1+zp9+rTV5UqWLKk2b96cq2Pw9OnT7Y7LbDZrljtx4oQSEfXss8+qzMxMh9aVkZGhevToYXNdxYsXV19//XWuPotSSv3555+qSpUqdj9Tfm8zCoVCoVCMVIyQ2OBWFAAADGDfvn2ydOlS3fdq1qwpTZo00dR7eHjIihUrpEuXLrla5zvvvCOjRo2y2SY1NVVTV6pUKalevbosWrRITCaTQ+vy9PSUBQsWSKlSpay2mTBhQp6eBlO9enXZvHmzeHt7W21TENsMAAC4FokNAAAMYtq0aVbfe+KJJzR1I0aMkB49emjqk5OTZeTIkVKtWjXx8vKSkJAQefXVV+Xq1auatpMnT5Zq1apZXW9GRoamrkSJEjJt2jSn550ICQmRfv366b4XEBAgo0eP1tTHxMTIa6+9JjVr1pQSJUqIl5eXlC9fXnr16iUHDhzQtK9bt668+eabVsdQENsMAAC4mLuvGbGHW1EoFAqFYtTiyltR7pfo6Gjd/latWmXRrlSpUio+Pl7Tzmw2qxYtWuj2Xa1aNXX9+nXNMsuWLbM6Hr11ZGZmZt2CcujQIdW1a1fl7++v/P39VdeuXdWJEyesbpft27frruf555/Xbd+8eXOrY/Pz81OHDh3SLHPy5End9gW1zSgUCoVCMVLhVhQAAOBSkZGRuvU5rxB45ZVXJCgoSNPuq6++kn379un2ce7cOfnoo4809f/4xz+cuvri/uNrd+7cKS1btpTNmzdLUlKSJCUlyebNm6VNmzZy6dIl3WX/9re/6dZbuwLixIkTVseRkpIiM2fOlOvXr8vRo0dl8+bN8tlnn8ny5cvFy8tL096d2wwAAOQeiQ0AAAwkLi5Ot75s2bIWr3v16qXbbu3atTb7/+abbzR1vr6+0rVrVwdHeM/t27elf//+kpaWpnnv+vXrMnXqVN3lAgMDpUyZMg6v54UXXrD5/ooVK6Rs2bLSoEED6datm7z++usyefJkMZvNmrbu3mYAACB3SGwAAGAg169f16339fXN+rlYsWK6k4mKiJw6dcpm/xcuXJCbN29q6ps2berEKO/9s2/tqgwRkY0bN1p9r3Tp0pq68+fP67adO3eurFu3TsLDwzXJHWcUhm0GAAByp5i7BwAAABzn4+OjW599Es8qVapYbXfmzJlcrffRRx91qv3WrVttvn/x4kXJzMwUDw/tORa9p5Zs3rxZ0tLSNO+ZTCbp2bOn9OzZU5RScvr0admzZ4/s3r1bdu3aJefOnXNovIVhmwEAgNzhig0AAAwkMDBQtz45OTnr5/Lly7t8vc4+5eOPP/6w+X5mZqbEx8frvqf3iNiEhASZMmWKzT5NJpPUrl1bXn75ZVm8eLFER0fL+fPnJSIiQpo1a2Zz2cKwzQAAQO6Q2AAAwEBq1KihW5/9to8SJUq4fL2lSpVyqr3erRk53bp1y6k+p0yZInPmzHFqmcqVK8vgwYNl//79sn79egkJCdFtVxi2GQAAyB0SGwAAGISnp6e0bt1a973Tp09n/aw3MWZe+fv7O9X+7t27Lh9DZmamDBs2TLp06SJRUVFOL9+jRw+JiorSTQ4Vhm0GAAByh8QGAAAG8eSTT1q9CmDv3r1ZP9+4ccNqH6GhoVmPY3WmFKarD7Zu3SrNmjWTRx99VEaPHi3btm2T27dvO7RsxYoVZdWqVZrbXYr6NgMAoCgjsQEAgEGMGjVKt/7u3bvyww8/ZL1OSEiw2kdwcLDLx+Uuv//+u8yYMUM6deokpUuXlqZNm8qwYcNk+fLlcvnyZavLNW7cWNq3b29R96BsMwAAiiISGwAAGEB4eLh06NBB970tW7ZIXFxc1uuYmBirj4XNj0kyC4OMjAz59ddfZc6cOfLCCy9IaGiodOzY0eqjWsPCwixeP4jbDACAooLEBgAAhVyjRo1k4cKFuu8ppWTixIma+uy3pmTXqlUrl46tsFJKyfbt26VDhw6SmZmpeb9ixYqaugd9mwEAYFQkNgAAKKRMJpP069dPfv75ZwkICNBts3btWjl06JCmftOmTbrt+/fvL15eXlbX2blzZ0lKSpIzZ87IL7/8IqtXr5a5c+dqrnAoSCEhIdK3b1/517/+JcuXL5eoqCi5evWq1W2S3cWLF3UfK6s3J0dR2mYAADxQVCHXsWNHJSIUCoVCoRiuBAQEWD2+de7cWdPeZDKpwMBA1aBBAzV8+HB16NAhm8fImJgYVaFCBd11+/n5qYSEBN3lZs+erbtMiRIl1IEDBzTtMzMz1WOPPaa7THx8vO46QkND7W6fs2fP6i77yCOPWLRr2rSpU58je2nYsKHKzMzULPvWW2+5bZtRKBQKhWKkMnHiRN1jYyGyh8QGhUKhUCj5VGwlNvLqzp07qkmTJjbXP3bsWKvLf/vtt6p58+bKz89PBQUFqc6dO6t9+/bptl28eLHVdRREYkNErCZ5vv76a/XUU0+pkJAQ5evrq4oVK6bKlCmjGjVqpEaPHq3i4uI0y5jNZhUSEuK2bUahUCgUipEKiQ0XILFBoVAoFKOW/EpsxMXFqSeeeMLu+j08PNSOHTvytK4zZ84of39/q+soqMRG69atVUZGRp4+y30TJkxw6zajUCgUCsVIxQiJDebYAADAQPbu3SuNGzeWnTt32m2bmZkpvXv3lh9//DFX6zp58qQ88cQTkpSUlKvlXSkyMlIGDBgg6enpeepn3rx58uGHH1p9vyhtMwAAHhQkNgAAMID9+/fLU089Ja1atZKLFy86vFxiYqJ06dJF3n33Xblx44ZDy6Smpsrs2bOlcePGcunSpdwO2eWWL18uLVu2lH379jm97KlTp6RXr14ydOhQuXv3rs22RWmbAQDwICjm7gEAAID/MZvNEh8fL9euXZOzZ8/Kzp07ZceOHXLy5Mlc95mRkSEffvihzJkzR3r16iVPPvmkNG7cWMqVKycBAQGSkpIiCQkJcuzYMdm5c6csX75crl275sJP5ToHDx6Uli1bSuPGjaVbt27SokULqVatmgQHB4ufn594enrKrVu3JDExUU6ePCm//fabrF+/3ulkSFHaZgAAFHUmpZRy9yBs6dSpk2zbts3dwwAAAAAA4IEzceJEmTRpkruHYctebkUBAAAAAACGRWIDAAAAAAAYFokNAAAAAABgWCQ2AAAAAACAYZHYAAAAAAAAhkViAwAAAAAAGBaJDQAAAAAAYFgkNgAAAAAAgGGR2AAAAAAAAIZFYgMAAAAAABgWiQ0AAAAAAGBYJDYAAAAAAIBhkdgAAAAAAACGRWIDAAAAAAAYFokNAAAAAABgWCQ2AAAAAACAYZHYAAAAAAAAhkViAwAAAAAAGBaJDQAAAAAAYFgkNgAAAAAAgGGR2AAAAAAAAIZFYgMAAAAAABgWiQ0AAAAAAGBYJDYAAAAAAIBhkdgAAAAAAACGRWIDAAAAAAAYFokNAAAAAABgWCQ2AAAAAACAYZHYAAAAAAAAhkViAwAAAAAAGBaJDQAAAAAAYFgkNgAAAAAAgGGR2AAAAAAAAIZFYgMAAAAAABgWiQ0AAAAAAGBYJDYAAAAAAIBhkdgAAAAAAACGRWIDAAAAAAAYFokNAAAAAABgWCQ2AAAAAACAYZHYAAAAAAAAhkViAwAAAAAAGBaJDQAAAAAAYFgkNgAAAAAAgGGR2AAAAAAAAIZFYgMAAAAAABgWiQ0AAAAAAGBYJDYAAAAAAIBhkdgAAAAAAACGRWIDAAAAAAAYFokNAAAAAABgWCQ2AAAAAACAYZHYAAAAAAAAhlXM3QPIq4CAAAkJCXH3MAAAeOD8+eefYjabrb5ftmxZKVeuXAGOCAAAOMve8dwIDJ/Y6NWrlyxatMjdwwAA4IFTt25d+eOPP6y+P3ToUJk0aVLBDQgAADjN3vHcCLgVBQAAAAAAGBaJDQAAAAAAYFgkNgAAAAAAgGGR2AAAAAAAAIZFYgMAAAAAABgWiQ0AAAAAAGBYJDYAAAAAAIBhkdgAAAAAAACGRWIDAAAAAAAYFokNAAAAAABgWCQ2AAAAAACAYZHYAAAAAAAAhkViAwAAAAAAGBaJDQAAAAAAYFgkNgAAAAAAgGGR2AAAAAAAAIZFYgMAAAAAABgWiQ0AAAAAAGBYJDYAAAAAAIBhkdgAAAAAAACGRWIDAAAAAAAYFokNAAAAAABgWCQ2AAAAAACAYZHYAAAAAAAAhkViAwAAAAAAGBaJDQAAAAAAYFgkNgAAAAAAgGGR2AAAAAAAAIZFYgMPtI0bN4rJZMoqf/31l7uHBCd06NDBYv+ZTCZ5+eWX3T0sIM/69eun+W537drV3cMCHhjEB8ZGfAB34zhe8EhsuMD8+fMtvrS//PKLu4cEFHmff/65/PjjjxZ15cuXl1mzZlm0yXlQuV++//57h9c1c+ZMzfJjx4512WeBdatXr7a6D50pPj4+VteRnp4ua9askUGDBkmDBg2kXLly4uXlJSVLlpSKFStK27ZtZeTIkbJv3748f5558+bpjq98+fIW7T755BMpV66cRd2WLVvkyy+/zPMYcE9CQoJ8++23MnjwYGnWrJlUr15d/P39xcfHRypWrCgNGzaU8PBwiYiIkLNnz7p7uAAcZC8+IDYo+pYtWyb+/v6a/TNz5kyn+4qNjZUPP/xQwsLCpFKlSlKiRAkpVaqU1KhRQ/r27StfffWVZGRkaJbjOF7wSGygQGRkZIivr6+YTCaZP3++u4cDg0tISJDRo0dr6mfNmiVlypRxqI933nlH0tPTXT00GMz69eulWrVqEh4eLosXL5ajR49KfHy8pKenS0pKily+fFl2794ts2bNkpYtW0qrVq3kjz/+yNW6/vrrLxkzZoxDbcuWLSszZszQ1I8cOVISExNztX7cExMTI//85z+lQoUK0qdPH1mwYIFERUXJuXPn5NatW5KWliaXL1+WI0eOyJo1a+SNN96QmjVrSufOnV2S3MqronY8LWqfB+6V1/iA2MDYbt68Kc8//7y8+OKLcuvWrTz3N23aNHn44Yfl3XfflR07dsilS5ckNTVVkpOTJTo6WlatWiX9+/eX+vXrS1RUlMWyHMcLHokNFIjjx4/LnTt33D0MFBGTJk2SGzduWNQ1a9ZM+vbt63AfZ86ckTlz5rh6aDCQOXPmyNNPPy0xMTEOL7N3715p3ry5HDhwwKl1KaVk4MCBkpyc7PAyL774ojRs2NCi7vr16zJ58mSn1o3/Wbp0qTz88MMyd+5cSUtLc2rZH374QVq2bCmDBw926z8+Re14WtQ+D9wrr/EBsYFx/fLLL9KgQQNZuXKlS/p75513ZOzYsXL79m27bU+dOiVhYWGyf/9+i3qO4wWLxAYKxK+//uruIaCIuHDhgu5ZvWnTponJZHKqr8mTJ0tCQoKrhoZCzMPD8nD322+/yVtvvZWrvm7duiXPPvusU/8YR0REyM6dO51aj4eHh3z44Yea+jlz5sjly5ed6gsiY8eOlQEDBkhqampWXVBQkAwZMkTWr18vZ8+elZs3b0pqaqpcuHBBdu/eLRMmTJDatWtb9LNgwQIJCwuTpKSkgv4IIlL0jqdF7fPAfVwVHxAbGEtGRoZMnDhR2rVrJ+fPn3dJn6tWrXL6tpWkpCQJDw+3ODZwHC9YJDZQIAhc4CqzZs3SnC1t1qyZtGvXzum+bty4IZMmTXLNwJAvwsPDRSnlVFm9erWmn4EDB1q8njJlimRmZmravfjii3Ls2DFJS0uTmzdvysaNG6VOnTqadn/99ZfDZ4XOnTtncQuKMwF2ly5dpEGDBhZ1ZrNZPv74Y4f7gMjChQtl2rRpWa9NJpOMGjVK/vzzT5k3b5706NFDatSoIf7+/uLt7S2VKlWSxx9/XN5//305fvy4fP755+Lv75+1/M8//6z5ThWUonY8LWqfB+7jqviA2MA4Ll++LG3atJH3339f7t69m1VfoUIF8fPzy1WfGRkZureNPvbYY7Jz505JTk6W+Ph4mT9/vpQoUcKizaVLl2T27NkWdRzHCw6JDRSIgwcPunsIKAKSk5Nl0aJFmvoRI0bkus+IiAg5depUXoaFQiQhIUGGDh1qUffQQw/JBx98kPU6MzNTtmzZolm2efPmsnTpUqlfv754eXmJv7+/dOvWTdatWyeenp6a9lu3brU7HqWUDBo0yOIWlKefftqZj6T7/f7ss8+4fN9BJ06ckGHDhmW9LlasmCxdulRmzJghpUuXtru8p6enDBo0SH7++WeLSV7XrFkjc+fOzZcx21LUjqdF7fPAPVwdHxAbGMOePXs0cx/16dNHjh07JgEBAbnqc8OGDZorP/z9/WXbtm3Srl078fPzk6CgIHn99dflP//5j2b5+fPnayYT5TheMEhsFJAlS5Zkzchbq1atrHqllHz33XfSqVMneeihh6R48eISEBAgjz76qLz55pty5swZq33OmDEjq8/q1atn1cfHx8u//vUvadasmVSoUEG8vb2lQoUK8vjjj8vs2bPl5s2bVvucOnVqVp/FihVz6LN9/PHHustkf1pM9gl1hgwZYjFDcV7O1pjNZvnmm2+kX79+8uijj0pgYKAUL15cSpQoISEhIfL444/LmDFj5LfffnOov/tnUjMyMmTRokXSqVMnqV69uvj4+EiZMmWkfv368tZbb8mff/7pUH93796VTZs2yaBBg6Rhw4YSFBQkXl5e4ufnJ6GhodK5c2eZPn26xMXF2ewnP/Z1TpcvX5YpU6ZIhw4dJDQ0VEqUKCH+/v7y8MMPS7du3WTBggWa+1b1ZP8+mEwmh/75c9SaNWs0cxQEBARIz549He6jVatWFq8zMjJk1KhRLhlfTpGRkTJ+/Hhp2bKlVKlSRXx9faVkyZJStWpVadmypYwfP96hpygtWrRIM7N3p06dst5XSsmqVaukW7duEhwcLMWLF5dy5cpJixYtZOrUqU5NoJWUlCQRERHyzDPPZJ3B9vHxkapVq8oTTzwhn376qd3vqzsNHz5crl69alE3ffp0iwAnLi5O957ZZ599VrfP2rVrS+PGjTX1jlzyOm/ePItbUAIDA53+voWHh0vJkiUt6m7evCnr1693qp8H1eTJky1uG/rXv/4lL7zwgtP9NGjQQL7++muL25omT55scWtLdu48nhIfEB8QHzgXHxAb2GaE2CAgIECWL18uq1atksDAwFz3o3fVZ79+/SQ4OFhT//LLL2uuDLly5Yrs3r3boo7jeAFRhVzHjh2ViFgtAwcOdPcQVUREhMWYdu/erWmzfPnyrPfLly+vlFLqxo0bqlWrVjY/n5eXl1q+fLnueufNm5fVLigoSCml1N69e9VDDz1ks89KlSqpyMhI3T4/+uijrHaenp4Off7Zs2frLpNzu1grUVFRDq0np3379qmHH37YoXWIiAoPD1eJiYkWfWzYsMGizcWLF1VsbKxq0qSJ3f2yYsUKm+M7duyYatiwoUNj8/PzUwsXLrTaV37s6/vS09PV6NGjlZeXl91xBgUFqSVLltjsL/v3QUTUli1bbLZ3RqdOnTRjevXVV622X7hwoab9J598oipXrqyp//HHH632M2PGDE37MWPGWG2/f/9+1aZNG4e/m61bt1Z79+612t/KlSs1yzRv3lwppdT169dVu3btbPZfsWJFdeTIEZvbNjMzU82cOVOVKlXK7nj9/f1tfl/dZcuWLbrbNjMz06JdTEyM7udatmyZ1b67d++uad+sWTOb44mOjlZ+fn4WyyxZskQdOnRI01dwcLDNvl588UXNMk8//bTjGyef1KlTx+Z3ZeLEiW4dX3R0tPL09MwaT926dVVGRkae+hwyZIjFZ4yIiNBt587jKfEB8QHxgfX4gNjgXikKscG3336rRESFhYWpixcvWrxXsWJFzRhnzJhht8/y5ctrlluzZo3V9nr/q7733nuadoX1OH5fYT+eO2APV2wUEC8vr6yfb9++LWazWcLCwmTPnj02lzObzTJw4EDdxwtmP/uRnJwsly5dkq5du9rNmF68eFG6d+8up0+fdvJTFB6nT5+WsLAwOXv2rMPLrF69Wnr27ClKKattTCaTdO7c2e5ZIrPZLP3795cTJ07ovn/mzBlp27atHD582KGxpaSkyKuvvipffPGF7vv5ta8zMjKke/fuMn36dDGbzXbHef36dXn55Zdl6tSpdtu6Wmpqqvz000+a+q5duzrVz61bt2TKlCma+hEjRujOueCsr776Stq0aaPJ1tsSGRkpbdu2laVLl+q+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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 35 + } + ] }, { "cell_type": "markdown", @@ -428,7 +894,7 @@ " loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),\n", " metrics=['accuracy'])" ], - "execution_count": null, + "execution_count": 36, "outputs": [] }, { @@ -449,7 +915,11 @@ { "cell_type": "code", "metadata": { - "id": "A0adp_qwA4Kg" + "id": "A0adp_qwA4Kg", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "999eb875-80ea-44e0-900e-64ecd255c053" }, "source": [ "history = model.fit(\n", @@ -460,8 +930,25 @@ " validation_data=(valid_images, valid_labels)\n", ")" ], - "execution_count": null, - "outputs": [] + "execution_count": 38, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch 1/5\n", + "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.8044 - loss: 9.6828 - val_accuracy: 0.7917 - val_loss: 11.1440\n", + "Epoch 2/5\n", + "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.8054 - loss: 10.1757 - val_accuracy: 0.7772 - val_loss: 13.2141\n", + "Epoch 3/5\n", + "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.8060 - loss: 9.9181 - val_accuracy: 0.7809 - val_loss: 11.4187\n", + "Epoch 4/5\n", + "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.8095 - loss: 9.4431 - val_accuracy: 0.7621 - val_loss: 17.4376\n", + "Epoch 5/5\n", + "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.8048 - loss: 10.4435 - val_accuracy: 0.7898 - val_loss: 12.2043\n" + ] + } + ] }, { "cell_type": "markdown", @@ -485,13 +972,64 @@ { "cell_type": "code", "metadata": { - "id": "XcDRhkVWD168" + "id": "XcDRhkVWD168", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "7896cac5-dcef-4248-b2a3-7fbcbe0c41ea" }, "source": [ "model.predict(train_images[0:10])" ], - "execution_count": null, - "outputs": [] + "execution_count": 39, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 162ms/step\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[ -406.26605 , -810.9323 , -245.22408 , -408.96628 ,\n", + " -433.6929 , 361.1237 , -176.61609 , 338.9754 ,\n", + " 58.718292, 530.6108 ],\n", + " [ 218.37871 , -388.85202 , 90.183464, -24.636917,\n", + " -214.07404 , -1627.0286 , 35.187714, -2225.3076 ,\n", + " -226.93773 , -1239.6675 ],\n", + " [ 70.7416 , -23.040031, 33.486485, 66.72533 ,\n", + " 13.267202, -557.6654 , 10.02778 , -575.08093 ,\n", + " -99.35069 , -336.0345 ],\n", + " [ 162.024 , 82.8766 , 153.49939 , 181.7207 ,\n", + " 67.74914 , -834.94104 , 130.10194 , -1216.4783 ,\n", + " -144.43387 , -827.5984 ],\n", + " [ 159.403 , 68.476814, 76.09903 , 171.12115 ,\n", + " 70.943825, -1045.7615 , 36.534264, -810.8569 ,\n", + " -60.227158, -1148.3757 ],\n", + " [ 17.732721, -173.01819 , 262.7382 , -72.45895 ,\n", + " 108.93694 , -1121.0135 , 41.596664, -1926.2325 ,\n", + " -146.07317 , -1275.9569 ],\n", + " [ -217.902 , -277.93948 , -154.54495 , -177.51439 ,\n", + " -230.92055 , 103.68795 , -197.71262 , 253.50223 ,\n", + " 22.665834, 56.596657],\n", + " [ -104.23269 , -303.87686 , 225.72911 , -369.8115 ,\n", + " 234.82683 , -1584.358 , -59.033424, -2176.585 ,\n", + " -134.48302 , -1218.0953 ],\n", + " [ -58.612274, -566.5974 , -137.47835 , -220.60683 ,\n", + " -298.25684 , 474.15652 , -93.56001 , 33.72026 ,\n", + " -102.94882 , 202.78635 ],\n", + " [ -78.46059 , -498.6948 , 46.64348 , -197.15094 ,\n", + " -112.02182 , 868.1138 , -17.570368, -21.103134,\n", + " 114.397484, 200.15775 ]], dtype=float32)" + ] + }, + "metadata": {}, + "execution_count": 39 + } + ] }, { "cell_type": "markdown", @@ -522,7 +1060,12 @@ { "cell_type": "code", "metadata": { - "id": "7wiFSYdcM4Nt" + "id": "7wiFSYdcM4Nt", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 882 + }, + "outputId": "bd693768-6c60-44b3-f20c-1b528719778b" }, "source": [ "data_idx = 8675 # The question number to study with. Feel free to change up to 59999.\n", @@ -541,8 +1084,43 @@ "\n", "print(\"correct answer:\", train_labels[data_idx])" ], - "execution_count": null, - "outputs": [] + "execution_count": 40, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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\n" + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 148ms/step\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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\n" + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "correct answer: 6\n" + ] + } + ] }, { "cell_type": "markdown", From 37b3c416d8bc9febeb582a035cf3fb256702e315 Mon Sep 17 00:00:00 2001 From: johnwhitegm Date: Mon, 4 May 2026 20:58:19 -0400 Subject: [PATCH 03/11] Created using Colab --- building-a-brain/BuildingABrain.ipynb | 664 ++------------------------ 1 file changed, 47 insertions(+), 617 deletions(-) diff --git a/building-a-brain/BuildingABrain.ipynb b/building-a-brain/BuildingABrain.ipynb index 1ec2eae..d10ec62 100644 --- a/building-a-brain/BuildingABrain.ipynb +++ b/building-a-brain/BuildingABrain.ipynb @@ -41,12 +41,7 @@ { "cell_type": "code", "metadata": { - "id": "Jj9625DV7oKS", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 336 - }, - "outputId": "385cfabb-dbbd-43c0-ca60-39b705fb3ff2" + "id": "Jj9625DV7oKS" }, "source": [ "from IPython.display import HTML\n", @@ -59,27 +54,8 @@ "referrerpolicy=\"strict-origin-when-cross-origin\">\n", "\"\"\")" ], - "execution_count": 16, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "" - ], - "text/html": [ - "\n", - "\n" - ] - }, - "metadata": {}, - "execution_count": 16 - } - ] + "execution_count": null, + "outputs": [] }, { "cell_type": "markdown", @@ -95,30 +71,15 @@ { "cell_type": "code", "metadata": { - "id": "boTcxf3jUGum", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "d119a6a7-7841-40db-ae7f-895e4d7398cf" + "id": "boTcxf3jUGum" }, "source": [ "import tensorflow as tf\n", "\n", "tf.config.list_physical_devices('GPU')" ], - "execution_count": 17, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]" - ] - }, - "metadata": {}, - "execution_count": 17 - } - ] + "execution_count": null, + "outputs": [] }, { "cell_type": "markdown", @@ -144,33 +105,14 @@ { "cell_type": "code", "metadata": { - "id": "ijLiERH_n6q_", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "0b47c992-29f7-4541-c61c-f233bd88ae86" + "id": "ijLiERH_n6q_" }, "source": [ "fashion_mnist = tf.keras.datasets.fashion_mnist\n", "(train_images, train_labels), (valid_images, valid_labels) = fashion_mnist.load_data()" ], - "execution_count": 18, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-labels-idx1-ubyte.gz\n", - "\u001b[1m29515/29515\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 0us/step\n", - "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-images-idx3-ubyte.gz\n", - "\u001b[1m26421880/26421880\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 0us/step\n", - "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-labels-idx1-ubyte.gz\n", - "\u001b[1m5148/5148\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 0us/step\n", - "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-images-idx3-ubyte.gz\n", - "\u001b[1m4422102/4422102\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 0us/step\n" - ] - } - ] + "execution_count": null, + "outputs": [] }, { "cell_type": "markdown", @@ -186,12 +128,7 @@ { "cell_type": "code", "metadata": { - "id": "sogb0Tt1xfni", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 430 - }, - "outputId": "828cee7e-54f1-4c88-ee95-110a6e01b56e" + "id": "sogb0Tt1xfni" }, "source": [ "import matplotlib.pyplot as plt\n", @@ -205,19 +142,8 @@ "plt.grid(False)\n", "plt.show()" ], - "execution_count": 19, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/plain": [ - "
" - ], - "image/png": "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\n" - }, - "metadata": {} - } - ] + "execution_count": null, + "outputs": [] }, { "cell_type": "markdown", @@ -246,28 +172,13 @@ { "cell_type": "code", "metadata": { - "id": "CQdadtT11iI8", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "398a0772-8357-4406-830f-e51d89eca2cc" + "id": "CQdadtT11iI8" }, "source": [ "train_labels[data_idx]" ], - "execution_count": 20, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "np.uint8(9)" - ] - }, - "metadata": {}, - "execution_count": 20 - } - ] + "execution_count": null, + "outputs": [] }, { "cell_type": "markdown", @@ -283,12 +194,7 @@ { "cell_type": "code", "metadata": { - "id": "ZNrxxfNk3it1", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 430 - }, - "outputId": "3d41b1e3-50b7-4373-e589-f6dcffa4eea9" + "id": "ZNrxxfNk3it1" }, "source": [ "import matplotlib.pyplot as plt\n", @@ -302,45 +208,19 @@ "plt.grid(False)\n", "plt.show()" ], - "execution_count": 21, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/plain": [ - "
" - ], - "image/png": "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\n" - }, - "metadata": {} - } - ] + "execution_count": null, + "outputs": [] }, { "cell_type": "code", "metadata": { - "id": "AeJ68DMn4f3g", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "0d137043-801f-48d3-c830-a5e913219322" + "id": "AeJ68DMn4f3g" }, "source": [ "valid_labels[data_idx]" ], - "execution_count": 22, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "np.uint8(7)" - ] - }, - "metadata": {}, - "execution_count": 22 - } - ] + "execution_count": null, + "outputs": [] }, { "cell_type": "markdown", @@ -382,222 +262,14 @@ { "cell_type": "code", "metadata": { - "id": "dHq93yV8_FWR", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 68 - }, - "outputId": "dd8a1fcb-beac-4848-dcf2-cd8f282c4169" + "id": "dHq93yV8_FWR" }, "source": [ "# 28 lists with 28 values each\n", "valid_images[data_idx]" ], - "execution_count": 23, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array([[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 155, 133, 0, 0, 1, 0, 0, 3, 0, 0,\n", - " 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0,\n", - " 1, 0, 0, 175, 235, 35, 0, 3, 0, 5, 2, 3, 1,\n", - " 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,\n", - " 0, 0, 93, 219, 220, 32, 0, 0, 0, 0, 0, 0, 0,\n", - " 1, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0,\n", - " 0, 147, 218, 159, 218, 28, 0, 2, 0, 82, 202, 115, 0,\n", - " 0, 1],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0,\n", - " 144, 248, 155, 105, 174, 87, 0, 0, 0, 233, 253, 213, 8,\n", - " 0, 1],\n", - " [ 1, 0, 0, 0, 1, 2, 2, 0, 0, 0, 0, 99, 233,\n", - " 119, 81, 89, 140, 183, 208, 139, 74, 218, 223, 184, 189, 145,\n", - " 0, 0],\n", - " [ 0, 1, 2, 3, 5, 0, 0, 0, 0, 173, 153, 195, 97,\n", - " 157, 220, 228, 213, 189, 182, 189, 220, 213, 174, 185, 186, 198,\n", - " 0, 0],\n", - " [ 1, 0, 0, 0, 0, 10, 129, 202, 198, 129, 149, 84, 124,\n", - " 236, 221, 209, 226, 221, 166, 186, 179, 178, 205, 177, 206, 196,\n", - " 0, 0],\n", - " [ 0, 0, 6, 49, 80, 148, 203, 181, 203, 164, 145, 178, 159,\n", - " 138, 174, 186, 162, 169, 177, 200, 214, 206, 178, 179, 205, 227,\n", - " 6, 0],\n", - " [ 3, 104, 128, 126, 124, 105, 85, 75, 99, 181, 140, 141, 185,\n", - " 179, 181, 183, 185, 204, 227, 255, 224, 226, 234, 227, 159, 198,\n", - " 198, 0],\n", - " [ 62, 150, 115, 111, 91, 117, 131, 102, 129, 120, 153, 176, 216,\n", - " 232, 238, 238, 211, 242, 173, 26, 0, 54, 104, 20, 0, 0,\n", - " 48, 16],\n", - " [116, 179, 173, 173, 202, 188, 200, 228, 179, 150, 100, 89, 164,\n", - " 39, 0, 82, 129, 17, 0, 0, 0, 0, 0, 0, 25, 11,\n", - " 0, 12],\n", - " [ 10, 122, 108, 148, 115, 145, 148, 79, 38, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 9, 14, 7, 18, 9, 5, 0, 12,\n", - " 0, 0],\n", - " [ 0, 5, 57, 67, 0, 0, 0, 1, 0, 0, 8, 8, 71,\n", - " 55, 11, 32, 30, 30, 17, 4, 3, 9, 15, 17, 29, 37,\n", - " 92, 106],\n", - " [ 0, 0, 0, 58, 50, 142, 169, 80, 144, 156, 148, 159, 152,\n", - " 156, 136, 151, 142, 70, 139, 161, 98, 131, 145, 60, 141, 121,\n", - " 77, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0]], dtype=uint8)" - ], - "text/html": [ - "\n", - "
ndarray (28, 28) 
array([[  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
-              "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
-              "          0,   0],\n",
-              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
-              "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
-              "          0,   0],\n",
-              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
-              "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
-              "          0,   0],\n",
-              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
-              "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
-              "          0,   0],\n",
-              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
-              "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
-              "          0,   0],\n",
-              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
-              "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
-              "          0,   0],\n",
-              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
-              "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
-              "          0,   0],\n",
-              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
-              "          0,   0,   0, 155, 133,   0,   0,   1,   0,   0,   3,   0,   0,\n",
-              "          0,   0],\n",
-              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   5,   0,   0,   0,\n",
-              "          1,   0,   0, 175, 235,  35,   0,   3,   0,   5,   2,   3,   1,\n",
-              "          0,   0],\n",
-              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   1,   0,   0,\n",
-              "          0,   0,  93, 219, 220,  32,   0,   0,   0,   0,   0,   0,   0,\n",
-              "          1,   0],\n",
-              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   2,   2,   0,\n",
-              "          0, 147, 218, 159, 218,  28,   0,   2,   0,  82, 202, 115,   0,\n",
-              "          0,   1],\n",
-              "       [  0,   0,   0,   0,   0,   0,   0,   0,   2,   0,   0,   0,   0,\n",
-              "        144, 248, 155, 105, 174,  87,   0,   0,   0, 233, 253, 213,   8,\n",
-              "          0,   1],\n",
-              "       [  1,   0,   0,   0,   1,   2,   2,   0,   0,   0,   0,  99, 233,\n",
-              "        119,  81,  89, 140, 183, 208, 139,  74, 218, 223, 184, 189, 145,\n",
-              "          0,   0],\n",
-              "       [  0,   1,   2,   3,   5,   0,   0,   0,   0, 173, 153, 195,  97,\n",
-              "        157, 220, 228, 213, 189, 182, 189, 220, 213, 174, 185, 186, 198,\n",
-              "          0,   0],\n",
-              "       [  1,   0,   0,   0,   0,  10, 129, 202, 198, 129, 149,  84, 124,\n",
-              "        236, 221, 209, 226, 221, 166, 186, 179, 178, 205, 177, 206, 196,\n",
-              "          0,   0],\n",
-              "       [  0,   0,   6,  49,  80, 148, 203, 181, 203, 164, 145, 178, 159,\n",
-              "        138, 174, 186, 162, 169, 177, 200, 214, 206, 178, 179, 205, 227,\n",
-              "          6,   0],\n",
-              "       [  3, 104, 128, 126, 124, 105,  85,  75,  99, 181, 140, 141, 185,\n",
-              "        179, 181, 183, 185, 204, 227, 255, 224, 226, 234, 227, 159, 198,\n",
-              "        198,   0],\n",
-              "       [ 62, 150, 115, 111,  91, 117, 131, 102, 129, 120, 153, 176, 216,\n",
-              "        232, 238, 238, 211, 242, 173,  26,   0,  54, 104,  20,   0,   0,\n",
-              "         48,  16],\n",
-              "       [116, 179, 173, 173, 202, 188, 200, 228, 179, 150, 100,  89, 164,\n",
-              "         39,   0,  82, 129,  17,   0,   0,   0,   0,   0,   0,  25,  11,\n",
-              "          0,  12],\n",
-              "       [ 10, 122, 108, 148, 115, 145, 148,  79,  38,   0,   0,   0,   0,\n",
-              "          0,   0,   0,   0,   0,   9,  14,   7,  18,   9,   5,   0,  12,\n",
-              "          0,   0],\n",
-              "       [  0,   5,  57,  67,   0,   0,   0,   1,   0,   0,   8,   8,  71,\n",
-              "         55,  11,  32,  30,  30,  17,   4,   3,   9,  15,  17,  29,  37,\n",
-              "         92, 106],\n",
-              "       [  0,   0,   0,  58,  50, 142, 169,  80, 144, 156, 148, 159, 152,\n",
-              "        156, 136, 151, 142,  70, 139, 161,  98, 131, 145,  60, 141, 121,\n",
-              "         77,   0],\n",
-              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
-              "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
-              "          0,   0],\n",
-              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
-              "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
-              "          0,   0],\n",
-              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
-              "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
-              "          0,   0],\n",
-              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
-              "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
-              "          0,   0],\n",
-              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
-              "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
-              "          0,   0],\n",
-              "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
-              "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
-              "          0,   0]], dtype=uint8)
" - ] - }, - "metadata": {}, - "execution_count": 23 - } - ] + "execution_count": null, + "outputs": [] }, { "cell_type": "markdown", @@ -621,29 +293,14 @@ { "cell_type": "code", "metadata": { - "id": "SIgbDeIbqELs", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "9c1efbcc-b259-4093-c675-26779293ce39" + "id": "SIgbDeIbqELs" }, "source": [ "number_of_classes = train_labels.max() + 1\n", "number_of_classes" ], - "execution_count": 24, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "np.uint8(10)" - ] - }, - "metadata": {}, - "execution_count": 24 - } - ] + "execution_count": null, + "outputs": [] }, { "cell_type": "code", @@ -657,7 +314,7 @@ " tf.keras.layers.Dense(int(number_of_classes))\n", "])" ], - "execution_count": 30, + "execution_count": null, "outputs": [] }, { @@ -674,96 +331,13 @@ { "cell_type": "code", "metadata": { - "id": "wYSHZNPEA1tb", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 193 - }, - "outputId": "85d482b0-286a-413a-f9a8-99d19325ca49" + "id": "wYSHZNPEA1tb" }, "source": [ "model.summary()" ], - "execution_count": 31, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/plain": [ - "\u001b[1mModel: \"sequential_4\"\u001b[0m\n" - ], - "text/html": [ - "
Model: \"sequential_4\"\n",
-              "
\n" - ] - }, - "metadata": {} - }, - { - "output_type": "display_data", - "data": { - "text/plain": [ - "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n", - "┃\u001b[1m \u001b[0m\u001b[1mLayer (type) \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m Param #\u001b[0m\u001b[1m \u001b[0m┃\n", - "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n", - "│ flatten_5 (\u001b[38;5;33mFlatten\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m784\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", - "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", - "│ dense_4 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m) │ \u001b[38;5;34m7,850\u001b[0m │\n", - "└─────────────────────────────────┴────────────────────────┴───────────────┘\n" - ], - "text/html": [ - "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
-              "┃ Layer (type)                     Output Shape                  Param # ┃\n",
-              "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
-              "│ flatten_5 (Flatten)             │ (None, 784)            │             0 │\n",
-              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
-              "│ dense_4 (Dense)                 │ (None, 10)             │         7,850 │\n",
-              "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
-              "
\n" - ] - }, - "metadata": {} - }, - { - "output_type": "display_data", - "data": { - "text/plain": [ - "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m7,850\u001b[0m (30.66 KB)\n" - ], - "text/html": [ - "
 Total params: 7,850 (30.66 KB)\n",
-              "
\n" - ] - }, - "metadata": {} - }, - { - "output_type": "display_data", - "data": { - "text/plain": [ - "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m7,850\u001b[0m (30.66 KB)\n" - ], - "text/html": [ - "
 Trainable params: 7,850 (30.66 KB)\n",
-              "
\n" - ] - }, - "metadata": {} - }, - { - "output_type": "display_data", - "data": { - "text/plain": [ - "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n" - ], - "text/html": [ - "
 Non-trainable params: 0 (0.00 B)\n",
-              "
\n" - ] - }, - "metadata": {} - } - ] + "execution_count": null, + "outputs": [] }, { "cell_type": "markdown", @@ -777,11 +351,7 @@ { "cell_type": "code", "metadata": { - "id": "00aNzMfrQARw", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "8e40f331-7b39-4001-fbb4-3dfaf7b592ea" + "id": "00aNzMfrQARw" }, "source": [ "image_height = 28\n", @@ -790,19 +360,8 @@ "number_of_weights = image_height * image_width * int(number_of_classes)\n", "number_of_weights" ], - "execution_count": 34, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "7840" - ] - }, - "metadata": {}, - "execution_count": 34 - } - ] + "execution_count": null, + "outputs": [] }, { "cell_type": "markdown", @@ -818,30 +377,13 @@ { "cell_type": "code", "metadata": { - "id": "3wY9VLOKKyKw", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 498 - }, - "outputId": "0f8eeba3-c825-4122-e7a4-501f3873ba70" + "id": "3wY9VLOKKyKw" }, "source": [ "tf.keras.utils.plot_model(model, show_shapes=True)" ], - "execution_count": 35, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "image/png": "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4r23efNmi3KlS5dWISEhytPTUw0fPlzFxcWptLQ0deTIEfXss8/qth0REWHxnvnll1+Up6enRdkGDRqozZs3q8uXL6ukpCS1Z88eFRMTY1GuWrVqKj09Pb+H1OkyMjJUkyZNdPc/Li5OUzY+Pl6FhoZalOvatas6cuSISktLU8nJyWrLli3q4Ycftij39NNPW1weWlSK0xm82hgAACAASURBVH5Xr17dos7cuXNd/RLYVNyHokREROT0pU6dOk5rd/jw4Zr91LukvyjP+8QxxTOOcXYMoxRxjFLEMLkXYhitI0eOaIYjiogKCQlRCQkJVuu48lyuNwQl9+f64MGDuu8/W4pjbODMoShundgQERUaGqquX79us+3Bgwdr6qSkpOQ8l/ckERgYaPMDoJRSX3/9tabO1KlTNc+bISBITEzUtPfDDz8UqL28xyUsLMzucfnrX/9q9bgopdTOnTvVk08+qWrVqqWCg4Ntjn1USqnU1FTl4+OT097IkSM1z7viWL/xxhs5z5UtW1bdvHnTZntKKbVlyxZNm/kdV5xfvXv3tvj89+3b12p5vaDgtddey3m+c+fOFs+PHTvWoh0jQcHUqVN1v5/+/ve/W+1f3vfR/SXv2E9b34P//Oc/LdrNysqyOnfP8ePHNWX79OljUaZq1arq1q1bun3u2LGjRfnPP//c6j4Wprt376p+/frp7nfXrl116+zevVvzT6XRpXnz5ioxMbGQ91Bfcdvvrl27WtR78cUXXbHrhhXnxEZmZqamL927d3da28uWLdO0vW7dOosyxSmxQRyTP86OY5wdwyhFHKMUMYzeQgxzT3R0tEW/pk2bZreeK87l2dnZFvOe5D0v5SexURxjA+bYcKIXX3xRypQpY7NM/fr1NY9tzebcs2dPzWV2ejp27KiZmXbPnj0Gelq8BAcHay5p3LRpk1PbHzRokN3j8sgjj2geJyYmah4/+eSTsnPnTjl16pTcunVLnnnmGZvtlS5dWnM3g4SEBJvlnXGsc98mql+/fprZlq1p166dpp8bNmywW8eZ9MYiP/TQQ/lub+bMmZohYiIic+fOzdedLvQuz6tdu7a89957VuvMmDFDM//BfZ9++qmhbTZu3Fj++te/Wqz38vKyOmN17rss3b17V/d2YcOGDZPg4GCrfc4rP5eAOltmZqb0799f95angYGBVoeMtWjR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PItbUAIDA53+voWHh0vJkiUt6m7evCnr1693qp8H1eTJky1uG/rXv/4lL7zwgtP9NGjQQL7++muL25omT55scWtLdu48nhIfEB8QHzgXHxAb2GaE2CAgIECWL18uq1atksDAwFz3o3fVZ79+/SQ4OFhT//LLL2uuDLly5Yrs3r3boo7jeAFRhVzHjh2ViFgtAwcOdPcQVUREhMWYdu/erWmzfPnyrPfLly+vlFLqxo0bqlWrVjY/n5eXl1q+fLnueufNm5fVLigoSCml1N69e9VDDz1ks89KlSqpyMhI3T4/+uijrHaenp4Off7Zs2frLpNzu1grUVFRDq0np3379qmHH37YoXWIiAoPD1eJiYkWfWzYsMGizcWLF1VsbKxq0qSJ3f2yYsUKm+M7duyYatiwoUNj8/PzUwsXLrTaV37s6/vS09PV6NGjlZeXl91xBgUFqSVLltjsL/v3QUTUli1bbLZ3RqdOnTRjevXVV622X7hwoab9J598oipXrqyp//HHH632M2PGDE37MWPGWG2/f/9+1aZNG4e/m61bt1Z79+612t/KlSs1yzRv3lwppdT169dVu3btbPZfsWJFdeTIEZvbNjMzU82cOVOVKlXK7nj9/f1tfl/dZcuWLbrbNjMz06JdTEyM7udatmyZ1b67d++uad+sWTOb44mOjlZ+fn4WyyxZskQdOnRI01dwcLDNvl588UXNMk8//bTjGyef1KlTx+Z3ZeLEiW4dX3R0tPL09MwaT926dVVGRkae+hwyZIjFZ4yIiNBt587jKfEB8QHxgfX4gNjgXikKscG3336rRESFhYWpixcvWrxXsWJFzRhnzJhht8/y5ctrlluzZo3V9nr/q7733nuadoX1OH5fYT+eO2APV2wUEC8vr6yfb9++LWazWcLCwmTPnj02lzObzTJw4EDdxwtmP/uRnJwsly5dkq5du9rNmF68eFG6d+8up0+fdvJTFB6nT5+WsLAwOXv2rMPLrF69Wnr27ClKKattTCaTdO7c2e5ZIrPZLP3795cTJ07ovn/mzBlp27atHD582KGxpaSkyKuvvipffPGF7vv5ta8zMjKke/fuMn36dDGbzXbHef36dXn55Zdl6tSpdtu6Wmpqqvz000+a+q5duzrVz61bt2TKlCma+hEjRujOueCsr776Stq0aaPJ1tsSGRkpbdu2laVLl+q+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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "execution_count": 35 - } - ] + "execution_count": null, + "outputs": [] }, { "cell_type": "markdown", @@ -894,7 +436,7 @@ " loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),\n", " metrics=['accuracy'])" ], - "execution_count": 36, + "execution_count": null, "outputs": [] }, { @@ -915,11 +457,7 @@ { "cell_type": "code", "metadata": { - "id": "A0adp_qwA4Kg", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "999eb875-80ea-44e0-900e-64ecd255c053" + "id": "A0adp_qwA4Kg" }, "source": [ "history = model.fit(\n", @@ -930,25 +468,8 @@ " validation_data=(valid_images, valid_labels)\n", ")" ], - "execution_count": 38, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Epoch 1/5\n", - "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.8044 - loss: 9.6828 - val_accuracy: 0.7917 - val_loss: 11.1440\n", - "Epoch 2/5\n", - "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.8054 - loss: 10.1757 - val_accuracy: 0.7772 - val_loss: 13.2141\n", - "Epoch 3/5\n", - "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.8060 - loss: 9.9181 - val_accuracy: 0.7809 - val_loss: 11.4187\n", - "Epoch 4/5\n", - "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.8095 - loss: 9.4431 - val_accuracy: 0.7621 - val_loss: 17.4376\n", - "Epoch 5/5\n", - "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.8048 - loss: 10.4435 - val_accuracy: 0.7898 - val_loss: 12.2043\n" - ] - } - ] + "execution_count": null, + "outputs": [] }, { "cell_type": "markdown", @@ -972,64 +493,13 @@ { "cell_type": "code", "metadata": { - "id": "XcDRhkVWD168", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "7896cac5-dcef-4248-b2a3-7fbcbe0c41ea" + "id": "XcDRhkVWD168" }, "source": [ "model.predict(train_images[0:10])" ], - "execution_count": 39, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 162ms/step\n" - ] - }, - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array([[ -406.26605 , -810.9323 , -245.22408 , -408.96628 ,\n", - " -433.6929 , 361.1237 , -176.61609 , 338.9754 ,\n", - " 58.718292, 530.6108 ],\n", - " [ 218.37871 , -388.85202 , 90.183464, -24.636917,\n", - " -214.07404 , -1627.0286 , 35.187714, -2225.3076 ,\n", - " -226.93773 , -1239.6675 ],\n", - " [ 70.7416 , -23.040031, 33.486485, 66.72533 ,\n", - " 13.267202, -557.6654 , 10.02778 , -575.08093 ,\n", - " -99.35069 , -336.0345 ],\n", - " [ 162.024 , 82.8766 , 153.49939 , 181.7207 ,\n", - " 67.74914 , -834.94104 , 130.10194 , -1216.4783 ,\n", - " -144.43387 , -827.5984 ],\n", - " [ 159.403 , 68.476814, 76.09903 , 171.12115 ,\n", - " 70.943825, -1045.7615 , 36.534264, -810.8569 ,\n", - " -60.227158, -1148.3757 ],\n", - " [ 17.732721, -173.01819 , 262.7382 , -72.45895 ,\n", - " 108.93694 , -1121.0135 , 41.596664, -1926.2325 ,\n", - " -146.07317 , -1275.9569 ],\n", - " [ -217.902 , -277.93948 , -154.54495 , -177.51439 ,\n", - " -230.92055 , 103.68795 , -197.71262 , 253.50223 ,\n", - " 22.665834, 56.596657],\n", - " [ -104.23269 , -303.87686 , 225.72911 , -369.8115 ,\n", - " 234.82683 , -1584.358 , -59.033424, -2176.585 ,\n", - " -134.48302 , -1218.0953 ],\n", - " [ -58.612274, -566.5974 , -137.47835 , -220.60683 ,\n", - " -298.25684 , 474.15652 , -93.56001 , 33.72026 ,\n", - " -102.94882 , 202.78635 ],\n", - " [ -78.46059 , -498.6948 , 46.64348 , -197.15094 ,\n", - " -112.02182 , 868.1138 , -17.570368, -21.103134,\n", - " 114.397484, 200.15775 ]], dtype=float32)" - ] - }, - "metadata": {}, - "execution_count": 39 - } - ] + "execution_count": null, + "outputs": [] }, { "cell_type": "markdown", @@ -1060,12 +530,7 @@ { "cell_type": "code", "metadata": { - "id": "7wiFSYdcM4Nt", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 882 - }, - "outputId": "bd693768-6c60-44b3-f20c-1b528719778b" + "id": "7wiFSYdcM4Nt" }, "source": [ "data_idx = 8675 # The question number to study with. Feel free to change up to 59999.\n", @@ -1084,43 +549,8 @@ "\n", "print(\"correct answer:\", train_labels[data_idx])" ], - "execution_count": 40, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/plain": [ - "
" - ], - "image/png": "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\n" - }, - "metadata": {} - }, - { - "output_type": "stream", - "name": "stdout", - "text": [ - "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 148ms/step\n" - ] - }, - { - "output_type": "display_data", - "data": { - "text/plain": [ - "
" - ], - "image/png": "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\n" - }, - "metadata": {} - }, - { - "output_type": "stream", - "name": "stdout", - "text": [ - "correct answer: 6\n" - ] - } - ] + "execution_count": null, + "outputs": [] }, { "cell_type": "markdown", From 8755cbaab25fd2c434283ca8ed725d95aefdf0c8 Mon Sep 17 00:00:00 2001 From: johnwhitegm Date: Mon, 4 May 2026 21:06:28 -0400 Subject: [PATCH 04/11] Created using Colab --- building-a-brain/BuildingABrain.ipynb | 44 +++++++++++++++++++-------- 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/building-a-brain/BuildingABrain.ipynb b/building-a-brain/BuildingABrain.ipynb index d10ec62..6b4f1c3 100644 --- a/building-a-brain/BuildingABrain.ipynb +++ b/building-a-brain/BuildingABrain.ipynb @@ -40,22 +40,42 @@ }, { "cell_type": "code", - "metadata": { - "id": "Jj9625DV7oKS" - }, "source": [ "from IPython.display import HTML\n", "\n", - "HTML(\"\"\"\n", - "\n", - "\"\"\")" + "HTML(\n", + " ''\n", + ")" ], - "execution_count": null, - "outputs": [] + "metadata": { + "id": "viMxZGykqyK6", + "outputId": "33740c4d-6c52-4a1c-cb7d-78bd98efd637", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 336 + } + }, + "execution_count": 2, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ], + "text/html": [ + "" + ] + }, + "metadata": {}, + "execution_count": 2 + } + ] }, { "cell_type": "markdown", From 9949fb9a9e6a9518bed56ac8d954e252da96b66d Mon Sep 17 00:00:00 2001 From: johnwhitegm Date: Mon, 4 May 2026 21:07:44 -0400 Subject: [PATCH 05/11] Created using Colab --- building-a-brain/BuildingABrain.ipynb | 31 ++++++++++++++++++--------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/building-a-brain/BuildingABrain.ipynb b/building-a-brain/BuildingABrain.ipynb index 6b4f1c3..c81fd95 100644 --- a/building-a-brain/BuildingABrain.ipynb +++ b/building-a-brain/BuildingABrain.ipynb @@ -43,24 +43,35 @@ "source": [ "from IPython.display import HTML\n", "\n", - "HTML(\n", - " ''\n", - ")" + " 'referrerpolicy=\"strict-origin-when-cross-origin\">'\n", + " \"\"\n", + ")\n", + "\n", + "HTML(iframe)" ], "metadata": { - "id": "viMxZGykqyK6", - "outputId": "33740c4d-6c52-4a1c-cb7d-78bd98efd637", "colab": { "base_uri": "https://localhost:8080/", "height": 336 - } + }, + "id": "viMxZGykqyK6", + "outputId": "2c19942f-0f86-4b94-8323-79d92bce85d0" }, - "execution_count": 2, + "execution_count": 3, "outputs": [ { "output_type": "execute_result", @@ -73,7 +84,7 @@ ] }, "metadata": {}, - "execution_count": 2 + "execution_count": 3 } ] }, From f39c33a0d26a671caafb78306e063de6a6acad29 Mon Sep 17 00:00:00 2001 From: johnwhitegm Date: Mon, 4 May 2026 21:09:50 -0400 Subject: [PATCH 06/11] Created using Colab --- building-a-brain/BuildingABrain.ipynb | 49 +++++++-------------------- 1 file changed, 13 insertions(+), 36 deletions(-) diff --git a/building-a-brain/BuildingABrain.ipynb b/building-a-brain/BuildingABrain.ipynb index c81fd95..be2aec3 100644 --- a/building-a-brain/BuildingABrain.ipynb +++ b/building-a-brain/BuildingABrain.ipynb @@ -47,46 +47,23 @@ "width = 560\n", "height = 315\n", "\n", - "src = f\"https://www.youtube.com/embed/{video_id}\"\n", - "\n", - "iframe = (\n", - " \"\"\n", - ")\n", + "iframe = f\"\"\"\n", + "\n", + "\"\"\"\n", "\n", "HTML(iframe)" ], "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 336 - }, - "id": "viMxZGykqyK6", - "outputId": "2c19942f-0f86-4b94-8323-79d92bce85d0" - }, - "execution_count": 3, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "" - ], - "text/html": [ - "" - ] - }, - "metadata": {}, - "execution_count": 3 - } - ] + "id": "viMxZGykqyK6" + }, + "execution_count": null, + "outputs": [] }, { "cell_type": "markdown", From 4d832428b35fad6fde53a2171c2d1f3a824c5bea Mon Sep 17 00:00:00 2001 From: johnwhitegm Date: Mon, 4 May 2026 21:11:05 -0400 Subject: [PATCH 07/11] Created using Colab --- building-a-brain/BuildingABrain.ipynb | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/building-a-brain/BuildingABrain.ipynb b/building-a-brain/BuildingABrain.ipynb index be2aec3..74ef79b 100644 --- a/building-a-brain/BuildingABrain.ipynb +++ b/building-a-brain/BuildingABrain.ipynb @@ -44,20 +44,18 @@ "from IPython.display import HTML\n", "\n", "video_id = \"cNxadbrN_aI\"\n", - "width = 560\n", - "height = 315\n", - "\n", - "iframe = f\"\"\"\n", - "\n", - "\"\"\"\n", - "\n", - "HTML(iframe)" + "\n", + "html = (\n", + " f''\n", + ")\n", + "\n", + "HTML(html)" ], "metadata": { "id": "viMxZGykqyK6" From 1d1332d33a3b776d53ebccf335a6c75ae5d6fc41 Mon Sep 17 00:00:00 2001 From: johnwhitegm Date: Mon, 4 May 2026 21:14:36 -0400 Subject: [PATCH 08/11] Created using Colab --- building-a-brain/BuildingABrain.ipynb | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/building-a-brain/BuildingABrain.ipynb b/building-a-brain/BuildingABrain.ipynb index 74ef79b..b5af685 100644 --- a/building-a-brain/BuildingABrain.ipynb +++ b/building-a-brain/BuildingABrain.ipynb @@ -44,16 +44,9 @@ "from IPython.display import HTML\n", "\n", "video_id = \"cNxadbrN_aI\"\n", + "src = \"https://www.youtube.com/embed/\" + video_id\n", "\n", - "html = (\n", - " f''\n", - ")\n", + "html = ''\n", "\n", "HTML(html)" ], From 527216a2e224f14c7ae12d264d8e215cfd33f5fb Mon Sep 17 00:00:00 2001 From: johnwhitegm Date: Mon, 4 May 2026 21:15:53 -0400 Subject: [PATCH 09/11] Created using Colab --- building-a-brain/BuildingABrain.ipynb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/building-a-brain/BuildingABrain.ipynb b/building-a-brain/BuildingABrain.ipynb index b5af685..45e46fc 100644 --- a/building-a-brain/BuildingABrain.ipynb +++ b/building-a-brain/BuildingABrain.ipynb @@ -46,7 +46,11 @@ "video_id = \"cNxadbrN_aI\"\n", "src = \"https://www.youtube.com/embed/\" + video_id\n", "\n", - "html = ''\n", + "html = (\n", + " ''\n", + ")\n", "\n", "HTML(html)" ], From b7110e363c1a19cf13125790f922374a0f05b02e Mon Sep 17 00:00:00 2001 From: johnwhitegm Date: Mon, 4 May 2026 21:17:32 -0400 Subject: [PATCH 10/11] Created using Colab --- building-a-brain/BuildingABrain.ipynb | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/building-a-brain/BuildingABrain.ipynb b/building-a-brain/BuildingABrain.ipynb index 45e46fc..ca58ea2 100644 --- a/building-a-brain/BuildingABrain.ipynb +++ b/building-a-brain/BuildingABrain.ipynb @@ -46,10 +46,18 @@ "video_id = \"cNxadbrN_aI\"\n", "src = \"https://www.youtube.com/embed/\" + video_id\n", "\n", + "tag_open = \"<\" + \"iframe\"\n", + "tag_close = \"<\" + \"/\" + \"iframe\" + \">\"\n", + "\n", "html = (\n", - " ''\n", + " tag_open\n", + " + ' width=\"560\" height=\"315\"'\n", + " + ' src=\"' + src + '\"'\n", + " + ' frameborder=\"0\"'\n", + " + ' allowfullscreen'\n", + " + ' referrerpolicy=\"strict-origin-when-cross-origin\"'\n", + " + \">\"\n", + " + tag_close\n", ")\n", "\n", "HTML(html)" From 91630d1f0e5e5dfc249327ca7aa8b51db23b50be Mon Sep 17 00:00:00 2001 From: johnwhitegm Date: Mon, 4 May 2026 21:53:33 -0400 Subject: [PATCH 11/11] Update README.md --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index 1041a44..bc482f7 100644 --- a/README.md +++ b/README.md @@ -13,3 +13,13 @@ This repository contains notebooks authored by the [NVIDIA DLI](https://nvidia.c ## NVIDIA DLI Catalog If you enjoy these notebooks, we recommend you check out the [DLI's full catalog of courses](nvidia.com/dli) which cover a much broader range of topics, in much greater depth, with dedicated GPU resources and a more sophisticated programming environment. + +## Notes + +This fork includes fixes for: +- Colab YouTube embed issues (Error 153) +- Image rendering inconsistencies +- GitHub notebook preview compatibility +- Keras model initialization errors + +See pull request for full details.