{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Tensorflow Callbacks \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "import datetime\n",
    "from packaging import version\n",
    "import tensorflow as tf\n",
    "from tensorflow import keras\n",
    "keras.__version__\n",
    "\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'2.19.0-rc0'"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "assert version.parse(tf.__version__).release[0] >= 2, \\\n",
    "    \"This notebook requires TensorFlow 2.0 or above.\"\n",
    "tf.__version__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "mnist_digits=keras.datasets.mnist\n",
    "(X_train_full, y_train_full),(X_test,y_test) = mnist_digits.load_data()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(60000, 28, 28)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train_full.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dtype('uint8')"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train_full.dtype   # should be an byte value from 0 to 255\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "plt.figure()\n",
    "plt.imshow(X_train_full[0])\n",
    "plt.colorbar()\n",
    "plt.grid(False)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "five\n",
      "5\n"
     ]
    }
   ],
   "source": [
    "class_names = ['zero', 'one', 'two', 'three', 'four',\n",
    "               'five', 'six', 'seven', 'eight', 'nine']\n",
    "print(class_names[y_train_full[0]]) \n",
    "print(y_train_full[0])\n",
    " \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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btT6VK9eXcveffddLXP+PV5WVpbWZ/Xq1Vo2c+ZMLfv6668tbec1G5dj93vXPXv2uHQsCt6TTz5padv9btVV77//vqX95ptvun0uID/ffvutt4eAIqB48fy/pthtmHb27FlPDAcFpFOnTlrWpUsXLbNbt+Eu5w31RES2b9+e73GfffaZltWpUyff4ypXruzawHwcdzQAAAAAGEehAQAAAMA4Cg0AAAAAxlFoAAAAADCu0CwGd16oarfwOywsTMvsFsfedtttlvaPP/6o9UlOTtayRYsWadmZM2csbbtNAx999FEtc2WBUkREhJbdfvvtLmWffvqppW23YNzO5MmTXeqHwqFWrVreHgK8xG7TUrsF1rfccouWlShRwiNjupyPPvpIy5577rkCHQOKJudFwTVr1tT6/Prrr1pm97CLd955x9i44FkDBgzw6PlPnDihZbNnz863X7Vq1bQ+999/v7mBFUHc0QAAAABgHIUGAAAAAOMoNAAAAAAYR6EBAAAAwDiHsttS00lWVpZERkbKiRMnbBcwmxAdHW1pHzp0SOsTHBysZXYLw06fPm1p79y50+1xjRkzxtIePny41qdYsWJun99XFcSc8MZrFXZ2u9Dv2rXLpWOd/6rbHXfddde5N7ACVtBzoiBe7/vvv7e0x48fr/VZsmSJlmVkZGiZyd1y//zzT0vb7qEZ/fv317KsrKx8zx0aGqplX3/9tZbdfPPN+Z6rIBXF+ecr7B4yYPdwlz/++EPLQkJCPDEkr+Az+Oq88sorWvbSSy9pWbly5SztdevWaX38ZYfvS13JnOCOBgAAAADjKDQAAAAAGEehAQAAAMA4Cg0AAAAAxhWancErVKhgadstBj979qyWbd68Od9z33XXXVrWpk0bLevcubOWxcXFWdr+uPAbhccNN9ygZbt37/bCSGCa84LqrVu3unTchAkTtCw8PNzImEREli5damlv2LBB6+NwOFw6V9u2bS3tp59+WutT2BZ+o/Czm39BQUFeGAkKo71792rZBx98oGUBAfp/e+/Xr5+l7Y8Lv68WdzQAAAAAGEehAQAAAMA4Cg0AAAAAxhWaNRorV660tOfNm6f12bhxo5Y5b6YiIvLYY49Z2qVLl9b68PtN+CLn34uK2G9wBv/xzjvveHsIttfhe+65R8umTJliaRelDdTgPSdOnNAyu+8QXbp0KYDR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cr27PAoNEcvCRofDISIiubm5eVlYWJilf25urkRHR0tqaqp2rlKlSuX1GTNmjHTp0kXrw8UQV6J79+4ybNgw2bhxo5w5c0b2798vDz74oIj83zz94IMPpGnTppbjihUrVuBjhW/iGojCoFixYrJ06VJZvXq1LFmyRKZNmyYvvviirF271rb/b7/9JpmZmZKbmyt79+61fBEEXKX+/9PMLl77Ls0vzf7pOsn17vL8qtAICgqSCxcuXPV5GjVqJAcPHpTixYtLXFzcZfukpaVJtWrVrvr14N8qV64sbdq0kZkzZ8qZM2ekffv2Ur58eRERKV++vFSqVEl+++036dGjh5dHisKOayAKO4fDIS1btpSWLVvKqFGjJDY2VubOnav1y8nJkR49esgDDzwgNWvWlD59+sjWrVvzro2Aq6pVqyZBQUGyatUq6d69u4j8/XS99evXu7ynFde7y/OrQiMuLk7Wrl0rGRkZUrJkSct/sbsS7du3l+bNm0vnzp3ltddekxo1akhmZqYsWrRIOnfuLI0bN5ZRo0ZJx44dJSYmRrp16yYBAQGyZcsW2bp1q4wbN87wO0NR16NHD0lMTJScnByZPHmy5c8SExMlISFBIiIi5I477pCzZ8/K+vXr5dixY/LCCy94acQojLgGojBbu3atLF++XG677TYpV66crF27Vg4fPiy1atWSLVu2WPq++OKLcuLECZk6daqULFlSvvnmG+nTp48sWLDAS6OHrwoLC5OnnnpKBg8eLFFRUVKlShWZMGGCnD59Wvr06aM9Tc8O17vL85vH24qIDBo0SIoVKya1a9eWsmXLyr59+9w6j8PhkEWLFkmbNm3ksccek+rVq8uDDz4oGRkZef81pUOHDrJgwQJZunSpNGnSRJo1ayaTJk2S2NhYk28JfqJbt25y9OhROX36tLY77uOPPy4ffvihpKSkSN26dSU+Pl5SUlLk2muv9c5gUWhxDURhFhERIStXrpQ777xTqlevLi+99JJMnDhR7rjjDku/1NRUefPNN2XGjBkSEREhAQEBMmPGDFm1apW8++67Xho9fNmrr74q9913n/Ts2VMaNWoku3btkm+//fay64Occb27PIdSbLUJAAAAwCy/uqMBAAAAoGBQaAAAAAAwjkIDAAAAgHEUGgAAAACMo9AAAAAAYByFBgAAAADjKDQAAAAAGOfSzuC5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/PNPl8blfH67TdDs1ka5uyEgCje7eTNy5Egt69atm6X91FNPuf2ae/futbTtfhMNXKm7775by7Zv357vcZGRkVpmt5FpiRIl3BsYCi279WjPPvusljlvYtqwYUOtz88//2xuYEUQdzQAAAAAGEehAQAAAMA4Cg0AAAAAxlFoAAAAADDO44vB7RaS2m2k47zxnt2Gd3befvttLbv33nst7TJlyrh0LpP++OMPLXN18Td8x7x587TMeTM+VxdT33TTTVq2fPlySzslJUXr07dvX5fOP378eEu7S5cuWh+788P3nT9/XstatmypZc4PHxAReffddy3t4sXd/9h4+OGHLe3ffvtN6zNo0CC3zw//tG3bNi1zOBz5Hmf3YINbb73VyJhwdewefLJp0yYtS09P1zLnzZE///xzrc/x48ddGsfUqVMt7TvvvFPrU61aNZfO5a+4owEAAADAOAoNAAAAAMZRaAAAAAAwjkIDAAAAgHEeXwxux243zhYtWljari4G37Jli5bt37/f0r6axeDOu0K+9957Lh33n//8x+3XROFkt1D6ueeey/c4ux2/7RZ+T5s2zZ1hSb169bSsd+/eWubKjs5du3bVsvfff1/L1q1b59rgUCh88cUXWpaWlqZl3333nZZFRUW59ZqzZs3Ssh9//NHSttudnsXg+CcvvPCC28e2b9/e0h41atTVDgce4vw9TkSkT58+Wma3GNyZ3XdOu4eo2O0Kf+2111rav//+e76vByvuaAAAAAAwjkIDAAAAgHEUGgAAAACMo9AAAAAAYJxXFoPbcV4MPn36dLfPtWbNGku7QYMGWp/Vq1e7lDnvTjl27Fi3x+WKWrVqaVnp0qU9+ppwTVJSkpadOnUq3+NGjBihZcOHD3drDK1atdKyO+64Q8vKly/v1vlLliypZXaL2eFb7K6nNWrU0DLn67CrDh48qGXPP/+8ll24cMHSfvbZZ7U+7s5dFE1PP/20pT1v3jyXjqtfv76WzZw509Lm2lZ42X0Xsnv4jysPDoqIiNCyKlWquDewq+DK94WiiDsaAAAAAIyj0AAAAABgHIUGAAAAAOMKzRqNxx9/3NJOTU3V+thtAGXnmWee+cf2lVBKWdoOh8Ptc7nil19+0TK736TabVwDczZt2qRlzut1RPTfnIuI5ObmemJIIiJSrVo1j537cpz/DojYv28UXosX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",
      "text/plain": [
       "<Figure size 1000x1000 with 25 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(10,10))\n",
    "for i in range(25):\n",
    "    plt.subplot(5,5,i+1)\n",
    "    plt.xticks([])\n",
    "    plt.yticks([])\n",
    "    plt.grid(False)\n",
    "    plt.imshow(X_train_full[i], cmap=plt.cm.binary)\n",
    "    plt.xlabel(class_names[y_train_full[i]])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "#The dataset is randomised so choose first 5000 of training set for validation and remaining 55000 for training\n",
    "#and normalize into range 0->1.0 instead of 0->255\n",
    "X_valid = X_train_full[:5000]/255.0\n",
    "X_train=X_train_full[5000:]/255.0\n",
    "#similarly for the y target labels\n",
    "y_valid=y_train_full[:5000]\n",
    "y_train=y_train_full[5000:]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Mark Huntly\\anaconda3\\Lib\\site-packages\\keras\\src\\layers\\reshaping\\flatten.py:37: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.\n",
      "  super().__init__(**kwargs)\n"
     ]
    }
   ],
   "source": [
    "model = tf.keras.Sequential()\n",
    "model.add(keras.layers.Flatten(input_shape=(28, 28)))\n",
    "model.add(keras.layers.Dense(300, activation='relu'))\n",
    "model.add(keras.layers.Dense(100, activation='relu'))\n",
    "model.add(keras.layers.Dense(10, activation='softmax'))\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\">Model: \"sequential\"</span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1mModel: \"sequential\"\u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
       "┃<span style=\"font-weight: bold\"> Layer (type)                    </span>┃<span style=\"font-weight: bold\"> Output Shape           </span>┃<span style=\"font-weight: bold\">       Param # </span>┃\n",
       "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
       "│ flatten (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Flatten</span>)               │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">784</span>)            │             <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                   │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">300</span>)            │       <span style=\"color: #00af00; text-decoration-color: #00af00\">235,500</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_1 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                 │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">100</span>)            │        <span style=\"color: #00af00; text-decoration-color: #00af00\">30,100</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_2 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                 │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">10</span>)             │         <span style=\"color: #00af00; text-decoration-color: #00af00\">1,010</span> │\n",
       "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
       "</pre>\n"
      ],
      "text/plain": [
       "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
       "┃\u001b[1m \u001b[0m\u001b[1mLayer (type)                   \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape          \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m      Param #\u001b[0m\u001b[1m \u001b[0m┃\n",
       "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
       "│ flatten (\u001b[38;5;33mFlatten\u001b[0m)               │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m784\u001b[0m)            │             \u001b[38;5;34m0\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense (\u001b[38;5;33mDense\u001b[0m)                   │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m300\u001b[0m)            │       \u001b[38;5;34m235,500\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_1 (\u001b[38;5;33mDense\u001b[0m)                 │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m100\u001b[0m)            │        \u001b[38;5;34m30,100\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_2 (\u001b[38;5;33mDense\u001b[0m)                 │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m)             │         \u001b[38;5;34m1,010\u001b[0m │\n",
       "└─────────────────────────────────┴────────────────────────┴───────────────┘\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Total params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">266,610</span> (1.02 MB)\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m266,610\u001b[0m (1.02 MB)\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">266,610</span> (1.02 MB)\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m266,610\u001b[0m (1.02 MB)\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Non-trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> (0.00 B)\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "model.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "model.compile(loss='sparse_categorical_crossentropy',optimizer='sgd',metrics=[\"accuracy\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.7428 - loss: 0.9991 - val_accuracy: 0.9178 - val_loss: 0.3032\n",
      "Epoch 2/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9152 - loss: 0.3042 - val_accuracy: 0.9288 - val_loss: 0.2472\n",
      "Epoch 3/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9293 - loss: 0.2503 - val_accuracy: 0.9424 - val_loss: 0.2058\n",
      "Epoch 4/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9422 - loss: 0.2069 - val_accuracy: 0.9482 - val_loss: 0.1788\n",
      "Epoch 5/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9460 - loss: 0.1862 - val_accuracy: 0.9568 - val_loss: 0.1632\n",
      "Epoch 6/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9539 - loss: 0.1607 - val_accuracy: 0.9594 - val_loss: 0.1482\n",
      "Epoch 7/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9580 - loss: 0.1447 - val_accuracy: 0.9632 - val_loss: 0.1354\n",
      "Epoch 8/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9634 - loss: 0.1305 - val_accuracy: 0.9660 - val_loss: 0.1241\n",
      "Epoch 9/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9648 - loss: 0.1220 - val_accuracy: 0.9668 - val_loss: 0.1164\n",
      "Epoch 10/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 1ms/step - accuracy: 0.9700 - loss: 0.1050 - val_accuracy: 0.9676 - val_loss: 0.1101\n",
      "Epoch 11/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9715 - loss: 0.0997 - val_accuracy: 0.9706 - val_loss: 0.1047\n",
      "Epoch 12/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9756 - loss: 0.0886 - val_accuracy: 0.9702 - val_loss: 0.0987\n",
      "Epoch 13/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9775 - loss: 0.0818 - val_accuracy: 0.9710 - val_loss: 0.0948\n",
      "Epoch 14/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 1ms/step - accuracy: 0.9795 - loss: 0.0753 - val_accuracy: 0.9718 - val_loss: 0.0947\n",
      "Epoch 15/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9810 - loss: 0.0700 - val_accuracy: 0.9738 - val_loss: 0.0884\n",
      "Epoch 16/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9812 - loss: 0.0693 - val_accuracy: 0.9756 - val_loss: 0.0858\n",
      "Epoch 17/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9826 - loss: 0.0624 - val_accuracy: 0.9754 - val_loss: 0.0815\n",
      "Epoch 18/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9843 - loss: 0.0588 - val_accuracy: 0.9774 - val_loss: 0.0792\n",
      "Epoch 19/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9849 - loss: 0.0554 - val_accuracy: 0.9778 - val_loss: 0.0772\n",
      "Epoch 20/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 1ms/step - accuracy: 0.9871 - loss: 0.0497 - val_accuracy: 0.9770 - val_loss: 0.0771\n",
      "Epoch 21/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9880 - loss: 0.0463 - val_accuracy: 0.9782 - val_loss: 0.0756\n",
      "Epoch 22/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9881 - loss: 0.0443 - val_accuracy: 0.9780 - val_loss: 0.0728\n",
      "Epoch 23/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 1ms/step - accuracy: 0.9896 - loss: 0.0416 - val_accuracy: 0.9784 - val_loss: 0.0719\n",
      "Epoch 24/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9898 - loss: 0.0400 - val_accuracy: 0.9780 - val_loss: 0.0748\n",
      "Epoch 25/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9903 - loss: 0.0382 - val_accuracy: 0.9810 - val_loss: 0.0690\n",
      "Epoch 26/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9912 - loss: 0.0358 - val_accuracy: 0.9804 - val_loss: 0.0685\n",
      "Epoch 27/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 1ms/step - accuracy: 0.9924 - loss: 0.0323 - val_accuracy: 0.9794 - val_loss: 0.0695\n",
      "Epoch 28/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9923 - loss: 0.0315 - val_accuracy: 0.9796 - val_loss: 0.0680\n",
      "Epoch 29/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9931 - loss: 0.0289 - val_accuracy: 0.9796 - val_loss: 0.0660\n",
      "Epoch 30/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9941 - loss: 0.0268 - val_accuracy: 0.9802 - val_loss: 0.0656\n",
      "Epoch 31/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9949 - loss: 0.0251 - val_accuracy: 0.9814 - val_loss: 0.0658\n",
      "Epoch 32/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9948 - loss: 0.0249 - val_accuracy: 0.9806 - val_loss: 0.0657\n",
      "Epoch 33/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 1ms/step - accuracy: 0.9947 - loss: 0.0232 - val_accuracy: 0.9804 - val_loss: 0.0657\n",
      "Epoch 34/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9960 - loss: 0.0212 - val_accuracy: 0.9808 - val_loss: 0.0636\n",
      "Epoch 35/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9963 - loss: 0.0201 - val_accuracy: 0.9816 - val_loss: 0.0625\n",
      "Epoch 36/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9956 - loss: 0.0209 - val_accuracy: 0.9818 - val_loss: 0.0637\n",
      "Epoch 37/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9967 - loss: 0.0184 - val_accuracy: 0.9820 - val_loss: 0.0633\n",
      "Epoch 38/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9968 - loss: 0.0186 - val_accuracy: 0.9820 - val_loss: 0.0637\n",
      "Epoch 39/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9979 - loss: 0.0160 - val_accuracy: 0.9824 - val_loss: 0.0632\n",
      "Epoch 40/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9979 - loss: 0.0157 - val_accuracy: 0.9820 - val_loss: 0.0634\n",
      "Epoch 41/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 1ms/step - accuracy: 0.9983 - loss: 0.0147 - val_accuracy: 0.9826 - val_loss: 0.0639\n",
      "Epoch 42/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9982 - loss: 0.0142 - val_accuracy: 0.9818 - val_loss: 0.0618\n",
      "Epoch 43/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9986 - loss: 0.0130 - val_accuracy: 0.9820 - val_loss: 0.0632\n",
      "Epoch 44/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 1ms/step - accuracy: 0.9986 - loss: 0.0129 - val_accuracy: 0.9826 - val_loss: 0.0612\n",
      "Epoch 45/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9986 - loss: 0.0122 - val_accuracy: 0.9824 - val_loss: 0.0622\n",
      "Epoch 46/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9989 - loss: 0.0122 - val_accuracy: 0.9830 - val_loss: 0.0623\n",
      "Epoch 47/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 1ms/step - accuracy: 0.9988 - loss: 0.0114 - val_accuracy: 0.9828 - val_loss: 0.0615\n",
      "Epoch 48/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 1ms/step - accuracy: 0.9988 - loss: 0.0105 - val_accuracy: 0.9830 - val_loss: 0.0622\n",
      "Epoch 49/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9991 - loss: 0.0101 - val_accuracy: 0.9826 - val_loss: 0.0619\n",
      "Epoch 50/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 1ms/step - accuracy: 0.9995 - loss: 0.0093 - val_accuracy: 0.9828 - val_loss: 0.0636\n",
      "Epoch 51/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9996 - loss: 0.0084 - val_accuracy: 0.9824 - val_loss: 0.0627\n",
      "Epoch 52/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9993 - loss: 0.0093 - val_accuracy: 0.9836 - val_loss: 0.0630\n",
      "Epoch 53/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9994 - loss: 0.0081 - val_accuracy: 0.9838 - val_loss: 0.0629\n",
      "Epoch 54/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9996 - loss: 0.0083 - val_accuracy: 0.9828 - val_loss: 0.0631\n",
      "Epoch 55/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9995 - loss: 0.0079 - val_accuracy: 0.9838 - val_loss: 0.0624\n",
      "Epoch 56/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9995 - loss: 0.0078 - val_accuracy: 0.9834 - val_loss: 0.0627\n",
      "Epoch 57/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9995 - loss: 0.0072 - val_accuracy: 0.9824 - val_loss: 0.0638\n",
      "Epoch 58/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 1ms/step - accuracy: 0.9995 - loss: 0.0075 - val_accuracy: 0.9830 - val_loss: 0.0638\n",
      "Epoch 59/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9997 - loss: 0.0060 - val_accuracy: 0.9822 - val_loss: 0.0635\n",
      "Epoch 60/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 1ms/step - accuracy: 0.9997 - loss: 0.0062 - val_accuracy: 0.9838 - val_loss: 0.0633\n",
      "Epoch 61/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9997 - loss: 0.0060 - val_accuracy: 0.9834 - val_loss: 0.0632\n",
      "Epoch 62/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9998 - loss: 0.0057 - val_accuracy: 0.9826 - val_loss: 0.0641\n",
      "Epoch 63/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 1ms/step - accuracy: 0.9998 - loss: 0.0056 - val_accuracy: 0.9832 - val_loss: 0.0641\n",
      "Epoch 64/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 1ms/step - accuracy: 0.9997 - loss: 0.0056 - val_accuracy: 0.9830 - val_loss: 0.0639\n",
      "Epoch 65/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9998 - loss: 0.0056 - val_accuracy: 0.9842 - val_loss: 0.0631\n",
      "Epoch 66/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9998 - loss: 0.0052 - val_accuracy: 0.9828 - val_loss: 0.0638\n",
      "Epoch 67/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9998 - loss: 0.0050 - val_accuracy: 0.9836 - val_loss: 0.0638\n",
      "Epoch 68/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9999 - loss: 0.0046 - val_accuracy: 0.9824 - val_loss: 0.0711\n",
      "Epoch 69/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9999 - loss: 0.0047 - val_accuracy: 0.9836 - val_loss: 0.0640\n",
      "Epoch 70/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9999 - loss: 0.0044 - val_accuracy: 0.9830 - val_loss: 0.0640\n",
      "Epoch 71/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 1ms/step - accuracy: 0.9998 - loss: 0.0043 - val_accuracy: 0.9838 - val_loss: 0.0648\n",
      "Epoch 72/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9999 - loss: 0.0041 - val_accuracy: 0.9842 - val_loss: 0.0649\n",
      "Epoch 73/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9999 - loss: 0.0039 - val_accuracy: 0.9834 - val_loss: 0.0644\n",
      "Epoch 74/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 1ms/step - accuracy: 0.9999 - loss: 0.0039 - val_accuracy: 0.9838 - val_loss: 0.0651\n",
      "Epoch 75/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9999 - loss: 0.0038 - val_accuracy: 0.9834 - val_loss: 0.0653\n",
      "Epoch 76/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9999 - loss: 0.0038 - val_accuracy: 0.9834 - val_loss: 0.0648\n",
      "Epoch 77/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9999 - loss: 0.0035 - val_accuracy: 0.9834 - val_loss: 0.0652\n",
      "Epoch 78/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 0.0034 - val_accuracy: 0.9834 - val_loss: 0.0654\n",
      "Epoch 79/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 0.0033 - val_accuracy: 0.9834 - val_loss: 0.0650\n",
      "Epoch 80/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 0.0033 - val_accuracy: 0.9838 - val_loss: 0.0660\n",
      "Epoch 81/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9999 - loss: 0.0032 - val_accuracy: 0.9838 - val_loss: 0.0661\n",
      "Epoch 82/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 0.0031 - val_accuracy: 0.9836 - val_loss: 0.0658\n",
      "Epoch 83/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.9999 - loss: 0.0029 - val_accuracy: 0.9832 - val_loss: 0.0659\n",
      "Epoch 84/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 0.0029 - val_accuracy: 0.9840 - val_loss: 0.0661\n",
      "Epoch 85/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 0.0029 - val_accuracy: 0.9838 - val_loss: 0.0665\n",
      "Epoch 86/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 0.0028 - val_accuracy: 0.9832 - val_loss: 0.0659\n",
      "Epoch 87/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 0.0026 - val_accuracy: 0.9840 - val_loss: 0.0663\n",
      "Epoch 88/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 0.0027 - val_accuracy: 0.9836 - val_loss: 0.0664\n",
      "Epoch 89/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 0.0026 - val_accuracy: 0.9836 - val_loss: 0.0672\n",
      "Epoch 90/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 0.0026 - val_accuracy: 0.9840 - val_loss: 0.0670\n",
      "Epoch 91/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 0.0025 - val_accuracy: 0.9836 - val_loss: 0.0663\n",
      "Epoch 92/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 0.0024 - val_accuracy: 0.9838 - val_loss: 0.0674\n",
      "Epoch 93/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 0.0023 - val_accuracy: 0.9842 - val_loss: 0.0674\n",
      "Epoch 94/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 0.0022 - val_accuracy: 0.9838 - val_loss: 0.0677\n",
      "Epoch 95/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 1ms/step - accuracy: 1.0000 - loss: 0.0022 - val_accuracy: 0.9838 - val_loss: 0.0670\n",
      "Epoch 96/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 0.0022 - val_accuracy: 0.9836 - val_loss: 0.0672\n",
      "Epoch 97/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 0.0022 - val_accuracy: 0.9842 - val_loss: 0.0681\n",
      "Epoch 98/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 0.0020 - val_accuracy: 0.9840 - val_loss: 0.0683\n",
      "Epoch 99/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 0.0021 - val_accuracy: 0.9840 - val_loss: 0.0678\n",
      "Epoch 100/100\n",
      "\u001b[1m1719/1719\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 0.0020 - val_accuracy: 0.9836 - val_loss: 0.0682\n"
     ]
    }
   ],
   "source": [
    "log_dir = \"logs/fit/\" + datetime.datetime.now().strftime(\"%Y%m%d-%H%M%S\")\n",
    "tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1)\n",
    "\n",
    "history=model.fit(X_train,y_train,epochs=100,validation_data=(X_valid,y_valid), callbacks=[tensorboard_callback])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA94AAAHBCAYAAACfcmNMAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAACiJ0lEQVR4nOzde3zO9f/H8ce189jMYcww5hDmmEbOlRQRUYlSpKgk504WvkWHFSX9EiWhg6QDnSjWwSkii5BTcpjDZk1sjjPb5/fHu+vaZgcb13bN9rzfbp/brutzfT6f6/25HK49P6/35/22WZZlISIiIiIiIiIFws3VDRAREREREREpzhS8RURERERERAqQgreIiIiIiIhIAVLwFhERERERESlACt4iIiIiIiIiBUjBW0RERERERKQAKXiLiIiIiIiIFCAFbxEREREREZECpOAtIiIiIiIiUoAUvEWKkP/7v//DZrPRqFEjVzdFREREirC5c+dis9nYsGGDq5siInmg4C1ShMyePRuAP//8k3Xr1rm4NSIiIiIi4gwK3iJFxIYNG/jjjz+49dZbAXjvvfdc3KLsnT592tVNEBERERG5oih4ixQR9qD98ssv06ZNGz755JMsIffQoUM8/PDDhISE4OXlRZUqVejVqxdHjhxxbHP8+HEef/xxatWqhbe3N5UqVaJr167s2LEDgOXLl2Oz2Vi+fHmmY+/btw+bzcbcuXMd6wYMGICfnx9btmyhU6dO+Pv707FjRwCioqLo0aMH1apVw8fHhzp16vDII4+QkJCQ5dx27NjBPffcQ1BQEN7e3lSvXp3+/fuTnJzMvn378PDwIDIyMst+K1euxGaz8dlnn13SZyoiIlKSrV69mo4dO+Lv70+pUqVo06YNixcvzrTN6dOneeKJJ6hZsyY+Pj6UL1+e5s2bM3/+fMc2e/bs4e6776ZKlSp4e3sTFBREx44d2bRpUyGfkciVy8PVDRAROHPmDPPnz6dFixY0atSIBx98kEGDBvHZZ59x//33AyZ0t2jRgpSUFJ555hmaNGnC0aNHWbp0KceOHSMoKIgTJ07Qrl079u3bx9NPP03Lli05efIkK1euJDY2lvr16+e7befOneO2227jkUceYcyYMZw/fx6Av//+m9atWzNo0CACAgLYt28fU6ZMoV27dmzZsgVPT08A/vjjD9q1a0dgYCATJ07kqquuIjY2lq+//ppz584RGhrKbbfdxttvv81TTz2Fu7u7472nTZtGlSpVuP32253wKYuIiJQcK1as4Oabb6ZJkya89957eHt7M336dLp37878+fPp06cPAKNHj+bDDz/khRdeoFmzZpw6dYqtW7dy9OhRx7G6du1KamoqkyZNonr16iQkJLBmzRqOHz/uorMTuQJZIuJyH3zwgQVYb7/9tmVZlnXixAnLz8/Pat++vWObBx980PL09LS2bduW43EmTpxoAVZUVFSO2/z8888WYP3888+Z1u/du9cCrDlz5jjW3X///RZgzZ49O9f2p6WlWSkpKdb+/fstwPrqq68cr914441W2bJlrfj4+Iu2adGiRY51hw4dsjw8PKwJEybk+t4iIiIl0Zw5cyzA+u2337J9vVWrVlalSpWsEydOONadP3/eatSokVWtWjUrLS3NsizLatSokdWzZ88c3ychIcECrKlTpzr3BERKGHU1FykC3nvvPXx9fbn77rsB8PPz46677mLVqlX89ddfAHz33Xd06NCBsLCwHI/z3XffUbduXW666Santu/OO+/Msi4+Pp7BgwcTEhKCh4cHnp6e1KhRA4Dt27cDpvvaihUr6N27NxUrVszx+DfccANNmzblrbfecqx7++23sdlsPPzww049FxERkeLu1KlTrFu3jl69euHn5+dY7+7uTr9+/Th48CA7d+4E4Nprr+W7775jzJgxLF++nDNnzmQ6Vvny5alduzaTJ09mypQpbNy4kbS0tEI9H5HiQMFbxMV2797NypUrufXWW7Esi+PHj3P8+HF69eoFpI90/s8//1CtWrVcj5WXbfKrVKlSlClTJtO6tLQ0OnXqxMKFC3nqqaf48ccfWb9+Pb/++iuA40v72LFjpKam5qlNw4cP58cff2Tnzp2kpKTw7rvv0qtXLypXruzU8xERESnujh07hmVZBAcHZ3mtSpUqAI6u5P/3f//H008/zZdffkmHDh0oX748PXv2dFz4t9ls/Pjjj3Tu3JlJkyZxzTXXULFiRYYPH86JEycK76RErnAK3iIuNnv2bCzL4vPPP6dcuXKOxT66+fvvv09qaioVK1bk4MGDuR4rL9v4+PgAkJycnGl9doOigfnCvdDWrVv5448/mDx5MsOGDeOGG26gRYsWVKhQIdN25cuXx93d/aJtAujbty8VKlTg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iBRPqniLFHOnT4Ofn2ve++RJKF36opuVL1+eW265hY8//tgRvD/77DPKly9Px44dcXd3p2nTpo7tX3jhBRYtWsTXX3/N0KFDL3r8efPmkZqayuzZsylVqhQNGzbk4MGDPProo45tPD09mTBhguN5zZo1WbNmDZ9++im9e/fGz88PX19fkpOTc+1aPn36dEJCQpg2bRo2m4369etz+PBhnn76af73v//h5mY6Wjdp0oRnn30WgKuuuopp06bx448/5jt4z5s3jzNnzvDBBx9Q+r/Petq0aXTv3p1XXnkFT09PEhMT6datG7Vr1wYgLCzMsX9MTAxPPvkk9evXd7SloKmruRSaEydg/ny4806oWBFuuQUmTIBly0zorlQJXnsN/v4bhg5V6BYRkYKjireIFAX33nsvX3zxBcn/jSI8b9487r77btzd3Tl16hRPPfUUDRo0oGzZsvj5+bFjxw5iYmLydOzt27fTtGlTSpUq5VjXunXrLNu9/fbbNG/enIoVK+Ln58e7776b5/fI+F6tW7d2VJQB2rZty8mTJzl48KBjXZMmTTLtFxwcTHx8fL7ey/5+TZs2dYRu+/ulpaWxc+dOypcvz4ABA+jcuTPdu3fnjTfeIDY21rHt6NGjGTRoEDfddBMvv/wyf//9d77bkF8K3lLgkpPhySdN2O7b18zBfeaMGYn83nvhrbfg99/h0CEYPRp8fV3dYhERKe5U8RYp5kqVMpVnVywZgu7FdO/enbS0NBYvXsyBAwdYtWoV9913HwBPPvkkX3zxBS+++CKrVq1i06ZNNG7cmHN5/I/LsqyLbvPpp58yatQoHnzwQZYtW8amTZt44IEH8vweGd/LdkH3evv7Z1x/YXdum82W5R73S32/jMcEmDNnDmvXrqVNmzYsWLCAunXr8uuvvwLm3vU///yTW2+9lZ9++okGDRqwaNGifLcjP9TVXArUtm0mbP/xh3l+1VVw113QqxdcfbWm/xIREddQxVukmLPZ8tTd29V8fX254447mDdvHrt376Zu3bqEh4cDsGrVKgYMGMDtt98OwMmTJ9m3b1+ej92gQQM+/PBDzpw5g+9/lS178LRbtWoVbdq0YciQIY51F1Z/vby8SE1Nveh7ffHFF5kC8Zo1a/D396dq1ap5bnNeNWjQgPfff59Tp045qt6//PILbm5u1K1b17Fds2bNaNas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oY5t2rRpwyeffMK4ceMYP348tWvXZsGCBbRs2fLyz/AyKHiLiIhkb8qUKQwcOJBBgwYBMHXqVJYuXcqMGTOynV506tSpmZ6/9NJLfPXVV3zzzTc0syfboiIgABo3Njd1r1xJi5a9APP0xAkzzaiIiEh+5Dt4AwwZMoQhQ4Zk+9rcuXMzPQ8LC8vT1exevXrRq1evS2lOgVHwFhERyco+veiYMWMyrc9tetELpaWlceLECcqXL18QTbx8111nkvaKFYT06kWtWrBnD6xaBV27urpxIiJypbmkUc1LCnvw9vZ2bTtERESKkkuZXvRCr732GqdOnaJ37945blMYU4fm6Prrzc+VKwG48Ubz9OefC68JIiJSfCh450IVbxERkZzldypQu/nz5/Pcc8+xYMECKlWqlON2hTF1aI7atzc/t2yBf/+lQwfzVMFbREQuhYJ3LhS8RUREsrqU6UXtFixYwMCBA/n000+56aabct22MKYOzVFQENSvbybwXr3aEbw3boRjxwqvGSIiUjwoeOdCwVtERCSrS51edP78+QwYMICPP/6YW2+99aLvUxhTh+bquuvMzxUrCA6GevUgLc3R+1xERCTPFLxzoeAtIiKSvfxOLzp//nz69+/Pa6+9RqtWrYiLiyMuLo7ExERXncLF2e/zXrECQN3NRUTkkil450LBW0REJHt9+vRh6tSpTJw4kauvvpqVK1fmOr3oO++8w/nz53nssccIDg52LCNGjHDVKVycveK9cSMkJSl4i4jIJbuk6cRKiuRk81PBW0REJKv8TC+6fPnygm+Qs1WrhmMesV9+4YYbugBmlrGEBAgMdHH7RETkiqGKdy5U8RYRESnhMkwrVqkSNGxonv7X+1xERCRPFLxzoeAtIiJSwmUYYA3S5/P+6ScXtUdERK5ICt65UPAWEREp4ewV799+g1OndJ+3iIhcEgXvXCh4i4iIlHChoeZe7/Pn4ddfuf56sNlg+3a4YBpzERGRHCl450LBW0REpISz2TJNK1a+PDRtap5eiePFiYiIayh450LBW0RERDSft4iIXC4F71woeIuIiIhjRLXVq2H/fjp2NE+/+w4sy3XNEhGRK4eCdy4UvEVERITataFjR0hLgxkzuPFGKF0aDhwwY66JiIhcjIJ3LuzB29vbte0QERERFxs2zPx89118OcOtt5qnX3zhuiaJiMiV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ml9//ZWzZ8/y999/88wzz+R5KjFnU8VbRIqSAQMGsGLFCt544w1sNhs2m425c+dis9lYunQpzZs3x9vbm1WrVvH333/To0cPgoKC8PPzo0WLFvzwww+ZjndhV3ObzcasWbO4/fbbKVWqFFdddRVff/214/ULu5rPnTuXsmXLsnTpUsLCwvDz8+OWW25xjNsBcP78eYYPH07ZsmWpUKECTz/9NPfffz89e/bM0zl///33tGvXzrF/t27d+PvvvzNtc/DgQe6++27Kly9P6dKlad68OevWrXO8/vXXX9O8eXN8fHwIDAzkjjvuyOMnLiJ2bm4mgK9bZ6aXvvFGM0X0p5+aUdBbtYJPPjHTPouISM40T0E2FLxFSgbLMvcwumL5b4iLPHnjjTdo3bo1Dz30ELGxscTGxjpmcnjqqaeIjIxk+/btNGnShJMnT9K1a1d++OEHNm7cSOfOnenevXumnkjZmTBhAr1792bz5s107dqVe++9l3///TfH7U+fPs2rr77Khx9+yMqVK4mJieGJJ55wvP7KK68wb9485syZwy+//EJSUhJffvllns/51KlTjB49mt9++40ff/wRNzc3br/9dsdYICdPnuT666/n8OHDfP311/zxxx889dRTjtcXL17MHXfcwa233srGjRv58ccfad68eZ7fX0Qys9mgY0f48UdTBR8wwPyetG4d3HOPuQ/8xRfhn39c3FARkaLKKiYSExMtwEpMTLzsYz39tGWBZY0e7YSGiUiRcebMGWvbtm3WmTNnLMuyrJMnzb91VywnT+av7ddff701YsQIx/Off/7ZAqwvv/zyovs2aNDAevPNNx3Pa9SoYb3++uuO54A1btw4x/OTJ09aNpvN+u677zK917FjxyzLsqw5c+ZYgLV7927HPm+99ZYVFBTkeB4UFGRNnjzZ8fz8+fNW9erVrR49euT1lDOJj4+3AGvLli2WZVnWO++8Y/n7+1tHjx7NdvvWrVtb99577yW9V35d+PfKzpnfS2LoMy1a4uIs69lnLSsoKP3/Nm9vy7r7bstassSyUlJc3UIRkYKX1+8mVbyzoYq3iFwpLqzinjp1iqeeeooGDRpQtmxZ/Pz82LFjx0Ur3k2aNHE8Ll26NP7+/sTnMoRxqVKlqF27tuN5cHCwY/vExESOHDnCtdde63jd3d2d8PDwPJ/X33//Td++falV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fPgwrl69iitXrjRYxpjp9+OPP2Lnzp2IjIzEsmXLcPnyZcyfPx+2traYMmUK49aIJUuWoKioCH369IG1tTXUajXWr1+PCRMmAODfW3MMiU9BQQEUCgXat2/fYAzzheVjvjcOc73hmOuNx1xvGub6h2cJ+b7NFt5aMplM57kQokEfacydOxf//ve/ce7cuQbLGMdaubm5WLBgAU6fPg07O7tGxzFmumpqahAYGIh3330XADBo0CDcuHEDO3fuxJQpU6RxjJuuI0eO4NChQ/joo4/Qv39/ZGRkICIiAl5eXpg6dao0jnFrminxYQwfL/w3YBjmesMw15uGud40zPWPjjnzfZs91NzNzQ3W1tYNvr0oLCxs8E0IAfPmzcPJkyeRkpKCLl26SP0eHh4AwDjWkZ6ejsLCQgQEBEAul0Mul+Ps2bPYvn075HK5FBfGTJenpyf69eun09e3b1/k5OQA4N9aYxYtWoSlS5fijTfewNNPP43Jkydj4cKFiI6OBsC4NceQ+Hh4eKCyshK//vpro2PIcjHfG4653nDM9aZhrjcNc/3Ds4R832YLb4VCgYCAACQnJ+v0JycnIzg42EyzsjxCCMydOxfHjx/HF198AV9fX53lvr6+8PDw0IljZWUlzp4922bjOHz4cFy/fh0ZGRlSCwwMxMSJE5GRkYHu3bszZnqEhIQ0uH3Nd999Bx8fHwD8W2vM/fv3YWWl+1+5tbW1dIsRxq1phsQnICAANjY2OmNUKhW++eYbxvAxwHzfPOZ64zHXm4a53jTM9Q/PIvL9Q1+e7TGmvb3I3r17RWZmpoiIiBCOjo7i1q1b5p6axZgzZ45wcXERX375pVCpVFK7f/++NGbDhg3CxcVFHD9+XFy/fl1MmDChzd2+oDl1r3QqBGOmz+XLl4VcLhfr168X33//vUhISBAODg7i0KFD0hjGraGpU6eKzp07S7cYOX78uHBzcxOLFy+WxrT1uJWUlIhr166Ja9euCQAiJiZGXLt2TbqVlCHxUSqVokuXLuLzzz8XV69eFcOGDePtxB4jzPdNY65/NJjrm8dcbxrmesNYer5v04W3EEJ88MEHwsfHRygUCvGb3/xGunUGaQDQ2/bt2yeNqampEatWrRIeHh7C1tZWPPfcc+L69evmm7QFqp+MGTP9Tp06Jfz8/IStra3o06eP2LNnj85yxq2h4uJisWDBAuHt7S3s7OxE9+7dxfLly0VFRYU0pq3HLSUlRe//Y1OnThVCGBaf8vJyMXfuXOHq6irs7e3Fyy+/LHJycszwbshUzPeNY65/NJjrDcNcbzzmesNYer6XCSHEw+83JyIiIiIiIiJ92uw53kREREREREStgYU3ERERERERUQti4U1ERERERETUglh4ExEREREREbUgFt5ERERERERELYiFNxEREREREVELYuFNRERERERE1IJYeBMRERERERG1IBbeRERERERERC2IhTcRERERERFRC2LhTURERERERNSCWHgTERERERERtaD/AdqyDJVCfw7pAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1200x500 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_history(history):\n",
    "    acc = history.history[\"accuracy\"]\n",
    "    loss = history.history[\"loss\"]\n",
    "    val_loss = history.history[\"val_loss\"]\n",
    "    val_accuracy = history.history[\"val_accuracy\"]\n",
    "    \n",
    "    x = range(1, len(acc) + 1)\n",
    "    \n",
    "    plt.figure(figsize=(12,5))\n",
    "    plt.subplot(1, 2, 1)\n",
    "    plt.plot(x, acc, \"b\", label=\"training_acc\")\n",
    "    plt.plot(x, val_accuracy, \"r\", label=\"validation_acc\")\n",
    "    plt.title(\"Accuracy\")\n",
    "    plt.legend(('training_acc', 'validation_acc'))\n",
    "    \n",
    "    plt.subplot(1, 2, 2)\n",
    "    plt.plot(x, loss, \"b\", label=\"traning_loss\")\n",
    "    plt.plot(x, val_loss, \"r\", label=\"validation_loss\")\n",
    "    plt.title(\"Loss\")\n",
    "    plt.legend(('training_loss', 'validation_loss'))\n",
    "    \n",
    "plot_history(history)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'.\\\\my_newlogs2\\\\run_2025_03_19_19_34_12'"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Create a function that creates a unique folder for training logs\n",
    "\n",
    "root_logdir = os.path.join(os.curdir,\"my_newlogs2\")\n",
    "def get_run_logdir():\n",
    "    import time\n",
    "    run_id=time.strftime(\"run_%Y_%m_%d_%H_%M_%S\")\n",
    "    return os.path.join(root_logdir,run_id)\n",
    "run_logdir=get_run_logdir()\n",
    "run_logdir\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/100\n",
      "\u001b[1m843/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.6367 - loss: 1.3635\n",
      "Epoch 1: val_loss improved from inf to 0.40691, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.6397 - loss: 1.3531 - val_accuracy: 0.8952 - val_loss: 0.4069\n",
      "Epoch 2/100\n",
      "\u001b[1m842/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.8931 - loss: 0.3964\n",
      "Epoch 2: val_loss improved from 0.40691 to 0.31311, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.8932 - loss: 0.3957 - val_accuracy: 0.9122 - val_loss: 0.3131\n",
      "Epoch 3/100\n",
      "\u001b[1m838/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9108 - loss: 0.3128\n",
      "Epoch 3: val_loss improved from 0.31311 to 0.26596, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9109 - loss: 0.3125 - val_accuracy: 0.9260 - val_loss: 0.2660\n",
      "Epoch 4/100\n",
      "\u001b[1m849/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9216 - loss: 0.2733\n",
      "Epoch 4: val_loss improved from 0.26596 to 0.24036, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9216 - loss: 0.2733 - val_accuracy: 0.9328 - val_loss: 0.2404\n",
      "Epoch 5/100\n",
      "\u001b[1m854/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9305 - loss: 0.2466\n",
      "Epoch 5: val_loss improved from 0.24036 to 0.22094, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9305 - loss: 0.2466 - val_accuracy: 0.9402 - val_loss: 0.2209\n",
      "Epoch 6/100\n",
      "\u001b[1m848/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9348 - loss: 0.2300\n",
      "Epoch 6: val_loss improved from 0.22094 to 0.20519, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9348 - loss: 0.2299 - val_accuracy: 0.9414 - val_loss: 0.2052\n",
      "Epoch 7/100\n",
      "\u001b[1m837/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9409 - loss: 0.2107\n",
      "Epoch 7: val_loss improved from 0.20519 to 0.19305, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9409 - loss: 0.2106 - val_accuracy: 0.9452 - val_loss: 0.1930\n",
      "Epoch 8/100\n",
      "\u001b[1m857/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9435 - loss: 0.1940\n",
      "Epoch 8: val_loss improved from 0.19305 to 0.17841, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9435 - loss: 0.1940 - val_accuracy: 0.9502 - val_loss: 0.1784\n",
      "Epoch 9/100\n",
      "\u001b[1m846/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9482 - loss: 0.1811\n",
      "Epoch 9: val_loss improved from 0.17841 to 0.16977, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9482 - loss: 0.1811 - val_accuracy: 0.9532 - val_loss: 0.1698\n",
      "Epoch 10/100\n",
      "\u001b[1m837/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9511 - loss: 0.1735\n",
      "Epoch 10: val_loss improved from 0.16977 to 0.16082, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9511 - loss: 0.1734 - val_accuracy: 0.9560 - val_loss: 0.1608\n",
      "Epoch 11/100\n",
      "\u001b[1m834/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9541 - loss: 0.1617\n",
      "Epoch 11: val_loss improved from 0.16082 to 0.15205, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9541 - loss: 0.1617 - val_accuracy: 0.9572 - val_loss: 0.1520\n",
      "Epoch 12/100\n",
      "\u001b[1m836/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9562 - loss: 0.1494\n",
      "Epoch 12: val_loss improved from 0.15205 to 0.14553, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9562 - loss: 0.1494 - val_accuracy: 0.9614 - val_loss: 0.1455\n",
      "Epoch 13/100\n",
      "\u001b[1m853/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9581 - loss: 0.1444\n",
      "Epoch 13: val_loss did not improve from 0.14553\n",
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9581 - loss: 0.1444 - val_accuracy: 0.9606 - val_loss: 0.1480\n",
      "Epoch 14/100\n",
      "\u001b[1m832/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9611 - loss: 0.1382\n",
      "Epoch 14: val_loss improved from 0.14553 to 0.13391, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9611 - loss: 0.1381 - val_accuracy: 0.9652 - val_loss: 0.1339\n",
      "Epoch 15/100\n",
      "\u001b[1m858/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9636 - loss: 0.1290\n",
      "Epoch 15: val_loss improved from 0.13391 to 0.12988, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9636 - loss: 0.1290 - val_accuracy: 0.9642 - val_loss: 0.1299\n",
      "Epoch 16/100\n",
      "\u001b[1m849/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9650 - loss: 0.1214\n",
      "Epoch 16: val_loss improved from 0.12988 to 0.12351, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9650 - loss: 0.1214 - val_accuracy: 0.9668 - val_loss: 0.1235\n",
      "Epoch 17/100\n",
      "\u001b[1m852/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9670 - loss: 0.1186\n",
      "Epoch 17: val_loss improved from 0.12351 to 0.12124, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9670 - loss: 0.1186 - val_accuracy: 0.9684 - val_loss: 0.1212\n",
      "Epoch 18/100\n",
      "\u001b[1m835/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9690 - loss: 0.1103\n",
      "Epoch 18: val_loss improved from 0.12124 to 0.11739, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9689 - loss: 0.1104 - val_accuracy: 0.9690 - val_loss: 0.1174\n",
      "Epoch 19/100\n",
      "\u001b[1m849/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9709 - loss: 0.1072\n",
      "Epoch 19: val_loss improved from 0.11739 to 0.11523, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9709 - loss: 0.1072 - val_accuracy: 0.9704 - val_loss: 0.1152\n",
      "Epoch 20/100\n",
      "\u001b[1m857/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9724 - loss: 0.0995\n",
      "Epoch 20: val_loss improved from 0.11523 to 0.10982, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9724 - loss: 0.0995 - val_accuracy: 0.9718 - val_loss: 0.1098\n",
      "Epoch 21/100\n",
      "\u001b[1m856/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9733 - loss: 0.1014\n",
      "Epoch 21: val_loss improved from 0.10982 to 0.10768, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9733 - loss: 0.1014 - val_accuracy: 0.9720 - val_loss: 0.1077\n",
      "Epoch 22/100\n",
      "\u001b[1m841/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9742 - loss: 0.0956\n",
      "Epoch 22: val_loss improved from 0.10768 to 0.10481, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9742 - loss: 0.0955 - val_accuracy: 0.9734 - val_loss: 0.1048\n",
      "Epoch 23/100\n",
      "\u001b[1m859/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9759 - loss: 0.0900\n",
      "Epoch 23: val_loss improved from 0.10481 to 0.10283, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9759 - loss: 0.0900 - val_accuracy: 0.9722 - val_loss: 0.1028\n",
      "Epoch 24/100\n",
      "\u001b[1m841/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9765 - loss: 0.0859\n",
      "Epoch 24: val_loss improved from 0.10283 to 0.09973, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9765 - loss: 0.0859 - val_accuracy: 0.9724 - val_loss: 0.0997\n",
      "Epoch 25/100\n",
      "\u001b[1m840/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9770 - loss: 0.0832\n",
      "Epoch 25: val_loss improved from 0.09973 to 0.09806, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9770 - loss: 0.0832 - val_accuracy: 0.9742 - val_loss: 0.0981\n",
      "Epoch 26/100\n",
      "\u001b[1m856/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9769 - loss: 0.0833\n",
      "Epoch 26: val_loss improved from 0.09806 to 0.09490, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9769 - loss: 0.0833 - val_accuracy: 0.9744 - val_loss: 0.0949\n",
      "Epoch 27/100\n",
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9789 - loss: 0.0782\n",
      "Epoch 27: val_loss improved from 0.09490 to 0.09331, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9789 - loss: 0.0782 - val_accuracy: 0.9748 - val_loss: 0.0933\n",
      "Epoch 28/100\n",
      "\u001b[1m849/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9795 - loss: 0.0733\n",
      "Epoch 28: val_loss improved from 0.09331 to 0.09182, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9795 - loss: 0.0733 - val_accuracy: 0.9750 - val_loss: 0.0918\n",
      "Epoch 29/100\n",
      "\u001b[1m836/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9811 - loss: 0.0720\n",
      "Epoch 29: val_loss improved from 0.09182 to 0.09037, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9811 - loss: 0.0719 - val_accuracy: 0.9764 - val_loss: 0.0904\n",
      "Epoch 30/100\n",
      "\u001b[1m840/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9821 - loss: 0.0664\n",
      "Epoch 30: val_loss improved from 0.09037 to 0.08893, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9821 - loss: 0.0665 - val_accuracy: 0.9760 - val_loss: 0.0889\n",
      "Epoch 31/100\n",
      "\u001b[1m832/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9821 - loss: 0.0674\n",
      "Epoch 31: val_loss improved from 0.08893 to 0.08817, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9821 - loss: 0.0673 - val_accuracy: 0.9762 - val_loss: 0.0882\n",
      "Epoch 32/100\n",
      "\u001b[1m855/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9831 - loss: 0.0642\n",
      "Epoch 32: val_loss improved from 0.08817 to 0.08500, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9831 - loss: 0.0642 - val_accuracy: 0.9776 - val_loss: 0.0850\n",
      "Epoch 33/100\n",
      "\u001b[1m836/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9832 - loss: 0.0622\n",
      "Epoch 33: val_loss improved from 0.08500 to 0.08408, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9832 - loss: 0.0622 - val_accuracy: 0.9768 - val_loss: 0.0841\n",
      "Epoch 34/100\n",
      "\u001b[1m852/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9837 - loss: 0.0608\n",
      "Epoch 34: val_loss improved from 0.08408 to 0.08211, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9837 - loss: 0.0607 - val_accuracy: 0.9786 - val_loss: 0.0821\n",
      "Epoch 35/100\n",
      "\u001b[1m859/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9846 - loss: 0.0594\n",
      "Epoch 35: val_loss improved from 0.08211 to 0.08096, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9846 - loss: 0.0594 - val_accuracy: 0.9780 - val_loss: 0.0810\n",
      "Epoch 36/100\n",
      "\u001b[1m845/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9857 - loss: 0.0552\n",
      "Epoch 36: val_loss improved from 0.08096 to 0.07982, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9857 - loss: 0.0552 - val_accuracy: 0.9788 - val_loss: 0.0798\n",
      "Epoch 37/100\n",
      "\u001b[1m835/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9849 - loss: 0.0555\n",
      "Epoch 37: val_loss improved from 0.07982 to 0.07936, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9849 - loss: 0.0555 - val_accuracy: 0.9772 - val_loss: 0.0794\n",
      "Epoch 38/100\n",
      "\u001b[1m844/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9869 - loss: 0.0517\n",
      "Epoch 38: val_loss improved from 0.07936 to 0.07840, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9869 - loss: 0.0517 - val_accuracy: 0.9772 - val_loss: 0.0784\n",
      "Epoch 39/100\n",
      "\u001b[1m840/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9883 - loss: 0.0484\n",
      "Epoch 39: val_loss improved from 0.07840 to 0.07761, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9883 - loss: 0.0484 - val_accuracy: 0.9788 - val_loss: 0.0776\n",
      "Epoch 40/100\n",
      "\u001b[1m837/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9876 - loss: 0.0488\n",
      "Epoch 40: val_loss improved from 0.07761 to 0.07673, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9876 - loss: 0.0488 - val_accuracy: 0.9788 - val_loss: 0.0767\n",
      "Epoch 41/100\n",
      "\u001b[1m858/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9883 - loss: 0.0470\n",
      "Epoch 41: val_loss improved from 0.07673 to 0.07669, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9883 - loss: 0.0470 - val_accuracy: 0.9786 - val_loss: 0.0767\n",
      "Epoch 42/100\n",
      "\u001b[1m848/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9877 - loss: 0.0477\n",
      "Epoch 42: val_loss improved from 0.07669 to 0.07504, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9878 - loss: 0.0477 - val_accuracy: 0.9790 - val_loss: 0.0750\n",
      "Epoch 43/100\n",
      "\u001b[1m846/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9893 - loss: 0.0433\n",
      "Epoch 43: val_loss did not improve from 0.07504\n",
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9893 - loss: 0.0433 - val_accuracy: 0.9774 - val_loss: 0.0762\n",
      "Epoch 44/100\n",
      "\u001b[1m837/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9889 - loss: 0.0431\n",
      "Epoch 44: val_loss improved from 0.07504 to 0.07233, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9889 - loss: 0.0431 - val_accuracy: 0.9802 - val_loss: 0.0723\n",
      "Epoch 45/100\n",
      "\u001b[1m855/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9897 - loss: 0.0414\n",
      "Epoch 45: val_loss did not improve from 0.07233\n",
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9897 - loss: 0.0414 - val_accuracy: 0.9804 - val_loss: 0.0729\n",
      "Epoch 46/100\n",
      "\u001b[1m835/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9910 - loss: 0.0385\n",
      "Epoch 46: val_loss improved from 0.07233 to 0.07189, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9910 - loss: 0.0385 - val_accuracy: 0.9788 - val_loss: 0.0719\n",
      "Epoch 47/100\n",
      "\u001b[1m848/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9915 - loss: 0.0373\n",
      "Epoch 47: val_loss improved from 0.07189 to 0.07189, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9915 - loss: 0.0374 - val_accuracy: 0.9796 - val_loss: 0.0719\n",
      "Epoch 48/100\n",
      "\u001b[1m856/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9908 - loss: 0.0382\n",
      "Epoch 48: val_loss improved from 0.07189 to 0.07120, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9908 - loss: 0.0382 - val_accuracy: 0.9790 - val_loss: 0.0712\n",
      "Epoch 49/100\n",
      "\u001b[1m840/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9916 - loss: 0.0363\n",
      "Epoch 49: val_loss improved from 0.07120 to 0.07105, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9916 - loss: 0.0363 - val_accuracy: 0.9794 - val_loss: 0.0710\n",
      "Epoch 50/100\n",
      "\u001b[1m847/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9921 - loss: 0.0357\n",
      "Epoch 50: val_loss did not improve from 0.07105\n",
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9921 - loss: 0.0357 - val_accuracy: 0.9790 - val_loss: 0.0715\n",
      "Epoch 51/100\n",
      "\u001b[1m845/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9925 - loss: 0.0332\n",
      "Epoch 51: val_loss improved from 0.07105 to 0.07013, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9924 - loss: 0.0333 - val_accuracy: 0.9796 - val_loss: 0.0701\n",
      "Epoch 52/100\n",
      "\u001b[1m849/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9928 - loss: 0.0322\n",
      "Epoch 52: val_loss improved from 0.07013 to 0.06902, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9928 - loss: 0.0323 - val_accuracy: 0.9794 - val_loss: 0.0690\n",
      "Epoch 53/100\n",
      "\u001b[1m847/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9929 - loss: 0.0326\n",
      "Epoch 53: val_loss did not improve from 0.06902\n",
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9929 - loss: 0.0326 - val_accuracy: 0.9794 - val_loss: 0.0721\n",
      "Epoch 54/100\n",
      "\u001b[1m853/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9928 - loss: 0.0321\n",
      "Epoch 54: val_loss improved from 0.06902 to 0.06831, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9928 - loss: 0.0321 - val_accuracy: 0.9802 - val_loss: 0.0683\n",
      "Epoch 55/100\n",
      "\u001b[1m848/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9935 - loss: 0.0302\n",
      "Epoch 55: val_loss did not improve from 0.06831\n",
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9935 - loss: 0.0302 - val_accuracy: 0.9788 - val_loss: 0.0690\n",
      "Epoch 56/100\n",
      "\u001b[1m855/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9944 - loss: 0.0273\n",
      "Epoch 56: val_loss improved from 0.06831 to 0.06774, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9944 - loss: 0.0273 - val_accuracy: 0.9806 - val_loss: 0.0677\n",
      "Epoch 57/100\n",
      "\u001b[1m852/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9936 - loss: 0.0284\n",
      "Epoch 57: val_loss did not improve from 0.06774\n",
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9936 - loss: 0.0284 - val_accuracy: 0.9806 - val_loss: 0.0693\n",
      "Epoch 58/100\n",
      "\u001b[1m859/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9945 - loss: 0.0279\n",
      "Epoch 58: val_loss improved from 0.06774 to 0.06764, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9945 - loss: 0.0279 - val_accuracy: 0.9804 - val_loss: 0.0676\n",
      "Epoch 59/100\n",
      "\u001b[1m837/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9939 - loss: 0.0268\n",
      "Epoch 59: val_loss did not improve from 0.06764\n",
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9939 - loss: 0.0268 - val_accuracy: 0.9802 - val_loss: 0.0680\n",
      "Epoch 60/100\n",
      "\u001b[1m855/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9948 - loss: 0.0262\n",
      "Epoch 60: val_loss improved from 0.06764 to 0.06629, saving model to MLP_model.h5\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9948 - loss: 0.0262 - val_accuracy: 0.9808 - val_loss: 0.0663\n",
      "Epoch 61/100\n",
      "\u001b[1m851/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9949 - loss: 0.0250\n",
      "Epoch 61: val_loss did not improve from 0.06629\n",
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9949 - loss: 0.0250 - val_accuracy: 0.9804 - val_loss: 0.0665\n",
      "Epoch 62/100\n",
      "\u001b[1m852/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9952 - loss: 0.0244\n",
      "Epoch 62: val_loss did not improve from 0.06629\n",
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9952 - loss: 0.0244 - val_accuracy: 0.9808 - val_loss: 0.0672\n",
      "Epoch 63/100\n",
      "\u001b[1m844/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9952 - loss: 0.0244\n",
      "Epoch 63: val_loss did not improve from 0.06629\n",
      "\u001b[1m860/860\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - accuracy: 0.9952 - loss: 0.0243 - val_accuracy: 0.9808 - val_loss: 0.0665\n",
      "Epoch 63: early stopping\n",
      "Restoring model weights from the end of the best epoch: 60.\n"
     ]
    }
   ],
   "source": [
    "#create a tensorboard callback function that makes use of folder logger\n",
    "tensorboard_cb=keras.callbacks.TensorBoard(run_logdir)\n",
    "\n",
    "#create checkpoint callback that saves every epoch\n",
    "checkpoint_cb = keras.callbacks.ModelCheckpoint(\"MLP_model.h5\",\n",
    "    save_best_only=True, verbose=1,mode='min', monitor='val_loss')\n",
    "\n",
    "#create early stopping callback\n",
    "\n",
    "early_stopping_cb = keras.callbacks.EarlyStopping(monitor='val_loss', \n",
    "                          min_delta=0, \n",
    "                          patience=3, \n",
    "                          verbose=1,\n",
    "                          restore_best_weights=True)\n",
    "\n",
    "batch_size = 64\n",
    "\n",
    "history1 = model.fit(X_train, y_train,\n",
    "                 validation_data=(X_valid, y_valid),\n",
    "                 epochs=100,\n",
    "                 batch_size = batch_size,\n",
    "                 callbacks=[tensorboard_cb, checkpoint_cb, early_stopping_cb])\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA94AAAHBCAYAAACfcmNMAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAACV70lEQVR4nOzdd3zT1f7H8Ve6W1payiirQGUWkSEbBBkyBUVFcIEoQ0RkKSI/J8iVKyCiIDiQISIiV1FUEBBBpiAIDvYuo6WyWsrozO+PY9KGttBC03S8n4/HeST55pvkJJdr+s75nHMsVqvVioiIiIiIiIg4hZurOyAiIiIiIiJSkCl4i4iIiIiIiDiRgreIiIiIiIiIEyl4i4iIiIiIiDiRgreIiIiIiIiIEyl4i4iIiIiIiDiRgreIiIiIiIiIEyl4i4iIiIiIiDiRgreIiIiIiIiIEyl4i+Qh7733HhaLhVq1arm6KyIiIpKHzZkzB4vFwtatW13dFRHJAgVvkTxk1qxZAOzcuZPNmze7uDciIiIiIpITFLxF8oitW7fyxx9/cPfddwPwySefuLhHGbt06ZKruyAiIiIikq8oeIvkEbag/d///pdmzZrxxRdfpAu5J06cYMCAAYSGhuLl5UXZsmXp3r07p06dsp9z/vx5nnvuOW655Ra8vb0pVaoUnTt3Zs+ePQCsWbMGi8XCmjVrHJ77yJEjWCwW5syZYz/Wp08f/P39+euvv2jfvj0BAQG0bdsWgJUrV3LvvfdSvnx5fHx8qFKlCk899RSnT59O99727NnDww8/TEhICN7e3lSoUIHevXsTHx/PkSNH8PDwYPz48eket3btWiwWC4sWLbqhz1RERKQwW79+PW3btiUgIAA/Pz+aNWvGDz/84HDOpUuXeP755wkLC8PHx4fg4GAaNGjAggUL7OccOnSIhx56iLJly+Lt7U1ISAht27Zlx44dufyORPIvD1d3QETg8uXLLFiwgIYNG1KrVi2efPJJ+vXrx6JFi3j88ccBE7obNmxIYmIi//d//0ft2rU5c+YMy5cv59y5c4SEhHDhwgXuuOMOjhw5wqhRo2jcuDFxcXGsXbuWyMhIatSoke2+JSQkcM899/DUU0/x4osvkpSUBMDBgwdp2rQp/fr1IzAwkCNHjjB58mTuuOMO/vrrLzw9PQH4448/uOOOOyhRogRjx46latWqREZGsmTJEhISEqhUqRL33HMPH3zwAS+88ALu7u721542bRply5blvvvuy4FPWUREpPD45ZdfaNeuHbVr1+aTTz7B29ub6dOn07VrVxYsWEDPnj0BGDFiBPPmzWPcuHHUq1ePixcv8vfff3PmzBn7c3Xu3Jnk5GQmTJhAhQoVOH36NBs3buT8+fMuenci+ZBVRFzu008/tQLWDz74wGq1Wq0XLlyw+vv7W1u0aGE/58knn7R6enpad+3alenzjB071gpYV65cmek5q1evtgLW1atXOxw/fPiwFbDOnj3bfuzxxx+3AtZZs2Zds/8pKSnWxMRE69GjR62A9dtvv7Xf16ZNG2tQUJA1Ojr6un1avHix/diJEyesHh4e1jFjxlzztUVERAqj2bNnWwHrb7/9luH9TZo0sZYqVcp64cIF+7GkpCRrrVq1rOXLl7empKRYrVartVatWtZu3bpl+jqnT5+2AtYpU6bk7BsQKWRUai6SB3zyySf4+vry0EMPAeDv78+DDz7IunXr2L9/PwDLli2jdevWhIeHZ/o8y5Yto1q1atx111052r8HHngg3bHo6GgGDhxIaGgoHh4eeHp6UrFiRQB2794NmPK1X375hR49elCyZMlMn79Vq1bUqVOH999/337sgw8+wGKxMGDAgBx9LyIiIgXdxYsX2bx5M927d8ff399+3N3dnV69enH8+HH27t0LQKNGjVi2bBkvvvgia9as4fLlyw7PFRwcTOXKlZk4cSKTJ09m+/btpKSk5Or7ESkIFLxFXOzAgQOsXbuWu+++G6vVyvnz5zl//jzdu3cHUlc6/+effyhfvvw1nysr52SXn58fRYsWdTiWkpJC+/bt+frrr3nhhRdYtWoVW7Zs4ddffwWwf2mfO3eO5OTkLPVpyJAhrFq1ir1795KYmMjHH39M9+7dKV26dI6+HxERkYLu3LlzWK1WypQpk+6+smXLAthLyd977z1GjRrFN998Q+vWrQkODqZbt272H/4tFgurVq2iQ4cOTJgwgdtvv52SJUsyZMgQLly4kHtvSiSfU/AWcbFZs2ZhtVr53//+R7FixezNtrr53LlzSU5OpmTJkhw/fvyaz5WVc3x8fACIj493OJ7RomhgvnCv9vfff/PHH38wceJEnn32WVq1akXDhg0pXry4w3nBwcG4u7tft08AjzzyCMWLF+f9999n0aJFREVF8cwzz1z3cSIiIuKoWLFiuLm5ERkZme6+kydPAlCiRAkAihQpwpgxY9izZw9RUVHMmDGDX3/9la5du9ofU7FiRT755BOioqLYu3cvw4cPZ/r06YwcOTJ33pBIAaDgLeJCycnJzJ07l8qVK7N69ep07bnnniMyMpJly5bRqVMnVq9ebS8Ny0inTp3Yt28fP//8c6bnVKpUCYA///zT4fiSJUuy3G9bGPf29nY4/uGHHzrc9vX15c4772TRokWZBnsbHx8fBgwYwNy5c5k8eTJ169alefPmWe6TiIiIGEWKFKFx48Z8/fXXDqXjKSkpfPbZZ5QvX55q1aqle1xISAh9+vTh4YcfZu/evRluIVqtWjVefvllbrvtNn7//Xenvg+RgkSrmou40LJlyzh58iRvvfUWrVq1Snd/rVq1mDZtGp988gnTpk1j2bJltGzZkv/7v//jtttu4/z58/z444+MGDGCGjVqMGzYMBYuXMi9997Liy++SKNGjbh8+TK//PILXbp0oXXr1pQuXZq77rqL8ePHU6xYMSpWrMiqVav4+uuvs9zvGjVqULlyZV588UWsVivBwcF89913rFy5Mt25tpXOGzduzIsvvkiVKlU4deoUS5Ys4cMPPyQgIMB+7qBBg5gwYQLbtm1j5syZN/SZioiIFCY///wzR44cSXd8/PjxtGvXjtatW/P888/j5eXF9OnT+fvvv1mwYIH9R/TGjRvTpUsXateuTbFixdi9ezfz5s2jadOm+Pn58eeffzJ48GAefPBBqlatipeXFz///DN//vknL774Yi6/W5F8zLVru4kUbt26dbN6eXldc8Xvhx56yOrh4WGNioqyHjt2zPrkk09aS5cubfX09LSWLVvW2qNHD+upU6fs5587d846dOhQa4UKFayenp7WUqVKWe+++27rnj177OdERkZau3fvbg0ODrYGBgZaH3vsMevWrVszXNW8SJEiGfZr165d1nbt2lkDAgKsxYoVsz744IPWiIgIK2B97bXX0p374IMPWosXL2718vKyVqhQwdqnTx/rlStX0j1vq1atrMHBwdZLly5l8VMUEREpfGyrmmfWDh8+bF23bp21TZs21iJFilh9fX2tTZo0sX733XcOz/Piiy9aGzRoYC1WrJjV29vbesstt1iHDx9uPX36tNVqtVpPnTpl7dOnj7VG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desN9yUrNOItUgjFxsLff8Nff5mgbGuZLXQGZlGzcuWgenUTpqtXT71esSK4u+de/0VEbpZKzUUKOKv1+ovMOIufX5ZWg33wwQcZMmQIq1evpm3btgCcO3eO5cuX89133xEXF0fnzp0ZN24cPj4+zJ07l65du7J3714qVKhw3ee/ePEiXbp0oU2bNnz22WccPnyYoUOHOpyTkpJC+fLl+fLLLylRogQbN25kwIABlClThh49evD888+ze/duYmNjmT17NgDBwcGcPHnS4XlOnDhB586d6dOnD59++il79uyhf//++Pj4OITruXPnMmLECDZv3symTZvo06cPzZs3p127dtd9P2ldunSJjh070qRJE3777Teio6Pp168fgwcPZs6cOSQlJdGtWzf69+/PggULSEhIYMuWLVj+/d/l0UcfpV69esyYMQN3d3d27NiBp6dntvqQXQreIgWI1Wr+iLx0KbVduGBKwv/6KzVs//tjXzqenmaEu2ZNM/e6UqXUy9DQ1D9URUTyO414ixRwly6Bv79rXjsuzpQLXkdwcDAdO3bk888/twfvRYsWERwcTNu2bXF3d6dOnTr288eNG8fixYtZsmQJgwcPvu7zz58/n+TkZGbNmoWfnx+33norx48f5+mnn7af4+npyZgxY+y3w8LC2LhxI19++SU9evTA398fX19f4uPjr1laPn36dEJDQ5k2bRoWi4UaNWpw8uRJRo0axauvvoqbmym0rl27Nq+99hoAVatWZdq0aaxatSrbwXv+/PlcvnyZTz/9lCL/ftbTpk2ja9euvPXWW3h6ehITE0OXLl2oXLkyAOHh4fbHR0REMHLkSGrUqGHvi7MpeIvkY1YrrF0LM2fC999DTIw5lhXlykGtWlCnjmm1a5sRbCf/2CeS82JizAIERYuaf9jXWq3PaoVz5+DECfOrVGbCwyGHF6cpiKZPn87EiROJjIzk1ltvZcqUKbRo0SLT8+fPn8+ECRPYv38/gYGBdOzYkUmTJlG8ePFc7LWhfbxFJC949NFHGTBgANOnT8fb25v58+fz0EMP4e7uzsWLFxkzZgzff/89J0+eJCkpicuXLxMREZGl5969ezd16tTBz8/Pfqxp06bpzvvggw+YOXMmR48e5fLlyyQkJGR7pfLdu3fTtGlT+4gyQPPmzYmLi+P48eP2EfratWs7PK5MmTJE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N3Xf8bRSUkwF8P79pu3bl3r94EEzaLh3r2kZKV/ejLxXrmwub7klNfyXKqXRcincFLwzoOAtIiIiIoWNm1vqItJpV1kHM333+HETwA8dMs225dnBg2Zx7uPHTVuzJv1z29bGqljRPL9twXHbItehobk37VnEFRS8M6BScxERERGRVB4eUKmSaVeHcqvVrN914IBjO3TITMs9eTJ1baxrrY9VtKjjblNXB/MKFcz0XZH8SME7AxrxFhERERHJGosldfps48bp709MTF0bKyICjh51XOD62DGz/XVsbOarsNsEBztu72wL57aAXrasGV0XyWsUvDNgC94a8RYRERERuTmenqmj5ZmJi0stVU+745QtmB87ZsrZz5417RprdFKqlNnFqkyZjFvZsmahby+vHH6jIteg4J0BW6m5RrxFRERERJzP3z91L/HMxMSYAG4bOY+ISA3otpCedovp7duv/ZrFizsG8tKlTQsJSb0MCTGj7FoYTm6WgncGVGouIgVNpUqVGDZsGMOGDQPAYrGwePFiunXrluH5R44cISwsjO3bt1O3bt0bft2ceh4REZHAQNMy22LaaoUzZ0wAP3ECIiNTW1SUuTx50lxPTDTnnjkDf/997dd1d4eSJc1IemYtJCT1up9fzr93yf8UvDOgUnMRKegiIyMpVqxYjj5nnz59OH/+PN988439WGhoKJGRkZQoUSJHX0tERORqFguUKGFavXqZn5eSYsrV0wZzWzg/dco02/WzZyE52dyOispaP/z9U0fQrx5NL17cjKDbLosVM6X4UvApeGdApeYiUtCVLl06V17H3d09115LREQkK9zcUgP6bbdd+9yEBDh9OrV83dZOnYJ//km9bruMjzfz1W37n2dFQIAZUc+o2cJ5UJC5tLWAAPNDg+QfCt4ZUKm5iOQlH374IWPHjuXYsWO4pZlkds8991CsWDFeffVVRowYwa+//srFixcJDw9n/Pjx3HXXXZk+59Wl5lu2bOGpp55i9+7d1KpVi5deesnh/OTkZAYMGMDPP/9MVFQUFSpUYNCgQQwdOhSA119/nblz59qfG2D16tVUqlQpXan5L7/8wsiRI/njjz8IDg7m8ccfZ9y4cXh4mK+kVq1aUbt2bXx8fJg5cyZeXl4MHDiQ119/PUuf1+TJk5k9ezaHDh0iODiYrl27MmHCBPz9/e3nbNiwgf/7v//jt99+w9vbm0aNGvHFF19QrFgxUlJSmDhxIh9//DHHjh0jJCSEp556Kt1nIiIiBZ+Xl1mMrWzZ659rtcKFC6mj47bydttoelRU6uJwZ8+aldzBPObCBbP9Wla5u5tQnnb03HY97aj61U1l8K6j4J0B7eMtUkhYrXDpkmte288vyz9VP/jggwwZMoTVq1fT9t/NU8+dO8fy5cv57rvviIuLo3PnzowbNw4fHx/mzp1L165d2bt3LxUqVLju81+8eJEuXbrQpk0bPvvsMw4fPmwP1DYpKSmUL1+eL7/8khIlSrBx40YGDBhAmTJl6NGjB88//zy7d+8mNjaW2bNnAxAcHMzJkycdnufEiRN07tyZPn368Omnn7Jnzx769++Pj4+PQ7CeO3cuI0aMYPPmzWzatIk+ffrQvHlz2rVrd9334+bmxnvvvUelSpU4fPgwgwYN4oUXXmD69OkA7Nixg7Zt2/Lkk0/y3nvv4eHhwerVq0lOTgZg9OjRfPzxx7zzzjvccccdREZGsmfPnuu+roiIFG4Wi9mLvGhRqFbt+ucnJ8P582ae+T//ZNzOnUtt58+by/h481jbOdnh45M+oAcFmT7b5tDbWtpR9qAgc0yLzN04Be+rWK3mHzNoxFukwLt0yUzEcoW4OChSJEunBgcH07FjRz7//HN78F60aBHBwcG0bdsWd3d36tSpYz9/3LhxLF68mCVLljB48ODrPv/8+fNJTk5m1qxZ+Pn5ceutt3L8+HGefvpp+zmenp6MGTPGfjssLIyNGzfy5Zdf0qNHD/z9/fH19SU+Pv6apeXTp08nNDSUadOmYbFYqFGjBidPnmTUqFG8+uqr9hH92rVr89prrwFQtWpVpk2bxqpVq7IUvG0LyNn6+cYbb/D000/bg/eECRNo0KCB/TbArbfeCsCFCxd49913mTZtGo8//jgAlStX5o477rju64qIiGSHu3tqAM5KULe5fNlx5PzMmdTLq6+nbUlJprL35EnTsstiMeHbFsRtwTyj62lvBwaaP3n8/EwFQWEtkVfwvootdIOCt4jkHY8++igDBgxg+vTpeHt7M3/+fB566CHc3d25ePEiY8aM4fvvv+fkyZMkJSVx+fJlIiIisvTcu3fvpk6dOvilqT9r2rRpuvM++OADZs6cydGjR7l8+TIJCQnZXql89+7dNG3a1F6ODtC8eXPi4uI4fvy4fYS+du3aDo8rU6YM0dHRWXqN1atX8+abb7Jr1y5iY2NJSkriypUrXLx4kSJFirBjxw4efPDBTPsXHx9v/4FDREQkr/H1NfuUlyuX9cdYreY3/4zCeUxMxu38+dRR9suXzXPYjt0od3cTwP38TBgvWjQ1nNtG2QMDzRz2gAAzPmK79PdPPScoKP9lNQXvq9jKzEGl5iIFnp+f+RZy1WtnQ9euXUlJSeGHH36gYcOGrFu3jsmTJwMwcuRIli9fzqRJk6hSpQq+vr50796dhISELD231Wq97jlffvklw4cP5+2336Zp06YEBAQwceJENm/enK33YbVaHUJ32tdPe9zzqiVeLRYLKSkp133+o0eP0rlzZwYOHMgbb7xBcHAw69evp2/fviQmJgLge43/uF/rPhERkfzKYkkNs5UqZf/x8fGpITxtIE97Pe3tq+//dzYXycmpc9pvlrd3aggvWtQE8yJFTLNd9/dPDflpm58f3HILVK588/3IKgXvq9gWVnNzAw99OiIFm8WS5XJvV/P19eX+++9n/vz5HDhwgGrVqlG/fn0A1q1bR58+fbjvvvsAiIuL48iRI1l+7po1azJv3jwuX75sD56//vqrwznr1q2jWbNmDBo0yH7s4MGDDud4eXnZ50lf67W++uorhwC+ceNGAgICKJedn+4zsXXrVpKSknj77bftZetffvmlwzm1a9dm1apVDqXzNlWrVsXX15dVq1bRr1+/m+6PiIhIQeDtbfYqDwm5sccnJsLFi2aW36VL5vrFi+lH2G2XcXGp7cKF1MvYWHO/bXqwbfu3GzF0KEyZcmOPvRGKllexWlP3/Sus8w9EJG969NFH6dq1Kzt37uSxxx6zH69SpQpff/01Xbt2xWKx8Morr2RpdNjmkUce4aWXXqJv3768/PLLHDlyhEmTJjmcU6VKFT799FOWL19OWFgY8+bN47fffiMsLMx+TqVKlVi+fDl79+6lePHiBAYGpnutQYMGMWXKFJ599lkGDx7M3r17ee211xgxYoTDiu03qnLlyiQlJTF16lS6du3Khg0b+OCDDxzOGT16NLfddhuDBg1i4MCBeHl5sXr1ah588EFKlCjBqFGjeOGFF/Dy8qJ58+b8888/7Ny5k759+950/0RERAojT8/U0emblZJignjakfXY2NQwHxfneD1t0E/bsrD+bI5S8L5K2bLw+++u7oWISHpt2rQhODiYvXv38sgjj9iPv/POOzz55JM0a9bMHhz/v737j4m6/uMA/rzjuEPkR6nIQQg7yxJCke7SENOWRaNf9mONWA030+1SS6RaYSusrcC2mDkF81fL6YZ/pE02mLAlp2UuIZgMWLFB4gJGuIKLJgS8vn84Pt8urr7wleOO9+f52G6Tz+d97v38HOdz7/ucn09/f/+E/96wsDCUl5fD6XQiNTUVSUlJ2LVrF5599lltjNPpRENDA7KysmAwGJCdnY3NmzejsrJSG7Np0ybU1NTA4XDg999/124n9le33XYbKioq8MYbbyAlJQVz5szRFvxTYdmyZSguLsauXbuQn5+P1atXo7CwEDk5OdqYO++8E1VVVdixYweWL1+OWbNmYcWKFcjOzgYAvPPOOzCZTHj33XfR2dmJmJgYOJ3OKZkfERER3Ryj8b9Xj5/uxfPNMMhE/nPfDNDf34/IyEj09fUhIiLC39MhogB0/fp1tLe3w2azIWSmXZGDAtY//V6xl6YejykREQWaiXYT78RGRERERERE5ENceBMR0Yxx/PhxhIWFeX2M3YubiIiIKNBw4U1ERDPGk08+iYaGBq+PiooKf09Pd0pKSrSv2Nvtdpw/f/5fx7tcLtjtdoSEhGDhwoXjLnxHRESkKl5cjYiIZozw8HCEh4f7exoE4MSJE8jNzUVJSQnS09Px6aefIjMzE83NzYj3crWb9vZ2PProo9i0aROOHTuGb775Bps3b0ZUVJTHhfyIiIhUxDPeRERENGnFxcV46aWXsHHjRiQmJmL37t1YsGABSktLvY7fv38/4uPjsXv3biQmJmLjxo3YsGHDuFvXERERqYgLbyLSncnc45rof9Hj79PQ0BDq6uqQkZHhsT0jIwMXLlzw+pxvv/123PhHHnkEtbW1+PPPP302VyIiokDAr5oTkW6YzWYYjUZ0dnYiKioKZrMZBoPB39OiGUpEMDQ0hF9++QVGoxFms9nfU5o2vb29GBkZQXR0tMf26OhodHd3e31Od3e31/HDw8Po7e1FTEzMuOcMDg5icHBQ+3ky96cnIiIKJFx4E5FuGI1G2Gw2dHV1obOz09/TIUWEhoYiPj4eRqP+vkT29w+uRORfP8zyNt7b9jGFhYV47733bnKWRERE/seFNxHpitlsRnx8PIaHhzEyMuLv6dAMFxQUBJPJpLtvTsybNw9BQUHjzm739PSMO6s9xmq1eh1vMpkwd+5cr8/Jz89HXl6e9nN/fz8WLFhwk7MnIiKaflx4E5HuGAwGBAcHIzg42N9TIZqRzGYz7HY7qqur8fTTT2vbq6ursW7dOq/PSUtLQ3l5uce2qqoqOByOf3wvWiwWWCyWqZs4ERGRn+jve3FERER00/Ly8nDo0CEcOXIELS0t2L59Ozo6OuB0OgHcOFudk5OjjXc6nbhy5Qry8vLQ0tKCI0eO4PDhw3j99df9FYGIiGja8Iw3ERERTVpWVhauXbuG999/H11dXUhOTkZFRQUSEhIAAF1dXejo6NDG22w2VFRUYPv27di3bx9iY2OxZ88e3sObiIh0wSBjVzaZ4fr7+xEZGYm+vj5ERET4ezpERKRz7KWpx2NKRESBZqLdpMwZ77HPD3irESIiCgRjfaTI59sBgV1PRESBZqJ9r8zC2+12AwCvdkpERAHF7XYjMjLS39NQArueiIgC1f/qe2W+aj46OorOzk6Eh4dP+LYuY7cluXr1qq6+ssbczK0HzM3c/iYicLvdiI2N1eU9vn2BXT9xzM3cesDczB0IJtr3ypzxNhqNiIuL+7+eGxEREVAv3nRhbn1hbn1h7sDAM91Ti10/ecytL8ytL8wdOCbS9/wInoiIiIiIiMiHuPAmIiIiIiIi8iFdL7wtFgsKCgpgsVj8PZVpxdzMrQfMzdxEgH5/N5ibufWAuZl7JlHm4mpEREREREREgUjXZ7yJiIiIiIiIfI0LbyIiIiIiIiIf4sKbiIiIiIiIyIe48CYiIiIiIiLyId0uvEtKSmCz2RASEgK73Y7z58/7e0pT6ty5c3jiiScQGxsLg8GAL7/80mO/iGDnzp2IjY3FrFmz8MADD6Cpqck/k51ChYWFuPfeexEeHo758+fjqaeewg8//OAxRsXspaWlWLp0KSIiIhAREYG0tDRUVlZq+1XM/HeFhYUwGAzIzc3Vtqmae+fOnTAYDB4Pq9Wq7Vc1NwD8/PPPePHFFzF37lyEhoZi2bJlqKur0/arnJ0mT/WuB/TZ9+x6/XY9oJ++Z9er1/W6XHifOHECubm5ePvtt1FfX4/7778fmZmZ6Ojo8PfUpszAwABSUlKwd+9er/s/+ugjFBcXY+/evbh06RKsVisefvhhuN3uaZ7p1HK5XNiyZQsuXryI6upqDA8PIyMjAwMDA9oYFbPHxcWhqKgItbW1qK2txYMPPoh169Zp/wipmPmvLl26hAMHDmDp0qUe21XOfffdd6Orq0t7NDY2avtUzf3rr78iPT0dwcHBqKysRHNzMz7++GPccsst2hhVs9Pk6aHrAX32Pbten10P6K/v2fWKdb3o0PLly8XpdHpsW7x4sbz11lt+mpFvAZBTp05pP4+OjorVapWioiJt2/Xr1yUyMlL279/vhxn6Tk9PjwAQl8slIvrKfuutt8qhQ4eUz+x2u2XRokVSXV0ta9askW3btomI2q91QUGBpKSkeN2ncu4333xTVq1a9Y/7Vc5Ok6e3rhfRb9+z69XvehH99T273ruZnF13Z7yHhoZQV1eHjIwMj+0ZGRm4cOGCn2Y1vdrb29Hd3e1xDCwWC9asWaPcMejr6wMAzJkzB4A+so+MjKCsrAwDAwNIS0tTPvOWLVvw2GOP4aGHHvLYrnru1tZWxMbGwmaz4fnnn0dbWxsAtXOfPn0aDocDzz33HObPn4/U1FQcPHhQ269ydpocdv0NenlPsOvV73pAn33Prler63W38O7t7cXIyAiio6M9tkdHR6O7u9tPs5peYzlVPwYigry8PKxatQrJyckA1M7e2NiIsLAwWCwWOJ1OnDp1CklJSUpnLisrw/fff4/CwsJx+1TOvWLFChw9ehRnzpzBwYMH0d3djZUrV+LatWtK525ra0NpaSkWLVqEM2fOwOl04tVXX8XRo0cBqP2a0+Sw62/Qw3uCXa9+1wP67Ht2vXpdb/L3BPzFYDB4/Cwi47apTvVjsHXrVly+fBlff/31uH0qZr/rrrvQ0NCA3377DV988QXWr18Pl8ul7Vct89WrV7Ft2zZUVVUhJCTkH8eplhsAMjMztT8vWbIEaWlpuP322/H555/jvvvuA6Bm7tHRUTgcDnz44YcAgNTUVDQ1NaG0tBQ5OTnaOBWz0/+Hvws3qHwc2PVqdz2g375n16vX9bo74z1v3jwEBQWN+0Skp6dn3Ccnqhq7IqLKx+CVV17B6dOncfbsWcTFxWnbVc5uNptxxx13wOFwoLCwECkpKfjkk0+UzVxXV4eenh7Y7XaYTCaYTCa4XC7s2bMHJpNJy6Zabm9mz56NJUuWoLW1VdnXGwBiYmKQlJTksS0xMVG7WJbK2Wly2PU3qP6eYNer3/UA+34Mu37md73uFt5msxl2ux3V1dUe26urq7Fy5Uo/zWp62Ww2WK1Wj2MwNDQEl8s144+BiGDr1q04efIkvvrqK9hsNo/9Kmf/OxHB4OCgspnXrl2LxsZGNDQ0aA+Hw4EXXngBDQ0NWLhwoZK5vRkcHERLSwtiYmKUfb0BID09fdwtg3788UckJCQA0Nf7m/4du/4GVd8T7Pr/Ur3rAfb9GHa9Al0/vddyCwxlZWUSHBwshw8flubmZsnNzZXZs2fLTz/95O+pTRm32y319fVSX18vAKS4uFjq6+vlypUrIiJSVFQkkZGRcvLkSWlsbJTs7GyJiYmR/v5+P8/85rz88ssSGRkpNTU10tXVpT3++OMPbYyK2fPz8+XcuXPS3t4uly9flh07dojRaJSqqioRUTOzN3+9yqmIurlfe+01qampkba2Nrl48aI8/vjjEh4erv0bpmru7777Tkwmk3zwwQfS2toqx48fl9DQUDl27Jg2RtXsNHl66HoRffY9u17fXS+ij75n16vX9bpceIuI7Nu3TxISEsRsNss999yj3YJCFWfPnhUA4x7r168XkRuX4i8oKBCr1SoWi0VWr14tjY2N/p30FPCWGYB89tln2hgVs2/YsEH7fY6KipK1a9dqRSyiZmZv/l7EqubOysqSmJgYCQ4OltjYWHnmmWekqalJ269qbhGR8vJySU5OFovFIosXL5YDBw547Fc5O02e6l0vos++Z9fru+tF9NH37Hr1ut4gIjJ959eJiIiIiIiI9EV3/8ebiIiIiIiIaDpx4U1ERERERETkQ1x4ExEREREREfkQF95EREREREREPsSFNxEREREREZEPceFNRERERERE5ENceBMRERERERH5EBfeRERERERERD7EhTcRERERERGRD3HhTURERERERORDXHgTERERERER+RAX3kREREREREQ+9B90r6crQttqFwAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 1200x500 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "def plot_history(history1):\n",
    "    acc = history1.history[\"accuracy\"]\n",
    "    loss = history1.history[\"loss\"]\n",
    "    val_loss = history1.history[\"val_loss\"]\n",
    "    val_accuracy = history1.history[\"val_accuracy\"]\n",
    "    \n",
    "    x = range(1, len(acc) + 1)\n",
    "    \n",
    "    plt.figure(figsize=(12,5))\n",
    "    plt.subplot(1, 2, 1)\n",
    "    plt.plot(x, acc, \"b\", label=\"traning_acc\")\n",
    "    plt.plot(x, val_accuracy, \"r\", label=\"validation_acc\")\n",
    "    plt.title(\"Accuracy\")\n",
    "    plt.legend(('training_acc', 'validation_acc'))\n",
    "    \n",
    "    plt.subplot(1, 2, 2)\n",
    "    plt.plot(x, loss, \"b\", label=\"traning_loss\")\n",
    "    plt.plot(x, val_loss, \"r\", label=\"validation_loss\")\n",
    "    plt.title(\"Loss\")\n",
    "    plt.legend(('training_loss', 'validation_loss'))\n",
    "    \n",
    "plot_history(history1)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "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.12.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
