{ "cells": [ { "cell_type": "markdown", "id": "0b7d591a", "metadata": {}, "source": [ "\n", " An example of the minimzer usage in tensorflow\n", " the loss function is plotted and the result in terms of a line\n" ] }, { "cell_type": "code", "execution_count": 1, "id": "270932f3", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2023-04-11 16:44:42.299418: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: SSE4.1 SSE4.2 AVX AVX2 AVX512F AVX512_VNNI FMA\n", "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", "2023-04-11 16:44:42.360104: I tensorflow/core/util/port.cc:104] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.\n" ] } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import tensorflow as tf" ] }, { "cell_type": "code", "execution_count": 2, "id": "77cd99a8", "metadata": {}, "outputs": [], "source": [ "# Define the training data\n", "train_X = np.asarray([3.3,4.4,5.5,6.71,6.93,4.168,9.779,6.182,7.59,2.167,\n", " 7.042,10.791,5.313,7.997,5.654,9.27,3.1])\n", "train_Y = np.asarray([1.7,2.76,2.09,3.19,1.694,1.573,3.366,2.596,2.53,1.221,\n", " 2.827,3.465,1.65,2.904,2.42,2.94,1.3])\n" ] }, { "cell_type": "markdown", "id": "f39cbcd9", "metadata": {}, "source": [ "The input to the model is represented by the train_X \n", "Y_train represents the target or the truth values for the training data\n", "The model will recieve train_X and make predictions on the weights\n", "The difference between these predictions and the actual target values\n", "train_Y will be used to update the weights and minimize the loss function." ] }, { "cell_type": "code", "execution_count": 3, "id": "ed8449c3", "metadata": {}, "outputs": [], "source": [ "# Define the model to a simple linear regression with only one dense layer and\n", "# no activation function for the first layer all train_X points are input\n", "\n", "# model = tf.keras.models.Sequential([\n", "# tf.keras.layers.Dense(1, input_shape=[1])\n", "#])" ] }, { "cell_type": "code", "execution_count": 4, "id": "71e072b4", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2023-04-11 16:44:43.775141: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: SSE4.1 SSE4.2 AVX AVX2 AVX512F AVX512_VNNI FMA\n", "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n" ] } ], "source": [ "# This model has 2 dense layers the first with relu activation\n", "# and the 2nd layer has 1 output unit and uses the default\n", "# linear activation function.\n", "\n", "model = tf.keras.models.Sequential([\n", " tf.keras.layers.Dense(17, activation='relu',input_shape=[1]),\n", " tf.keras.layers.Dense(1)\n", "])" ] }, { "cell_type": "code", "execution_count": 5, "id": "5fabf184", "metadata": {}, "outputs": [], "source": [ "# different optimizer methods can be enabled\n", "\n", "model.compile(optimizer=tf.keras.optimizers.Adam(0.01), loss='mean_squared_error')\n", "#model.compile(optimizer=tf.keras.optimizers.SGD(0.01), loss='mean_squared_error')\n", "#model.compile(optimizer=tf.keras.optimizers.Adagrad(learning_rate=0.01), loss='mean_squared_error')\n", "#model.compile(optimizer=tf.keras.optimizers.RMSprop(learning_rate=0.01), loss='mean_squared_error')\n", "#model.compile(optimizer=tf.keras.optimizers.Ftrl(learning_rate=0.015), loss='mean_squared_error')" ] }, { "cell_type": "code", "execution_count": 6, "id": "22c4124f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/60\n", "1/1 [==============================] - 0s 396ms/step - loss: 15.2606\n", "Epoch 2/60\n", "1/1 [==============================] - 0s 4ms/step - loss: 12.7440\n", "Epoch 3/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 10.4745\n", "Epoch 4/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 8.4519\n", "Epoch 5/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 6.6738\n", "Epoch 6/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 5.1356\n", "Epoch 7/60\n", "1/1 [==============================] - 0s 4ms/step - loss: 3.8306\n", "Epoch 8/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 2.7499\n", "Epoch 9/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 1.8823\n", "Epoch 10/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 1.2142\n", "Epoch 11/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 0.7292\n", "Epoch 12/60\n", "1/1 [==============================] - 0s 4ms/step - loss: 0.4087\n", "Epoch 13/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 0.2310\n", "Epoch 14/60\n", "1/1 [==============================] - 0s 4ms/step - loss: 0.1722\n", "Epoch 15/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 0.2060\n", "Epoch 16/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 0.3049\n", "Epoch 17/60\n", "1/1 [==============================] - 0s 2ms/step - loss: 0.4419\n", "Epoch 18/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 0.5909\n", "Epoch 19/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 0.7296\n", "Epoch 20/60\n", "1/1 [==============================] - 0s 4ms/step - loss: 0.8423\n", "Epoch 21/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 0.9194\n", "Epoch 22/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 0.9578\n", "Epoch 23/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 0.9579\n", "Epoch 24/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 0.9233\n", "Epoch 25/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 0.8606\n", "Epoch 26/60\n", "1/1 [==============================] - 0s 2ms/step - loss: 0.7777\n", "Epoch 27/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 0.6828\n", "Epoch 28/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 0.5839\n", "Epoch 29/60\n", "1/1 [==============================] - 0s 4ms/step - loss: 0.4879\n", "Epoch 30/60\n", "1/1 [==============================] - 0s 2ms/step - loss: 0.4003\n", "Epoch 31/60\n", "1/1 [==============================] - 0s 2ms/step - loss: 0.3253\n", "Epoch 32/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 0.2652\n", "Epoch 33/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 0.2208\n", "Epoch 34/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 0.1917\n", "Epoch 35/60\n", "1/1 [==============================] - 0s 4ms/step - loss: 0.1766\n", "Epoch 36/60\n", "1/1 [==============================] - 0s 4ms/step - loss: 0.1731\n", "Epoch 37/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 0.1785\n", "Epoch 38/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 0.1899\n", "Epoch 39/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 0.2046\n", "Epoch 40/60\n", "1/1 [==============================] - 0s 4ms/step - loss: 0.2202\n", "Epoch 41/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 0.2345\n", "Epoch 42/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 0.2460\n", "Epoch 43/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 0.2537\n", "Epoch 44/60\n", "1/1 [==============================] - 0s 5ms/step - loss: 0.2572\n", "Epoch 45/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 0.2565\n", "Epoch 46/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 0.2520\n", "Epoch 47/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 0.2444\n", "Epoch 48/60\n", "1/1 [==============================] - 0s 4ms/step - loss: 0.2346\n", "Epoch 49/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 0.2234\n", "Epoch 50/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 0.2119\n", "Epoch 51/60\n", "1/1 [==============================] - 0s 4ms/step - loss: 0.2010\n", "Epoch 52/60\n", "1/1 [==============================] - 0s 11ms/step - loss: 0.1912\n", "Epoch 53/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 0.1831\n", "Epoch 54/60\n", "1/1 [==============================] - 0s 4ms/step - loss: 0.1771\n", "Epoch 55/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 0.1730\n", "Epoch 56/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 0.1709\n", "Epoch 57/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 0.1705\n", "Epoch 58/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 0.1713\n", "Epoch 59/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 0.1730\n", "Epoch 60/60\n", "1/1 [==============================] - 0s 3ms/step - loss: 0.1751\n", "{'verbose': 1, 'epochs': 60, 'steps': 1}\n" ] } ], "source": [ "# Train the model and access training parameters\n", "history = model.fit(train_X, train_Y, epochs=60)\n", "print(history.params)" ] }, { "cell_type": "code", "execution_count": 7, "id": "46615960", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Weight matrix shape: (1, 17)\n", "Bias vector shape: (17,)\n", "[[-0.2720451 0.25746062 0.00145817 -0.14928943 -0.18011677 -0.38295865\n", " -0.10688066 -0.08276322 -0.06117761 -0.415354 0.21152566 -0.015845\n", " -0.22856292 0.25203183 0.29251993 -0.08234903 0.6508041 ]]\n" ] } ], "source": [ "# Get the weights of the Dense layer\n", "weights = model.layers[0].get_weights()\n", "# Print the weight matrix and bias vector\n", "print('Weight matrix shape:', weights[0].shape)\n", "print('Bias vector shape:', weights[1].shape)\n", "print (weights[0])" ] }, { "cell_type": "code", "execution_count": 8, "id": "da12fc5b", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjMAAAHFCAYAAAAHcXhbAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAAA9hAAAPYQGoP6dpAABDe0lEQVR4nO3deXxU9b3/8feZmWSykAxZyAZJWGQPIAIiggouKCpu1apVhLb316K4cG2tUtuCXm0q/ZXalh/0alW0VrS9V7jcWhesLCpadkFE1ggBEkKA7MkkmTm/P8IMjAmYZZIzk7yej8d5JHPOTPLJl8C8+W7HME3TFAAAQJiyWV0AAABAWxBmAABAWCPMAACAsEaYAQAAYY0wAwAAwhphBgAAhDXCDAAACGuEGQAAENYIMwAAIKwRZoAuYMmSJTIMQxs3brS6lHOaN2+eDMNo8li4cKGltS1atEhLlixpdP6rr76SYRhNXgPQMRxWFwAAX/fOO+/I5XIFnOvTp49F1TRYtGiRkpOTNWPGjIDz6enp+uSTT9SvXz9rCgNAmAEQekaNGqXk5GSry2gWp9Opiy66yOoygC6NYSYAfh999JGuuOIKxcXFKSYmRhdffLHeeuutgOdUVVXpxz/+sfr06aOoqCglJiZq9OjRWrp0qf85+/fv1x133KGMjAw5nU6lpqbqiiuu0NatW9tU37mGdAzD0Lx58/yPfUNWO3bs0J133imXy6XU1FR973vfU2lpacBrvV6v/vCHP+j8889XdHS0unfvrosuukgrVqyQJPXu3Vs7duzQmjVr/MNevXv3PmdNzWlL3/DfqlWrdO+99yo5OVlJSUm65ZZbdOTIkTa1FdCV0DMDQJK0Zs0aXXXVVRo+fLheeOEFOZ1OLVq0SFOnTtXSpUt1++23S5Iefvhh/fnPf9ZTTz2lkSNHqrKyUp9//rmOHz/u/1rXXnutPB6P5s+fr6ysLBUXF2vdunUqKSlpVi0ej0f19fX+x4ZhyG63t+rn+ta3vqXbb79d3//+97V9+3bNmTNHkvTiiy/6nzNjxgy9+uqr+v73v68nn3xSkZGR2rx5s7766itJ0rJly3TrrbfK5XJp0aJFkhp6ZM6muW3p82//9m+67rrr9Nprryk/P1+PPPKI7r77bn3wwQet+pmBLscE0Om99NJLpiRzw4YNZ33ORRddZKakpJjl5eX+c/X19WZOTo7Zq1cv0+v1mqZpmjk5OeZNN9101q9TXFxsSjKfffbZFtc5d+5cU1Kjo2fPnqZpmmZeXp4pyXzppZcavVaSOXfu3EZfa/78+QHPu++++8yoqCj/z7N27VpTkvn444+fs7ahQ4eal112WaPzTdXU3Lb0/bncd999AV9z/vz5piSzoKDgnDUBaMAwEwBVVlbqX//6l2699VZ169bNf95ut2vatGk6dOiQdu3aJUm68MIL9fbbb+uxxx7T6tWrVV1dHfC1EhMT1a9fP/3617/WggULtGXLFnm93hbV8/7772vDhg3+4x//+Eerf7Ybbrgh4PHw4cNVU1OjoqIiSdLbb78tSZo1a1arv8eZWtKW56pRkg4cOBCUmoDOjjADQCdPnpRpmkpPT290LSMjQ5L8w0i///3v9eijj2r58uWaNGmSEhMTddNNN2nPnj2SGoaE/vnPf+rqq6/W/PnzdcEFF6hHjx568MEHVV5e3qx6RowYodGjR/sP35t7ayQlJQU89g0P+ULYsWPHZLfblZaW1urvcaaWtGVzawRwboQZAEpISJDNZlNBQUGja76JqL7VRbGxsXriiSf05ZdfqrCwUIsXL9ann36qqVOn+l+TnZ2tF154QYWFhdq1a5f+/d//XYsWLdIjjzzSpjqjoqIkSW63O+D818NBS/To0UMej0eFhYVtqs2nJW0JIDgIMwAUGxursWPH6s033wzoDfB6vXr11VfVq1cvDRgwoNHrUlNTNWPGDN15553atWuXqqqqGj1nwIAB+tnPfqZhw4Zp8+bNbaozNTVVUVFR2rZtW8D5//mf/2n115wyZYokafHixed8ntPpbFZPSWvbEkDrsZoJ6EI++OAD/wqdM1177bXKzc3VVVddpUmTJunHP/6xIiMjtWjRIn3++edaunSpDMOQJI0dO1bXX3+9hg8froSEBO3cuVN//vOfNW7cOMXExGjbtm26//77ddttt6l///6KjIzUBx98oG3btumxxx5rU/2GYejuu+/Wiy++qH79+mnEiBFav369XnvttVZ/zUsuuUTTpk3TU089paNHj+r666+X0+nUli1bFBMTowceeECSNGzYML3++ut644031LdvX0VFRWnYsGFNfs3mtiWA4CDMAF3Io48+2uT5vLw8XXbZZfrggw80d+5czZgxQ16vVyNGjNCKFSt0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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "1/1 [==============================] - 0s 61ms/step\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGdCAYAAADAAnMpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAAA9hAAAPYQGoP6dpAABEP0lEQVR4nO3deXxM5/4H8M8YkYUsTSqbRCd2opYKtykhsZWoyw23evkVt7ropUXqlthKi1CthlJbLS3VTVJV1C4RLbU0QYk9IdLJja0JIdvk/P6YZuqYGckkM3Nm5nzer5eXznfOzPlGUvPxPM95jkIQBAFEREREEqkldQNEREQkbwwjREREJCmGESIiIpIUwwgRERFJimGEiIiIJMUwQkRERJJiGCEiIiJJMYwQERGRpGpL3UBVlJeX4/fff4e7uzsUCoXU7RAREVEVCIKAO3fuIDAwELVqGR//sIsw8vvvvyM4OFjqNoiIiKgasrOzERQUZPR5uwgj7u7uALRfjIeHh8TdEBERUVUUFBQgODhY9zlujF2EkYqpGQ8PD4YRIiIiO1PZEgsuYCUiIiJJMYwQERGRpBhGiIiISFJ2sWakKgRBQFlZGTQajdStkI1TKpWoXbs2LxMnIrIRDhFGSkpKoFarce/ePalbITvh5uaGgIAA1KlTR+pWiIhkz+7DSHl5OTIzM6FUKhEYGIg6derwX7xklCAIKCkpwfXr15GZmYmmTZs+ciMeIiKyPLsPIyUlJSgvL0dwcDDc3NykbofsgKurK5ycnHDlyhWUlJTAxcVF6paIiGTNYf5JyH/dkin480JEZDv4NzIRERFJimHETmVlZUGhUCA9Pb3Kr1m3bh28vLwk74OIiOhBDCMVNBogORn48kvt71a4RDg7OxujRo3SLbx94oknMG7cONy8ebPS1wYHB0OtVqN169ZVPt+QIUNw/vz5mrRcLZGRkVAoFFAoFHB2dkaDBg3Qv39/JCUlmfxeM2fORLt27czfJBERSYZhBACSkgCVCoiKAoYO1f6uUmnrFnL58mWEhYXh/Pnz+PLLL3Hx4kUsX74ce/fuRXh4OG7dumX0tSUlJVAqlfD390ft2lVfg+zq6gpfX19ztG+yV155BWq1GhcvXkRiYiJatWqFF154Aa+++qok/RARke1gGElKAgYPBq5dE9dzcrR1CwWSMWPGoE6dOti1axe6deuGhg0bom/fvtizZw9ycnIwdepU3bEqlQqzZ8/GyJEj4enpiVdeecXg9MiWLVvQtGlTuLq6IioqCp999hkUCgX++OMPAPrTNBWjDOvXr4dKpYKnpydeeOEF3LlzR3fMjh070KVLF3h5ecHHxwfPPfccLl26ZPLX6+bmBn9/fwQHB+Ppp5/G/PnzsWLFCqxatQp79uzRHTdp0iQ0a9YMbm5uaNSoEaZPn47S0lJd/7NmzcKJEyd0Iy3r1q0DACxcuBBPPvkk6tati+DgYPznP//B3bt3Te6TiEhuvk/Pwaepl1FUKt2mofIOIxoNMG4cIAj6z1XUxo83+5TNrVu3sHPnTvznP/+Bq6ur6Dl/f38MGzYMX3/9NYQH+lqwYAFat26N48ePY/r06XrvmZWVhcGDB2PgwIFIT0/Ha6+9Jgo0xly6dAmbN2/G1q1bsXXrVqSkpGDevHm65wsLCxEbG4ujR49i7969qFWrFv7xj3+gvLy8Bn8CWiNGjMBjjz0mmq5xd3fHunXrcObMGSxatAirVq3CRx99BEA7zfTWW28hNDQUarUaarUaQ4YMAaC9Ombx4sX47bff8Nlnn2Hfvn14++23a9wjEZGjKtWUo9m0HzHuq3TM3paBE9l/SNaL3e8zUiOpqfojIg8SBCA7W3tcZKTZTnvhwgUIgoCWLVsafL5ly5a4ffs2rl+/rptW6d69OyZOnKg7JisrS/Sa5cuXo3nz5liwYAEAoHnz5vjtt98wZ86cR/ZSXl6OdevWwd3dHQDw4osvYu/evbrXDRo0SHT86tWr4evrizNnzpi0XsWQWrVqoVmzZqKvZdq0abr/VqlUeOutt/D111/j7bffhqurK+rVq4fatWvD399f9F7jx4/X/XdISAjee+89vP766/jkk09q1CMRkSPKUBeg76JUUS1M5S1RN3IPI2q1eY8zk4oRkQd3kg0LC3vka86dO4eOHTuKap06dar0XCqVShdEACAgIAB5eXm6x5cuXcL06dNx+PBh3LhxQzcicvXq1RqHEUD7tT74dW7atAkJCQm4ePEi7t69i7KyMnh4eFT6Pvv378fcuXNx5swZFBQUoKysDEVFRSgsLETdunVr3CcRkaNYsPMslu7/a7r96Ube+OrVcAk7kvs0TUCAeY+roiZNmkChUODMmTMGnz979iwee+wxPP7447paZR+oD3+oV9Qq4+TkJHqsUChEUzD9+/fHzZs3sWrVKvzyyy/45ZdfAGgX0daURqPBhQsXEBISAgA4fPgwXnjhBfTt2xdbt25FWloapk6dWum5rly5gujoaLRu3RqJiYk4fvw4li5dCgC69SZERHJXUlYO1eRtoiCybNhTkgcRQO4jIxERQFCQdrGqoQ9uhUL7fESEWU/r4+ODXr164ZNPPsGECRNE60Zyc3PxxRdfYPjw4SbdY6dFixbYvn27qHbs2LEa9Xnz5k1kZGRgxYoViPjzz+DgwYM1es8HffbZZ7h9+7ZuKuinn37CE088IVrrcuXKFdFr6tSpo3dn5mPHjqGsrAwffvihbmfVb775xmx9EhHZu5PX/sDfl/wkqqVN74XH6trGzULlPTKiVAKLFmn/++EP/orHCQna48xsyZIlKC4uxrPPPosDBw4gOzsbO3bsQK9evdCgQYNK13o87LXXXsPZs2cxadIknD9/Ht98843uSpPq3jjwscceg4+PD1auXImLFy9i3759iI2NrdZ73bt3D7m5ubh27Rp++eUXTJo0CaNHj8brr7+OqKgoANoRo6tXr+Krr77CpUuXsHjxYnz33Xei91GpVMjMzER6ejpu3LiB4uJiNG7cGGVlZfj4449x+fJlrF+/HsuXL69Wn0REjmb21jOiIBLZvD6y5vWzmSACyD2MAEBMDLBpE9CggbgeFKStx8RY5LRNmzbFsWPH0LhxYwwZMgSNGzfGq6++iqioKBw6dAje3qYtJAoJCcGmTZuQlJSENm3aYNmyZboRBmdn52r1WKtWLXz11Vc4fvw4WrdujQkTJugWyJpq1apVCAgIQOPGjfGPf/wDZ86cwddffy1aYDpgwABMmDABY8eORbt27fDzzz/rXTk0aNAg9OnTB1FRUahfvz6+/PJLtGvXDgsXLsT8+fPRunVrfPHFF4iPj69Wn0REjqKoVAPV5G349GCmrrZ6RBjW/bvy9YTWphCqsrBAYgUFBfD09ER+fr7eYsaioiJkZmYiJCSkZndf1Wi0V82o1do1IhERFhkRsaY5c+Zg+fLlyM7OlroVm2O2nxsiIhv069XbiPnkZ1HtxIze8HRzMvIKy3jU5/eD5L1m5EFKpVkv35XCJ598go4dO8LHxwc//fQTFixYgLFjx0rdFhERWdG0zaew4fBV3ePoJ/3xybAOEnZUOYYRB3LhwgXMnj0bt27dQsOGDfHWW28hLi5O6raIiMgK7pdo0HLGDlHt85c6oWuz+hJ1VHUMIw7ko48+0u1WSkRE8vHL5ZsYsvKwqHZqZm+4u1h3Wqa6GEaIiIjs2MRvT2DT8b92E/9H+wb4aEg76RqqBoYRIiIiO1RYXIbQd3aKahtf+Rueafy4kVfYLoYRIiIiO3Pwwg383+pfRLUz7z4Ltzr2+bFun10TERHJ1NiNv2Lryb/umfavTsGIj2kjYUc1xzBCRERkBwqKStFm5i5RbdPocEnvtmsuDCNEREQ2bv+5PPx77VFR7ex7feDiZN+bc1bgdvAyMHPmTLRr1073eOTIkRg4cKDV+8jKyoJCoUB6errVz01EZK9e/uyYKIiMfEaFrHn9HCaIAAwjkho5ciQUCgUUCgWcnJzQqFEjTJw4EYWFhRY976JFi3Q30asMAwQRkTT+uFcC1eRt2JPxP11t85jOmPn3UAm7sgxO00isT58+WLt2LUpLS5GamoqXX34ZhYWFWLZsmei40tJSODmZZ/MaT09Ps7wPERFZxs7TuXht/XFR7dzsPnCu7TijIQ/iyIjEnJ2d4e/vj+DgYAwdOhTDhg3D5s2bdVMra9asQaNGjeDs7AxBEJCfn49XX30Vvr6+8PDwQPfu3XHixAnRe86bNw9+fn5wd3fHqFGjUFRUJHr+4Wma8vJyzJ8/H02aNIGzszMaNmyIOXPmANDeDRgA2rdvD4VCgcgH7t+zdu1atGzZEi4uLmjRooXoDrwAcOTIEbRv3x4uLi4ICwtDWlqaGf/kiIgc0/99+osoiIzu1hhZ8/o5bBABHHBkRBAE3C/VSHJuVyclFApFzd7D1RWlpaUAgIsXL+Kbb75BYmIilH/eQbhfv37w9vbG9u3b4enpiRUrVqBHjx44f/48vL298c033+Cdd97B0qVLERERgfXr12Px4sVo1KiR0XPGxcVh1apV+Oijj9ClSxeo1WqcPXsWgDZQdOrUCXv27EFoaCjq1KkDAFi1ahXeeecdLFmyBO3bt0daWhpeeeUV1K1bFyNGjEBhYSGee+45dO/eHRs2bEBmZibGjRtXoz8bIiJHdvNuMTrM3iOqbX2jC1o3cPzRbIcLI/dLNWg1Y2flB1pATTecOXLkCDZu3IgePXoAAEpKSrB+/XrUr6+9ydG+fftw6tQp5OXlwdnZGQDwwQcfYPPmzdi0aRNeffVVJCQk4KWXXsLLL78MAJg9ezb27NmjNzpS4c6dO1i0aBGWLFmCESNGAAAaN26MLl26AIDu3D4+PvD399e97r333sOHH36ImJgYANoRlDNnzmDFihUYMWIEvvjiC2g0GqxZswZubm4IDQ3FtWvX8Prrr1f7z4eIyFFtPfk7xm78a/S4di0FMt7rAyelPCYwHC6M2JutW7eiXr16KCsrQ2lpKQYMGICPP/4Yn3zyCZ544gldGACA48eP4+7du/Dx8RG9x/3793Hp0iUAQEZGBkaPHi16Pjw8HPv37zd4/oyMDBQXF+sCUFVcv34d2dnZGDVqFF555RVdvaysTLceJSMjA23btoWbm5uoDyIi+osgCBi8/BCOX7mtq43r0RQTejWTsCvrc7gw4uqkxJl3n5Xs3KaKiorCsmXL4OTkhMDAQNEi1bp164qOLS8vR0BAAJKTk/Xex8vLy+RzA9ppIVOVl5cD0E7V/O1vfxM9VzGdJAhCtfohIpKLvIIidJq7V1TbOb4rmvu7S9SRdBwujCgUCrvam79u3bpo0qRJlY596qmnkJubi9q1a0OlUhk8pmXLljh8+DCGDx+uqx0+fNjgsQDQtGlTuLq6Yu/evbqpnQdVrBHRaP5ah+Pn54cGDRrg8uXLGDZsmMH3bdWqFdavX4/79+/rAs+j+iAikpOkX68h9pu/Lj6o51wb6TN6obZMpmUeZj+f2oSePXsiPDwcAwcOxPz589G8eXP8/vvv2L59OwYOHIiwsDCMGzcOI0aMQFhYGLp06YIvvvgCp0+fNrqA1cXFBZMmTcLbb7+NOnXqoHPnzrh+/TpOnz6NUaNGwdfXF66urtixYweCgoLg4uICT09PzJw5E2+++SY8PDzQt29fFBcX49ixY7h9+zZiY2MxdOhQTJ06FaNGjcK0adOQlZWFDz74wMp/YkREtkUQBDz38UGc/r1AV3u7T3P8J7Jq/yh1VPKMYHZKoVBg+/bt6Nq1K1566SU0a9YML7zwArKysuDn5wcAGDJkCGbMmIFJkyahQ4cOuHLlSqWLRqdPn4633noLM2bMQMuWLTFkyBDk5eUBAGrXro3FixdjxYoVCAwMxIABAwAAL7/8Mj799FOsW7cOTz75JLp164Z169bpLgWuV68efvjhB5w5cwbt27fH1KlTMX/+fAv+6RAR2TZ1/n2ExG0XBZG9b3WTfRABAIVgB5P7BQUF8PT0RH5+Pjw8PETPFRUVITMzEyEhIXBxcZGoQ7I3/LkhImv66shVTE46pXtc390Zh+N6QFmrZttB2LpHfX4/iNM0REREFiIIAnosTMHl63/d5mP6c60wqkuIhF3ZHoYRIiIiC8i+dQ8R74u3VUj5bySe8Klr5BXyxTBCRERkZp8fysKM70/rHjf0dkPyxEjUcvBpmepiGCEiIjKT8nIBnefvgzr/r12v3xvYGi8+/YSEXdk+hhEiIiIzyLpRiMgPkkW1g5OiEPSYm+EXkI7DhBE7uCiIbAh/XojInFYduIw52zN0j5v51cPO8V1rfPNUubD7MFKxffq9e/eqtbU5ydO9e/cAQLT9PhGRqTTlAsJm78bte6W62vuD2uD5jsESdmV/7D6MKJVKeHl56TbpcnNzYxIlowRBwL1795CXlwcvLy/dvXSIiEx1Me8Oei48IKodjusBf0/uXWQquw8jAHS3tq8IJESV8fLy0v3cEBGZasm+C/hg13nd47ZBntg8pjP/MVxNDhFGFAoFAgIC4Ovri9LS0spfQLLm5OTEEREiqpYyTTmaTP1RVEsY0g4D2zeQqCPHYFIYWbZsGZYtW4asrCwAQGhoKGbMmIG+ffsaPD45ORlRUVF69YyMDLRo0cL0biuhVCr5IUNERBaxOS0H479OF9WOTu2J+u7O0jTkQEwKI0FBQZg3b57ulvefffYZBgwYgLS0NISGhhp93blz50R70tevX7+a7RIREVmfavI20WPvunXw6/ReEnXjeEwKI/379xc9njNnDpYtW4bDhw8/Moz4+vrCy8urWg0SERFJ5V5JGVrN2CmqPdcmAEuGPiVRR46p2mtGNBoNvv32WxQWFiI8PPyRx7Zv3x5FRUVo1aoVpk2bZnDq5kHFxcUoLi7WPS4oKHjE0UREROb35ZGriHvgTrsAsCe2G5r41pOoIwvQaIDUVECtBgICgIgIQILlDiaHkVOnTiE8PBxFRUWoV68evvvuO7Rq1crgsQEBAVi5ciU6dOiA4uJirF+/Hj169EBycjK6du1q9Bzx8fGYNWuWqa0RERGZxcPTMgCQNa+fBJ1YUFISMG4ccO3aX7WgIGDRIiAmxqqtKAQTt6IsKSnB1atX8ccffyAxMRGffvopUlJSjAaSh/Xv3x8KhQJbtmwxeoyhkZHg4GDk5+eL1p4QERGZU0FRKdrM3CWqvdAxGPMGtZGoIwtJSgIGDwYejgAVlyZv2mSWQFJQUABPT89KP79NDiMP69mzJxo3bowVK1ZU6fg5c+Zgw4YNyMjIqPzgP1X1iyEiIqquNQcz8e7WM6Lagf9GoaGPg91bRqMBVCrxiMiDFArtCElmZo2nbKr6+V3jfUYEQRCNYlQmLS0NAQEBNT0tERGR2chiWqZCaqrxIAJoR0uys7XHRUZapSWTwsiUKVPQt29fBAcH486dO/jqq6+QnJyMHTt2AADi4uKQk5ODzz//HACQkJAAlUqF0NBQlJSUYMOGDUhMTERiYqL5vxIiIiIT3S4sQfv3dotqL3UOwYz+VVt6YJfUavMeZwYmhZH//e9/ePHFF6FWq+Hp6Yk2bdpgx44d6NVLe621Wq3G1atXdceXlJRg4sSJyMnJgaurK0JDQ7Ft2zZER0eb96sgIiIy0dL9F7Fg5zlR7VBcdwR4OvhNV6s6O2HFWYwarxmxBq4ZISIic5LVtMzDKtaM5OToL2AFJFkzUqtGZyEiIrIjeXeK9ILIG92byCeIANqAsWiR9r8fvrFfxeOEBKvuN8IwQkREsvDBznPoNGevqHZ0ak+81bu5RB1JKCZGe/lug4du8BcUZLbLek3hEHftJSIiehRZT8sYExMDDBhgnzuwEhER2Yvf/7iPZ+btE9Um9WmB1yMbS9SRjVEqrXb57qMwjBARkUOaueU01v2cJaqlz+gFL7c61XtDG7mPiyNiGCEiIodj9mkZG7qPiyPiAlYiInIYV2/e0wsiM/u3qnkQGTxYf9fSnBxtPSmp+u9NALjPCBEROYj/fnsC3x4XB4ZTM3vD3cWp+m9qxfu4OCKr3ZuGiIhIaha7WsYG7+PiiBhGiIjIbh3JvIXnVxwS1d4f1AbPdww2zwls8D4ujohhhIiI7FJI3Da93czPvPss3OqY8aPNBu/j4oi4gJWIiOyKIAhQTdYPIlnz+pk3iADay3eDgvS3Ta+gUADBwdrjqNoYRoiIyG6knL+OkLjtotqYqMaW203VBu/j4og4TUNERHbB0CJVs0/LGFJxHxdD+4wkJHCfETNgGCEiIpsmCILeaAhg5XvL2NB9XBwRwwgREdmsHb/lYvSG46La232a4z+RTazfjI3cx8URMYwQEZFNMjQtc/a9PnBx4miEo2EYISIim6IpF9B4isTTMmRVDCNERGQzkn69hthvTohq7w0IxYvhKmkaIqtgGCEiIptgaFrmwpy+cFJyFwpHxzBCRESSKtWUo+nUH/XqnJaRD4YRIiKSzPrDVzB982+i2sLn2yLmqSCJOiIpMIwQEZEkDE3LXJobDWUtI1uvk8PiRBwREVlVUanGYBDJmtePQUSmODJCRERWsyz5EubvOCuqLf+/p9CnNe96K2cMI0REZBWGRkMy46OhMHZHXJINhhEish8aDe8NYocKi8sQ+s5OvTqvlqEKDCNEZB+SkgzfNXXRIt411YYt2HkWS/dfEtU+e6kTujWrL1FHZIsYRojI9iUlAYMHA4IgrufkaOubNjGQ2CBOy1BV8WoaIrJtGo12ROThIAL8VRs/Xnsc2YT8+6VGr5ZhECFDODJCRLYtNVU8NfMwQQCys7XH8fbuknvn+9/w2aErotq3o8PRUeUtUUdkDxhGiMi2qdXmPY4sxthoCFFlOE1DRLYtoIr7T1T1ODK7m3eL9YKId906DCJUZRwZISLbFhGhvWomJ8fwuhGFQvt8RIT1eyNM+Dod36XliGpbxnZGmyAvaRoiu8QwQkS2TanUXr47eLA2eDwYSCoWQyYkcL8RCXBahsyF0zREZPtiYrSX7zZoIK4HBfGyXgnk5hfpBZFGj9dlEKFq48gIEdmHmBhgwADuwCqxlz87ij0ZeaLargld0czPXaKOyBEwjBCR/VAqefmuhDgtQ5bCaRoiInqkqzfv6QWR9g29GETIbDgyQkRERv1z+c84mnVbVEv5bySe8KkrUUfkiBhGiIjIIE7LkLVwmoaIiEQu5t3RCyJRzesziJDFcGSEiIh0ei5MwcW8u6Laz5O7I9DLVaKOSA4YRoiICACnZUg6nKYhIpK533Ly9YLIgHaBDCJkNRwZISKSsY5z9uD6nWJR7di0nni8nrNEHZEcMYwQEckUp2XIVnCahohIZo5m3dILIi8+/QSDCEmGIyNERDLSZMp2lJULotqJGb3h6eYkUUdEDCNERLIgCAJC4rbr1TkaQraA0zRERA4u9cJ1vSDyemRjBhGyGSaFkWXLlqFNmzbw8PCAh4cHwsPD8eOPPz7yNSkpKejQoQNcXFzQqFEjLF++vEYNExFR1akmb8OLq4+IaqdnPYtJfVpI1BGRPpPCSFBQEObNm4djx47h2LFj6N69OwYMGIDTp08bPD4zMxPR0dGIiIhAWloapkyZgjfffBOJiYlmaZ6IiAwTBMHo1TJ1nTlDT7ZFIQiCUPlhxnl7e2PBggUYNWqU3nOTJk3Cli1bkJGRoauNHj0aJ06cwKFDh6p8joKCAnh6eiI/Px8eHh41aZeIyOHtPJ2L19YfF9X++2xzjIlqIlFHJFdV/fyudjzWaDT49ttvUVhYiPDwcIPHHDp0CL179xbVnn32WaxevRqlpaVwcjK8eru4uBjFxX9twlNQUFDdNomIZMXQaMjZ9/rAxUkpQTdEVWPyAtZTp06hXr16cHZ2xujRo/Hdd9+hVatWBo/Nzc2Fn5+fqObn54eysjLcuHHD6Dni4+Ph6emp+xUcHGxqm0REslJebnxahkGEbJ3JYaR58+ZIT0/H4cOH8frrr2PEiBE4c+aM0eMVCoXoccWs0MP1B8XFxSE/P1/3Kzs729Q2iYhkY3NaDhpNEV8tM+vvobxahuyGydM0derUQZMm2nnHsLAwHD16FIsWLcKKFSv0jvX390dubq6olpeXh9q1a8PHx8foOZydneHszPsiEBFVxtBoyIU5feGklNHODRoNkJoKqNVAQAAQEQEoORpkT2r80yoIgmh9x4PCw8Oxe/duUW3Xrl0ICwszul6EiIgqV6opNzotI6sgkpQEqFRAVBQwdKj2d5VKWye7YdJP7JQpU5CamoqsrCycOnUKU6dORXJyMoYNGwZAO70yfPhw3fGjR4/GlStXEBsbi4yMDKxZswarV6/GxIkTzftVEBHJSPyPGWg6VbzH0wf/bCu/aZmkJGDwYODaNXE9J0dbZyCxGyZN0/zvf//Diy++CLVaDU9PT7Rp0wY7duxAr169AABqtRpXr17VHR8SEoLt27djwoQJWLp0KQIDA7F48WIMGjTIvF8FEZFMGBoNuTQ3GspaxtfhOSSNBhg3DjC0O4UgAAoFMH48MGAAp2zsQI33GbEG7jNCRHJXVKpBi+k79OqyGw2pkJysnZKpzP79QGSkpbshIyy+zwgREVnH5MST+Oqo+KrC6dEtMKo8G/jyS3ku2lSrzXscSYphhIjIhhmalrncsRi1hkWK10oEBQGLFgExMdZrTkoBAeY9jiQloyXXRET2405RqeGrZToVo9Y/uWgTERHaAGZszyqFAggO1h5HNo9hhIjIxoxefxxPztwlqr0/uA2y5vR59KJNQLtoU6OxfJNSUyq1I0GAfiCpeJyQIK+pKzvGMEJEZENUk7dhx2nxZpGZ8dF4PixYu7HXwyMiDxIEIDtbe5wcxMQAmzYBDRqI60FB2rpcpqwcANeMEBHZgFuFJXjqvd16ddHVMly0qS8mRnv5LndgtWsMI0REEhuy4hB+ybwlqi0b9hT6PvnQ4ksu2jRMqeTlu3aOYYSISELGtnQ3qGLRZk6O4XUjCoX2eS7aJDvDNSNERBLIzS8yLYgAXLRJDosjI0QkLzZwh9deC1NwIe+uqPbZS53QrVn9yl9csWhz3Dj9fUYSErhok+wSwwgRyUdSkuEPcStuFmbyaIghXLRJDob3piEieai4w+vDf+VVTG9Y+FLQKzcL0W1Bsl5dtveWIVmo6uc3wwgROT6NBlCpjO/RUbHwMzPTIqMLhkZDNo0OR5jK2+znIrIlVf385gJWInJ8Em4WZmxahkGE6C8MI0Tk+CTYLCw9+w/zrA8hkgEuYCUix2flzcIMhZBvR4ejI0dDiAxiGCEix2fFzcI4GkJkOk7TEJHjs8JmYT9dvMEgQlRNHBkhx2EDm1mRDbPgZmGGQsjWN7qgdQPPar8nkZwwjJBjsIHNrMgOWGCzMI6GENUc9xkh+yfxZlYkTzt+y8XoDcf16gwiRH/hpmckDxJvZkXyZGg0ZN9b3dCofj0JuiGyXdz0jORBws2sSJ6MTcswiBBVH8MI2TcJNrMiedp0/JpeEFEoOC1DZA5cwEr2zcqbWZE8GRoN+XlydwR6uUrQDZHj4cgI2beKzawe3juigkIBBAebZTMrkidj0zIMIkTmwzBC9s0Km1mRPK05mKkXRPw8nDktQ2QBnKYh+2fBzaxIngyNhhyf1hM+9Zwl6IbI8TGMkGOwwGZWJD+CICAkbrtenaMhRJbFMEKOQ6kEIiOl7oLs1MLd57F47wVRrXUDD2x9g+uNiCyNYYSIZM/QtMzJmb3h4eIkQTdE8sMwQkSypSkX0HgKp2WIpMYwQkSyNOP73/D5oSuiWrdm9fHZS50k6ohIvhhGiEh2DE3LnH2vD1ycuOCZSAoMI0QkGyVl5Wg27Ue9OqdliKTFMEJEsjB246/YelJ8j6KY9g2wcEg7aRoiIh2GESJyeIamZS7M6QsnJTehJrIF/D+RiBzWvZIyo/eWYRAhsh0cGSGi6tNobHbX2/D4vVDnF4lqo7qEYPpzrSTqiIiMYRghoupJSjJ8P6BFiyS/H5Ch0ZDLc6NRq5aRuzsTkaQ4TklEpktKAgYPFgcRAMjJ0daTkiRp61ZhidFpGQYRItulEARBkLqJyhQUFMDT0xP5+fnw8PCQuh0iedNoAJVKP4hUUCi0IySZmVadsjEUQoaHP4F3B7S2Wg9EJFbVz29O0xCRaVJTjQcRABAEIDtbe5yVblxoKIhkxkdDoeBoCJE94DQNEZlGra78GFOOqwF1/n2j0zIMIkT2gyMjRGSagADzHldNhkLIuB5NMaFXM4uel4jMj2GEiEwTEaFdE5KTo52SeVjFmpGICIu1YGw0hIjsE6dpiMg0SqX28l1AGzweVPE4IcEii1cvX79rn0FEowGSk4Evv9T+rtFI3RGRTeHICBGZLiYG2LTJ8D4jCQkW2WfEUAiZ9fdQjHhGZfZzmZUN78dCZCt4aS8RVZ+VdmC1y9EQ4K/9WB7+a7ZiBGnTJgYScmhV/fxmGCEim/VbTj6e+/igXt0ugoiN7sdCZE3cZ4SI7Jqh0ZCEIe0wsH0DCbqpBhvcj4XIVpm0gDU+Ph4dO3aEu7s7fH19MXDgQJw7d+6Rr0lOToZCodD7dfbs2Ro1TkSOy9i0jN0EEcCm9mMhsnUmhZGUlBSMGTMGhw8fxu7du1FWVobevXujsLCw0teeO3cOarVa96tp06bVbpqIHNPhyzftd33Iw2xkPxYie2DSNM2OHTtEj9euXQtfX18cP34cXbt2feRrfX194eXlZXKDRCQPhkLImpFh6N7CT4JuzMAG9mMhshc12mckPz8fAODt7V3pse3bt0dAQAB69OiB/fv3P/LY4uJiFBQUiH4RkeMyNhpit0EEkHQ/FiJ7U+0wIggCYmNj0aVLF7RubfyumAEBAVi5ciUSExORlJSE5s2bo0ePHjhw4IDR18THx8PT01P3Kzg4uLptEpEN233mf44zLWNIxX4sDR5a6xIUxMt6iR5Q7Ut7x4wZg23btuHgwYMICgoy6bX9+/eHQqHAli1bDD5fXFyM4uJi3eOCggIEBwfz0l4iB2IohHzzWjg6hVQ+0mp3rLQfC5GtseilvW+88Qa2bNmCAwcOmBxEAODpp5/Ghg0bjD7v7OwMZ2fn6rRGRHbAoUdDDFEqefku0SOYNE0jCALGjh2LpKQk7Nu3DyEhIdU6aVpaGgK4gpxIdpJ+vSa/IEJElTJpZGTMmDHYuHEjvv/+e7i7uyM3NxcA4OnpCVdXVwBAXFwccnJy8PnnnwMAEhISoFKpEBoaipKSEmzYsAGJiYlITEw085dCRLbMUAjZ/mYEWgVy6pVI7kwKI8uWLQMARD403Lh27VqMHDkSAKBWq3H16lXdcyUlJZg4cSJycnLg6uqK0NBQbNu2DdHR0TXrnIgMs8H1CRwNIaJH4b1piByJjd0hdu1PmZj1wxm9OoMIkTzw3jREcmPsDrE5Odq6lS8lNTQakjwxEqrH61qtByKyDzXa9IyIbIRGox0RMTTQWVEbP157nBUYm5ZhECEiQxhGiByBKXeItaCFu85xfQgRmYzTNESOwAbuEGsohByO6wF/TxeLnZOIHAPDCJEjkPAOsYIgICRuu16doyFEVFWcpiFyBBV3iH34hmwVFAogONjsd4hdtOeCXhCpXUvBIEJEJuHICJEjqLhD7ODB2uDx4EJWC90h1tC0TPqMXvByq2O2cxCRPHBkhMhRWOkOsZpywegiVQYRIqoOjowQOZKYGGDAAIvtwDrrh9NY+1OWqBbR9HGsH/U3s7w/EckTwwiRo7HQHWINjYZkvNsHrnWk3WqeiOwfwwgRPVJJWTmaTftRr85FqkRkLgwjRGTUuK/S8H3676LagHaBWPRCe4k6IiJHxDBCRAYZmpY5P7sv6tTmunciMi/+rUJEIvdLNEavlmEQISJL4MgIEem8uPoXpF64IaqNfEaFmX8PlagjIpIDhhEiAmB4WubS3GgoaxnZ1ZWIyEw45kokcwVFpUanZRhEiMgaODJCJGN9F6UiQ10gqk3o2QzjejaVqCMikiOGESKZMjQakhkfDYWxm+0REVkIp2mIZObG3WKj0zIMIkQkBY6MEMlI2Ow9uHG3WFSb2b8VRnYOkagjIiKGESLZMDYaQkQkNU7TEDm4nD/uM4gQkU3jyAiRAzMUQhY+3xYxTwVJ0A0RkWEMI0QOiqMhRGQvOE1D5GCyb91jECEiu8KRESIHEh6/F+r8IlFt1fAw9GrlJ1FHRESVYxghchAcDSEie8VpGiI7dzHvDoMIEdk1jowQ2bFm035ESVm5qLZlbGe0CfKSpiEiompgGCGyUxwNISJHwWkaIjvzW06+XhCppWAQISL7xZERIjtiaDRk94SuaOrnLkE3RETmwTBCZCc4LUNEjorTNEQ27mjWLb0g4uvuzCBCRA6DIyNENszQaEjq21EI9naToBsiIstgGCGyUZyWISK54DQNkY3Zfy5PL4i08HdnECEih8WRESIbYmg05MiUHvD1cJGgGyIi62AYIbIRVZ6W0WiA1FRArQYCAoCICECptEKHRESWwWkaIokdunRTL4g809jHcBBJSgJUKiAqChg6VPu7SqWtExHZKY6MEEnI0GjIqZm94e7ipH9wUhIweDAgCOJ6To62vmkTEBNjoU6JiCyHIyNEEhAEwei0jMEgotEA48bpBxHtm2l/Hz9eexwRkZ1hGCGysv1n8xASt11UG9ej6aOvlklNBa5dM/68IADZ2drjiIjsDKdpiKzI0GhIxrt94FqnkgWoanXVTlDV44iIbAjDCJEVlJcLaDRlu169ynuHBASY9zgiIhvCaRoiC9t2Uq0XRKb1a2naJmYREUBQEKBQGH5eoQCCg7XHERHZGY6MEFmQoWmZc7P7wLm2ifuCKJXAokXaq2YUCvFC1oqAkpDA/UaIyC5xZITIAjTlxq+WMTmIVIiJ0V6+26CBuB4UxMt6iciucWSEyMy+OZaNtzedFNXiY57Evzo1rPmbx8QAAwZwB1YicigmjYzEx8ejY8eOcHd3h6+vLwYOHIhz585V+rqUlBR06NABLi4uaNSoEZYvX17tholsmWryNr0gcnFOX/MEkQpKJRAZCfzrX9rfGUSIyM6ZFEZSUlIwZswYHD58GLt370ZZWRl69+6NwsJCo6/JzMxEdHQ0IiIikJaWhilTpuDNN99EYmJijZsnshUlZeVGp2VqKzkbSkT0KApBMLSlY9Vcv34dvr6+SElJQdeuXQ0eM2nSJGzZsgUZGRm62ujRo3HixAkcOnSoSucpKCiAp6cn8vPz4eHhUd12iSxi7U+ZmPXDGVFt0QvtMKBdAyOvICKSh6p+ftdozUh+fj4AwNvb2+gxhw4dQu/evUW1Z599FqtXr0ZpaSmcnAxsfU1kJwyNhlyeG41atYxcgktERHqqHUYEQUBsbCy6dOmC1q1bGz0uNzcXfn5+opqfnx/Kyspw48YNBBjYpKm4uBjFxcW6xwUFBdVtk8giiko1aDF9h17dpL1DiIgIQA3CyNixY3Hy5EkcPHiw0mMVD23UVDEz9HC9Qnx8PGbNmlXd1ogs6uO9F/Dh7vOi2qfDw9CzlZ+RVxAR0aNUK4y88cYb2LJlCw4cOICgoKBHHuvv74/c3FxRLS8vD7Vr14aPj4/B18TFxSE2Nlb3uKCgAMHBwdVplcisDE3LZMZHGw3WRERUOZPCiCAIeOONN/Ddd98hOTkZISEhlb4mPDwcP/zwg6i2a9cuhIWFGV0v4uzsDGdnZ1NaI7Kou8VlaP3OTr06p2WIiGrOpGsOx4wZgw0bNmDjxo1wd3dHbm4ucnNzcf/+fd0xcXFxGD58uO7x6NGjceXKFcTGxiIjIwNr1qzB6tWrMXHiRPN9FUQWFL89Qy+IfPHy3xhEiIjMxKSRkWXLlgEAIiMjRfW1a9di5MiRAAC1Wo2rV6/qngsJCcH27dsxYcIELF26FIGBgVi8eDEGDRpUs86JrMDY3iFERGQ+NdpnxFq4zwhZW/69UrR9d5eoVqd2LZyf3VeijoiI7I9V9hkhckRTvjuFjb9cFdUSX38GHZ54TKKOiIgcG8MI0QM4LUNEZH28aQYRgOt3ivWCiL+HC4MIEZEVcGSEZG/sxl+x9aRaVNv2ZheEBnpK1BERkbwwjJCscVqGiEh6nKYhWcr5475eEGnh784gQkQkAY6MkOwMX3MEB85fF9X2xHZDE996EnVERCRvDCMkK5yWISKyPZymIVnIulGoF0T+FuLNIEJEZAM4MkIOb8CSgzhxLV9US307CsHebhJ1RERED2IYIYfGaRkiItvHaRpySOdy7+gFkd6t/BhEiIhsEEdGyOF0W7AfV27eE9V+mdIDfh4uEnVERESPwjBCDoXTMkRE9ofTNOQQTmT/oRdEBncIYhAhIrIDHBkhu9dm5k4UFJWJar9O7wXvunUk6oiIiEzBMEJ2jdMyRET2j9M0ZJd+uXxTL4iMfEbFIEJEZIc4MkJ2x9BoyMmZveHh4iRBN0REVFMMI2Q3BEFASNx2vTpHQ4iI7BunacguJJ/L0wsib3ZvwiBCROQAODJCNs/QtMyZd5+FWx3++BIROQL+bU42i9MyRETywDBCNunXq7cR88nPotrU6JZ4pWsjiToiIiJLYRghmzNw6U9Iz/5DVDs3uw+cayulaYiIiCyKYYRsRnm5gEZTxNMyDbxc8dPk7hJ1RERE1sAwIhcaDZCaCqjVQEAAEBEBKG1npOHQpZv416rDotr6UZ0Q0bS+RB0REZG1MIzIQVISMG4ccO3aX7WgIGDRIiAmRrq+/tRzYQou5t0V1S7NjYaylkKijsgh2HgAJ6K/cJ8RR5eUBAweLA4iAJCTo60nJUnTF4AyTTlUk7eJgkgLf3dkzevHIEI1k5QEqFRAVBQwdKj2d5VK0p93IjJOIQiCIHUTlSkoKICnpyfy8/Ph4eEhdTv2Q6PR/gX8cBCpoFBoR0gyM63+L8bkc3kYufaoqPbNa+HoFOJt1T7IAVUE8If/alP8GXA3bbKJEUEiOajq5zenaRxZaqrxIAJo/7LOztYeFxlptbb+NncP/ldQLKpdnhuNWhwNoZrSaLRTkob+jSUI2kAyfjwwYACnbIhsCKdpHJlabd7jaqikTDst82AQ6ah6DFnz+jGIkHmYEsCJyGZwZMSRBQSY97ga2PFbLkZvOC6qfT+mM9oGe1n83HaDCy5rzsYCOBFVDcOII4uI0K4JyckxPGxdsWYkIsKibbSY/iOKSstFtcz4aCgUHA3RsfErnuyGDQVwIqo6TtM4MqVS+2EG/LV4r0LF44QEi/3ru6hUA9XkbaIgEtW8PrLm9WMQeZANX/FkdyoCuLGfL4UCCA62eAAnItMwjDi6mBjt1QMNGojrQUEWvarg+/QctJi+Q1T7cVwE1v67k0XOZ7cqW3AJaBdcajRWbctuSRzAiah6eGmvXFhxPYJq8ja9Gu+0a0RysnYPjMrs32/VK57snqFpr+BgbRDhtBeR1fDSXhJTKi3+YXavpAytZuwU1Z5rE4AlQ5+y6HntGhdcWkZMjPbyXS4IJrILDCNkFl8duYrJSadEtT2x3dDEt55EHdkJLri0HCsEcCIyD4YRqjFOy9SAjVzxREQkJS5gpWorKCrVCyIvdAxmEDEFF1wSETGMUPWs/SkTbWbuEtVS347CvEFtJOrIjkl0xRMRka3gNA2ZzGrTMnLakZQLLolIxhhGqMpuF5ag/Xu7RbVRXUIw/blW5j+ZHHck5YJLIpIphhGqkqX7L2LBznOi2qG47gjwdDX/yYzdAr5iR1JOXRARORRuekaVsurVMhoNoFIZv/NqxdUlmZmcwiAisnFV/fzmAlYyKu9OkV4QeaN7E8teLcNbwBMRyQ6nacigBTvPYun+S6La0ak9Ud/d2bIn5o6kRESywzBCeiTdxIw7khIRyQ6naUjn9z/u6wWRSX1aWHcTM94CnohIdjgyQgCAWT+cxtqfskS19Bm94OVWx7qNVOxIOniwNng8uL6aO5ISETkkk0dGDhw4gP79+yMwMBAKhQKbN29+5PHJyclQKBR6v86ePVvdnsnMVJO36QWRrHn9rB9EKnBHUiIiWTF5ZKSwsBBt27bFv//9bwwaNKjKrzt37pzosp769eubemoys6s376Hrgv2i2qy/h2LEMyppGnoQdyQlIpINk8NI37590bdvX5NP5OvrCy8vL5NfR5bx9qYT+OaY+BLaUzN7w93FSaKODOCOpEREsmC1Bazt27dHQEAAevTogf3791f+ArIY1eRtekEka14/2woiREQkGxZfwBoQEICVK1eiQ4cOKC4uxvr169GjRw8kJyeja9euBl9TXFyM4uJi3eOCggJLtykLF/PuoufCFFHt/UFt8HzHYIk6IiIiskIYad68OZo3b657HB4ejuzsbHzwwQdGw0h8fDxmzZpl6dZkZcwXv2LbKfFGYWfefRZudXhBFRERSUuSfUaefvppXLhwwejzcXFxyM/P1/3Kzs62YneORRAEqCZv0wsiWfP6MYgQEZFNkOTTKC0tDQGP2EHT2dkZzs4W3nZcBrJuFCLyg2RRbfG/2uPvbQOlaYiIiMgAk8PI3bt3cfHiRd3jzMxMpKenw9vbGw0bNkRcXBxycnLw+eefAwASEhKgUqkQGhqKkpISbNiwAYmJiUhMTDTfV0F64rdnYMWBy6La+dl9Uac2N90lIiLbYnIYOXbsGKKionSPY2NjAQAjRozAunXroFarcfXqVd3zJSUlmDhxInJycuDq6orQ0FBs27YN0dHRZmifHiYIAkLitotqUc3rY+2/O0nUERER0aMpBOHB/bZtU0FBATw9PZGfny/aOI3ELubdQc+FB0S1TaPDEabylqgjIiKSs6p+fnMFo4OY8f1v+PzQFVHt4py+qK3ktAwREdk2hhE7V14uoNEU8bRMvycDsHTYUxJ1REREZBqGETt2NrcAfRJSRbXvx3RG22AvaRoiIiKqBoYRO/X5oSzM+P60qHZpbjSUtRQSdURERFQ9DCN2prxcQMT7+5Hzx31dbXCHIHzwz7YSdkVERFR9DCN2xNAmZgcnRSHoMTdpGiIiIjIDhhE78WnqZczelqF73NS3HnZN6AqFgtMyRERk3xhGbJymXEDHOXtwq7BEV5s/6EkM6dhQwq6IiIjMh2HEhl3Mu4ueC1NEtcNxPeDv6SJRR0RERObHMGKjlu6/iAU7z+ketwnyxPdjOnNahoiIHA7DiI0p05TjyZm7cL9Uo6t9NKQt/tE+SMKuiIiILIdhxIYY2sTsyNQe8HXntAwRETkuhhEb8eGuc/h430Xd404h3vj61ac5LUNERA6PYURiJWXlaDbtR1Ft6dCn0K9NQOUv1miA1FRArQYCAoCICECptFCnRERElsEwIqHfcvLx3McHRbVfp/eCd906lb84KQkYNw64du2vWlAQsGgREBNj5k6JiIgsh/eXl0j89gxREIlo+jiy5vWrehAZPFgcRAAgJ0dbT0oyc7dERESWoxAEQZC6icoUFBTA09MT+fn58PDwkLqdGikq1aDF9B2i2soXO6B3qH/V3kCjAVQq/SBSQaHQjpBkZnLKhoiIJFXVz2+OjFhR2tXbekEkfUavqgcRQLtGxFgQAQBBALKztccRERHZAa4ZsZJ3vv8Nnx26onvcu5UfVg4PM/2N1GrzHkdERCQxhhELu1+iQcsZ4tGQdf/uiMjmvtV7w4AqXGVjynFEREQSYxixoKNZt/DP5YdEtZMze8PDxan6bxoRoV0TkpOjnZJ5WMWakYiI6p+DiIjIirhmxEImbTopCiID2gUia16/mgURQLsoddEi7X8/vCFaxeOEBC5eJSIiu8GRETMrLC5D6Ds7RbUvXv4bOjd53HwniYkBNm0yvM9IQgL3GSEiIrsi3zBigd1Lf754A0M//UVUOz3rWdR1tsAfc0wMMGAAd2AlIiK7J88wYoHdS8d/lYbN6b/rHg8JC8b8wW1q2umjKZVAZKRlz0FERGRh8gsjFbuXPrz4s2L30k2bTAokBUWlaDNzl6j2zWvh6BTibY5uiYiIHJ68FrBqNNoREUNXoVTUxo/XHlcFyefy9IJIxrt9GESIiIhMIK8wYsbdS19bfwwj1x7VPR4R/gSy5vWDax2u2SAiIjKFvKZpzLB7af69UrR9Vzwa8t1/nkH7ho/VpDMiIiLZklcYqeHupbvP/A+vfH5MVDv7Xh+4OHE0hIiIqLrkFUZqsHvp8DVHcOD8dd3j17o2Qlx0S0t2S0REJAvyCiMVu5cOHqwNHg8GEiO7l94qLMFT7+0Wvc3WN7qgdQNPKzRMRETk+OS1gBX4a/fSBg3E9aAgvct6t51U6wWR87P7MogQERGZkbxGRipUsnupIAgYsvIwjmTe0r3kje5N8Fbv5lJ1TERE5LDkGUYAo7uX5t0pQqc5e0W1HeMj0MLfw0qNERERyYt8w4gBm9NyMP7rdN1jVyclTs3sjdpK+c1mERERWQvDCLTTMgOW/oST1/J1tYm9m2Fs96YSdkVERCQPsg8juflFeDpePC2zJ7Yrmvi6S9QRERGRvMg6jJy6lo/+Sw7qHvvUrYMjU3tCWUshYVdERETyIusw8n16ju6/p/VriZcjGknYDRERkTzJOoy8HNEIvh7O6N3KH6rH60rdDhERkSzJOoz4e7rg1a6NpW6DiIhI1njNKhEREUmKYYSIiIgkxTBCREREkmIYISIiIkkxjBAREZGkGEaIiIhIUgwjREREJCmGESIiIpIUwwgRERFJyuQwcuDAAfTv3x+BgYFQKBTYvHlzpa9JSUlBhw4d4OLigkaNGmH58uXV6ZWIiIgckMlhpLCwEG3btsWSJUuqdHxmZiaio6MRERGBtLQ0TJkyBW+++SYSExNNbpaIiIgcj8n3punbty/69u1b5eOXL1+Ohg0bIiEhAQDQsmVLHDt2DB988AEGDRpk6umJiIjIwVh8zcihQ4fQu3dvUe3ZZ5/FsWPHUFpaaunTExERkY2z+F17c3Nz4efnJ6r5+fmhrKwMN27cQEBAgN5riouLUVxcrHucn58PACgoKLBss0RERGQ2FZ/bgiA88jiLhxEAUCgUoscVTT1crxAfH49Zs2bp1YODg83fHBEREVnUnTt34OnpafR5i4cRf39/5Obmimp5eXmoXbs2fHx8DL4mLi4OsbGxusfl5eW4desWfHx8jAYYQwoKChAcHIzs7Gx4eHhU7wsgi+H3x/bxe2Tb+P2xfXL/HgmCgDt37iAwMPCRx1k8jISHh+OHH34Q1Xbt2oWwsDA4OTkZfI2zszOcnZ1FNS8vr2r34OHhIcsfAnvB74/t4/fItvH7Y/vk/D161IhIBZMXsN69exfp6elIT08HoL10Nz09HVevXgWgHdUYPny47vjRo0fjypUriI2NRUZGBtasWYPVq1dj4sSJpp6aiIiIHJDJIyPHjh1DVFSU7nHFdMqIESOwbt06qNVqXTABgJCQEGzfvh0TJkzA0qVLERgYiMWLF/OyXiIiIgJQjTASGRn5yFWx69at06t169YNv/76q6mnqjFnZ2e88847elM+ZBv4/bF9/B7ZNn5/bB+/R1WjECq73oaIiIjIgnijPCIiIpIUwwgRERFJimGEiIiIJMUwQkRERJJyuDASHx+Pjh07wt3dHb6+vhg4cCDOnTsndVtkRHx8PBQKBcaPHy91K/SAnJwc/N///R98fHzg5uaGdu3a4fjx41K3RX8qKyvDtGnTEBISAldXVzRq1AjvvvsuysvLpW5Ntg4cOID+/fsjMDAQCoUCmzdvFj0vCAJmzpyJwMBAuLq6IjIyEqdPn5amWRvkcGEkJSUFY8aMweHDh7F7926UlZWhd+/eKCwslLo1esjRo0excuVKtGnTRupW6AG3b99G586d4eTkhB9//BFnzpzBhx9+WKNdkMm85s+fj+XLl2PJkiXIyMjA+++/jwULFuDjjz+WujXZKiwsRNu2bbFkyRKDz7///vtYuHAhlixZgqNHj8Lf3x+9evXCnTt3rNypbXL4S3uvX78OX19fpKSkoGvXrlK3Q3+6e/cunnrqKXzyySeYPXs22rVrh4SEBKnbIgCTJ0/GTz/9hNTUVKlbISOee+45+Pn5YfXq1braoEGD4ObmhvXr10vYGQHam8B+9913GDhwIADtqEhgYCDGjx+PSZMmAdDend7Pzw/z58/Ha6+9JmG3tsHhRkYelp+fDwDw9vaWuBN60JgxY9CvXz/07NlT6lboIVu2bEFYWBj++c9/wtfXF+3bt8eqVaukbose0KVLF+zduxfnz58HAJw4cQIHDx5EdHS0xJ2RIZmZmcjNzUXv3r11NWdnZ3Tr1g0///yzhJ3ZDovfKE9KgiAgNjYWXbp0QevWraVuh/701Vdf4ddff8XRo0elboUMuHz5MpYtW4bY2FhMmTIFR44cwZtvvglnZ2fRfadIOpMmTUJ+fj5atGgBpVIJjUaDOXPm4F//+pfUrZEBFXeu9/PzE9X9/Pxw5coVKVqyOQ4dRsaOHYuTJ0/i4MGDUrdCf8rOzsa4ceOwa9cuuLi4SN0OGVBeXo6wsDDMnTsXANC+fXucPn0ay5YtYxixEV9//TU2bNiAjRs3IjQ0FOnp6Rg/fjwCAwMxYsQIqdsjIxQKheixIAh6Nbly2DDyxhtvYMuWLThw4ACCgoKkbof+dPz4ceTl5aFDhw66mkajwYEDB7BkyRIUFxdDqVRK2CEFBASgVatWolrLli2RmJgoUUf0sP/+97+YPHkyXnjhBQDAk08+iStXriA+Pp5hxAb5+/sD0I6QBAQE6Op5eXl6oyVy5XBrRgRBwNixY5GUlIR9+/YhJCRE6pboAT169MCpU6eQnp6u+xUWFoZhw4YhPT2dQcQGdO7cWe9y+PPnz+OJJ56QqCN62L1791Crlvivb6VSyUt7bVRISAj8/f2xe/duXa2kpAQpKSl45plnJOzMdjjcyMiYMWOwceNGfP/993B3d9fN1Xl6esLV1VXi7sjd3V1v/U7dunXh4+PDdT02YsKECXjmmWcwd+5cPP/88zhy5AhWrlyJlStXSt0a/al///6YM2cOGjZsiNDQUKSlpWHhwoV46aWXpG5Ntu7evYuLFy/qHmdmZiI9PR3e3t5o2LAhxo8fj7lz56Jp06Zo2rQp5s6dCzc3NwwdOlTCrm2I4GAAGPy1du1aqVsjI7p16yaMGzdO6jboAT/88IPQunVrwdnZWWjRooWwcuVKqVuiBxQUFAjjxo0TGjZsKLi4uAiNGjUSpk6dKhQXF0vdmmzt37/f4GfPiBEjBEEQhPLycuGdd94R/P39BWdnZ6Fr167CqVOnpG3ahjj8PiNERERk2xxuzQgRERHZF4YRIiIikhTDCBEREUmKYYSIiIgkxTBCREREkmIYISIiIkkxjBAREZGkGEaIiIhIUgwjREREJCmGESIiIpIUwwgRERFJimGEiIiIJPX/AsQves/SCsIAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Plot the loss function\n", "plt.plot(history.history['loss'])\n", "plt.title(\"Loss Function\")\n", "plt.xlabel(\"Epoch\")\n", "plt.ylabel(\"Loss\")\n", "plt.show()\n", "\n", "# Plot the input data and the predicted values\n", "plt.plot(train_X, train_Y, 'ro', label=\"Original Data\")\n", "plt.plot(train_X, model.predict(train_X), label=\"Predicted\")\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "id": "60417d5f", "metadata": {}, "outputs": [], "source": [] } ], "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.8.16" } }, "nbformat": 4, "nbformat_minor": 5 }