303 lines
69 KiB
Plaintext
303 lines
69 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "slide"
|
|
}
|
|
},
|
|
"source": [
|
|
"### Load the Iris Dataset\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 108,
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "fragment"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import pandas as pd\n",
|
|
"\n",
|
|
"#Load CSV files\n",
|
|
"inputs_train=pd.read_csv('datasets/iris_train.csv',usecols = [0,1,2,3],skiprows = None,header=None).values\n",
|
|
"labels_train = pd.read_csv('datasets/iris_train.csv',usecols = [4],skiprows = None ,header=None).values.reshape(-1)\n",
|
|
"inputs_test=pd.read_csv('datasets/iris_test.csv',usecols = [0,1,2,3],skiprows = None,header=None).values\n",
|
|
"labels_test = pd.read_csv('datasets/iris_test.csv',usecols = [4],skiprows = None ,header=None).values.reshape(-1)\n",
|
|
"\n",
|
|
"#print(\"Data loaded\")\n",
|
|
"#print(\"Train set inputs:\",inputs_train)\n",
|
|
"#print(\"Train set labels:\",labels_train)\n",
|
|
"#print(\"Test set inputs:\",inputs_test)\n",
|
|
"#print(\"Test set labels:\",labels_test)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"#### Build the neural network"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 109,
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "fragment"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Model: \"sequential_26\"\n",
|
|
"_________________________________________________________________\n",
|
|
" Layer (type) Output Shape Param # \n",
|
|
"=================================================================\n",
|
|
" dense_78 (Dense) (None, 20) 100 \n",
|
|
" \n",
|
|
" dense_79 (Dense) (None, 20) 420 \n",
|
|
" \n",
|
|
" dense_80 (Dense) (None, 3) 63 \n",
|
|
" \n",
|
|
"=================================================================\n",
|
|
"Total params: 583\n",
|
|
"Trainable params: 583\n",
|
|
"Non-trainable params: 0\n",
|
|
"_________________________________________________________________\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"import tensorflow as tf\n",
|
|
"from tensorflow import keras\n",
|
|
"\n",
|
|
"k_l2=0\n",
|
|
"\n",
|
|
"keras_model = tf.keras.Sequential([\n",
|
|
" tf.keras.layers.Dense(20, activation='tanh',kernel_regularizer=keras.regularizers.l2(k_l2)),\n",
|
|
" tf.keras.layers.Dense(20, activation='tanh',kernel_regularizer=keras.regularizers.l2(k_l2)),\n",
|
|
" tf.keras.layers.Dense(3, activation='softmax',kernel_regularizer=keras.regularizers.l2(k_l2))\n",
|
|
"])\n",
|
|
"\n",
|
|
"keras_model.build(input_shape=[None,4])\n",
|
|
"keras_model.summary()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"#### Train the neural network"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 110,
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "fragment"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"keras_model.compile(\n",
|
|
" optimizer=tf.keras.optimizers.Adam(), # Optimizer\n",
|
|
" loss=tf.keras.losses.SparseCategoricalCrossentropy(), # Loss function to minimize\n",
|
|
" metrics=[keras.metrics.SparseCategoricalAccuracy()] # List of metrics to monitor\n",
|
|
")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 111,
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "fragment"
|
|
},
|
|
"tags": []
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Training started ..\n",
|
|
"Training finished.\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Train loop\n",
|
|
"\n",
|
|
"print(\"Training started ..\")\n",
|
|
"\n",
|
|
"history = keras_model.fit(\n",
|
|
" inputs_train,\n",
|
|
" labels_train,\n",
|
|
" batch_size=len(inputs_train),\n",
|
|
" epochs=2000,\n",
|
|
" validation_data=(inputs_test, labels_test),\n",
|
|
" verbose=0\n",
|
|
")\n",
|
|
"\n",
|
|
"print(\"Training finished.\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 112,
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "fragment"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"import matplotlib.pyplot as plt\n",
|
|
"plt.plot(history.history[\"loss\"],label=\"train\")\n",
|
|
"plt.plot(history.history[\"val_loss\"],label=\"test\")\n",
|
|
"plt.xlabel(\"Iteration\")\n",
|
|
"plt.ylabel('Cross-Entropy Loss')\n",
|
|
"plt.grid()\n",
|
|
"plt.legend()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 113,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAAA9hAAAPYQGoP6dpAABRKElEQVR4nO3deVxU9f4/8NeZYRhAQTQQhEjccklTwytht9LC/Zqtbl0xMrqa3DQqjVu5VFesvpktltVPs8Utq2v3lqmIWya5YGamWa64gSsMgg7DzOf3B86RYQZkmTNn5vB6Ph48YD5zzpnPewY5Lz/nc86RhBACRERERBqhU7sDRERERO7EcENERESawnBDREREmsJwQ0RERJrCcENERESawnBDREREmsJwQ0RERJrCcENERESawnBDREREmsJwQ0RuI0kSpk+fXuv1jhw5AkmSsHDhQrf3iYgaHoYbIo1ZuHAhJEmCJEnYvHmz0/NCCMTExECSJPztb39ToYfusXLlSkiShKioKNhsNrW7Q0RehOGGSKMCAgKwePFip/aNGzfi+PHjMBqNKvTKfRYtWoTY2FicOnUK69atU7s7RORFGG6INGrQoEFYvnw5ysrKHNoXL16MuLg4REZGqtSz+isuLsY333yDtLQ0dO/eHYsWLVK7S1UqLi5WuwtEDQ7DDZFGjRw5EufOnUNmZqbcVlpaii+//BKjRo1yuU5xcTGefvppxMTEwGg0on379vi///s/CCEcljObzXjqqacQHh6O4OBg3HPPPTh+/LjLbZ44cQKPPvooIiIiYDQacdNNN2HBggX1qu0///kPLl26hIceeggjRozA119/jcuXLzstd/nyZUyfPh033ngjAgIC0KJFC9x///04ePCgvIzNZsNbb72FLl26ICAgAOHh4RgwYAB27NgBoPr5QJXnGE2fPh2SJGHv3r0YNWoUmjZtir/+9a8AgN27d+ORRx5B69atERAQgMjISDz66KM4d+6cy/ds7NixiIqKgtFoRKtWrTB+/HiUlpbi0KFDkCQJb775ptN6W7ZsgSRJWLJkSW3fUiJN8VO7A0SkjNjYWCQkJGDJkiUYOHAgAOD7779HYWEhRowYgbfffttheSEE7rnnHqxfvx5jx45Ft27dsHr1ajz77LM4ceKEw870sccew+eff45Ro0ahV69eWLduHQYPHuzUh/z8fNx6662QJAmpqakIDw/H999/j7Fjx8JkMmHSpEl1qm3RokXo06cPIiMjMWLECDz33HP43//+h4ceekhexmq14m9/+xuysrIwYsQITJw4EUVFRcjMzMSePXvQpk0bAMDYsWOxcOFCDBw4EI899hjKysrwww8/4KeffkKPHj3q1L+HHnoI7dq1w8yZM+VgmJmZiUOHDiE5ORmRkZH47bff8OGHH+K3337DTz/9BEmSAAAnT55Ez549UVBQgMcffxwdOnTAiRMn8OWXX6KkpAStW7fGbbfdhkWLFuGpp55yel+Cg4MxdOjQOvWbSDMEEWnKxx9/LACI7du3i3fffVcEBweLkpISIYQQDz30kOjTp48QQoiWLVuKwYMHy+utWLFCABCvvPKKw/YefPBBIUmSOHDggBBCiF27dgkA4oknnnBYbtSoUQKAmDZtmtw2duxY0aJFC3H27FmHZUeMGCGaNGki9+vw4cMCgPj444+vWV9+fr7w8/MTH330kdzWq1cvMXToUIflFixYIACI2bNnO23DZrMJIYRYt26dACCefPLJKpeprm+V6502bZoAIEaOHOm0rL3WipYsWSIAiE2bNsltSUlJQqfTie3bt1fZpw8++EAAEPv27ZOfKy0tFWFhYWLMmDFO6xE1NDwsRaRhw4YNw6VLl/Dtt9+iqKgI3377bZWHpFauXAm9Xo8nn3zSof3pp5+GEALff/+9vBwAp+Uqj8IIIfDVV19hyJAhEELg7Nmz8lf//v1RWFiInTt31rqmpUuXQqfT4YEHHpDbRo4cie+//x4XLlyQ27766iuEhYXhn//8p9M27KMkX331FSRJwrRp06pcpi7GjRvn1BYYGCj/fPnyZZw9exa33norAMjvg81mw4oVKzBkyBCXo0b2Pg0bNgwBAQEOc41Wr16Ns2fP4u9//3ud+02kFQw3RBoWHh6OxMRELF68GF9//TWsVisefPBBl8sePXoUUVFRCA4Odmjv2LGj/Lz9u06nkw/r2LVv397h8ZkzZ1BQUIAPP/wQ4eHhDl/JyckAgNOnT9e6ps8//xw9e/bEuXPncODAARw4cADdu3dHaWkpli9fLi938OBBtG/fHn5+VR99P3jwIKKiotCsWbNa96M6rVq1cmo7f/48Jk6ciIiICAQGBiI8PFxerrCwEED5e2YymdC5c+dqtx8aGoohQ4Y4nA23aNEiREdH46677nJjJUS+iXNuiDRu1KhRSElJQV5eHgYOHIjQ0FCPvK792jN///vfMWbMGJfL3HzzzbXa5p9//ont27cDANq1a+f0/KJFi/D444/XsqfVq2oEx2q1VrlOxVEau2HDhmHLli149tln0a1bNzRu3Bg2mw0DBgyo03V6kpKSsHz5cmzZsgVdunTBf//7XzzxxBPQ6fh/ViKGGyKNu++++/CPf/wDP/30E5YtW1blci1btsTatWtRVFTkMHrz+++/y8/bv9tsNnlkxG7//v0O27OfSWW1WpGYmOiWWhYtWgSDwYDPPvsMer3e4bnNmzfj7bffRm5uLm644Qa0adMGW7duhcVigcFgcLm9Nm3aYPXq1Th//nyVozdNmzYFABQUFDi020eyauLChQvIysrCjBkzMHXqVLn9zz//dFguPDwcISEh2LNnzzW3OWDAAISHh2PRokWIj49HSUkJRo8eXeM+EWkZIz6RxjVu3Bjvv/8+pk+fjiFDhlS53KBBg2C1WvHuu+86tL/55puQJEk+48r+vfLZVnPmzHF4rNfr8cADD+Crr75yubM+c+ZMrWtZtGgRbr/9dgwfPhwPPvigw9ezzz4LAPJp0A888ADOnj3rVA8A+QymBx54AEIIzJgxo8plQkJCEBYWhk2bNjk8/95779W43/YgJiqdUl/5PdPpdLj33nvxv//9Tz4V3VWfAMDPzw8jR47EF198gYULF6JLly61Hgkj0iqO3BA1AFUdFqpoyJAh6NOnD55//nkcOXIEXbt2xZo1a/DNN99g0qRJ8hybbt26YeTIkXjvvfdQWFiIXr16ISsrCwcOHHDa5qxZs7B+/XrEx8cjJSUFnTp1wvnz57Fz506sXbsW58+fr3ENW7duxYEDB5Camury+ejoaNxyyy1YtGgRpkyZgqSkJHz66adIS0vDtm3bcPvtt6O4uBhr167FE088gaFDh6JPnz4YPXo03n77bfz555/yIaIffvgBffr0kV/rsccew6xZs/DYY4+hR48e2LRpE/74448a9z0kJAR33HEHXnvtNVgsFkRHR2PNmjU4fPiw07IzZ87EmjVrcOedd+Lxxx9Hx44dcerUKSxfvhybN292OKyYlJSEt99+G+vXr8err75a4/4QaZ56J2oRkRIqngpencqnggshRFFRkXjqqadEVFSUMBgMol27duL111+XT0G2u3TpknjyySfFddddJxo1aiSGDBkijh075nRqtBDlp25PmDBBxMTECIPBICIjI8Xdd98tPvzwQ3mZmpwK/s9//lMAEAcPHqxymenTpwsA4pdffhFClJ9+/fzzz4tWrVrJr/3ggw86bKOsrEy8/vrrokOHDsLf31+Eh4eLgQMHipycHHmZkpISMXbsWNGkSRMRHBwshg0bJk6fPl3lqeBnzpxx6tvx48fFfffdJ0JDQ0WTJk3EQw89JE6ePOnyPTt69KhISkoS4eHhwmg0itatW4sJEyYIs9nstN2bbrpJ6HQ6cfz48SrfF6KGRhKi0jgpERH5jO7du6NZs2bIyspSuytEXoNzboiIfNSOHTuwa9cuJCUlqd0VIq/CkRsiIh+zZ88e5OTk4I033sDZs2dx6NAhBAQEqN0tIq/BkRsiIh/z5ZdfIjk5GRaLBUuWLGGwIaqEIzdERESkKRy5ISIiIk1huCEiIiJNaXAX8bPZbDh58iSCg4PrdddfIiIi8hwhBIqKihAVFXXNe6g1uHBz8uRJxMTEqN0NIiIiqoNjx47h+uuvr3aZBhdu7DcEPHbsGEJCQty6bYvFgjVr1qBfv35V3qjPl2m9PkD7NbI+36f1GrVeH6D9GpWqz2QyISYmxuHGvlVpcOHGfigqJCREkXATFBSEkJAQzf7Cark+QPs1sj7fp/UatV4foP0ala6vJlNKOKGYiIiINIXhhoiIiDSF4YaIiIg0heGGiIiINIXhhoiIiDSF4YaIiIg0heGGiIiINIXhhoiIiDSF4YaIiIg0heGGiIiINEXVcLNp0yYMGTIEUVFRkCQJK1asuOY6GzZswC233AKj0Yi2bdti4cKFiveTiIiIfIeq4aa4uBhdu3bF3Llza7T84cOHMXjwYPTp0we7du3CpEmT8Nhjj2H16tUK95SIiIh8hao3zhw4cCAGDhxY4+XnzZuHVq1a4Y033gAAdOzYEZs3b8abb76J/v37K9VN7bNZAdOJay9XVobA0rNA4THAz4vvudo4EvDzV7sXRESkEi/eQznLzs5GYmKiQ1v//v0xadKkKtcxm80wm83yY5PJBKD8rqUWi8Wt/bNvz93bVZp+4UDoTmy/5nIGAP0A4Dele1Q/IjQWZeOyAX3t70brq59hTbE+36f1GrVeH6D9GpWqrzbb86lwk5eXh4iICIe2iIgImEwmXLp0CYGBgU7rZGRkYMaMGU7ta9asQVBQkCL9zMzMVGS7SrnnxA4AgFVy/63pPU0vLJAKjiDr2+UwG0LrvB1f+wxri/X5Pq3XqPX6AO3X6O76SkpKarysT4WbukhPT0daWpr82GQyISYmBv369UNISIhbX8tisSAzMxN9+/aFweAjQUEISD8LAIBt4q9Ao7AqF/WF+nQZkZBsZbi7Tx8gpEWt1/eFGuuD9fk+rdeo9foA7deoVH32Iy814VPhJjIyEvn5+Q5t+fn5CAkJcTlqAwBGoxFGo9Gp3WAwKPZLpeS23c5aJv9oMAYANei3V9en8wNsZTDoUaNaquJNNQohkGe6DKtN1HtbZWVlOG8GTheXefW0qbrSen2A9mvUen2A9mssKyuDqdT9f0drsy2felsTEhKwcuVKh7bMzEwkJCSo1CMNsF0NN5D06vXDXew1VKzLx7307V58/OMRN27RDzN2/uDG7XkbrdcHaL9GrdcHaL3G2MZ6jFDx9VUNNxcvXsSBAwfkx4cPH8auXbvQrFkz3HDDDUhPT8eJEyfw6aefAgDGjRuHd999F5MnT8ajjz6KdevW4YsvvsB3332nVgm+T1iv/qzzqazrmr0Gm03dfrjR9iPnAQAGvQSdJNV7ezarFTq9BoJsFbReH6D9GrVeH6D9Gv101msvpOTrq/niO3bsQJ8+feTH9rkxY8aMwcKFC3Hq1Cnk5ubKz7dq1QrfffcdnnrqKbz11lu4/vrr8f/+3//jaeD1UXGEQxPhRnsjN0WXy2tZknIresQ2q9e2LBYLVq5ciUGD+nvNYTd30np9gPZr1Hp9gPZrtNenJlX3Zr1794YQVc8jcHX14d69e+Pnn39WsFcNjK3iyI37/hdRZrUhz3TZbdurqRbQQQ8gr7AYZYaaz6y3sx8LP1FwCX5+3nGapulSeT+CA7T3R5CISAka+K861UvFcCO554LVQgjc994W/Hqi0C3bq42fjFZESsDYBT/hN5FXx61457HwxgH850pEVBP8a9nQ2Q/fSHrADfM5AMBcZpODjb+fDu7Zas3YrtxRJFAvYKzj3UW88Vh4XMumaBESoHY3iIh8AsNNQ2efUOzG+Tamy+WHUSQJ+P2lAdDpPBhv5jQGCs7hy3/EAzF/qfXqWj8WTkTUEDDcaEB9roOiL7yIFgBsOj1OXqh+jkpN56McO38JANDY6OfZYANUOFtKOxOKiYiodhhuNGDG//Zi4ZYjdVo3VjqFDUbgYqnAX19dX4M1aj4fJdiowq+XBs+WIiKi2mG40YD6XAfFfl1nK/Qw+l17jkpN56NIEnBv9+ha9cUt7CM3Qt1rLBARkXoYbjTgorl8lGLp47cirmUtr4OSvxd4H2jaOBD7nx1Y7aI+MR+FIzdERA0ew40PumguQ0FJqfzYfh2UxsZqAkdRPmA1O7ebTpZ/18KtF4CrdRTlAQW51S/rSlkZAkvPAoXHoNGbvrA+X6f1GrVeH6D9GsvKYLQUqNoFDb6r2nbsfAn6vbkJlyzOh12qvA5K9lxg9b+q37AbL+CnKvthqW8m1Gl1A4B+APCbuzrkXVif79N6jVqvD9B+jQYAPRu1BTBKtT4w3PiY306acMlihSQB/vqrc2SqvQ7K8R3l33V+VZzyLQGdH3B/Z9Vw073A6X11nnMjcHVekYfP8/II1uf7tF6j1usDtF+jAGCT1I0XDDc+xj6/5vZ24fj00Z41W8m+ox8wC+iZolDPvESvf5Z/1VGZPK9okPfOK6oH1uf7tF6j1usDtF9jmcWCH1euxCAV++Ce6+2TxxRdtt9nqBa51Ob+C/URERF5K4YbH7N02zEAtbyGjP3MIa3MqyEiIqoGw42PsY/YBPrXIqhw5IaIiBoQhhsfY59zc3eHiJqvJI/cMNwQEZH2Mdz4mBMXyu/bVKs5N/YJxRI/biIi0j7u7XzIjiPnUXRl5KbKa9q4wsNSRETUgDDc+JBdxwrkn1s2C6r5ipxQTEREDQjDjQ8pulweUh6OvwF++lp8dBy5ISKiBoThxkcIIXDg9EUAQHBALS/6xAnFRETUgDDc+IiXv92H7349BaCWk4mBqyM3nFBMREQNAPd2PmL7kfPyz3feGF67lQUPSxERUcPBcOMj7Ne3WT4uAZ2jm9RuZR6WIiKiBoR7Ox9RfOkyonEGTS15QMHF2q1cdrn8O8+WIiKiBoDhxkd8WPY8ugUcABbVYyMSww0REWkfw40PKC2zoZt0AAAg9EZIklT7jVzXFojo5OaeEREReR+GGx9w8XIpml352fbUPugbX6dqf4iIiLwZJxR7OYvVhkP5BfJjvR/zKBERUXW4p/RiQgjc8+6POHzqDH4PuNLIeTNERETV4siNFysutWLfKRP0sF1t5OncRERE1WK48WIXr9xLyqhjuCEiIqophhsvVnjJAgBoYqzwMfFaNURERNViuPFijy7cDgAICbhy6rekA+pyGjgREVEDwnDjxS6UlAIAbokOLm/gZGIiIqJrYrjxUlabQElp+Q0vJ97VpryR822IiIiuieHGS9knEwNAkD3TMNwQERFdE8ONl/o0+wgAwN9PB3/72VI6flxERETXovrecu7cuYiNjUVAQADi4+Oxbdu2Kpe1WCx46aWX0KZNGwQEBKBr165YtWqVB3vrOcculAAov5AfbOWHpzhyQ0REdG2qhptly5YhLS0N06ZNw86dO9G1a1f0798fp0+fdrn8Cy+8gA8++ADvvPMO9u7di3HjxuG+++7Dzz//7OGeK6+0rHy0ZsqADoDtyiEqhhsiIqJrUjXczJ49GykpKUhOTkanTp0wb948BAUFYcGCBS6X/+yzz/Cvf/0LgwYNQuvWrTF+/HgMGjQIb7zxhod7rjzzlXDTCJcB08nyRp4tRUREdE2qDQWUlpYiJycH6enpcptOp0NiYiKys7NdrmM2mxEQEODQFhgYiM2bN1f5OmazGWazWX5sMpkAlB/islgs9SnBiX177tjuZUsZwlGABzckAtZiAICQdChzc59rw531eSut18j6fJ/Wa9R6fYD2a1SqvtpsTxJCCLe+eg2dPHkS0dHR2LJlCxISEuT2yZMnY+PGjdi6davTOqNGjcIvv/yCFStWoE2bNsjKysLQoUNhtVodAkxF06dPx4wZM5zaFy9ejKCgIPcV5Gbv7dWhWdE+LPH/NwCgTPLH4fC+2Bs9XOWeEREReV5JSQlGjRqFwsJChISEVLusT03ieOutt5CSkoIOHTpAkiS0adMGycnJVR7GAoD09HSkpaXJj00mE2JiYtCvX79rvjm1ZbFYkJmZib59+8JgMNRrW5+f2g5dUfmhKdG8E0TKJsQCiK13L+vOnfV5K63XyPp8n9Zr1Hp9gPZrVKo++5GXmlAt3ISFhUGv1yM/P9+hPT8/H5GRkS7XCQ8Px4oVK3D58mWcO3cOUVFReO6559C6desqX8doNMJoNDq1GwwGxX6p6rvtwksWlJRaEXTlbuCSzs+r/gEo+d55C63XyPp8n9Zr1Hp9gPZrdHd9tdmWahOK/f39ERcXh6ysLLnNZrMhKyvL4TCVKwEBAYiOjkZZWRm++uorDB06VOnuekzO0QuIezkTv500QQ/7KeCcSExERFRTqh6WSktLw5gxY9CjRw/07NkTc+bMQXFxMZKTkwEASUlJiI6ORkZGBgBg69atOHHiBLp164YTJ05g+vTpsNlsmDx5sppluNWuYwUoswnoJCA6xB+4DJ4CTkREVAuq7jWHDx+OM2fOYOrUqcjLy0O3bt2watUqREREAAByc3Ohq3BV3suXL+OFF17AoUOH0LhxYwwaNAifffYZQkNDVarA/ey3XRj+lxvwcocy4Asw3BAREdWC6nvN1NRUpKamunxuw4YNDo/vvPNO7N271wO9Uk/u+fIrE4cE+F29MjGvb0NERFRjqt9+ga76dvdJfLXzOACgsbFCuOGcGyIiohpjuPEiOUcvyD/f2T68wm0XGG6IiIhqiuHGi9jn20we0B43Xx8KCN4wk4iIqLYYbrzI6aLyqywHB1w5l583zCQiIqo1hhsvcaG4FBv/OAMACDZeCTP2cCPxYyIiIqop7jW9xB/5RfLP8a2blf9gK79CMUduiIiIao7hxktcNJeP0tx8fRO0aBJY3sjDUkRERLXGvaaXKLoymTjYqAcKjgEQQMm58id5thQREVGNMdx4iaIrIzdPFr4OzMlyfJIX8SMiIqoxhhsvcbm0/LTvNuZ95Q16//KJxH4BQPuBKvaMiIjItzDceIlSa/nkYR2uTCJOXgVcH6dij4iIiHwTJxR7CbOlfORGD95ygYiIqD4YbryE+crIjV4w3BAREdUHw42XKC2rdFiKp38TERHVCcONl5DDDe8nRUREVC8MN17CaeSGt1wgIiKqE+5BvYR8thRHboiIiOqF4cZLFJvLQ40keMsFIiKi+mC48RJFly0AAJ2wTyjm2VJERER1wXDjBQpKSnGhpBSAgMSzpYiIiOqFe1CVbfrjDB75eBtsAtDbgw3ACcVERER1xD2oynbmXoBNADoJuCmy0dUnOHJDRERUJww3Krt4uXwCccodrfHf8fFXn2C4ISIiqhOGG5UdOVcMAAg2+gH208ABTigmIiKqI4YbFS3Zlou1+04DABob/QBbxXDDkRsiIqK6YLhR0Y4jF+Sf/9ouzDHccEIxERFRnXAPqqKL5vJr27x8b2e0bR4M2K5cwE/SA5KkYs+IiIh8F8ONioquTCYOCbhyCMrGqxMTERHVF8ONii6ay8NMY+OVMCPfV4qTiYmIiOqK4UZF9pEbOdzYeNNMIiKi+mK4UZE93AQHGMobbBy5ISIiqi+GGxXZb5YZXHnOjcRwQ0REVFcMNyqxWG0wl5XfS8p5zg0PSxEREdUVw41KLluuXtMm0P/KSI18thRHboiIiOqK4UYlZVYh/+ynu3JNG865ISIiqjeGG5WU2a6GG71TuOFhKSIiorpiuFFJma18vo2fToJkvxoxJxQTERHVm+rhZu7cuYiNjUVAQADi4+Oxbdu2apefM2cO2rdvj8DAQMTExOCpp57C5cuXPdRb97EflvLTV7jNAicUExER1Zuq4WbZsmVIS0vDtGnTsHPnTnTt2hX9+/fH6dOnXS6/ePFiPPfcc5g2bRr27duH+fPnY9myZfjXv/7l4Z7Xn8VaPnJj0FX4CHj7BSIionpTNdzMnj0bKSkpSE5ORqdOnTBv3jwEBQVhwYIFLpffsmULbrvtNowaNQqxsbHo168fRo4cec3RHm9ktbkYuZHn3Kg+oEZEROSzVBsiKC0tRU5ODtLT0+U2nU6HxMREZGdnu1ynV69e+Pzzz7Ft2zb07NkThw4dwsqVKzF69OgqX8dsNsNsNsuPTSYTAMBiscBisbipGsjbrPi9Opeu3BHcTyfJy0sWM/wA2KCD1c19c4fa1OertF4j6/N9Wq9R6/UB2q9Rqfpqsz1JCCGuvZj7nTx5EtHR0diyZQsSEhLk9smTJ2Pjxo3YunWry/XefvttPPPMMxBCoKysDOPGjcP7779f5etMnz4dM2bMcGpfvHgxgoKC6l9IHeVeBN741Q+h/gIz4spHbCILchB/+C2cD2qDH9pPU61vRERE3qakpASjRo1CYWEhQkJCql3WpyZ3bNiwATNnzsR7772H+Ph4HDhwABMnTsTLL7+MF1980eU66enpSEtLkx+bTCbExMSgX79+13xzastisSAzMxN9+/aFwWCodtmfjxUAv25D40ZBGDTodgCAtB/AYSC02XUYNGiQW/vmDrWpz1dpvUbW5/u0XqPW6wO0X6NS9dmPvNSEauEmLCwMer0e+fn5Du35+fmIjIx0uc6LL76I0aNH47HHHgMAdOnSBcXFxXj88cfx/PPPQ+dirorRaITRaHRqNxgMiv1S1WjbV0739tfrri575Xo3Op0eOi/+hVfyvfMWWq+R9fk+rdeo9foA7dfo7vpqsy3VZq76+/sjLi4OWVlZcpvNZkNWVpbDYaqKSkpKnAKMXl8eElQ6ulZn2QfPAah8Knj5GVSQOKGYiIiorlQ9LJWWloYxY8agR48e6NmzJ+bMmYPi4mIkJycDAJKSkhAdHY2MjAwAwJAhQzB79mx0795dPiz14osvYsiQIXLI8RXWKxfxO3ux9Gojww0REVG9qRpuhg8fjjNnzmDq1KnIy8tDt27dsGrVKkRERAAAcnNzHUZqXnjhBUiShBdeeAEnTpxAeHg4hgwZgn//+99qlVBn5ivXubm/e/TVRnu4ISIiojpTfUJxamoqUlNTXT63YcMGh8d+fn6YNm0apk3z/TOJzJbyIGM0VBilsR9a48gNERFRnXEvqpLSKyM3/g6H0xhuiIiI6ot7UZWUll0JN34VR24454aIiKi+uBdVSfXhRnKxBhEREdUEw41K7OHGyJEbIiIit+JeVCXmsvJbLvCwFBERkXtxL6oS+4Rix5EbTigmIiKqL+5FVSLPudFz5IaIiMiduBdV2KVSq8t2ec6NwUW4ISIiojpjuFHQv7/bi45TVyHn6AWn58xlLq5zw5EbIiKieuNeVEEf/XAYAPDaqt+dnnN9Kjjn3BAREdUX96IqMbsKN7xCMRERUb1xL+oBwkWb67OleBE/IiKi+mK4UQlvv0BERKQM7kU9odLQjRACJaVlAIAgf04oJiIicifuRT1AVEo35jIbLNbytsZGvwoLMtwQERHVF/eiKii6XD5qI0lAI/+K4YYTiomIiOqLe1EPEJUOS100l4ebxv5+0OkqTB6WL+LHCcVERER1xXCjgqLLFgBAcICf4xM8W4qIiKjeGG48oPKp4BevHJZq7BRueFiKiIiovrgXVYHJHm6MVY3c8GMhIiKqK+5FPUBUmnQjz7kJMFResvwbD0sRERHVGcONB1Q+LHXJUn6n8CCDvtKCHLkhIiKqL+5FVWC+Em4c7ysFhhsiIiI34F7UAyqfCu7yvlLFZ4FLBeU/M9wQERHVmd+1F6H6qnxYyum+Ur8sA/7zeIUlOOeGiIiorhhuPKHS0I1TuDm5s/y7pAcCQ4Eb+3mwc0RERNrCcOMBZTbne0sBFcKNrXwODu54BujzL092jYiISHM4ucMDrDbXIzdGvytnS9nKTw2HjlmTiIiovhhuPKDqcGMfubkSbjiRmIiIqN64N/UAa6U5N8Wl5WEm0H6dG/sp4By5ISIiqjeGGw+oPHJz9QrFV8IMD0sRERG5DcONB1QON0VX7i0VIoebKxOKdZWuWExERES1xnDjAbbKIzfyjTOv3FuKIzdERERuw3DjAZXn3BRdtgAAgisfluKEYiIionrj3tQDnA5LVZ5zwwnFREREbsNw4wFnL5bKPwsh5AnFwUZOKCYiInI3hhsPWbUnDwBQXGqV78YQHFB5zg0nFBMREdWXV4SbuXPnIjY2FgEBAYiPj8e2bduqXLZ3796QJMnpa/DgwR7sce39nHsBwNXJxHqdhABDpdsvcOSGiIio3lQPN8uWLUNaWhqmTZuGnTt3omvXrujfvz9Onz7tcvmvv/4ap06dkr/27NkDvV6Phx56yMM9vzaD/urdve3zbCpOJpakK8/zVHAiIiK3UT3czJ49GykpKUhOTkanTp0wb948BAUFYcGCBS6Xb9asGSIjI+WvzMxMBAUFeWW4qXiS1GmTGccvlODQ2WIAQGP7fJuLZwBLSfnPEsMNERFRfal6HKS0tBQ5OTlIT0+X23Q6HRITE5GdnV2jbcyfPx8jRoxAo0aNXD5vNpthNpvlxyaTCQBgsVhgsVjq0Xtn9u3Zv1c8R2rtvnys3ZcvP27sr0fZ9o/h990kua3MJiDc3Cd3qlyfFmm9Rtbn+7Reo9brA7Rfo1L11WZ7khCVLsLiQSdPnkR0dDS2bNmChIQEuX3y5MnYuHEjtm7dWu3627ZtQ3x8PLZu3YqePXu6XGb69OmYMWOGU/vixYsRFBRUvwKu4alsPWyQoJeEwxCZJAH9r7fhaesCxJ5bDxt0KDGGY3O7F2A2NFG0T0RERL6opKQEo0aNQmFhIUJCQqpd1qdnsM6fPx9dunSpMtgAQHp6OtLS0uTHJpMJMTEx6Nev3zXfnNqyWCzIzMxE3759YTAY8NRPawABbHq2N5oHG52W13+7CjgHiN7/gvG2Sbjbrb1xv8r1aZHWa2R9vk/rNWq9PkD7NSpVn/3IS02oGm7CwsKg1+uRn5/v0J6fn4/IyMhq1y0uLsbSpUvx0ksvVbuc0WiE0egcLAwGg2K/VPZt24fEDH5+VbxW+RJ6gz/0PvQLruR75y20XiPr831ar1Hr9QHar9Hd9dVmW6pOKPb390dcXByysrLkNpvNhqysLIfDVK4sX74cZrMZf//735XuZp3JB/ykKhaQb7vAicRERETuovphqbS0NIwZMwY9evRAz549MWfOHBQXFyM5ORkAkJSUhOjoaGRkZDisN3/+fNx777247rrr1Oh2rUhVpRvB69sQERG5m+p71eHDh+PMmTOYOnUq8vLy0K1bN6xatQoREREAgNzcXOh0jgNM+/fvx+bNm7FmzRo1ulxr0rVGbnh9GyIiIrdRPdwAQGpqKlJTU10+t2HDBqe29u3bQ8WTvGqkRv3jxfuIiIjcTvWL+GlVxWxT1cANb7tARETkfgw3HiBVdVyKE4qJiIjcjuFGIRUPSlU5csMJxURERG7HcKOQms254YRiIiIid2O4UYjDyE2VZ0txQjEREZG7Mdx4QJXXueGEYiIiIrdjuFGIqMmkG/mwFMMNERGRu9Q63Hz88cdYvny5U/vy5cvxySefuKVTWiDMJuhhrXoBmxW4cKT8Z54tRURE5Da1DjcZGRkICwtzam/evDlmzpzplk75vIJc+M/piG/9nwcgXM+5+ew+oORs+c86DqARERG5S633qrm5uWjVqpVTe8uWLZGbm+uWTvk66cR2SJYSdNTlwh9lro9Kncgp/67zA6Ju8WT3iIiINK3W4aZ58+bYvXu3U/svv/ziEzex9DQJwvVF/OyTclJ3AEHNPNspIiIiDat1uBk5ciSefPJJrF+/HlarFVarFevWrcPEiRMxYsQIJfro0yQI1yM3wnZlAR6SIiIicqdan6bz8ssv48iRI7j77rvh51e+us1mQ1JSEufcyK7GGR2quJgfww0REZEiah1u/P39sWzZMrzyyivYtWsXAgMD0aVLF7Rs2VKJ/vkmqWK4sbmeUMxwQ0REpIg6X2ClXbt2aNeunTv7okk6CNcX8WO4ISIiUkSt96wPPPAAXn31Vaf21157DQ899JBbOqUlUlWngsvhpsrbahIREVEd1DrcbNq0CYMGDXJqHzhwIDZt2uSWTmmJVNWcG3s7R26IiIjcqtZ71osXL8Lf39+p3WAwwGQyuaVTWuJyQnHFezMw3BAREblVrfesXbp0wbJly5zaly5dik6dOrmlUz6vQnjRuTosZT8kBTDcEBERuVmtJxS/+OKLuP/++3Hw4EHcddddAICsrCwsXrwYX375pds76JuuhhsJNucJxQ7hhnNuiIiI3KnW4WbIkCFYsWIFZs6ciS+//BKBgYHo2rUr1q1bh2bNeKVdAA7hxfVhqQrhpspbhhMREVFd1OlU8MGDB2Pw4MEAAJPJhCVLluCZZ55BTk4OrNZq7oTdUIiKIzeuDktxzg0REZFS6rxn3bRpE8aMGYOoqCi88cYbuOuuu/DTTz+5s2+aoHN1+wXOuSEiIlJMrUZu8vLysHDhQsyfPx8mkwnDhg2D2WzGihUrOJm4ogrhJVAyO984k+GGiIhIMTXesw4ZMgTt27fH7t27MWfOHJw8eRLvvPOOkn3zXRUOO2UZnwXMRZWeZ7ghIiJSSo1Hbr7//ns8+eSTGD9+PG+7cC0OE4YB6eiPQIeBrp/n2VJERERuVeNhg82bN6OoqAhxcXGIj4/Hu+++i7NnzyrZNx/meIaUpKv8NnNCMRERkVJqvGe99dZb8dFHH+HUqVP4xz/+gaVLlyIqKgo2mw2ZmZkoKiq69kYaisojN5K+0vMMN0REREqp9Z61UaNGePTRR7F582b8+uuvePrppzFr1iw0b94c99xzjxJ99D2i0rVteIViIiIij6nXnrV9+/Z47bXXcPz4cSxZssRdffJ5UqWRG6cAwzk3REREinHLsIFer8e9996L//73v+7YnAZUHrmpItxw1IaIiMjtuHdVgtNhqcrhxv48R22IiIjcjeFGCdcMNxy5ISIiUgr3roqofLPMKq5QzHBDRETkdty7KqGmE4oZboiIiNyOe1dF8LAUERGRWrh3VULlkRunw1RXHvM0cCIiIrdTPdzMnTsXsbGxCAgIQHx8PLZt21bt8gUFBZgwYQJatGgBo9GIG2+8EStXrvRQb2uo8oTiymHH/jxHboiIiNyuxjfOVMKyZcuQlpaGefPmIT4+HnPmzEH//v2xf/9+NG/e3Gn50tJS9O3bF82bN8eXX36J6OhoHD16FKGhoZ7vfHWcwkwVjzlyQ0RE5HaqhpvZs2cjJSUFycnJAIB58+bhu+++w4IFC/Dcc885Lb9gwQKcP38eW7ZsgcFgAADExsZ6sss1VGnkpsx89efSEsB0ovxnjtwQERG5nWrhprS0FDk5OUhPT5fbdDodEhMTkZ2d7XKd//73v0hISMCECRPwzTffIDw8HKNGjcKUKVOg1+tdrmM2m2E2Xw0XJpMJAGCxWGCxWNxYEeTtWcvK4NCbz++HJT0fMBfB7/2/QLp0AQAgIKHMzX1Qkr0+d79v3kTrNbI+36f1GrVeH6D9GpWqrzbbUy3cnD17FlarFREREQ7tERER+P33312uc+jQIaxbtw4PP/wwVq5ciQMHDuCJJ56AxWLBtGnTXK6TkZGBGTNmOLWvWbMGQUFB9S/EhQN//olOlV/v26/R2JyPO68EG6tkwNHGcfjV2+YL1UBmZqbaXVCc1mtkfb5P6zVqvT5A+zW6u76SkpIaL6vqYanastlsaN68OT788EPo9XrExcXhxIkTeP3116sMN+np6UhLS5Mfm0wmxMTEoF+/fggJCXFr/ywWCzIzM9G2bRvglONz/RLvhnThEPAHIEJjYZuwAzEAYtzaA2XZ6+vbt698WFBrtF4j6/N9Wq9R6/UB2q9RqfrsR15qQrVwExYWBr1ej/z8fIf2/Px8REZGulynRYsWMBgMDoegOnbsiLy8PJSWlsLf399pHaPRCKPR6NRuMBgU+6XS65wnChv0knyhYknv59O/0Eq+d95C6zWyPt+n9Rq1Xh+g/RrdXV9ttqXajFZ/f3/ExcUhKytLbrPZbMjKykJCQoLLdW677TYcOHAANtvVs4/++OMPtGjRwmWwUU3lU8EBwFZW/gUAkuv5QURERFR/qp6uk5aWho8++giffPIJ9u3bh/Hjx6O4uFg+eyopKclhwvH48eNx/vx5TJw4EX/88Qe+++47zJw5ExMmTFCrBNecLuIHwGYFhLX8Z51PHQ0kIiLyKaruZYcPH44zZ85g6tSpyMvLQ7du3bBq1Sp5knFubi50uqv5KyYmBqtXr8ZTTz2Fm2++GdHR0Zg4cSKmTJmiVglVuMbIjY4jN0REREpRfQghNTUVqampLp/bsGGDU1tCQgJ++uknhXtVT65GboStfPQGYLghIiJSEK8ipwQXAzflIzc8LEVERKQ0hhslVDXnhhOKiYiIFMdwo4gq5txwQjEREZHiGG6U4HLOjZVzboiIiDyA4UYRrkZurDxbioiIyAMYbpRQ5UX8eFiKiIhIaQw3SrjWhGKGGyIiIsUw3CjCxciNtbTC2VJ824mIiJTCIQQluBq5WToKuP4v5T9zzg0REZFiOISgBFcX8RM2IKhZ+c+lxR7tDhERUUPCcKOEKufcXJlQfOMAz/aHiIioAWG4UQTPliIiIlILw40SXI3cQAA2S/mPnHNDRESkGIYbJbi6zg0AlJnLv3PkhoiISDEMN4qoItxYS8u/88aZREREimG4UYLLw1KoMHLDcENERKQUhhsFSDwsRUREpBqGGyVUNXJj5cgNERGR0hhuPKnsypwbjtwQEREphuFGCZVHbuxhpuyy42MiIiJyO4YbRVSac2M/O8p+WIo3ziQiIlIM97JKqHLkhoeliIiIlMZwo4TKZ0vpKo3ccEIxERGRYhhulOA0cqN3bOfIDRERkWIYbhRReeSmUpjhFYqJiIgUw3CjhMqHpTo/CPgFAn4BQERnIKKTOv0iIiJqAHh8RAmVD0sNnFX+RURERIrjyA0RERFpCsONEqq6/QIREREpjuFGCVXdOJOIiIgUx3CjBI7cEBERqYbhRhEcuSEiIlILw40SOHJDRESkGoYbJXDODRERkWoYbhTBcENERKQWhhsl8LAUERGRahhuFCB4WIqIiEg1XhFu5s6di9jYWAQEBCA+Ph7btm2rctmFCxdCkiSHr4CAAA/2tgY4ckNERKQa1cPNsmXLkJaWhmnTpmHnzp3o2rUr+vfvj9OnT1e5TkhICE6dOiV/HT161IM9rgGO3BAREalG9XAze/ZspKSkIDk5GZ06dcK8efMQFBSEBQsWVLmOJEmIjIyUvyIiIjzY42sTHLkhIiJSjap3BS8tLUVOTg7S09PlNp1Oh8TERGRnZ1e53sWLF9GyZUvYbDbccsstmDlzJm666SaXy5rNZpjNZvmxyWQCAFgsFlgsFjdVAnmbACBsNpftvs5eh1bqcUXrNbI+36f1GrVeH6D9GpWqrzbbk4SKs19PnjyJ6OhobNmyBQkJCXL75MmTsXHjRmzdutVpnezsbPz555+4+eabUVhYiP/7v//Dpk2b8Ntvv+H66693Wn769OmYMWOGU/vixYsRFBTk3oKuSPhjJpoX/y4//qb7p4q8DhERUUNRUlKCUaNGobCwECEhIdUuq+rITV0kJCQ4BKFevXqhY8eO+OCDD/Dyyy87LZ+eno60tDT5sclkQkxMDPr163fNN6e2LBYLMjMz0bRJMFB8tX3QoEFufR212Ovr27cvDAaD2t1RhNZrZH2+T+s1ar0+QPs1KlWf/chLTagabsLCwqDX65Gfn+/Qnp+fj8jIyBptw2AwoHv37jhw4IDL541GI4xGo8v1lPqlkirNudHaL6+S75230HqNrM/3ab1GrdcHaL9Gd9dXm22pOqHY398fcXFxyMrKkttsNhuysrIcRmeqY7Va8euvv6JFixZKdbP2bGVq94CIiKjBUv2wVFpaGsaMGYMePXqgZ8+emDNnDoqLi5GcnAwASEpKQnR0NDIyMgAAL730Em699Va0bdsWBQUFeP3113H06FE89thjapbhSFjV7gEREVGDpXq4GT58OM6cOYOpU6ciLy8P3bp1w6pVq+TTu3Nzc6HTXR1gunDhAlJSUpCXl4emTZsiLi4OW7ZsQadOndQqwZmN4YaIiEgtqocbAEhNTUVqaqrL5zZs2ODw+M0338Sbb77pgV7VnWC4ISIiUo3qF/HTIolzboiIiFTDcKMEjtwQERGphuFGCZxQTEREpBqGGyXwsBQREZFqGG4UIHHkhoiISDUMN0rgnBsiIiLVMNwogSM3REREqvGK69xoQpkZKDyBwNKzkKzavI09ERGRL2C4cZdTu2GYn4h+aveDiIiogWO4cRdJgvALgM1qhaTT4WxZIMwwImboi2r3jIiIqEFhuHGX63ugbMpxrFy5Eh173ol+b/2I4AA//HpLf7V7RkRE1KBwQrECbKL8u06S1O0IERFRA8RwowAhytMNsw0REZHnMdwoQHDkhoiISDUMNwqwXUk3OmYbIiIij2O4UYCQf2K6ISIi8jSGGwVw5IaIiEg9DDcKsM+54ZQbIiIiz2O4UQAnFBMREamH4UYBVw9LMdwQERF5GsONAsS1FyEiIiKFMNwoQB654btLRETkcdz9KsE+oZinghMREXkcw40CeCo4ERGRehhuFMAbZxIREamH4UYB4upxKSIiIvIwhhsF8Do3RERE6mG4UcDVcKNuP4iIiBoihhsF2CcU82wpIiIiz2O4UYCN95YiIiJSDcONAuwTiiWmGyIiIo9juFEA59wQERGph+FGAYI3ziQiIlINw40COOeGiIhIPQw3CpDPlmK6ISIi8jiGGyXwAsVERESqYbhRgI0TiomIiFTjFeFm7ty5iI2NRUBAAOLj47Ft27Yarbd06VJIkoR7771X2Q7Wkv1UcE4oJiIi8jzVw82yZcuQlpaGadOmYefOnejatSv69++P06dPV7vekSNH8Mwzz+D222/3UE9rjhOKiYiI1KN6uJk9ezZSUlKQnJyMTp06Yd68eQgKCsKCBQuqXMdqteLhhx/GjBkz0Lp1aw/2tmYEJxQTERGpxk/NFy8tLUVOTg7S09PlNp1Oh8TERGRnZ1e53ksvvYTmzZtj7Nix+OGHH6p9DbPZDLPZLD82mUwAAIvFAovFUs8KHNm3ZymzljcI4fbXUJNcn4ZqqkzrNbI+36f1GrVeH6D9GpWqrzbbUzXcnD17FlarFREREQ7tERER+P33312us3nzZsyfPx+7du2q0WtkZGRgxowZTu1r1qxBUFBQrftcE7t37wagx4Xz57By5UpFXkNNmZmZandBcVqvkfX5Pq3XqPX6AO3X6O76SkpKarysquGmtoqKijB69Gh89NFHCAsLq9E66enpSEtLkx+bTCbExMSgX79+CAkJcWv/LBYLMjMz0blLF+DPvQgPC8OgQT3c+hpqstfXt29fGAwGtbujCK3XyPp8n9Zr1Hp9gPZrVKo++5GXmlA13ISFhUGv1yM/P9+hPT8/H5GRkU7LHzx4EEeOHMGQIUPkNpvNBgDw8/PD/v370aZNG4d1jEYjjEaj07YMBoNiv1SSTg+g/BCbFn9xlXzvvIXWa2R9vk/rNWq9PkD7Nbq7vtpsS9UJxf7+/oiLi0NWVpbcZrPZkJWVhYSEBKflO3TogF9//RW7du2Sv+655x706dMHu3btQkxMjCe7X6WrE4pV7ggREVEDpPphqbS0NIwZMwY9evRAz549MWfOHBQXFyM5ORkAkJSUhOjoaGRkZCAgIACdO3d2WD80NBQAnNrVdPWu4Ew3REREnqZ6uBk+fDjOnDmDqVOnIi8vD926dcOqVavkSca5ubnQ6VQ/Y71WbBy5ISIiUo3q4QYAUlNTkZqa6vK5DRs2VLvuwoUL3d+heroycMORGyIiIhX41pCIj5Dn3KjcDyIiooaI4UYBV2+/wHhDRETkaQw3ChC8KzgREZFqGG4UwAnFRERE6mG4UQAnFBMREamH4UYBvIgfERGRehhuFMAJxUREROphuFGAfeSGh6WIiIg8j+FGAfLIjbrdICIiapAYbhTEU8GJiIg8j+FGAVdPBWe6ISIi8jSGGwXwOjdERETqYbhRwNUrFDPdEBEReRrDjQIEJxQTERGphuFGATwVnIiISD0MNwqwnwqu47tLRETkcdz9KsA+oZgHpoiIiDyP4UYBV2+cqWo3iIiIGiSGGwXwxplERETqYbhRAE8FJyIiUg/DjQJ4bykiIiL1MNwowHol3eh5uhQREZHHce+rgDKbDQBg0HPshoiIyNMYbhRQJo/cMNwQERF5GsONAsqs5eHGT8+3l4iIyNO491WAfFiKIzdEREQex3CjAAtHboiIiFTDva8C5MNSHLkhIiLyOIYbBdgPS/nxbCkiIiKPY7hRgP1sKR6WIiIi8jzufRVgPyzFCcVERESex3CjAPthKV7nhoiIyPMYbhQgj9zwsBQREZHHce+rgFKr/fYLfHuJiIg8jXtfBdjDjb8f314iIiJP495XAaWW8nBjZLghIiLyOO59FcCRGyIiIvV4xd537ty5iI2NRUBAAOLj47Ft27Yql/3666/Ro0cPhIaGolGjRujWrRs+++wzD/b22krLGG6IiIjUovred9myZUhLS8O0adOwc+dOdO3aFf3798fp06ddLt+sWTM8//zzyM7Oxu7du5GcnIzk5GSsXr3awz2vWumVs6X8OaGYiIjI41Tf+86ePRspKSlITk5Gp06dMG/ePAQFBWHBggUul+/duzfuu+8+dOzYEW3atMHEiRNx8803Y/PmzR7uuSNzmRUnCi7hvBm4bLECAAIMqr+9REREDY6fmi9eWlqKnJwcpKeny206nQ6JiYnIzs6+5vpCCKxbtw779+/Hq6++6nIZs9kMs9ksPzaZTAAAi8UCi8VSzwqu+uVYAYZ9uA3lb2kZAEASNre+htrstWippsq0XiPr831ar1Hr9QHar1Gp+mqzPUkIIdz66rVw8uRJREdHY8uWLUhISJDbJ0+ejI0bN2Lr1q0u1yssLER0dDTMZjP0ej3ee+89PProoy6XnT59OmbMmOHUvnjxYgQFBbmnEABHioB3f9PLj29oDKTeZAUvUkxERFR/JSUlGDVqFAoLCxESElLtsqqO3NRVcHAwdu3ahYsXLyIrKwtpaWlo3bo1evfu7bRseno60tLS5McmkwkxMTHo16/fNd+c2kqxWJCZmYm+ffvCYDC4ddvewKLx+gDt18j6fJ/Wa9R6fYD2a1SqPvuRl5pQNdyEhYVBr9cjPz/foT0/Px+RkZFVrqfT6dC2bVsAQLdu3bBv3z5kZGS4DDdGoxFGo9Gp3WAwKPZLpeS2vYHW6wO0XyPr831ar1Hr9QHar9Hd9dVmW6rOePX390dcXByysrLkNpvNhqysLIfDVNdis9kc5tUQERFRw6X6Yam0tDSMGTMGPXr0QM+ePTFnzhwUFxcjOTkZAJCUlITo6GhkZGQAADIyMtCjRw+0adMGZrMZK1euxGeffYb3339fzTKIiIjIS6geboYPH44zZ85g6tSpyMvLQ7du3bBq1SpEREQAAHJzc6HTXR1gKi4uxhNPPIHjx48jMDAQHTp0wOeff47hw4erVQIRERF5EdXDDQCkpqYiNTXV5XMbNmxwePzKK6/glVde8UCviIiIyBfxKnNERESkKQw3REREpCkMN0RERKQpDDdERESkKQw3REREpCkMN0RERKQpDDdERESkKQw3REREpCkMN0RERKQpXnGFYk8SQgCo3a3Ta8pisaCkpAQmk0mTd3rVen2A9mtkfb5P6zVqvT5A+zUqVZ99v23fj1enwYWboqIiAEBMTIzKPSEiIqLaKioqQpMmTapdRhI1iUAaYrPZcPLkSQQHB0OSJLdu22QyISYmBseOHUNISIhbt+0NtF4foP0aWZ/v03qNWq8P0H6NStUnhEBRURGioqIcbqjtSoMbudHpdLj++usVfY2QkBBN/sLaab0+QPs1sj7fp/UatV4foP0alajvWiM2dpxQTERERJrCcENERESawnDjRkajEdOmTYPRaFS7K4rQen2A9mtkfb5P6zVqvT5A+zV6Q30NbkIxERERaRtHboiIiEhTGG6IiIhIUxhuiIiISFMYboiIiEhTGG7cZO7cuYiNjUVAQADi4+Oxbds2tbtUIxkZGfjLX/6C4OBgNG/eHPfeey/279/vsEzv3r0hSZLD17hx4xyWyc3NxeDBgxEUFITmzZvj2WefRVlZmSdLqdL06dOd+t+hQwf5+cuXL2PChAm47rrr0LhxYzzwwAPIz8932IY31xcbG+tUnyRJmDBhAgDf+/w2bdqEIUOGICoqCpIkYcWKFQ7PCyEwdepUtGjRAoGBgUhMTMSff/7psMz58+fx8MMPIyQkBKGhoRg7diwuXrzosMzu3btx++23IyAgADExMXjttdeULk1WXY0WiwVTpkxBly5d0KhRI0RFRSEpKQknT5502Iarz33WrFkOy6hV47U+w0ceecSp7wMGDHBYxpc/QwAu/01KkoTXX39dXsZbP8Oa7Bfc9Xdzw4YNuOWWW2A0GtG2bVssXLjQPUUIqrelS5cKf39/sWDBAvHbb7+JlJQUERoaKvLz89Xu2jX1799ffPzxx2LPnj1i165dYtCgQeKGG24QFy9elJe58847RUpKijh16pT8VVhYKD9fVlYmOnfuLBITE8XPP/8sVq5cKcLCwkR6eroaJTmZNm2auOmmmxz6f+bMGfn5cePGiZiYGJGVlSV2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",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"#print(\"history\",history.history)\n",
|
|
"plt.plot(history.history['sparse_categorical_accuracy'],label=\"train\")\n",
|
|
"plt.plot(history.history['val_sparse_categorical_accuracy'],label=\"validation\")\n",
|
|
"plt.title('Model Accuracy')\n",
|
|
"#plt.yscale('log')\n",
|
|
"plt.ylabel('Acc')\n",
|
|
"plt.xlabel('Iteration')\n",
|
|
"plt.grid()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Save the trained model"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 114,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"INFO:tensorflow:Assets written to: IrisModel/assets\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"keras_model.save(\"IrisModel\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Check we can re-load our saved model back in\n",
|
|
"- And check it still works (we will print its accuracy on the test set!)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 115,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Model: \"sequential_26\"\n",
|
|
"_________________________________________________________________\n",
|
|
" Layer (type) Output Shape Param # \n",
|
|
"=================================================================\n",
|
|
" dense_78 (Dense) (None, 20) 100 \n",
|
|
" \n",
|
|
" dense_79 (Dense) (None, 20) 420 \n",
|
|
" \n",
|
|
" dense_80 (Dense) (None, 3) 63 \n",
|
|
" \n",
|
|
"=================================================================\n",
|
|
"Total params: 583\n",
|
|
"Trainable params: 583\n",
|
|
"Non-trainable params: 0\n",
|
|
"_________________________________________________________________\n",
|
|
"Accuracy of saved model on test set 0.96666664\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"model2 = keras.models.load_model('IrisModel') # just need to give it a folder name here.\n",
|
|
"model2.summary()\n",
|
|
"predictions=model2(inputs_test)\n",
|
|
"accuracy_metric=keras.metrics.SparseCategoricalAccuracy()\n",
|
|
"print(\"Accuracy of saved model on test set\",accuracy_metric(labels_test,predictions).numpy())"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3 (ipykernel)",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.11.0"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 4
|
|
}
|