diff --git a/README.md b/README.md new file mode 100644 index 0000000..13c46d1 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# Maleria Disease Prediction using NN + Predicting if a Person has Maleria or not using the Image data os bood analysis using a Neural Network diff --git a/model.ipynb b/model.ipynb new file mode 100644 index 0000000..663af03 --- /dev/null +++ b/model.ipynb @@ -0,0 +1,277 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np \n", + "import pandas as pd \n", + "import matplotlib.pyplot as plt\n", + "import tensorflow as tf \n", + "from PIL import Image\n", + "import os\n", + "from sklearn.model_selection import train_test_split\n", + "from keras.utils import to_categorical\n", + "from keras.models import Sequential\n", + "from keras.layers import Conv2D, MaxPool2D, Dense, Flatten, Dropout\n", + "\n", + "data = []\n", + "labels = []\n", + "classes = 2\n", + "cur_path = os.getcwd()\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#Retrieving the images and their labels \n", + "count=0\n", + "for i in range(classes):\n", + " path = os.path.join(cur_path,'cell_images',str(i))\n", + " images = os.listdir(path)\n", + " for a in images:\n", + " try:\n", + " image = Image.open(path + '\\\\'+ a)\n", + " image = image.resize((30,30))\n", + " image = np.array(image)\n", + " #sim = Image.fromarray(image)\n", + " data.append(image)\n", + " labels.append(i)\n", + " count=count+1\n", + " except:\n", + " print(\"Error loading image\")\n", + " print(count)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "#Converting lists into numpy arrays\n", + "data = np.array(data)\n", + "labels = np.array(labels)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(27558, 30, 30, 3) (27558,)\n", + "(22046, 30, 30, 3) (5512, 30, 30, 3) (22046,) (5512,)\n" + ] + } + ], + "source": [ + "print(data.shape, labels.shape)\n", + "X_train, X_test, y_train, y_test = train_test_split(data, labels, test_size=0.2, random_state=42)\n", + "\n", + "print(X_train.shape, X_test.shape, y_train.shape, y_test.shape)\n", + "\n", + "y_train = to_categorical(y_train, 43)\n", + "y_test = to_categorical(y_test, 43)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "#Building the model\n", + "model = Sequential()\n", + "model.add(Conv2D(filters=32, kernel_size=(5,5), activation='relu', input_shape=X_train.shape[1:]))\n", + "# model.add(Conv2D(filters=32, kernel_size=(5,5), activation='relu'))\n", + "model.add(MaxPool2D(pool_size=(2, 2)))\n", + "model.add(Dropout(rate=0.25))\n", + "# model.add(Conv2D(filters=64, kernel_size=(3, 3), activation='relu'))\n", + "model.add(Conv2D(filters=64, kernel_size=(3, 3), activation='relu'))\n", + "model.add(MaxPool2D(pool_size=(2, 2)))\n", + "# model.add(Dropout(rate=0.25))\n", + "model.add(Flatten())\n", + "model.add(Dense(256, activation='relu'))\n", + "model.add(Dropout(rate=0.5))\n", + "model.add(Dense(43, activation='softmax'))\n", + "\n", + "#Compilation of the model\n", + "model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/20\n", + "689/689 [==============================] - 26s 35ms/step - loss: 1.1560 - accuracy: 0.5896 - val_loss: 0.6178 - val_accuracy: 0.6620\n", + "Epoch 2/20\n", + "689/689 [==============================] - 24s 35ms/step - loss: 0.6157 - accuracy: 0.6574 - val_loss: 0.4240 - val_accuracy: 0.8128\n", + "Epoch 3/20\n", + "689/689 [==============================] - 24s 35ms/step - loss: 0.3372 - accuracy: 0.8548 - val_loss: 0.2897 - val_accuracy: 0.8784\n", + "Epoch 4/20\n", + "689/689 [==============================] - 24s 35ms/step - loss: 0.2665 - accuracy: 0.8983 - val_loss: 0.3102 - val_accuracy: 0.8768\n", + "Epoch 5/20\n", + "689/689 [==============================] - 16s 23ms/step - loss: 0.2434 - accuracy: 0.9093 - val_loss: 0.2845 - val_accuracy: 0.8813\n", + "Epoch 6/20\n", + "689/689 [==============================] - 14s 20ms/step - loss: 0.2260 - accuracy: 0.9176 - val_loss: 0.2172 - val_accuracy: 0.9144\n", + "Epoch 7/20\n", + "689/689 [==============================] - 24s 35ms/step - loss: 0.2226 - accuracy: 0.9208 - val_loss: 0.2933 - val_accuracy: 0.8788\n", + "Epoch 8/20\n", + "689/689 [==============================] - 17s 25ms/step - loss: 0.2125 - accuracy: 0.9251 - val_loss: 0.1793 - val_accuracy: 0.9390\n", + "Epoch 9/20\n", + "689/689 [==============================] - 14s 21ms/step - loss: 0.2010 - accuracy: 0.9307 - val_loss: 0.1966 - val_accuracy: 0.9256\n", + "Epoch 10/20\n", + "689/689 [==============================] - 15s 22ms/step - loss: 0.2012 - accuracy: 0.9300 - val_loss: 0.1753 - val_accuracy: 0.9412\n", + "Epoch 11/20\n", + "689/689 [==============================] - 15s 21ms/step - loss: 0.2010 - accuracy: 0.9311 - val_loss: 0.2073 - val_accuracy: 0.9260\n", + "Epoch 12/20\n", + "689/689 [==============================] - 14s 21ms/step - loss: 0.1949 - accuracy: 0.9324 - val_loss: 0.2313 - val_accuracy: 0.9106\n", + "Epoch 13/20\n", + "689/689 [==============================] - 14s 21ms/step - loss: 0.1914 - accuracy: 0.9345 - val_loss: 0.1896 - val_accuracy: 0.9349\n", + "Epoch 14/20\n", + "689/689 [==============================] - 14s 20ms/step - loss: 0.1914 - accuracy: 0.9343 - val_loss: 0.2041 - val_accuracy: 0.9227\n", + "Epoch 15/20\n", + "689/689 [==============================] - 15s 21ms/step - loss: 0.1861 - accuracy: 0.9359 - val_loss: 0.2608 - val_accuracy: 0.9089\n", + "Epoch 16/20\n", + "689/689 [==============================] - 14s 21ms/step - loss: 0.1849 - accuracy: 0.9351 - val_loss: 0.1726 - val_accuracy: 0.9432\n", + "Epoch 17/20\n", + "689/689 [==============================] - 15s 21ms/step - loss: 0.1807 - accuracy: 0.9386 - val_loss: 0.1894 - val_accuracy: 0.9309\n", + "Epoch 18/20\n", + "689/689 [==============================] - 15s 22ms/step - loss: 0.1846 - accuracy: 0.9357 - val_loss: 0.2382 - val_accuracy: 0.9100\n", + "Epoch 19/20\n", + "689/689 [==============================] - 14s 21ms/step - loss: 0.1795 - accuracy: 0.9383 - val_loss: 0.1861 - val_accuracy: 0.9347\n", + "Epoch 20/20\n", + "655/689 [===========================>..] - ETA: 0s - loss: 0.1787 - accuracy: 0.9376" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[1;32mc:\\Users\\koush\\Desktop\\Maleria Disease Prediction\\Maleria-Disease-Prediction-using-NN\\model.ipynb Cell 6\u001b[0m line \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m epochs \u001b[39m=\u001b[39m \u001b[39m20\u001b[39m\n\u001b[1;32m----> 2\u001b[0m history \u001b[39m=\u001b[39m model\u001b[39m.\u001b[39;49mfit(X_train, y_train, batch_size\u001b[39m=\u001b[39;49m\u001b[39m32\u001b[39;49m, epochs\u001b[39m=\u001b[39;49mepochs, validation_data\u001b[39m=\u001b[39;49m(X_test, y_test))\n\u001b[0;32m 3\u001b[0m model\u001b[39m.\u001b[39msave(\u001b[39m\"\u001b[39m\u001b[39mmy_model.h5\u001b[39m\u001b[39m\"\u001b[39m)\n", + "File \u001b[1;32mc:\\Users\\koush\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\keras\\src\\utils\\traceback_utils.py:65\u001b[0m, in \u001b[0;36mfilter_traceback..error_handler\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 63\u001b[0m filtered_tb \u001b[39m=\u001b[39m \u001b[39mNone\u001b[39;00m\n\u001b[0;32m 64\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[1;32m---> 65\u001b[0m \u001b[39mreturn\u001b[39;00m fn(\u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs)\n\u001b[0;32m 66\u001b[0m \u001b[39mexcept\u001b[39;00m \u001b[39mException\u001b[39;00m \u001b[39mas\u001b[39;00m e:\n\u001b[0;32m 67\u001b[0m filtered_tb \u001b[39m=\u001b[39m _process_traceback_frames(e\u001b[39m.\u001b[39m__traceback__)\n", + "File \u001b[1;32mc:\\Users\\koush\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\keras\\src\\engine\\training.py:1783\u001b[0m, in \u001b[0;36mModel.fit\u001b[1;34m(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_batch_size, validation_freq, max_queue_size, workers, use_multiprocessing)\u001b[0m\n\u001b[0;32m 1775\u001b[0m \u001b[39mwith\u001b[39;00m tf\u001b[39m.\u001b[39mprofiler\u001b[39m.\u001b[39mexperimental\u001b[39m.\u001b[39mTrace(\n\u001b[0;32m 1776\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mtrain\u001b[39m\u001b[39m\"\u001b[39m,\n\u001b[0;32m 1777\u001b[0m epoch_num\u001b[39m=\u001b[39mepoch,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 1780\u001b[0m _r\u001b[39m=\u001b[39m\u001b[39m1\u001b[39m,\n\u001b[0;32m 1781\u001b[0m ):\n\u001b[0;32m 1782\u001b[0m callbacks\u001b[39m.\u001b[39mon_train_batch_begin(step)\n\u001b[1;32m-> 1783\u001b[0m tmp_logs \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mtrain_function(iterator)\n\u001b[0;32m 1784\u001b[0m \u001b[39mif\u001b[39;00m data_handler\u001b[39m.\u001b[39mshould_sync:\n\u001b[0;32m 1785\u001b[0m context\u001b[39m.\u001b[39masync_wait()\n", + "File \u001b[1;32mc:\\Users\\koush\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\tensorflow\\python\\util\\traceback_utils.py:150\u001b[0m, in \u001b[0;36mfilter_traceback..error_handler\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 148\u001b[0m filtered_tb \u001b[39m=\u001b[39m \u001b[39mNone\u001b[39;00m\n\u001b[0;32m 149\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[1;32m--> 150\u001b[0m \u001b[39mreturn\u001b[39;00m fn(\u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs)\n\u001b[0;32m 151\u001b[0m \u001b[39mexcept\u001b[39;00m \u001b[39mException\u001b[39;00m \u001b[39mas\u001b[39;00m e:\n\u001b[0;32m 152\u001b[0m filtered_tb \u001b[39m=\u001b[39m _process_traceback_frames(e\u001b[39m.\u001b[39m__traceback__)\n", + "File \u001b[1;32mc:\\Users\\koush\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\tensorflow\\python\\eager\\polymorphic_function\\polymorphic_function.py:831\u001b[0m, in \u001b[0;36mFunction.__call__\u001b[1;34m(self, *args, **kwds)\u001b[0m\n\u001b[0;32m 828\u001b[0m compiler \u001b[39m=\u001b[39m \u001b[39m\"\u001b[39m\u001b[39mxla\u001b[39m\u001b[39m\"\u001b[39m \u001b[39mif\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_jit_compile \u001b[39melse\u001b[39;00m \u001b[39m\"\u001b[39m\u001b[39mnonXla\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[0;32m 830\u001b[0m \u001b[39mwith\u001b[39;00m OptionalXlaContext(\u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_jit_compile):\n\u001b[1;32m--> 831\u001b[0m result \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_call(\u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwds)\n\u001b[0;32m 833\u001b[0m new_tracing_count \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mexperimental_get_tracing_count()\n\u001b[0;32m 834\u001b[0m without_tracing \u001b[39m=\u001b[39m (tracing_count \u001b[39m==\u001b[39m new_tracing_count)\n", + "File \u001b[1;32mc:\\Users\\koush\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\tensorflow\\python\\eager\\polymorphic_function\\polymorphic_function.py:867\u001b[0m, in \u001b[0;36mFunction._call\u001b[1;34m(self, *args, **kwds)\u001b[0m\n\u001b[0;32m 864\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_lock\u001b[39m.\u001b[39mrelease()\n\u001b[0;32m 865\u001b[0m \u001b[39m# In this case we have created variables on the first call, so we run the\u001b[39;00m\n\u001b[0;32m 866\u001b[0m \u001b[39m# defunned version which is guaranteed to never create variables.\u001b[39;00m\n\u001b[1;32m--> 867\u001b[0m \u001b[39mreturn\u001b[39;00m tracing_compilation\u001b[39m.\u001b[39;49mcall_function(\n\u001b[0;32m 868\u001b[0m args, kwds, \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_no_variable_creation_config\n\u001b[0;32m 869\u001b[0m )\n\u001b[0;32m 870\u001b[0m \u001b[39melif\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_variable_creation_config \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n\u001b[0;32m 871\u001b[0m \u001b[39m# Release the lock early so that multiple threads can perform the call\u001b[39;00m\n\u001b[0;32m 872\u001b[0m \u001b[39m# in parallel.\u001b[39;00m\n\u001b[0;32m 873\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_lock\u001b[39m.\u001b[39mrelease()\n", + "File \u001b[1;32mc:\\Users\\koush\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\tensorflow\\python\\eager\\polymorphic_function\\tracing_compilation.py:139\u001b[0m, in \u001b[0;36mcall_function\u001b[1;34m(args, kwargs, tracing_options)\u001b[0m\n\u001b[0;32m 137\u001b[0m bound_args \u001b[39m=\u001b[39m function\u001b[39m.\u001b[39mfunction_type\u001b[39m.\u001b[39mbind(\u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs)\n\u001b[0;32m 138\u001b[0m flat_inputs \u001b[39m=\u001b[39m function\u001b[39m.\u001b[39mfunction_type\u001b[39m.\u001b[39munpack_inputs(bound_args)\n\u001b[1;32m--> 139\u001b[0m \u001b[39mreturn\u001b[39;00m function\u001b[39m.\u001b[39;49m_call_flat( \u001b[39m# pylint: disable=protected-access\u001b[39;49;00m\n\u001b[0;32m 140\u001b[0m flat_inputs, captured_inputs\u001b[39m=\u001b[39;49mfunction\u001b[39m.\u001b[39;49mcaptured_inputs\n\u001b[0;32m 141\u001b[0m )\n", + "File \u001b[1;32mc:\\Users\\koush\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\tensorflow\\python\\eager\\polymorphic_function\\concrete_function.py:1264\u001b[0m, in \u001b[0;36mConcreteFunction._call_flat\u001b[1;34m(self, tensor_inputs, captured_inputs)\u001b[0m\n\u001b[0;32m 1260\u001b[0m possible_gradient_type \u001b[39m=\u001b[39m gradients_util\u001b[39m.\u001b[39mPossibleTapeGradientTypes(args)\n\u001b[0;32m 1261\u001b[0m \u001b[39mif\u001b[39;00m (possible_gradient_type \u001b[39m==\u001b[39m gradients_util\u001b[39m.\u001b[39mPOSSIBLE_GRADIENT_TYPES_NONE\n\u001b[0;32m 1262\u001b[0m \u001b[39mand\u001b[39;00m executing_eagerly):\n\u001b[0;32m 1263\u001b[0m \u001b[39m# No tape is watching; skip to running the function.\u001b[39;00m\n\u001b[1;32m-> 1264\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_inference_function\u001b[39m.\u001b[39;49mflat_call(args)\n\u001b[0;32m 1265\u001b[0m forward_backward \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_select_forward_and_backward_functions(\n\u001b[0;32m 1266\u001b[0m args,\n\u001b[0;32m 1267\u001b[0m possible_gradient_type,\n\u001b[0;32m 1268\u001b[0m executing_eagerly)\n\u001b[0;32m 1269\u001b[0m forward_function, args_with_tangents \u001b[39m=\u001b[39m forward_backward\u001b[39m.\u001b[39mforward()\n", + "File \u001b[1;32mc:\\Users\\koush\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\tensorflow\\python\\eager\\polymorphic_function\\atomic_function.py:217\u001b[0m, in \u001b[0;36mAtomicFunction.flat_call\u001b[1;34m(self, args)\u001b[0m\n\u001b[0;32m 215\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mflat_call\u001b[39m(\u001b[39mself\u001b[39m, args: Sequence[core\u001b[39m.\u001b[39mTensor]) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m Any:\n\u001b[0;32m 216\u001b[0m \u001b[39m\"\"\"Calls with tensor inputs and returns the structured output.\"\"\"\u001b[39;00m\n\u001b[1;32m--> 217\u001b[0m flat_outputs \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m(\u001b[39m*\u001b[39;49margs)\n\u001b[0;32m 218\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mfunction_type\u001b[39m.\u001b[39mpack_output(flat_outputs)\n", + "File \u001b[1;32mc:\\Users\\koush\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\tensorflow\\python\\eager\\polymorphic_function\\atomic_function.py:252\u001b[0m, in \u001b[0;36mAtomicFunction.__call__\u001b[1;34m(self, *args)\u001b[0m\n\u001b[0;32m 250\u001b[0m \u001b[39mwith\u001b[39;00m record\u001b[39m.\u001b[39mstop_recording():\n\u001b[0;32m 251\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_bound_context\u001b[39m.\u001b[39mexecuting_eagerly():\n\u001b[1;32m--> 252\u001b[0m outputs \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_bound_context\u001b[39m.\u001b[39;49mcall_function(\n\u001b[0;32m 253\u001b[0m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mname,\n\u001b[0;32m 254\u001b[0m \u001b[39mlist\u001b[39;49m(args),\n\u001b[0;32m 255\u001b[0m \u001b[39mlen\u001b[39;49m(\u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mfunction_type\u001b[39m.\u001b[39;49mflat_outputs),\n\u001b[0;32m 256\u001b[0m )\n\u001b[0;32m 257\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[0;32m 258\u001b[0m outputs \u001b[39m=\u001b[39m make_call_op_in_graph(\n\u001b[0;32m 259\u001b[0m \u001b[39mself\u001b[39m,\n\u001b[0;32m 260\u001b[0m \u001b[39mlist\u001b[39m(args),\n\u001b[0;32m 261\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_bound_context\u001b[39m.\u001b[39mfunction_call_options\u001b[39m.\u001b[39mas_attrs(),\n\u001b[0;32m 262\u001b[0m )\n", + "File \u001b[1;32mc:\\Users\\koush\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\tensorflow\\python\\eager\\context.py:1479\u001b[0m, in \u001b[0;36mContext.call_function\u001b[1;34m(self, name, tensor_inputs, num_outputs)\u001b[0m\n\u001b[0;32m 1477\u001b[0m cancellation_context \u001b[39m=\u001b[39m cancellation\u001b[39m.\u001b[39mcontext()\n\u001b[0;32m 1478\u001b[0m \u001b[39mif\u001b[39;00m cancellation_context \u001b[39mis\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n\u001b[1;32m-> 1479\u001b[0m outputs \u001b[39m=\u001b[39m execute\u001b[39m.\u001b[39;49mexecute(\n\u001b[0;32m 1480\u001b[0m name\u001b[39m.\u001b[39;49mdecode(\u001b[39m\"\u001b[39;49m\u001b[39mutf-8\u001b[39;49m\u001b[39m\"\u001b[39;49m),\n\u001b[0;32m 1481\u001b[0m num_outputs\u001b[39m=\u001b[39;49mnum_outputs,\n\u001b[0;32m 1482\u001b[0m inputs\u001b[39m=\u001b[39;49mtensor_inputs,\n\u001b[0;32m 1483\u001b[0m attrs\u001b[39m=\u001b[39;49mattrs,\n\u001b[0;32m 1484\u001b[0m ctx\u001b[39m=\u001b[39;49m\u001b[39mself\u001b[39;49m,\n\u001b[0;32m 1485\u001b[0m )\n\u001b[0;32m 1486\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[0;32m 1487\u001b[0m outputs \u001b[39m=\u001b[39m execute\u001b[39m.\u001b[39mexecute_with_cancellation(\n\u001b[0;32m 1488\u001b[0m name\u001b[39m.\u001b[39mdecode(\u001b[39m\"\u001b[39m\u001b[39mutf-8\u001b[39m\u001b[39m\"\u001b[39m),\n\u001b[0;32m 1489\u001b[0m num_outputs\u001b[39m=\u001b[39mnum_outputs,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 1493\u001b[0m cancellation_manager\u001b[39m=\u001b[39mcancellation_context,\n\u001b[0;32m 1494\u001b[0m )\n", + "File \u001b[1;32mc:\\Users\\koush\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\tensorflow\\python\\eager\\execute.py:60\u001b[0m, in \u001b[0;36mquick_execute\u001b[1;34m(op_name, num_outputs, inputs, attrs, ctx, name)\u001b[0m\n\u001b[0;32m 53\u001b[0m \u001b[39m# Convert any objects of type core_types.Tensor to Tensor.\u001b[39;00m\n\u001b[0;32m 54\u001b[0m inputs \u001b[39m=\u001b[39m [\n\u001b[0;32m 55\u001b[0m tensor_conversion_registry\u001b[39m.\u001b[39mconvert(t)\n\u001b[0;32m 56\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39misinstance\u001b[39m(t, core_types\u001b[39m.\u001b[39mTensor)\n\u001b[0;32m 57\u001b[0m \u001b[39melse\u001b[39;00m t\n\u001b[0;32m 58\u001b[0m \u001b[39mfor\u001b[39;00m t \u001b[39min\u001b[39;00m inputs\n\u001b[0;32m 59\u001b[0m ]\n\u001b[1;32m---> 60\u001b[0m tensors \u001b[39m=\u001b[39m pywrap_tfe\u001b[39m.\u001b[39;49mTFE_Py_Execute(ctx\u001b[39m.\u001b[39;49m_handle, device_name, op_name,\n\u001b[0;32m 61\u001b[0m inputs, attrs, num_outputs)\n\u001b[0;32m 62\u001b[0m \u001b[39mexcept\u001b[39;00m core\u001b[39m.\u001b[39m_NotOkStatusException \u001b[39mas\u001b[39;00m e:\n\u001b[0;32m 63\u001b[0m \u001b[39mif\u001b[39;00m name \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n", + "\u001b[1;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "epochs = 20\n", + "history = model.fit(X_train, y_train, batch_size=32, epochs=epochs, validation_data=(X_test, y_test))\n", + "model.save(\"my_model.h5\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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f/tbKisrSUlJ4ZNPPqGoqIi77rqLzMxMRISHH36Yq666ioSEBIqKigCYO3cuH3zwAbNnz2batGnExMSwatUqRo0axaRJk7j77rs5evQosbGxzJo1i379+lFZWXlCme+BAwfyz3/+k3fffReAxYsX8/TTT2toamshyU1BqJM65Gg9CiIATJw4kV/+8pc1CuLNN99k4cKFxMTEMG/ePJKSksjLy2PkyJGMHz++3r7KnsqCV1VVMWPGDL744gt69epVU7voD3/4A23atOHHH61C9FR/qTbZ2dl88803hIeHc/jwYb788ksiIiJYsmQJv/3tb3n77bc9lvlOTk7mjjvuIDc3l9TUVGbNmsWNN97og1dPaRFU50KA+iBCkNajIOr5p+8UQ4cOJScnhz179pCbm0tycjLdunWjvLyc3/72t3zxxReEhYWxe/du9u/fT8eOHes8l6ey4Lm5uZx99tk15cOry2MvWbKEN944lj5SV4lvd6655pqa+kmHDh3ihhtuICsrCxGhvLy85ryeynxPnTqVV155henTp7Ns2TJeeumlxr5USkulegURlQgR0fXPVVocrUdBBIhrrrmGuXPnsm/fPiZOnAjAq6++Sm5uLitWrCAyMpKePXvWW17bvSx4XFwco0ePblI5bvcVSn3luH/3u99x7rnnMm/ePLZv387o0aPrPe/06dO57LLLiImJ4ZprrqlRIEoroHoFoQ7qkESd1A4zceJE3njjDebOncs111wD2H/oHTp0IDIykqVLl1K7yGBt6ioLPnLkSL744gu2bdsGHCuPPWbMGJ566qma46tNTGlpaaxfv56qqqp6fQSHDh2iS5cuAMyePbtmvK4y3507d6Zz58489thjWo67tVHdelTNSyGJKgiHGThwIIWFhXTp0oVOnexyfMqUKWRmZnLKKafw0ksv0b9//3rPUVdZ8NTUVGbOnMmECRMYPHhwzQrlwQcf5ODBgwwaNIjBgwezdOlSwLZAvfTSSznjjDNqZPHEr3/9a+6//36GDh16XFRTXWW+q59Tt27dtJpqa6O69ahGMIUkjpX79jcZGRkmMzPzuDEt/+w/7rzzToYOHcpNN90UMBn0/Q4Qq1+HxDToc16gJVGaQDCX+1ZCgGHDhhEfH89f//rXQIuiBIIhkwMtgeIQqiCUZlPdZlRRlNAi5H0QoWJCU+pH32dF8T0h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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEWCAYAAAB8LwAVAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAAsTAAALEwEAmpwYAABCvElEQVR4nO3dd3zV1f348df73uwdEkiAMBWRPQREZag4EBXc24qz7U9braO1tdXW1tZWv2qH1m3VWtHiQsXiREQBgQgIOBhCSEggrCRkkXF+f5x7wyXchJvkfu6I7+fjcR/33s+6596M9z3rfcQYg1JKKdWcK9wFUEopFZk0QCillPJLA4RSSim/NEAopZTySwOEUkopvzRAKKWU8ksDhFJKKb80QCjVDiKySUROCnc5lHKSBgillFJ+aYBQKkhEJF5EHhKRrZ7bQyIS79mXLSJvicgeEdklIp+IiMuz7xciUiQiFSLyjYhMCe87UcqKCXcBlOpE7gDGAyMBA7wB/Br4DXALUAh09Rw7HjAiMhC4ARhrjNkqIn0Bd2iLrZR/WoNQKnguBe42xmw3xpQCvwMu9+yrA7oDfYwxdcaYT4xNhNYAxAODRSTWGLPJGLMhLKVXqhkNEEoFTw9gs8/zzZ5tAPcB64F3RWSjiNwOYIxZD9wE/BbYLiKzRKQHSkUADRBKBc9WoI/P896ebRhjKowxtxhj+gPTgZu9fQ3GmP8YYyZ4zjXAn0NbbKX80wChVPvFikiC9wa8CPxaRLqKSDZwJ/BvABE5Q0QOFxEByrBNS40iMlBETvR0ZtcA1UBjeN6OUgfSAKFU+83F/kP33hKAZcAq4EsgH/iD59gBwPvAXmAR8Igx5iNs/8O9wA6gBOgG/DJ0b0GplokuGKSUUsofrUEopZTySwOEUkopvzRAKKWU8ksDhFJKKb86TaqN7Oxs07dv33AXQymlosry5ct3GGO6+tvnaIAQkanAX7G5ZZ40xtzbwnHnArOx+WiWebb9ErgaO178p8aYea29Vt++fVm2bFkwi6+UUp2eiGxuaZ9jAUJE3MDDwMnYJGVLRWSOMWZts+NSgRuBJT7bBgMXAUOwqQreF5EjjDENTpVXKaXUgZzsgxgHrDfGbDTG7ANmATP8HPd7bGqBGp9tM4BZxphaY8x32Bw24xwsq1JKqWacDBA9gS0+zws925qIyGiglzHm7bae6zn/OhFZJiLLSktLg1NqpZRSQBg7qT2LpTwAzGzvNYwxjwOPA4wZM0anhCsVwerq6igsLKSmpubQB6ugS0hIIC8vj9jY2IDPcTJAFAG9fJ7nebZ5pQJDgfk2fxm5wBwRmR7AuUqpKFNYWEhqaip9+/bF8zevQsQYw86dOyksLKRfv34Bn+dkE9NSYICI9BOROGyn8xzvTmNMmTEm2xjT1xjTF1gMTPeMYpoDXORZwrEfNtHZ5w6WVSnlsJqaGrKysjQ4hIGIkJWV1ebam2M1CGNMvYjcAMzDDnN92hizRkTuBpYZY+a0cu4aEXkZWAvUA9frCCalop8Gh/Bpz2fvaB+EMWYuNiWy77Y7Wzj2+GbP7wHucaxwSqng2PQpJGZCzuBwl0QFmabaUEp1zJwb4KPI/y63Z88eHnnkkXadO23aNPbs2dPqMXfeeSfvv/9+u67fXN++fdmxY0dQrtURGiCUUu1nDJRvhcrIH2beWoCor69v9dy5c+eSkZHR6jF33303J510UnuLF5E0QCil2q9mD9TXQGX4v+0eyu23386GDRsYOXIkt912G/Pnz2fixIlMnz6dwYNt89hZZ53FUUcdxZAhQ3j88cebzvV+o9+0aRODBg3i2muvZciQIZxyyilUV1cDMHPmTGbPnt10/F133cXo0aMZNmwYX3/9NQClpaWcfPLJDBkyhGuuuYY+ffocsqbwwAMPMHToUIYOHcpDDz0EQGVlJaeffjojRoxg6NChvPTSS03vcfDgwQwfPpxbb721w59Zp0nWp5QKg4oSe1/VtgDxuzfXsHZreVCLMrhHGnedOaTF/ffeey+rV69mxYoVAMyfP5/8/HxWr17dNPTz6aefpkuXLlRXVzN27FjOPfdcsrKyDrjOunXrePHFF3niiSe44IILeOWVV7jssssOer3s7Gzy8/N55JFHuP/++3nyySf53e9+x4knnsgvf/lL/ve///HUU0+1+p6WL1/OM888w5IlSzDGcPTRRzN58mQ2btxIjx49ePttO8e4rKyMnTt38tprr/H1118jIodsEguE1iCUUu1XUWzva8qgoS68ZWmHcePGHTAv4G9/+xsjRoxg/PjxbNmyhXXr1h10Tr9+/Rg5ciQARx11FJs2bfJ77XPOOeegYxYuXMhFF10EwNSpU8nMzGy1fAsXLuTss88mOTmZlJQUzjnnHD755BOGDRvGe++9xy9+8Qs++eQT0tPTSU9PJyEhgauvvppXX32VpKSkNn4aB9MahFKq/bw1CICqXZCaE9BprX3TD6Xk5OSmx/Pnz+f9999n0aJFJCUlcfzxx/udNxAfH9/02O12NzUxtXSc2+0+ZB9HWx1xxBHk5+czd+5cfv3rXzNlyhTuvPNOPv/8cz744ANmz57NP/7xDz788MMOvY7WIJRS7Ve+df/jNjYzhVpqaioVFRUt7i8rKyMzM5OkpCS+/vprFi9eHPQyHHfccbz88ssAvPvuu+zevbvV4ydOnMjrr79OVVUVlZWVvPbaa0ycOJGtW7eSlJTEZZddxm233UZ+fj579+6lrKyMadOm8eCDD7Jy5coOl1drEEqp9vOtQUR4R3VWVhbHHXccQ4cO5bTTTuP0008/YP/UqVN59NFHGTRoEAMHDmT8+PFBL8Ndd93FxRdfzPPPP88xxxxDbm4uqampLR4/evRoZs6cybhxNpn1Nddcw6hRo5g3bx633XYbLpeL2NhY/vnPf1JRUcGMGTOoqanBGMMDDzzQ4fKKMZ0jx92YMWOMLhikVIjNuhS+nQeNdXDeMzD0nBYP/eqrrxg0aFAICxd5amtrcbvdxMTEsGjRIn784x83dZqHgr+fgYgsN8aM8Xe81iCUUu1XUQJdB8K21VC1M9yliXgFBQVccMEFNDY2EhcXxxNPPBHuIrVKA4RSqv0qSqDPsTZARHgTUyQYMGAAX3zxRbiLETDtpFZKtU9jI+wtgfQ8m4spwjupVdtpgFBKtU/VTmish9TukJSlTUydkAYIpVT7eCfJpeZCUrY2MXVCGiCUUu3jHeKa2h2Ss7UG0QlpgFBKtc8BNYisTlmDSElJadP2zkYDhFKqfbw1iJSc/X0QnWRelbI0QCil2qei2PY9xMTZJibTYNN/R6jbb7+dhx9+uOn5b3/7W+6//3727t3LlClTmlJzv/HGGwFf0xjDbbfdxtChQxk2bFhT2u3i4mImTZrEyJEjGTp0KJ988gkNDQ3MnDmz6dgHH3ww6O8x2HQehFKqfSpKbP8D2EABULnTDnk9lHduh5Ivg1ue3GFw2r0t7r7wwgu56aabuP766wF4+eWXmTdvHgkJCbz22mukpaWxY8cOxo8fz/Tp0wNaw/nVV19lxYoVrFy5kh07djB27FgmTZrEf/7zH0499VTuuOMOGhoaqKqqYsWKFRQVFbF69WqAoKTjdpoGCKVU+1QUQ5onQCR71kyo2gEcHrYitWbUqFFs376drVu3UlpaSmZmJr169aKuro5f/epXLFiwAJfLRVFREdu2bSM3N/eQ11y4cCEXX3wxbrebnJwcJk+ezNKlSxk7dixXXXUVdXV1nHXWWYwcOZL+/fuzceNGfvKTn3D66adzyimnhOBdd4wGCKVU+1SUQPfh9nGSN0AEOJKplW/6Tjr//POZPXs2JSUlXHjhhQC88MILlJaWsnz5cmJjY+nbt6/fNN9tMWnSJBYsWMDbb7/NzJkzufnmm/nBD37AypUrmTdvHo8++igvv/wyTz/9dDDelmO0D0Ip1XYN9VC53U8TU2SPZLrwwguZNWsWs2fP5vzzzwdsmu9u3boRGxvLRx99xObNmwO+3sSJE3nppZdoaGigtLSUBQsWMG7cODZv3kxOTg7XXnst11xzDfn5+ezYsYPGxkbOPfdc/vCHP5Cfn+/U2wwarUEopdqucjuYRjvEFWwnNUR8uo0hQ4ZQUVFBz5496d7dBrdLL72UM888k2HDhjFmzBiOPPLIgK939tlns2jRIkaMGIGI8Je//IXc3FyeffZZ7rvvPmJjY0lJSeG5556jqKiIK6+8ksbGRgD+9Kc/OfIeg0nTfSul2q5oOTxxIlw8CwaeZrfd0wOOmglT/+j3FE33HX5tTfetTUxKqbZrmkXt05Gr+Zg6HQ0QSqm2a5pF3X3/tuSsiG9iUm2jAUIp1XYVJSAuSO66f1sACfs6S5N2NGrPZ68BQinVdhXFNsWGy71/2yES9iUkJLBz504NEmFgjGHnzp0kJCS06TwdxaSUaruKkgP7H+CQfRB5eXkUFhZSWlrqcOGUPwkJCeTl5bXpHA0QSqm2qyiBjN4HbkvKgroq2FcFcUkHnRIbG0u/fv1CVEAVDNrEpJRqu4rig2sQUTIXQgVOA4RSqm3qa21Tku8IJoia2dQqcBoglFJts3ebvffXBwFQtSu05VGO0QChlGob36VGfWkTU6ejAUIp1Ta+S4368tYgtImp09AAoZRqm5ZqEAnp4IrRGkQn4miAEJGpIvKNiKwXkdv97P+RiHwpIitEZKGIDPZs7ysi1Z7tK0TkUSfLqZRqg4picMXurzF4iWg+pk7GsXkQIuIGHgZOBgqBpSIyxxiz1uew/xhjHvUcPx14AJjq2bfBGDPSqfIppdrJu9SovyU5k7LtsqOqU3CyBjEOWG+M2WiM2QfMAmb4HmCMKfd5mgzoHHylIl351oP7H7w0YV+n4mSA6Als8Xle6Nl2ABG5XkQ2AH8Bfuqzq5+IfCEiH4vIRH8vICLXicgyEVmm0/eVChF/aTa8AkjYp6JH2DupjTEPG2MOA34B/NqzuRjobYwZBdwM/EdE0vyc+7gxZowxZkzXrl2b71ZKOcHbxOSP9kF0Kk4GiCKgl8/zPM+2lswCzgIwxtQaY3Z6Hi8HNgBHOFNMpVTA9lVCbVkrTUzZULMHGupCWizlDCcDxFJggIj0E5E44CJgju8BIjLA5+npwDrP9q6eTm5EpD8wANjoYFmVUoFoaYirl86m7lQcG8VkjKkXkRuAeYAbeNoYs0ZE7gaWGWPmADeIyElAHbAbuMJz+iTgbhGpAxqBHxlj9DdOqXDzt9SoL9/Z1Kk5oSmTcoyj6b6NMXOBuc223enz+MYWznsFeMXJsiml2sHfUqO+mmoQ2g/RGYS9k1opFUUOVYPQjK6digYIpVTgKoohJtGm1fCnqYlJaxCdgQYIpVTgvHMg/M2iBkjsYu+1BtEpaIBQSgWutTkQAO4YSMjQGkQnoQFCKRU4f0uNNpecrek2OgkNEEqpwBhz6BoEaLqNTkQDREfV1cBTp8LG+eEuiVLOqq2AuspD1yA03UanoQGio4qWw5bF8NVb4S6JUs461Cxqr2QNEJ2FBoiOKvjM3pd8Gd5yKOU07yS5tACamKp22iYpFdU0QHRUwWJ7v201NDaGtyxKOelQs6i9krOhsd4m7VNRTQNERzQ2wJbP7aShfXth93fhLpFSzvEGiJRD5FjShH2dhgaIjti2BmrLYdTl9nnJqvCWRyknVZRAfBrEp7R+nKbb6DQ0QHREwSJ7P+YqcMVAsQYI1YkFMgcCbCc16FyITkADREcULIK0PMg6DLoeqR3VqnNrbalRX1qD6DQ0QLSXMbaDus8x9nnuMG1iUp1bRfGhO6hBU353Ihog2mv3JvsH03u8fZ47DPZug4ptYS2WUo5omkUdQA0iLglikzRAdAIaINrLO7y197H2Pne4vddmJtUZVe+Ghn2B1SBA0210Ehog2qvgMzu8teuR9nnuUHuvzUyqM2qaAxFADQI8s6k1QEQ7DRDtVbAYeo0Hl+cjTMyEjN5ag1CdU6CT5Lw0H1OnoAGiPSp3wI5v93dQe+UO1xqE6pwOtdRoc0nZUKkBItppgGiPpv6H5gFiGOzcALV7Q18mpZzUNIs60CYmXROiM9AA0R4Fi8AdDz1GHbg9dzhg7AxrpTqTihLbjBqbENjxSVlQVwX7qpwtl3KUBoj2KFgEPY+CmPgDt+cOs/fazKQ6m0AWCvKlcyE6BQ0QbbWvEopX7p//4Cs9z37L0o5q1dkEmmbDK9kzm1qbmaKaBoi2KlxmUxn3OfbgfSI6o1p1Tm2uQXjTbWgNIpppgGirgsWAQN5Y//tzh8O2tdBQH9JiKeWYxoa2BwitQXQKGiDaquAzyBkKiRn+9+cOh4ZaOwxWqc6gcgeYhrY1MSV1sffaBxHVNEC0RUM9bFnqv//Bq6mjWvshVCfR1klyAAkZNgW+ptuIahog2mLbl1BXefAEOV/ZR9ghsNoPoTqLpklybQgQIp7Z1BogopkGiLbY7FkgqFcrNQh3DOQM1gChOo+25mHy0tnUUU8DRFsULLL5ltJ7tn5c7nDbxGRMaMqllJMqSgCBlG5tOy+pi/ZBRDkNEIEyxgaI3n6GtzaXO8ymRy4rdL5cSjmtohiSu4I7tm3nabqNqKcBIlC7NkJlaesd1F7dR9h77ahWnUGgCwU1p2tCRD0NEIHa/Jm99zdBrrlugwHRAKE6h0CXGm0uORtq9kBDXdCLpEJDA0SgChZDYhc7SulQ4lMg6zDtqFadQ7trEJ58TNW7g1seFTKOBggRmSoi34jIehG53c/+H4nIlyKyQkQWishgn32/9Jz3jYic6mQ5A1KwyDYviQR2vK4NoTqDhjrbtNqeGoQ3QGgzU9RyLECIiBt4GDgNGAxc7BsAPP5jjBlmjBkJ/AV4wHPuYOAiYAgwFXjEc73wqNgGuzYcvP5Da3KHwZ4C/fakotve7YBpXw1C021EPSdrEOOA9caYjcaYfcAsYIbvAcaYcp+nyYB3XOgMYJYxptYY8x2w3nO98NjSwgJBrek+3N6XrA5+eZQKlfZMkvNqStinASJaORkgegJbfJ4XerYdQESuF5EN2BrET9t47nUiskxElpWWlgat4AfZvAhiEvePTgpErjdAaDOTimLtnSQHuiZEJxD2TmpjzMPGmMOAXwC/buO5jxtjxhhjxnTt2tWZAoLtf8gbAzFxgZ+T0g1ScnQkk4pu7cnD5KUJ+6KekwGiCOjl8zzPs60ls4Cz2nmuc2orbC2gLc1LXt4Z1UpFq4oSEPf+/oS2cMfapH3axBS1nAwQS4EBItJPROKwnc5zfA8QkQE+T08H1nkezwEuEpF4EekHDAA+d7CsLStcCqYxsAlyzeUOg9Kvob42+OVSKhQqim1N2NXOMSI6mzqqxTh1YWNMvYjcAMwD3MDTxpg1InI3sMwYMwe4QUROAuqA3cAVnnPXiMjLwFqgHrjeGNPgVFlbVbAYxNXyAkGt6T7crj63/SvoMTLoRVPKcRXFkNaO5iWvpCxtYopijgUIAGPMXGBus213+jy+sZVz7wHuca50Adr8ma0JJKS1/VzfjmoNECoaVZRAl/7tPz8pG3ZvClpxVGiFvZM6ojXU2TWo29P/AJDZD+JStB9CRa+K4vaNYPJK1jUhopkGiNYUr4T66vYHCJfLLk+qAUJFo7oaO9GzIwEiKds2MWnq+6ikAaI1BZ4FgtrTQe2VO8wGiMbG4JRJqVDZ24FJcl5JWbYfrqYsOGVSIaUBojUFi20zUUe+QXUfDvv2wu7vglcupUKhaRZ1R5qYvOk2tKM6GgUUIETkRhFJE+spEckXkVOcLlxYeRcICiS9d2tyh9l7nVGtok1HJsl5abqNqBZoDeIqT96kU4BM4HLgXsdKFQl2rLPfejrSvATQdRC4YrQfQkWfjuRh8kr2ptvQABGNAg0Q3hzX04DnjTFrfLZ1TgWeBYICWWK0NbEJkD1QA4SKPhXF4I6DxMz2X0PzMUW1QAPEchF5Fxsg5olIKtC5e10LFtt1eLMO6/i1codBsTYxqSjjXSgo0DVQ/NEmpqgWaIC4GrgdGGuMqQJigSsdK1Uk2PxZ2xYIak334XZEyN7tHb+WUqHS3qVGfcUlQWyS1iCiVKAB4hjgG2PMHhG5DJt1tfOOWyvfCns2t3/+Q3PaUa2iUXuXGm0uKUtrEFEq0ADxT6BKREYAtwAbgOccK1W4FXgXCOpgB7VXU4DQfggVRSpKOl6DAM3HFMUCDRD1xhiDXentH8aYh4FU54oVZgWLIDYZctuwQFBrEjMhvbcGCBU9avdCbXlwahCa0TVqBRogKkTkl9jhrW+LiAvbD9E5eRcIcgcxl2H34dpRraLH3m32Pig1iGyo1BpENAo0QFwI1GLnQ5RgF/C5z7FShVNNmV1HuqMT5JrLHQY718O+yuBeVyknlG+198Hqg9AaRFQKKEB4gsILQLqInAHUGGM6Zx/ElqWACV7/g1fuMHvdbWuCe12lnBCMSXJeyVlQVwX7qjp+LRVSgabauAC7otv5wAXAEhE5z8mChU3BZ3aJxZ5jgntd37UhlIp0wUiz4ZWk+ZiiVaCN7Hdg50BsBxCRrsD7wGynChY2BYuh+wiITwnuddPz7Pq82g+hokFFiR2oER+EsShNCft2QEav1o9VESXQPgiXNzh47GzDudGjvhaKlgdv/oMvEdtRrSOZVDTwLhQUjImi3nQb2lEddQKtQfxPROYBL3qeX0izpUQ7ha0roL4G+jgQIMA2My19EhrqgztCSqlgC9YcCNAmpigWaCf1bcDjwHDP7XFjzC+cLFhYeBcI6hXkDmqv3GE2AO1c58z1lQqWji416kszukatgL/GGmNeAV5xsCzhV7AIsgZASldnrt/UUf0ldBvkzGso1VHGBC/NBti+N3Fruo0o1GoNQkQqRKTcz61CRMpDVciQaGy0HdTBHt7qK3sAuOPtWtdKRaqaMrsWe7CamER0LkSUarUGYYzpvOk0miv9Gmr2ONNB7eWOhZzB2lGtIlswlhptLjkbqnYF73oqJDrfSKT28vY/ONVB7ZU7zAYIY5x9HaXaK5hzILw0o2tU0gDhVbAYUnIgs5+zr5M7HKp3QXmRs6+jVHs5VoPQABFtNEB4FSyyzUvBGPfdGt+OaqUiUVMNIogBQmsQUUkDBMCeLVC2xdn+B6+cIYDojGoVuSpKID4d4pKDd82kbNvH11AfvGsqx2mAgOAvENSa+BS7zrXmZFKRKphzILy86TaqtaM6mmiAANu8FJcKOUND83rejmqlIlEw50B4NaXb0GamaKIBAmwNotfY0KW/yB1u17yu3hOa11OqLSqKgzuCCfYHCO2ojioaIKp3w/a10DvICwS1xttRvW116F5TqUA0NjpTg0jWfEzRSAMEAlPvhSOnhe4lc4fZe+2oVpGmehc01jlQg/AECG1iiiqaUjQxA8b/KLSvmZpj51xoP4SKNN4hrmnBDhBd7L3WIKKK1iDCRTuqVSQK5lKjvtyxkJCuASLKaIAIl9zhUPqVXaRIqUjhxCQ5r6RsbWKKMo4GCBGZKiLfiMh6Ebndz/6bRWStiKwSkQ9EpI/PvgYRWeG5zXGynGGROwwa622SQKUihbcGkZIT/Gtruo2o41iAEBE38DBwGjAYuFhEBjc77AtgjDFmOHZ967/47Ks2xoz03KY7VU6Asuo6Jy/vX/cR9l47qlUkqSi2Q1Jj4oN/7aRsXXY0yjhZgxgHrDfGbDTG7ANmATN8DzDGfGSMqfI8XQzkOVgev8qq6hh7z/tc8Nginl+8mZ17Q9Tkk9nPLgqv/RAqkgRzqdHmkrpoH0SUcTJA9AS2+Dwv9GxrydXAOz7PE0RkmYgsFpGz/J0gItd5jllWWlrarkIaDNcffzi7Kvfxm9dXM+6PH3D5U0t4edkWZ2sWLhfkDtUAoSKLE2k2vJKzbYDQVPdRIyKGuYrIZcAYYLLP5j7GmCIR6Q98KCJfGmM2+J5njHkcu1Y2Y8aMaddvXUZSHDeeNICfTjmcb7ZV8ObKrby5spifz17FHa99yeQjunLmiB6cNCiH5Pggf1y5w2HlLDs5yaXjBVQEqCjxJJR0QFK2nWNRU2aHl6uI52SAKAJ6+TzP82w7gIicBNwBTDbGNLXvGGOKPPcbRWQ+MArY0Pz8YBERjsxN48jcNG49ZSCrCst4c+VW3v6ymPe/2k5CrIspR+ZwxvDunHBkNxJi3R1/0dxhsPQJ2LMJuvTv+PWU6ojGBti7zbkmJt/Z1BogooKTAWIpMEBE+mEDw0XAJb4HiMgo4DFgqjFmu8/2TKDKGFMrItnAcRzYge0oEWFErwxG9MrgV9MGsbxgN2+u3MrcL4t5+8tikuPcnDIklzNHdGfC4V2Ji2nnt//unpQbxas0QKjwqywF0+hcE1NTPqadNqOxiniOBQhjTL2I3ADMA9zA08aYNSJyN7DMGDMHuA9IAf4rdqGeAs+IpUHAYyLSiO0nudcYs9apsrbG5RLG9u3C2L5duPOMwSzeuIu3Vm3lndUlvPZFEemJsZw6JIfheRnkZSaSl5lEXmZiYDWMroNA3LYfYshZjr8XpVrlxFKjvjSja9RxtA/CGDMXmNts250+j09q4bzPgGFOlq09YtwuJgzIZsKAbO6eMZSF60t5c2Uxc78s4eVlhQccm50SR09PsPANHL0yE+mZkURinBtiE6DrwI6vDeHb6ef0iniq83JiqVFfTU1MGiCiRUR0UkejuBgXJx6Zw4lH5tDQaCitqKVwdxWFu6t97qtZU1TGu2tKqGs4sA89KzmOvMxEflXbk8G7v2BdwW5G985s/UWNsWtZb/8Ktq2x99vXQOm30OBveK74BAzvY89z38cuN0z9Exw1s/0fiIp+jtcgIjRhX1kRuGJsjjR1AA0QQeB2CbnpCeSmJzCm78H7GxsNpXtrDwgc3sfLy3txdN17XPvIOxzWtx/XTerPiUd2w1Wz2xMA1trbtrX2eW3Z/gun9oBug6DfZIhP9dQkPIHooMfY5/4er/8APvg9DD3XXkd9P5UXAwLJ3Zy5flwSxCRG1lyIyp3w+GRwx8OPF0LiIb6kfc9ogAgBl0vISUsgJy2Bo/o02/ldLTz7NM8MXMzqwv8R9+JGdsUUkW18lmaMT4ecwTDsXOg22HMbtD9DZkcNmg5PngiLH4XJtwXnmir6VBRDSjdnF87yzoWIBMbA2z/zLNxl4K2fwXnPaDOtDw0Q4ZY7DFyxDN/8LMPc8ZR16c+y6hF8XpnLtoT+jBk3gRmTxpCWGOdcGfKOgoGnw2d/g7FXBy/wqOjixEJBzSVlRU4T0+pXYO0bMOUuwMAHd8OAU2DkJYc89ftCA0S4JWbCjxaCy41k9iPDHcMUY4hbt4PHFmzgNx/t5M+ffcQlR/fmquP6kZue4Ew5TrwD/nkcfPpXOPl3zryGimwVJZDucLabSEnYV14Mb98CeWPhuBvttvUfwtzboPd4HXbuodN3I0G3IyF7QFPVXkSYdERXXrhmPG/9ZAInHNmNJz/ZyMS/fMit/13Jt9sqgl+GnCEw7HxY8hhUbAv+9VXkczLNhldSVvibmIyBOT+xqfbPfswO0nC54RzP41euhYYwJPCMQBogItzQnun8/eJRfHzbCVx6dB/eWrWVUx5cwFX/WsqSjTsxwcxrc/ztNhXCJ/cH75oqOtTvs9/snRrB5BUJGV3zn4X178HJdx84YS89D854CIqWwcchm5cb0TRARIleXZL47fQhfHb7FH520hGs2LKHCx9fzFmPfMbcL4vZXl5DTV1Dx14k6zAYdRksewZ2bw5OwVV02OupNTpdg0jOgrpKqKt29nVasnsTzLsD+k2CsdccvH/oOTDyUvslafOikBcv0mgfRJTpkmyTC143qT+z8wt5YsFG/t8L+U3742JcpCXEkp4YQ1piLOmJsZ7nsaQlxjR7bu/TE2PpkZGI2yUw6eew4kX4+M9w1iNhfKcqpJxaarQ537kQGb1aPzbYGhvh9esBgRmPtJwg87Q/w+ZP4dXr4EeffK/zRmmAiFKJcW4uH9+HS8b1ZsG6Uop2V1NWXUd5TR3l1XWUV9dTVl3Hrsp9fLej0m6rqaeh0X+TVFpCDOP7Z3HMYVnMGHIFmSufRI670c70Vp2fk0uN+vLNxxTqALHkUdi8EGY83Pprx6fCuU/BU6fA3Fvh3CdDV8YIowEiyrldwgkDA5vYZIyhcl+DDSTVdU33uyr3sWLLHj7bsJN3127j74zmk4Q4vnn2Nr6a+HeOPSybvllJiI4P77xCVYMIV7qN0m/hg9/BEafZJqRDyRsDx/8SPvoDHH4yjLjQ+TJGIA0Q3yMiQkp8DCnxMfTMSDxg30XjegNQuLuKRRt2snDxhZy641l+8/qb3GH60T09gWMOy+KY/lkce3j2QeeHTWMDzL7K/kEf+5NwlyZ6VRTbdBPeb/hOaWpiCmFHdUM9vPZDiE2EM/8a+ES4iTfDhg/scNjeR0NmX0eLGYk0QKgD5GUmcf6YJBj6e8xDb/Df3h/w2pCH+GzDTj7+ppRX8+2SHn2ykjj2sKymZqluqQ7NzziUNa/B2tftra4aJv88POWIdhUlkJLr/MJVyd4mphDWIBY+CFvz7SzptuRbcrntMNhHJ9j+iJlznZ1lHoG+X+9WBS4hHZnwM5Lev4tLpxRx6dHH0tho+HZ7BYs27OSzDTt5a1UxL35uV5U9eXAOvz59EH2ykkNXxsYGOxyx65HQYxR8dI/drkGi7UIxBwJs2hhxh24uRPEq+Phem2ds6DltPz+zD5zxILxytR3ZdPztwS9jBNMAoVo27jpY/IhN5HflXFyu/avuXXlcPxoaDWu3lvPeV9t46pONnPzAAq6e2I/rTziclGAvz+rP2tdhxzdw3tMw+Cy7TYNE+1SUhGYRH5crdOk26mtt01JSFkzrwNyeYefBunftyL7+J9jmpu8JnQehWhaXBJNug4LPbFtsM26XMCwvnZtPPoIPbz2eM0Z055/zN3Di/fN5ZXkhjS2MmAqKxkb4+D7IHmiDg8ttR6eMuNgGCZ3o1DYVxc53UHuFKmHf/D/ZTMjT/97x/GLT7rMT6V69FmrKg1O+KKABQrVu9BWQ0dsmMmtl1nZOWgIPXDCSV//fsXTPSOSW/67knH9+xoote5wp11dvQOlXtqbg8qzep0GifeqqoWZPaJqYIDQ1iIIlNq/YqMvhiFM7fr2EdDjnSSjbYvM1fU9ogFCti4mzw/2KV8JXcw55+Ojembz242O5//wRFO2p5qyHP+WWl1eyvbwmeGVqbLT//LOPgCFnH7hPg0TbOb1QUHNO52PaVwmv/wjS8uDUPwbvur2PthNJV82CL2cH77oRTAOEOrThF9qmnA//YDuGD8HlEs47Ko+Pbj2eH00+jDdXbuWE++fzz/kbqK3vYDoQgK/ftE0Hk27bX3s4oAAaJNrE6aVGm3M6o+v7v4NdG+GshyEhLbjXnnQb5I2Dt26GPQXBvXYE0gChDs3ltunAd3wLq14K+LSU+BhuP+1I3v3ZJI45LJs//+9rTn1wAe+v3db+JIPe2kPW4XZkSmtl1iARmJDXILKherednxBsG+fD54/B0T+2+ZaCzR0D5zwOphFe/WFAX5iimQYIFZhB06H7SNvxV7+vTaf2zU7mySvG8OxV44hxu7jmuWX84OnPWb+9HWnLv3kbtq1uufbgS4NEYEJdg/BOxqve1fpxbVVTBm/cYL88TLkzuNf21aUfnH6/Hbyx8AHnXicCaIBQgRGBE39jq9X5z7brEpOP6Mo7N07kzjMGs2LLHk596BN+9+YayqoDzL1vjB1q2KU/DD0vsHM0SBxaRTHEJIRuPeZkn3xMwfS/X0F5kZ3cFpcU3Gs3N/xC+zv40Z+gcJmzrxVGOg9CBe7wKdD7WFhwn81n044/wli3i6sm9GPGyB7833vf8q/PNvHGiq2M7ZtJrNtFXIyL+BgXcZ7H3m1xMS4G7PqYk0u+ZMmIeyhaWWK3u13Ex7oZkZdORlILy7J6gwToPAl/vEuNhirXlm9G12D55h1Y8W+YeItNu+I0ETj9/2DLEnjlGpv1NT7V+dcNMQ0QKnAiMOU38Mxp8PnjMOGmdl8qKyWeP549jEuP7s0D737L5p1V7KtvpLa+kX0NjdQ1NLKv3t7qGw1geCvub3xHDpcs6U3DkpUHXC8h1sX5R/Xiqgn96JftZza3BomWVZSErv8Bgp+wr3InzPkp5AyFySGc6ZyYYfsj/nU6vPsbOPOh0L12iGiAUG3T51ib3XLhgzDmSjs+vAOG9EjnqZljWz2modHQ8NXbxP13E+Wn/o0Fg06mzhNI9tU3Ul5Tx2v5Rby0dAv/XrKZkwblcO3E/oztm3lgBloNEgcyBla8AEXLYdCZoXtdbx9EsGoQ835pO70vf80Oyw6lPsfajAOfP2HXtu7SL7Sv7zANEKrtTvw1PD4ZFj0MJ/zK8ZdzC7gX/gUy+5I27lLS/CRMO/awbG6bOpDnF23m+cWbeW/tNkbkpXPNxP6cNjSXGLenu02DhLV7M7x5I2z8CHofY3+modK0JkQQOqnLi+2chPE/htyhHb9eexx3k12FceGDMP1v4SmDQ7STWrVdj5EweIYNEKHIqfPtPDtRb+KtrWbT7JaawC2nDGTR7VP4/VlDKa+p5ycvfsHk++bz5CcbqajxdIZ/nzuuGxthyePwyDGw5XObo2jmXDtbPlTcsbbmGYwmpi/+DaYBxlzV8Wu1V1p3GH05rPgP7NkSvnI4QAOEap8T7oC6KvutyUnG2GycGX1gxEUBneJdbe+DmyfzxA/G0DMzkT+8/RXH/ulD7nl7LUV7qg8OEgvuc/Z9RIId6+Ff0+Cd2+ys4OsXw7hrnU/x7U9Sdse/XDQ22BF1/SaHJtFga467yd5/+lA4SxF02sSk2qfrQPvP9fMnYPz/g/SezrzOuvdg6xdw5t/sN882cLmEkwfncPLgHFYV7uGJT77j6U838fSnm5g2rDvXTuzH8BkP2yD04R8gJhGOvcGZ9xFODfWw6B/w0R8hNsGuxzzyktCNWvInKavjNYgNH9rcSKf8Pjhl6oiMXvYzzX/e1nTTQtjp7yCtQaj2m/wLO6N0gUNNNN7aQ3pvG4w6YHheBn+/eBQLfn4CVx3Xl4++3s70f3zKBU98znsDfsO+gTPg3TtgaSdbf7hkNTw5Bd6/CwacDNd/DqMuDW9wAE+6jQ72QSx7BpK7wsDTg1OmjprwM2ish886Tz+E1iBU+2X2gaNmwvJn4NifBr+av/4DO8LmjIeCNjqlZ0Yid5w+mJ9OGcBLS7fwzKebuPaFlcRyLv+MLeCkt2/hjrc28F7cFBLj3CTGukmKc3sex5AY5yYp1vPc53GfrGRG984gKyU+KOXssPp9doGbT/4PEjLg/H/ZtOjhDgxeSVlQlN/+88u3wrf/s8vMhnrkUku69LMT6JY9AxNuhpSu4S5Rh2mAUB0z6VbbOff82XDRC5A7LDjXbao99Apskfk2Sk2I5ZqJ/Zl5bF8++Ho7hburWVfzDw7/8mf8vuxRhuR2Y0ny8VTta6CmroGqfQ3sqqz2PK6nel8D1XUN1DUcmFOqb1YSo3tnMqpPJqN7ZzAwJ3X/CKpQKVwOb1xv06EPuwCm3rt/9nKk8K4JYUz7gpa3c/qoK4Jfto6YeIvN9rro73Dy3eEuTYdpgFAdk5oLV8yBly6HJ0+2i7MMP7/j193wIRQuhdMfcPQbYozbxalDfHIQTXod/n0elxT+gUsuOAKObL35oq6hkaraBr7ZVkF+wW7yN+9mwbodvPqFXbs7Kc7NiLwMRvfJsIGjdyZdkh16P/uqYP4f7eiylFy45OXgrIXghKQsaKyz+ZMSM9p2bmMDLH8W+h9v065EkuzDYcg58PmTcOyNkReY20gDhOq4vDHww4/h5Svg1Wtsp/LJd7d/gXdvzqW0PBh1WXDLeihxyXDJS/D8WfDfmXDxi3D4SS0eHut2kZ7kYly/LozrZ1ctM8ZQuLu6KWAsL9jNox9vpMGzwl6/7GRG9bYBY3TvTAbmpuJ2dbDpZ9OnMOcGm+b6qJn28+/gJEZHedNtVO1se4BY/wGUF8Kp9wS9WEEx6VZYPdsu1zvlN+EuTYdogFDBkdLN1iTe/TUsfhhKVsF5z7SvHXbjfJvj5vT/g5gwtOknpMFlr8CzZ8Ksy+Cy2dB3QsCniwi9uiTRq0sSM0ba0V1V++pZVVjmCRp7+PibUl7Nt7WM5Dg3h3VLITctge7pCXTPSKR7eoLneSI56fHEx7SQuXbPFjtIIP85yOwLV7zpN811TV0D28prKCmrocRzX1xWY7eV19C7SxLnjM5jwuHZHQ9WgUj2CRBt7bta7u2cnhb8cgVDt0E2+/Hnj9s+krYGwAgi7c7LH2HGjBljli3rvFkVo8rKWXaWblIWXPg89Dwq8HONsbme9hTAT78IT4DwqtwBz0yzGUIvfx16tZ4SpC2MMRTsqiK/YDdfFOxh884qSspq2FpWTUXNweskZKfEkZueQG6aDR4D4ncxseQ5+mx5HQF2D7uStQNvYGuli+KmIFBNSXktJWXV7K46OGNucpyb3PQEuqUmsLa4nLLqOnLS4jlrZE/OPSqPI3IcTD5XlA9PnAAXvQhHtuEffflWeHCITWtx0m8dK16HFa+CxybC8b+C438R7tK0SkSWG2P8Zjh0tAYhIlOBvwJu4EljzL3N9t8MXAPUA6XAVcaYzZ59VwDe+f9/MMa0L8e0Cr0RF0HXI22/xNOnwRkPBN5U9N0CKFhkZ/iGMziA/ZZ7xRwbsP59rn3cY2RQLi0i9MlKpk9WMmePyjtg397aevtNv6yG4rJqij3f9kvKqqnfsZFR373ImeZjGhH+3XAC/6yfTvGSLFiyuukaWck2oPRIT2B07wxy0xJsgEm3tZSctARSE/bPK6mtb+DDr7bzSn4hTy38jscWbGRozzTOHZ3H9BE9gj86qyndRhvnQuQ/b4dWj/5BcMsTbN2H2xrO4kdsGpBgr2wXIo7VIETEDXwLnAwUAkuBi40xa32OOQFYYoypEpEfA8cbYy4UkS7AMmAMYIDlwFHGmN0tvZ7WICJQ5U545SrbZDTmajua5lAdzs9Ms+3oP11hJ3VFgj1bbJDYVwlXzrVNCKG2c4MdsrpyFrhiqBv1A7YO+SFFDZkUl9UQG+NqapbqltZKk1QAduytZc6KrbySX8iareXEuITjB3bj3NE9OXFQtw5du8m+SvhjD1sLmPCzwM5pbICHhkP2APjB6x0vg9O8taQpd8HEm8NdmhaFqwYxDlhvjNnoKcQsYAbQFCCMMR/5HL8Y8H7NPBV4zxizy3Pue8BU4EUHy6uCLTkLLn0FPrwbPv2rXQnugudaXrnsu09g86dw2l8iJziAnSV7xRxbG3p2Olz5jh2tEgo71sGC++HLl8EdB0f/EI67kdjUXPoAfRx4yeyUeK6a0I+rJvTj65JyXs0v4rUvinj/q22kJ8Zy5ojunDs6j5G9Mg7MltsWccl25npb0m2sfz+yO6eb6znaDnBY9A/7c4vzk4Y+wjk5QLsn4Ju5qtCzrSVXA++05VwRuU5ElonIstLS0g4WVznCHWNH1Jz3DJR8CY9NhoIl/o/9+M92eOboCBvbDnY45RVzbPPGc9NtNlQnbf8aZl8N/xgLX82x6UxuXAVT/xS6pUGBI3PT+NW0QSy6/UT+deVYJh/Rlf8uK+TsRz5jygMf8/BH621uq/bwzoUI1LJnILnbIYceR5RJP7fvcdkz4S5Ju0TEKCYRuQzbnDS5LecZYx4HHgfbxORA0VSwDD3H9kvMusQusHLavbbZyfsNdNOnsOkT2wwVSbUHX10H2qaNf51hRzhd9T9I6xHc19i2xiYOXPM6xCbBcT+FY34S9lm5MW4Xxw/sxvEDu1FeU8fcVcW8ml/EffO+4f53v6FfdjI9MxLpkZ5Ij4xEumck2OeeEVkJsX6apZK6BF6DKCuCdfNsUrw25uQKq95H21Fln/4Vxl4NsYnhLlGbOBkgioBePs/zPNsOICInAXcAk40xtT7nHt/s3PmOlFKFTs5guO4jePU6ePsWKPrCDmWNTbCzplNy7Bj+SJY7DC5/FZ6d4WlummuH+HZUyZc27fhXcyAuxbbLH3NDRE60SkuI5aJxvbloXG8Kdlbx+ooivi4pp2hPDV+XbKe0ovagc7KS45qCRY+MRHpmJDKjIZXkPdvZW15D15R4XK0Nr/0iSjqn/Zn0c3j2DDsU+egfhrs0beJkJ3UMtpN6CvYf/lLgEmPMGp9jRgGzganGmHU+27tgO6ZHezblYzupW8zupZ3UUaSxEeb/yY7f7zHK/iN85Wo49Y9wzPXhLl1gNi+Cf58Dmf1g5lv223BravfC3m1QUWyX+Kwogb2e+z1bYMtiiE+z/0DG/79DXy+C1dY3sK2slqI91Wz13spq9j/eU03lvgYeiH2EsfINE/f9lRiXkOMzD6RH04irRHqkxTLk5Qm4uh2J/OC1cL+9tjPGDr7YvQluXBH+0XnNtNZJ7eg8CBGZBjyEHeb6tDHmHhG5G1hmjJkjIu8Dw4BizykFxpjpnnOvArzLld1jjGm1EU8DRBT6+m149Yewr8K2Ld+4EuKSwl2qwG2cDy9cYEc1nfw72Fu6/5/+AUFgm32PzbnjbX9Cai4cdqINDomZIX8boWaMobymnvq5t5P+1X94ccqipqG8W/dUU1JuH++rbwTgRFc+T8fdzw31P2Nl2iS6p9kmrO7ptkbSPT2BbmkJdEmKIzM5lpT4mPZ3njtlw4c2X9kZD4Z3cSM/whYgQkkDRJTasc4uOH/UFQEvCBRRvp0Hsy61eYW8YhL3/+NPzbUd76k5kNrdNqOldrfPEzIiJ7tqOCy4Hz78PdxRclDbvDGGnZX7KCmrodtbV5C6cxV/HzGHooo6TzCppqSs5qBkiQCxbiEjKa4pYHRJjiMzyXNLjqNLciyZSXH7tyfHkRzndjaoGANPngSV2+En+RHVjxK2iXJKHVL2ALjqnUMfF6mOOBV+/JltOvL+449P+37/4w+Ub7qN9AMnC4oI2SnxZDeUQsnHcNxN/PykA9ecbmy0QaS4rJode2vZVVnH7sp97K6yt12V+9hdWce32/Y2bW9s4ftwSnwMvbok0btLIr27JNHbkyqld5ckemYmdnzuh4hd+/w/F8Cql5omjtbWN7Cnqo6Kmjpq6hqprW+gpq6RmrqGg597HtfWNVBb7z3GbuuTlcQvpwV/fo4GCKU6qusR9qbaxpuwr3LHQQGiyRf/tp3TftJ6u1xC19R4uqYG1qbf2GioqKlnV1Pw2Nf0uKSshi27qthYWsn8b0qp9TRvgf3f3j0tgV5dkuiTdWDw6N0liS7JcYgIDY2Gsuo6e22f19jpfa3Kbvw0bgBxb93DJe/msKOqkb21B6dVOZS4GBcJMS4SYt2em4vEuCBMXvRDA4RSKjyaahAtDHVtqLcjfw470SYi7CCXS0hPiiU9KZZ+2S1PWmtsNOzYW8vmXVUU7KyiYFcVW3bZ+/nflLK92Sit5Dg38bFu9rRSQ0mMddMlOY4X4s7njr1/5OqML9g4+HRPM1gcqQkx+//hx7iI9/zjT4jZHwQSYt3EuV2tj/YKMg0QSqnw8OZjqmxhstz692yixKn3+t/vEJdL6JZmO77H9j14NFn1vgYKd9uAUbCris07q6hraCQr2dvHEdfUx+F93PQNv/F4ePR1Lq/7L5x+C7ic+eYfLBoglFLh0ZSwr4UAsfxftlN/4GkhK1IgEuPcDMhJZUB7st26XDDpNph9Jax9w04gjWAhXgtRKaU8EjJA3P6bmMoKYd27tjM3gkb8BMXgGZB9hB3F1dh46OPDSAOEUio8XC5bi/CXbiP/eTs0NBpnTh+Kyw0Tb4Xta+CbueEuTas0QCilwicp6+AmpiB3TkekoefaWfgL/mIDYYTSAKGUCh9/GV3XvwcVW2HMleEpUyi4Y2DiLVC8Eta9F+7StEgDhFIqfPw1MS17xnZOHzE1PGUKlREXQXpvm+Y+QmsROopJKRU+ydkHdlLv2WJrEBNu7nyd0825Y2HCTfD2zTaLb7chUFsOtRXNbmV+tlUceGzOELjizaAXUQOEUip8krKgeo/td3DHeNJ6d9LOaX9GXWZHM718iPfrjof4VJ9bGqTl7X+ePcCR4mmAUEqFT1I2YKB6t81km/8cHD4FMp1YTDUCxcTDJbOgcCnEpzcLAp5AEJ8SthThGiCUUuHjXRCpaof9J1lRDNPuD2+ZQq37CHuLQNpJrZQKH9+EfcufsanRjzg1vGVSTTRAKKXCx5tuwzvcc/Tlnb9zOopogFBKhY83o+uih+3996VzOkpogFBKhY+3BlGxFQ4/CTJ6h7c86gAaIJRS4eOOtaN3AI6aGdaiqIPpKCalVHglZ9k1qTv7zOkopAFCKRVek39hx/u79d9RpNGfiFIqvEZcFO4SqBZoH4RSSim/NEAopZTySwOEUkopvzRAKKWU8ksDhFJKKb80QCillPJLA4RSSim/NEAopZTyS0yELpbdViJSCmzuwCWygR2HPCp8tHwdo+XrGC1fx0Ry+foYY7r629FpAkRHicgyY8yYcJejJVq+jtHydYyWr2MivXwt0SYmpZRSfmmAUEop5ZcGiP0eD3cBDkHL1zFavo7R8nVMpJfPL+2DUEop5ZfWIJRSSvmlAUIppZRf36sAISJTReQbEVkvIrf72R8vIi959i8Rkb4hLFsvEflIRNaKyBoRudHPMceLSJmIrPDc7gxV+XzKsElEvvS8/jI/+0VE/ub5DFeJyOgQlm2gz2ezQkTKReSmZseE9DMUkadFZLuIrPbZ1kVE3hORdZ77zBbOvcJzzDoRuSKE5btPRL72/PxeE5GMFs5t9XfBwfL9VkSKfH6G01o4t9W/dwfL95JP2TaJyIoWznX88+swY8z34ga4gQ1AfyAOWAkMbnbM/wMe9Ty+CHgphOXrDoz2PE4FvvVTvuOBt8L8OW4CslvZPw14BxBgPLAkjD/vEuwkoLB9hsAkYDSw2mfbX4DbPY9vB/7s57wuwEbPfabncWaIyncKEON5/Gd/5Qvkd8HB8v0WuDWAn3+rf+9Ola/Z/v8D7gzX59fR2/epBjEOWG+M2WiM2QfMAmY0O2YG8Kzn8WxgiohIKApnjCk2xuR7HlcAXwE9Q/HaQTYDeM5Yi4EMEekehnJMATYYYzoyu77DjDELgF3NNvv+nj0LnOXn1FOB94wxu4wxu4H3gKmhKJ8x5l1jTL3n6WIgL9ivG6gWPr9ABPL33mGtlc/zv+MC4MVgv26ofJ8CRE9gi8/zQg7+B9x0jOcPpAzICknpfHiatkYBS/zsPkZEVorIOyIyJLQlA8AA74rIchG5zs/+QD7nULiIlv8ww/0Z5hhjij2PS4AcP8dEyud4FbZG6M+hfhecdIOnCezpFproIuHzmwhsM8asa2F/OD+/gHyfAkRUEJEU4BXgJmNMebPd+dgmkxHA34HXQ1w8gAnGmNHAacD1IjIpDGVolYjEAdOB//rZHQmfYRNj2xoicqy5iNwB1AMvtHBIuH4X/gkcBowEirHNOJHoYlqvPUT839L3KUAUAb18nud5tvk9RkRigHRgZ0hKZ18zFhscXjDGvNp8vzGm3Biz1/N4LhArItmhKp/ndYs899uB17BVeV+BfM5OOw3IN8Zsa74jEj5DYJu32c1zv93PMWH9HEVkJnAGcKkniB0kgN8FRxhjthljGowxjcATLbxuuD+/GOAc4KWWjgnX59cW36cAsRQYICL9PN8wLwLmNDtmDuAdLXIe8GFLfxzB5mmvfAr4yhjzQAvH5Hr7RERkHPbnF8oAliwiqd7H2M7M1c0OmwP8wDOaaTxQ5tOcEiotfnML92fo4ft7dgXwhp9j5gGniEimpwnlFM82x4nIVODnwHRjTFULxwTyu+BU+Xz7tM5u4XUD+Xt30knA18aYQn87w/n5tUm4e8lDecOOsPkWO7rhDs+2u7F/CAAJ2GaJ9cDnQP8Qlm0CtqlhFbDCc5sG/Aj4keeYG4A12BEZi4FjQ/z59fe89kpPObyfoW8ZBXjY8xl/CYwJcRmTsf/w0322he0zxAaqYqAO2w5+NbZf6wNgHfA+0MVz7BjgSZ9zr/L8Lq4Hrgxh+dZj2++9v4fekX09gLmt/S6EqHzPe363VmH/6XdvXj7P84P+3kNRPs/2f3l/53yODfnn19GbptpQSinl1/epiUkppVQbaIBQSinllwYIpZRSfmmAUEop5ZcGCKWUUn5pgFAqjDzZZd8KdzmU8kcDhFJKKb80QCgVABG5TEQ+9+Tuf0xE3CKyV0QeFLt+xwci0tVz7EgRWeyznkKmZ/vhIvK+J1Fgvogc5rl8iojM9qzB8ILPTO97xa4PskpE7g/TW1ffYxoglDoEERkEXAgcZ4wZCTQAl2JnbS8zxgwBPgbu8pzyHPALY8xw7Ixf7/YXgIeNTRR4LHYGLtjMvTcBg7EzbI8TkSxsGokhnuv8wcn3qJQ/GiCUOrQpwFHAUs/qYFOw/8gb2Z+M7d/ABBFJBzKMMR97tj8LTPLk3elpjHkNwBhTY/bnOfrcGFNobPK5FUBfbKr5GuApETkH8JsTSSknaYBQ6tAEeNYYM9JzG2iM+a2f49qbt6bW53EDdjW3emx2z9nYrKr/a+e1lWo3DRBKHdoHwHki0g2a1pTug/37Oc9zzCXAQmNMGbBbRCZ6tl8OfGzsKoGFInKW5xrxIpLU0gt61gVJNzYl+c+AEQ68L6VaFRPuAigV6Ywxa0Xk19jVv1zYzJ3XA5XAOM++7dh+CrApvB/1BICNwJWe7ZcDj4nI3Z5rnN/Ky6YCb4hIArYGc3OQ35ZSh6TZXJVqJxHZa4xJCXc5lHKKNjEppZTyS2sQSiml/NIahFJKKb80QCillPJLA4RSSim/NEAopZTySwOEUkopv/4/2dLe9QoXDf8AAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "plt.figure(0)\n", + "plt.plot(history.history['accuracy'], label='training accuracy')\n", + "plt.plot(history.history['val_accuracy'], label='val accuracy')\n", + "plt.title('Accuracy')\n", + "plt.xlabel('epochs')\n", + "plt.ylabel('accuracy')\n", + "plt.legend()\n", + "plt.show()\n", + "\n", + "plt.figure(1)\n", + "plt.plot(history.history['loss'], label='training loss')\n", + "plt.plot(history.history['val_loss'], label='val loss')\n", + "plt.title('Loss')\n", + "plt.xlabel('epochs')\n", + "plt.ylabel('loss')\n", + "plt.legend()\n", + "plt.show()\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.9.10" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/my_model.h5 b/my_model.h5 new file mode 100644 index 0000000..a12039f Binary files /dev/null and b/my_model.h5 differ