Files
DL-portfolio/mnist-mlp-regularization/mnist-mlp-pred.ipynb

437 lines
79 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 9,
"id": "fe7570b6-1e0d-480f-b6cc-17868ec7ea43",
"metadata": {},
"outputs": [],
"source": [
"from tensorflow.keras import datasets,utils,models,layers,optimizers,losses\n",
"import numpy as np \n",
"import matplotlib.pyplot as plt "
]
},
{
"cell_type": "markdown",
"id": "bf9f047c-ffaf-4cf8-973f-21b8f0bcba83",
"metadata": {},
"source": [
"# data preparation "
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "91befa7a-0369-41c5-a042-e0256b97b76a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"5\n",
"[0. 0. 0. 0. 0. 1. 0. 0. 0. 0.]\n"
]
}
],
"source": [
"(train_images , train_labels), (test_images,test_labels ) = datasets.mnist.load_data()\n",
"\n",
"# preprocessing\n",
"X_train = train_images.reshape(60000,784)\n",
"X_test = test_images.reshape(10000,784)\n",
"\n",
"# Normalizing (0,1 )\n",
"X_train = X_train.astype('float') / 255\n",
"X_test = X_test.astype('float') / 255\n",
"\n",
"y_train = utils.to_categorical(train_labels)\n",
"y_test = utils.to_categorical(test_labels) \n",
"\n",
"print(train_labels[0])\n",
"print(y_train[0])\n",
"\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "3c80e2f2-1805-4dcb-918d-f7ab72f95a38",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAgQAAAB9CAYAAADdsHu2AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAExVJREFUeJzt3X10zvUfx/H3zJnFzIyVlkM3WIk1IdXRmsTKTZmbJFHq0BFSJ+UUlU7FonUOSolT0+Y2i6IWndyF0bohWqQ7y81ZGcs2kyPX749+3r0vXbPba99r1/V8nLNzXte16+a9XbsuH5/bIJfL5RIAABDQ6jhdAAAAcB4NAgAAQIMAAADQIAAAAEKDAAAACA0CAAAgNAgAAIDQIAAAAEKDAAAAiJ80CDZs2CBBQUEev7Zt2+Z0eQGtqKhIHn30UYmOjpbQ0FCJi4uTJUuWOF0WPJg/f74EBQVJWFiY06UEtMLCQnnyySelZ8+eEhUVJUFBQTJlyhSny4KIfPHFF5KYmCgNGzaUsLAw6datm2zZssXpsqqNXzQIzpo6dapkZWW5fbVr187psgJa//79ZcGCBfLcc89JZmamdO7cWYYMGSKLFi1yujQYBw8elAkTJkh0dLTTpQS8/Px8eeutt+Svv/6Sfv36OV0O/i87O1vi4+OlpKRE0tLSJC0tTU6ePCndu3eXrKwsp8urFkH+cJbBhg0bpFu3bvLee+/JwIEDnS4H//fxxx9L7969ZdGiRTJkyBC9vmfPnvLdd99Jbm6uBAcHO1ghzurbt68EBQVJZGSkLF++XIqKipwuKWCd/UgOCgqSI0eOSFRUlDz33HP0Ejjstttukx07dsjPP/8s9evXF5F/enMuv/xyadOmjV/0FPhVDwF8y4oVKyQsLEwGDRrkdv2IESPk0KFDsn37docqg5Weni4bN26UOXPmOF0KRHS4E75ly5YtkpCQoI0BEZGGDRtKfHy8bN26VQ4fPuxgddXDrxoEY8aMkbp160p4eLgkJibK5s2bnS4poO3evVuuuuoqqVu3rtv1sbGx+n046/fff5dHH31UkpOTpXnz5k6XA/isU6dOSb169f5z/dnrdu3aVdMlVTu/aBA0atRIxo8fL3PnzpX169fLzJkz5bfffpOEhARZs2aN0+UFrPz8fImMjPzP9Wevy8/Pr+mScI6HH35YYmJiZPTo0U6XAvi0tm3byrZt2+TMmTN63enTp7Wn0x8+z+qWfRPf16FDB+nQoYNevummmyQpKUnat28vTz75pCQmJjpYXWA7X9cn3aLOysjIkFWrVsk333zDawGUYdy4cfLggw/K2LFjZdKkSXLmzBl5/vnnZf/+/SIiUqdO7f//de3/CUoREREhffr0kW+//VZKSkqcLicgNWnSxGOr+ejRoyIiHnsPUDOKiopkzJgxMm7cOImOjpaCggIpKCiQU6dOiYhIQUGBFBcXO1wl4DseeOABSU5OlrS0NGnevLm0aNFCcnJyZMKECSIicskllzhcYdX5bYNAxH22Lmpe+/bt5fvvv5fTp0+7XX92rI0loc45cuSI5OXlSUpKijRu3Fi/Fi9eLMXFxdK4cWMZOnSo02UCPmXixIly5MgR2bVrl/z666+ydetWOXbsmDRo0EA6duzodHlV5hdDBp4cO3ZMVq9eLXFxcRIaGup0OQEpKSlJ5s2bJxkZGTJ48GC9fsGCBRIdHS1dunRxsLrA1qxZM1m/fv1/rk9OTpaNGzdKZmamNG3a1IHKAN9Wr149/c9Mbm6uLF26VEaOHCkXXHCBw5VVnV80CO655x5p0aKFdOrUSZo2bSr79u2TlJQUycvLk9TUVKfLC1i333679OjRQ0aPHi3Hjx+XVq1ayeLFi+WTTz6R9PR09iBwUGhoqCQkJPzn+tTUVAkODvb4PdSczMxMKS4ulsLCQhERycnJkeXLl4uISK9evdyWvqFm7N69WzIyMqRTp05Sr1492blzpyQnJ0vr1q3lhRdecLq86uHyA9OmTXPFxcW5GjVq5AoODnZFRUW5kpKSXF988YXTpQW8wsJC1yOPPOJq1qyZKyQkxBUbG+tavHix02WhFPfdd5+rQYMGTpcR8Fq2bOkSEY9fv/zyi9PlBaS9e/e64uPjXZGRka6QkBBXq1atXJMnT3YVFRU5XVq18YudCgEAQNX49aRCAABQPjQIAAAADQIAAECDAAAACA0CAAAgNAgAAIBUYGMitv/1jupY9clr4x1VfW14XbyD94zv4j3jm8r7utBDAAAAaBAAAAAaBAAAQGgQAAAAoUEAAACEBgEAABAaBAAAQGgQAAAAoUEAAACEBgEAABAaBAAAQCpwlgFQ3Tp27Kh57NixmocPH6753Xff1Tx79mzNX3/9tZerA4DAQg8BAACgQQAAAESCXOU8F9EXj6UMDg7W3KhRozJvb7ul69evrzkmJkbzmDFjNL/yyiuahwwZ4vZYJ0+e1JycnKz5+eefL7MOK9COco2Li9O8bt06zeHh4WXe988//9TcpEmTaq3LE45yrbju3btrXrhwodv3br75Zs179+6t9HME2numoiZPnqzZfh7VqfPv//8SEhLc7rNx48ZqeW7eM76J448BAEC50SAAAAC+tcqgRYsWmkNCQjTfeOONmrt27ao5IiJC84ABAyr9vAcOHNA8a9YszUlJSZoLCwvd7rNz507N1dXd5q+uu+46zRkZGZrtMI/t0rK/61OnTmm2wwTXX3+95nNXHNj71Cbx8fGa7c+6YsUKJ8qplM6dO2vOzs52sJLAcv/992ueOHGi5jNnzni8fXUMu8D/0EMAAABoEAAAAIeHDOyMcxH3WeflWTVQFbYrzc7KLSoq0mxnSR8+fNjt/seOHdNclRnT/sSu3Lj22ms1p6ena7744ovLfJx9+/Zpnj59uuYlS5Zo3rJli2b7+omITJs2rZwV+xY787t169aafX3IwM5ev+yyyzS3bNnS7XbMIPce+7sODQ11sBL/06VLF8333nuvZrtq5uqrr/Z43wkTJmg+dOiQZjv0bT8ft2/fXrViq4geAgAAQIMAAADQIAAAAOLwHILc3Fy3y/n5+ZqrMofAjsMUFBRo7tatm2a7NC0tLa3Sz4V/zZ07V/O5OztWhJ1/EBYWptku77Tj7bGxsZV+Ll9iD3XKyspysJKKsfNCRo4cqdmOjYqI7Nmzp8ZqCgS33nqr5nHjxnm8jf2d9+nTR3NeXp73CvMDgwcP1jxz5kzNTZs21WznxGzYsEFzVFSU5hkzZnh8fHtfe/u77767cgVXE3oIAAAADQIAAODwkMHRo0fdLj/xxBOabffWN998o9nuJGjt2LFDc48ePTQXFxdrtktDxo8fX/GC8R8dO3bU3Lt3b82lLTGz3f6rVq3SbA+Ssstz7Gtvl3recsstZT5XbWOX79Um8+fP93i9XT6K6mGXq73zzjuaSxtitV3W+/fv915htVTduv/+E9ipUyfN8+bN02yXU2/atEnzCy+8oHnz5s2a69Wrp3nZsmWae/bs6bGGL7/8sqJle03t/AQCAADVigYBAADwrcONVq5cqdnuWmgPu7nmmms0P/jgg5ptl7MdJrC+++47zaNGjapSrYHM7jD56aefag4PD9dsD0/JzMzUbFcf2J2+7G6Dtgv6jz/+0GwPlLI7TdqhChH3VQrnHnzka+wKiYsuusjBSiqvtO5q+7eB6nHfffdpjo6O9ngbO+P93Xff9XZJtZrdebC0oS/7d2xXHxw/ftzj7e1tShsmsAfqLViwoHzF1gB6CAAAAA0CAADgY0MGVmndMX/++afH6+2GKEuXLtVc2nngqJg2bdpotqtBbHfxkSNHNNvDoGyXmD086qOPPvKYK+qCCy5wu/z4449rHjp0aKUftyb06tVL87k/hy+zwxv2QCPr4MGDNVWOX7Ob4TzwwAOa7Web3YDtxRdfrJG6aiu7OuDpp5/WbIc558yZo9kOZ5b275I1adKkMm/zyCOPaLbDok6jhwAAANAgAAAAPjxkUJopU6Zotpvi2Bnrdo/vtWvX1khd/sZuriHivorDdnPbFSB2L3672UZNd4W3aNGiRp+vKmJiYjxeb1fE+CL792CHD3744QfN9m8DFXPppZdqzsjIKPP2s2fP1rx+/XpvlFRrPfvss26X7TCBPdNmzZo1midOnKi5pKTE4+OGhoZqtqsJ7OeP3TTNDuV88MEH5aq9ptFDAAAAaBAAAIBaOGRgNx2yKwvsBjR2H2rbfWa7sV9//XXNdnYp/tGhQwe3y3aYwLrzzjs123MKUDXZ2dmOPbfdYOq2227TbDdxKW3DFTuD2858R8XY33tpx3t/9tlnmu0RvRCJiIjQ/PDDD7t9z37e22GCfv36lfm4rVq10rxw4ULNdvjaWr58uebp06eX+fhOo4cAAADQIAAAALVwyMD66aefNN9///2a7bGgw4YN85gbNGig2e73bTfUCWSvvvqq22U7W9YODTg1TGCPCvbHzaciIyMrfB97zod9veyqm+bNm2sOCQnRbDdwsr9bO8N6+/btmv/66y/N9gjZr776qsJ14x+2yzo5Odnjbewxu/Zcg9I2bAtU9m/bbux0LrtB0IUXXqh5xIgRmu+44w7N7dq10xwWFqbZDkPYnJ6errm0M3Z8CT0EAACABgEAAKjlQwbWihUrNO/bt0+z7fru3r275qlTp2pu2bKl5pdeeklzoO3F3qdPH832iGMR926wDz/8sKZKKpUdJjh3lciOHTtquJrKs13y9ud48803NduNVM7Hzka3QwanT5/WfOLECc05OTma3377bc12NY4dEsrLy9Nsj2+1G0/t2bOnXLXiHxXdgOjnn3/WbF8PuLMbDp17VkBUVJTmX375RXN5VpsdOnRIsz3X4OKLL9Zsz3RZtWpVOSv2DfQQAAAAGgQAAMCPhgys3bt3a77rrrs09+3bV7NdifDQQw9pbt26teYePXp4q0SfZLt+7SxdEZHff/9dsz1e2tvsmQr2HAtr3bp1bpefeuopb5ZUreymKfv379d84403VvixcnNzNa9cuVLz999/r3nbtm0VftyzRo0apdl2u9pubFSM3TO/PKtlSlt9AHd2U6xzNxxavXq1Zruax65as2cNpKamaj569KjmJUuWaLZDBvb62oYeAgAAQIMAAAD46ZCBZbuO0tLSNM+fP1+z3VglPj5ec0JCguYNGzZ4pb7awm5E4+3Nm+wwweTJkzU/8cQTmu0s95SUFLf7FxUVebE673n55ZedLuG87Codqzyz4/Evu4KntDMhLNt9vXfvXm+U5Nfshloi7sNdFWX/fbj55ps12+Ge2jyERg8BAACgQQAAAPx0yMBu0DJw4EDNnTt31myHCSy7WcumTZu8UF3t5O3NiGw3qh0aGDx4sGbbdTpgwACv1oPys5uCoWxr167V3LhxY4+3satB7DktcJZdiVXa5misMgAAALUaDQIAAFC7hwxiYmI0jx07VnP//v01N2vWrMzH+fvvvzXbGfT+eKzu+dj9720Wcd/cY/z48dXyfI899pjmZ555RnOjRo00L1y4UPPw4cOr5XkBJzVp0kRzaZ8xc+bM0VxbV834ozVr1jhdglfRQwAAAGgQAACAWjJkYLv9hwwZotkOE9hjRMvDHvFqjzz2haN9nWJnyp57FKh9DWbNmqXZHpubn5+v+frrr9c8bNgwzddcc43m5s2ba7b78NtuOdt1Ct9hh5TatGmjuSpnJfgze3ZKnTpl/z9s69at3iwHlZSYmOh0CV5FDwEAAKBBAAAAfGzI4KKLLtLctm1bza+99prmK6+8skKPafexnjFjhma7yU2grSaojODgYM32yF67QdDx48c122OkS2O7RdevX6/52WefrXSdqBl2SKk8XeCByG62deutt2q2nzenTp3S/Prrr2vOy8vzbnGolMsvv9zpEryKdzIAAKBBAAAAaBAAAABxYA5BZGSk5rlz57p9z465VXSsxo5Hp6SkaLZL2EpKSir0mIEmKytLc3Z2ttv37MFQll2OaOeAWHY5oj34o7p2PISzbrjhBs2pqanOFeJjIiIiNJe2Y+rBgwc1T5gwwdsloYo+//xzzXbujL/MQ6OHAAAA0CAAAABeHDLo0qWLZnu+/XXXXaf5kksuqfDjnjhxQrPdMW/q1Kmai4uLK/y4EDlw4IBme0CUiMhDDz2kefLkyWU+1syZMzW/8cYbmn/88ceqlAgfce7hV0Ag2L17t+Z9+/ZptkPcV1xxheY//vijZgqrJvQQAAAAGgQAAMCLQwZJSUke8/nk5ORoXr16tebTp09rtisICgoKqlAhzufw4cNul6dMmeIxI3BkZmZqHjRokIOV1A579uzRbFdBde3a1YlyUM3sMPX8+fM128Pyxo0bp9n+++ar6CEAAAA0CAAAgEiQ69yD70u7IbOKvaKcv/7z4rXxjqq+Nrwu3sF7xncF0nsmPDxc87JlyzTbg6zef/99zSNGjNBc0yvhyvu60EMAAABoEAAAAIYMHEf3p+8KpO7P2oT3jO8K1PeMHT6wqwxGjx6tOTY2VnNNrzhgyAAAAJQbDQIAAMCQgdPo/vRdgdr96et4z/gu3jO+iSEDAABQbjQIAABA+YcMAACA/6KHAAAA0CAAAAA0CAAAgNAgAAAAQoMAAAAIDQIAACA0CAAAgNAgAAAAQoMAAACIyP8AD/Odvxg/M/kAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 640x480 with 5 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#visualize Sample Traning Data \n",
"for i in range(5):\n",
" plt.subplot(1,5,i+1)\n",
" plt.imshow(train_images[i],cmap='gray')\n",
" plt.title(train_labels[i])\n",
" plt.axis('off')"
]
},
{
"cell_type": "markdown",
"id": "5e6329a7-76c8-4851-944d-63c83046a8cc",
"metadata": {},
"source": [
"# model creation"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "d538ccae-1104-4be7-ae82-abff974847d3",
"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_1\"</span>\n",
"</pre>\n"
],
"text/plain": [
"\u001b[1mModel: \"sequential_1\"\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",
"│ dense_3 (<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\">500</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">392,500</span> │\n",
"├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
"│ dense_4 (<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\">50,100</span> │\n",
"├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
"│ dense_5 (<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",
"│ dense_3 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m500\u001b[0m) │ \u001b[38;5;34m392,500\u001b[0m │\n",
"├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
"│ dense_4 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m100\u001b[0m) │ \u001b[38;5;34m50,100\u001b[0m │\n",
"├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
"│ dense_5 (\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\">443,610</span> (1.69 MB)\n",
"</pre>\n"
],
"text/plain": [
"\u001b[1m Total params: \u001b[0m\u001b[38;5;34m443,610\u001b[0m (1.69 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\">443,610</span> (1.69 MB)\n",
"</pre>\n"
],
"text/plain": [
"\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m443,610\u001b[0m (1.69 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": [
"mymodel = models.Sequential()\n",
"mymodel.add(layers.Dense(500 , activation='relu' , input_shape = (784,) ))\n",
"mymodel.add(layers.Dense(100 , activation='relu' ))\n",
"mymodel.add(layers.Dense(10 , activation='softmax' ))\n",
"\n",
"mymodel.summary()\n",
"mymodel.compile(\n",
" optimizer=optimizers.SGD(learning_rate=0.001),\n",
" loss=losses.categorical_crossentropy\n",
")\n"
]
},
{
"cell_type": "markdown",
"id": "4814a7a9-0acd-41d4-8802-400735eb72c3",
"metadata": {},
"source": [
"# Train and Evaluation"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "630c5c9b-85b0-4cc0-aa27-aaa405d6338c",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 6ms/step - loss: 2.1530 - val_loss: 1.9959\n",
"Epoch 2/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 1.8536 - val_loss: 1.6980\n",
"Epoch 3/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 1.5651 - val_loss: 1.4134\n",
"Epoch 4/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 1.3076 - val_loss: 1.1737\n",
"Epoch 5/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 1.1013 - val_loss: 0.9892\n",
"Epoch 6/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.9456 - val_loss: 0.8521\n",
"Epoch 7/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.8299 - val_loss: 0.7510\n",
"Epoch 8/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.7434 - val_loss: 0.6750\n",
"Epoch 9/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.6776 - val_loss: 0.6170\n",
"Epoch 10/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.6265 - val_loss: 0.5717\n",
"Epoch 11/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.5857 - val_loss: 0.5357\n",
"Epoch 12/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.5528 - val_loss: 0.5065\n",
"Epoch 13/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.5256 - val_loss: 0.4824\n",
"Epoch 14/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.5027 - val_loss: 0.4620\n",
"Epoch 15/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.4832 - val_loss: 0.4446\n",
"Epoch 16/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.4664 - val_loss: 0.4298\n",
"Epoch 17/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.4517 - val_loss: 0.4169\n",
"Epoch 18/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.4388 - val_loss: 0.4054\n",
"Epoch 19/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.4273 - val_loss: 0.3955\n",
"Epoch 20/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.4170 - val_loss: 0.3864\n",
"Epoch 21/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.4078 - val_loss: 0.3783\n",
"Epoch 22/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.3994 - val_loss: 0.3710\n",
"Epoch 23/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.3917 - val_loss: 0.3643\n",
"Epoch 24/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.3848 - val_loss: 0.3581\n",
"Epoch 25/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.3783 - val_loss: 0.3527\n",
"Epoch 26/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.3723 - val_loss: 0.3473\n",
"Epoch 27/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.3668 - val_loss: 0.3425\n",
"Epoch 28/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.3616 - val_loss: 0.3382\n",
"Epoch 29/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.3567 - val_loss: 0.3340\n",
"Epoch 30/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.3521 - val_loss: 0.3299\n",
"Epoch 31/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.3478 - val_loss: 0.3262\n",
"Epoch 32/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.3437 - val_loss: 0.3227\n",
"Epoch 33/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.3399 - val_loss: 0.3194\n",
"Epoch 34/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.3362 - val_loss: 0.3162\n",
"Epoch 35/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.3326 - val_loss: 0.3132\n",
"Epoch 36/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.3294 - val_loss: 0.3103\n",
"Epoch 37/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.3261 - val_loss: 0.3076\n",
"Epoch 38/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.3230 - val_loss: 0.3050\n",
"Epoch 39/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.3201 - val_loss: 0.3025\n",
"Epoch 40/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.3173 - val_loss: 0.3001\n",
"Epoch 41/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.3145 - val_loss: 0.2979\n",
"Epoch 42/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.3119 - val_loss: 0.2957\n",
"Epoch 43/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.3094 - val_loss: 0.2934\n",
"Epoch 44/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.3069 - val_loss: 0.2912\n",
"Epoch 45/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.3044 - val_loss: 0.2894\n",
"Epoch 46/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.3022 - val_loss: 0.2872\n",
"Epoch 47/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.2999 - val_loss: 0.2854\n",
"Epoch 48/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.2977 - val_loss: 0.2835\n",
"Epoch 49/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.2955 - val_loss: 0.2819\n",
"Epoch 50/50\n",
"\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 5ms/step - loss: 0.2935 - val_loss: 0.2800\n"
]
}
],
"source": [
"history = mymodel.fit(X_train,y_train,batch_size=128,epochs=50,validation_split=0.2)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "5faabfcd-bd9c-4db2-870e-ac838ff72265",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x1c302025310>"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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riMpKckAjPT09Hr8mssoyHWdznr9S6PTr98zln58rHH+LBERqZXc3Fxj//79Rm5u7pVvbobuvvtu45ZbbjGeeeYZo2fPnq7yvn37Gk888YTrfWZmphEUFGQ89NBDrrJOnToZzz//fI3+HMBYvXq1YRiGsWTJEiMkJMTIyspyXX///fcNq9VqpKSkVPn5YcOGGQ888ECV1+644w5j8uTJVV673D+f9PT0Gv/93axmgaWnpwNmP2Z1tm/fzvjx493KbrrpJnbs2EFhYeFl79m2bVuV37lgwQKCgoJcR2xsbH1+RvWOfwx/6gmvTXYV9dRMMBERaUB33nkn77//Pq+88oqr9QegW7durFq1ioSEBPbs2cMPfvCDSjPG6vNnOp1O7r77br7++ms2bdrEAw88wIwZM4iMjOT48ePMnz+f7du3c/LkST788EMOHz5M7969yc3N5f7772fz5s2cPHmSTz/9lC+//NJtjFBjaDYByDAM5s2bx7XXXkvfvn2rvS8lJYXIyEi3ssjISIqKikhLS7vsPSkpKVV+5/z580lPT3cdSUlJ9fw11fALh6wUSD3gmtrYo3QgtHaFFxGRhnDjjTcSGhrKoUOH+MEPfuAqf/755wkJCWHEiBFMnjyZm266iauvvrpB/kxfX18++OADzp8/z5AhQ7jtttsYM2YMixYtcl0/ePAgt956Kz169GDWrFncf//9/PSnP8Vms3Hu3DnuuusuevTowbRp05g4cSKPP/54g9StOs1mFtj999/PV199xSeffHLFey/tZzRKw0TF8qruqa5/0uFw4HA0wQDk0K5g9YaCTEj/FoJj3fYEu1wdRUREasJms3H6dOUB2507d2bjxo1uZXPmzHF7f+LEiRr/OcYlaxT169ev0veXiYyMrHZMj91uZ/ny5TX+cxtKs2gBeuCBB1i7di2bNm2iQ4cOl703KiqqUktOamoqXl5ehIWFXfaeS1uFmpyXHcJLp/alHgCgc5gf3jYL2QXFnLqY68HKiYiItB0eDUCGYXD//fezatUqNm7cSFxc3BU/M3z4cDZs2OBW9uGHHzJ48GDXoknV3TNixIiGq3xdRcSbr6n7AbB7WekSbm6JceRMVnWfEhERaTJvvvkm/v7+VR59+vTxdPUahEe7wObMmcO//vUv3n33XQICAlytNkFBQfj4mBuFzp8/n1OnTvH6668D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auznrUHQIiIi0uaoBUhERETaHAUgERERaXMUgERERKTNUQASERGRNkcBqAm9/PLLxMXF4XQ6GTRoEB9//LGnq9RqbN26lcmTJxMTE4PFYmHNmjVu1w3D4LHHHiMmJgYfHx+uv/569u3b55nKtnALFixgyJAhBAQEEBERwdSpUzl06JDbPXreDWfx4sX079/ftRjc8OHDWb9+veu6nnXjWrBgARaLhblz57rK9MwbzmOPPYbFYnE7oqKiXNcb81krADWRFStWMHfuXB5++GF2797NqFGjmDhxIomJiZ6uWquQnZ3NgAEDWLRoUZXXn332WZ577jkWLVrEl19+SVRUFOPGjXPt+yY1t2XLFubMmcNnn33Ghg0bKCoqYvz48WRnZ7vu0fNuOB06dODpp59mx44d7NixgxtvvJEpU6a4/hLQs248X375JUuWLKF///5u5XrmDatPnz4kJye7jr1797quNeqzNqRJXHPNNcbs2bPdynr16mX85je/8VCNWi/AWL16tet9SUmJERUVZTz99NOusry8PCMoKMj461//6oEati6pqakGYGzZssUwDD3vphASEmL84x//0LNuRJmZmUb37t2NDRs2GNddd53x0EMPGYahf78b2qOPPmoMGDCgymuN/azVAtQECgoK2LlzJ+PHj3crHz9+PNu2bfNQrdqO48ePk5KS4vb8HQ4H1113nZ5/A0hPTwcgNDQU0PNuTMXFxbz11ltkZ2czfPhwPetGNGfOHL7zne8wduxYt3I984Z35MgRYmJiiIuL44477uDYsWNA4z9rbYbaBNLS0iguLiYyMtKtPDIykpSUFA/Vqu0oe8ZVPf+TJ096okqthmEYzJs3j2uvvZa+ffsCet6NYe/evQwfPpy8vDz8/f1ZvXo18fHxrr8E9Kwb1ltvvcWuXbv48ssvK13Tv98Na+jQobz++uv06NGDM2fO8OSTTzJixAj27dvX6M9aAagJWSwWt/eGYVQqk8aj59/w7r//fr766is++eSTStf0vBtOz549SUhI4OLFi6xcuZK7776bLVu2uK7rWTecpKQkHnroIT788EOcTme19+mZN4yJEye6zvv168fw4cPp2rUrr732GsOGDQMa71mrC6wJhIeHY7PZKrX2pKamVkq20vDKZhTo+TesBx54gLVr17Jp0yY6dOjgKtfzbnh2u51u3boxePBgFixYwIABA/jLX/6iZ90Idu7cSWpqKoMGDcLLywsvLy+2bNnCCy+8gJeXl+u56pk3Dj8/P/r168eRI0ca/d9vBaAmYLfbGTRoEBs2bHAr37BhAyNGjPBQrdqOuLg4oqKi3J5/QUEBW7Zs0fOvA8MwuP/++1m1ahUbN24kLi7O7bqed+MzDIP8/Hw960YwZswY9u7dS0JCgusYPHgwd955JwkJCXTp0kXPvBHl5+dz4MABoqOjG//f73oPo5Yaeeuttwxvb29j6dKlxv79+425c+cafn5+xokTJzxdtVYhMzPT2L17t7F7924DMJ577jlj9+7dxsmTJw3DMIynn37aCAoKMlatWmXs3bvX+P73v29ER0cbGRkZHq55y3PfffcZQUFBxubNm43k5GTXkZOT47pHz7vhzJ8/39i6datx/Phx46uvvjJ++9vfGlar1fjwww8Nw9CzbgoVZ4EZhp55Q/r5z39ubN682Th27Jjx2WefGTfffLMREBDg+ruxMZ+1AlATeumll4xOnToZdrvduPrqq13ThqX+Nm3aZACVjrvvvtswDHM65aOPPmpERUUZDofDGD16tLF3717PVrqFquo5A8arr77qukfPu+H8+Mc/dv3vRrt27YwxY8a4wo9h6Fk3hUsDkJ55w5k+fboRHR1teHt7GzExMcYtt9xi7Nu3z3W9MZ+1xTAMo/7tSCIiIiIth8YAiYiISJujACQiIiJtjgKQiIiItDkKQCIiItLmKACJiIhIm6MAJCIiIm2OApCIiIi0OQpAIiIi0uYoAImIVMNisbBmzRpPV0NEGoECkIg0SzNnzsRisVQ6JkyY4OmqiUgr4OXpCoiIVGfChAm8+uqrbmUOh8NDtRGR1kQtQCLSbDkcDqKiotyOkJAQwOyeWrx4MRMnTsTHx4e4uDjefvttt8/v3buXG2+8ER8fH8LCwpg1axZZWVlu97zyyiv06dMHh8NBdHQ0999/v9v1tLQ0vve97+Hr60v37t1Zu3at69qFCxe48847adeuHT4+PnTv3r1SYBOR5kkBSERarN///vfceuut7Nmzhx/+8Id8//vf58CBAwDk5OQwYcIEQkJC+PLLL3n77bf56KOP3ALO4sWLmTNnDrNmzWLv3r2sXbuWbt26uf0Zjz/+ONOmTeOrr75i0qRJ3HnnnZw/f9715+/fv5/169dz4MABFi9eTHh4eNM9ABGpuwbZU15EpIHdfffdhs1mM/z8/NyOJ554wjAMwwCM2bNnu31m6NChxn333WcYhmEsWbLECAkJMbKyslzX33//fcNqtRopKSmGYRhGTEyM8fDDD1dbB8D43e9+53qflZVlWCwWY/369YZhGMbkyZONH/3oRw3zg0WkSWkMkIg0WzfccAOLFy92KwsNDXWdDx8+3O3a8OHDSUhIAODAgQMMGDAAPz8/1/WRI0dSUlLCoUOHsFgsnD59mjFjxly2Dv3793ed+/n5ERAQQGpqKgD33Xcft956K7t27WL8+PFMnTqVESNG1Om3ikjTUgASkWbLz8+vUpfUlVgsFgAMw3CdV3WPj49Pjb7P29u70mdLSkoAmDhxIidPnuT999/no48+YsyYMcyZM4c//elPtaqziDQ9jQESkRbrs88+q/S+V69eAMTHx5OQkEB2drbr+qefforVaqVHjx4EBATQuXNn/ve//9WrDu3atWPmzJm88cYbLFy4kCVLltTr+0SkaagFSESarfz8fFJSUtzKvLy8XAON3377bQYPHsy1117Lm2++yRdffMHSpUsBuPPOO3n00Ue5++67eeyxxzh79iwPPPAAM2bMIDIyEoDHHnuM2bNnExERwcSJE8nMzOTTTz/lgQceqFH9HnnkEQYNGkSfPn3Iz8/nvffeo3fv3g34BESksSgAiUiz9d///pfo6Gi3sp49e3Lw4EHAnKH11ltv8X//939ERUXx5ptvEh8fD4Cvry8ffPABDz30EEOGDMHX15dbb72V5557zvVdd999N3l5eTz//PP84he/IDw8nNtuu63G9bPb7cyfP58TJ07g4+PDqFGjeOuttxrgl4tIY7MYhmF4uhIiIrVlsVhYvXo1U6dO9XRVRKQF0hggERERaXMUgERERKTN0RggEWmR1HsvIvWhFiARERFpcxSAREREpM1RABIREZE2RwFIRERE2hwFIBEREWlzFIBERESkzVEAEhERkTZHAUhERETanP8P3yeM69Pd/cEAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# plot losses \n",
"losses = history.history['loss']\n",
"val_losses = history.history['val_loss']\n",
"\n",
"plt.plot(losses)\n",
"plt.plot(val_losses)\n",
"plt.xlabel('Epochs')\n",
"plt.ylabel('loss')\n",
"\n",
"plt.legend(['loss','val_loss'])\n"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "ef70d735-63a6-4b11-b659-263f9030acd7",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 1ms/step - loss: 0.2786\n",
"test loss 0.27857887744903564\n",
"\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 1ms/step\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABJ4AAACKCAYAAADrG4B0AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAMxhJREFUeJzt3XmcjeX/+PH3MGYwxk7Zy8eWhGz5IEuKMEhItpIlhA9FKZQtS6Qo38iSkC1Lm/qYlEFEWbMrlUFR1sFkd/3++Py6uq6bGWfOnPucM2dez8fD4/G+zvuc+75mrrnPuc/tvt5XmFJKCQAAAAAAAOBjGQLdAQAAAAAAAIQmLjwBAAAAAADAFVx4AgAAAAAAgCu48AQAAAAAAABXcOEJAAAAAAAAruDCEwAAAAAAAFzBhScAAAAAAAC4ggtPAAAAAAAAcAUXngAAAAAAAOCKoLnwtHr1agkLC7vpv40bNwa6e5b4+Hjp3LmzFCxYUCIjI6VQoULSokWLQHcrzZgxY4aEhYVJtmzZAt2VGzC2Kbdu3Tpp3Lix5MqVS7JkySIlS5aUkSNHBrpbIiLy448/yoABA6Ry5cqSM2dOyZ07t9SsWVOWLFkS6K4FrVWrVknnzp2lTJkyEhUVJYUKFZLmzZvLli1bAt017f3330/y8yIsLEzGjh0b6C4GnU6dOiX7Owu2z1kRkT179khkZKSEhYXJ5s2bA92doJQWjlcRkaNHj0qnTp0kf/78kjlzZilfvrzMnDkz0N0Ket9//700bNhQoqOjJVu2bFKvXj1Zv359oLulJSYmyuOPPy6lS5eW6OhoiYqKkrvvvlteffVVSUxMDHT3gtL27dulSZMmUrRoUcmSJYvkzp1b/v3vf8sHH3wQ6K5Zjh07Jr1795bixYtLlixZpFixYtKlSxc5dOhQoLsW1IL5nFhEOG/ywrZt2+SRRx6RggULStasWaVMmTIyYsQI+euvvwLdNRFJW+fE4YHugNPo0aOlXr161mPlypULUG9utGvXLqlbt64UL15cXn/9dSlcuLAcPXpUYmNjA921NOG3336TAQMGSMGCBSUhISHQ3bEwtik3f/586dixozz22GMyZ84cyZYtm/z888/y+++/B7prIiLy5Zdfyueffy4dO3aUqlWrytWrV2XRokXSunVrGT58uLzyyiuB7mLQmTJlipw8eVL69u0rZcuWlePHj8uECROkevXqEhsbKw888ECguyhNmjSRDRs23PD4K6+8IitXruRi8U28/PLL0qNHjxseb9q0qURGRkrVqlUD0KukXbt2TTp37ix58+YNmveTYJQWjteEhASpVauWXL58WcaNGycFChSQBQsWSNeuXSUhIUGee+65QHcxKG3atElq164t1apVk7lz54pSSsaNGyf169eXuLg4+fe//x3oLsqVK1dEKSXPPfec3HnnnZIhQwZZu3atjBgxQlavXi1fffVVoLsYdM6cOSNFihSRtm3bSqFChSQxMVHmzZsnHTt2lIMHD8qQIUMC3UW5dOmS1K5dW06fPi3Dhw+XsmXLyv79+2Xo0KESGxsre/fulejo6EB3M+gE+znx31q1aiX9+/e3HitatGiAehPc9uzZIzVq1JDSpUvLxIkTJW/evPo9bsuWLfLJJ58Euotp65xYBYm4uDglImrx4sU+3e7JkyfV8ePHfbKt69evq4oVK6qKFSuqixcv+mSb6U1MTIxq2rSpevLJJ1VUVFSqtsXYBtaRI0dUVFSU6tmzp0+368txPX78uLp+/foNjzdp0kRlzZqVsb6JP/7444bHzp07p2677TZVv359r7fry3G9mfPnz6ts2bKpWrVqubaPULN69WolImrIkCFeb8OtcR0/frwqVKiQmjRpkhIRtWnTJp/vIxSkheN1zJgxSkTU5s2brccbNGigoqKi1OnTp32yn1DTsGFDddttt6nExET92NmzZ1XevHlVjRo1vN6u2+/FSin1wgsvKBFRP//8s6v7CSX33XefKlKkiNev9+W4rly5UomImjFjhvX4/PnzlYioZcuW+WQ/oSQtnBMrpZSIqF69evlse6Fu8ODBSkTUgQMHrMeffvppJSLq1KlTXm03vZ4TB81UO7fs2LFDChQoII0aNZI5c+bIuXPnvN7W2rVrZfv27dKvXz+JjIz0YS/Thw8++EDWrFkj77zzjk+2x9gG1owZMyQxMVEGDhzo0+36clzz5s0rYWFhNzxerVo1+euvv+TUqVOp6WpIyp8//w2PZcuWTcqWLSuHDx/2eru+HNebWbRokZw/f166du3q0+2GspkzZ0pYWJh07tzZ6224Ma4//fSTvPLKK/LOO+9I9uzZU729UJYWjtf169fLbbfdJpUrV7Yej4mJkcTERFmxYoXX2w5l69evl7p1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9evreP369f7uDvzkww8/tNpDhw69aSwicvHiRb/0KdRlypTJar/22ms6btGiRbKvNc97zNchMO644w4dz50718qZNajHjBlj5RYuXGi1r127puNJkyZZucjIyNR206+44wkAAAAAAACu4MITAAAAAAAAXBESU+327t2rY+dtoY899liSr6tXr16SOfO2NhGRzz//XMcvvvhiSrsY8sxbBjdv3hzAnnhvxIgRVnvixIk6Pnr0qJ97k7Z88MEHVnvHjh067tSpk5Uzp7yaU5xERH799Vcdz5kzx8rlyJHDaj/wwAM6dk6xXbx4sQe9hjfM6XRdunSxcuY4/PDDD17vw5yS5Zw6ZE7DM5ejFRFZs2aNjgcPHmzlsmfPruMrV65YuTx58njd1/Tm559/ttrmtFbn9HWn1PxNwDNpdbrLvn37rLb53uKcotC7d28dv/XWW+52DCIiUrx4caudOXNmHZvTmBFanOdS5md8WFiYv7uTpphTiUVEypUrp+N27dpZOfO8yjy2nLlbGTRokI7j4+M9fh3c8cwzz+jYeZ5pfsd0Tq1zcpYsScu44wkAAAAAAACu4MITAAAAAAAAXMGFJwAAAAAAALgiTCmlPHpiGpnL61zydcaMGTquUqWKlcufP7/VPnjwoI6dNQWGDRvmmw76gIdD5pG0Mq7pAeMamnw5riKBH9vw8H9KA5pLxYqInD59WscnT570V5duylkTLCEhQcfOz4no6GgdHzhwwON9pMdj1rnU8/fff6/j8uXLW7lLly5Z7dtvv13HZh2vYJMexzWY9e3b12pPmDBBx61bt7ZyH330UZLbYVyT179/f6s9fvx4HZt1G0XsY915Ln3ixAkXepe0UPuMDSbOujTHjx/XsbPG4oULF3y+/7R8zDo/Kzds2KDjypUre7XNY8eOWe2XXnrJas+ePVvHvj4ufCktj2tKLF26VMfNmze3cq+++qqOzXNnEZE6depY7caNG+t43bp1Vq5FixY6PnfunPed9QFPxpU7ngAAAAAAAOAKLjwBAAAAAADAFeG3fkra8scff1jtpk2b6rhjx45WzrlE5fDhw3X8559/utA7AEjbrl69quOUTEvzN3NqnZPzc8LZRtIqVKhgtZ3T60zOaU/BPL0OwWvy5MlWu1WrVjo2l6QWSX6qHbznPO4PHz6sY+eUWoSOZs2aBboLadaVK1es9rvvvqvjp59+2sqZpWC2bNli5bZt26bjkSNHWrlDhw6lup8IjCFDhiSZc04fNKew7dq1y8oFenpdSnHHEwAAAAAAAFzBhScAAAAAAAC4ggtPAAAAAAAAcEXI1XhKzty5c5NtAwAA31iwYEGgu4AQcO3aNattLjWdIQP/f+oPzpp5DzzwgI7TWo0RJC8iIkLHzz33nJV77bXXdExtr5SZPn36TWPgVlauXKnjwYMHB7AnqccnNgAAAAAAAFzBhScAAAAAAAC4Il1NtQMAAN779ddfrfZ3332n43vuucfKHTlyxC99Qvpy/fr1m8ZInZ07d1pt81j/8ssvrdyBAwf80ie4r0iRIlZ7xIgROi5RooSVW7hwoY459oDkme+bzZs3T/J5sbGxVvubb76x2m+88YaOL1++7KPeBQZ3PAEAAAAAAMAVXHgCAAAAAACAK7jwBAAAAAAAAFeEKaWUR08MC3O7L/CQh0PmEcY1eDCuocmX4yrC2AYTjlmR3Llz6zhfvnxWbv/+/f7ujk8wrqGJcQ1NfMaGLo7Z0MS4hiZPxpU7ngAAAAAAAOAKLjwBAAAAAADAFUy1S4O4RTE0Ma6hiWkAoYtjNjQxrqGJcQ1NfMaGLo7Z0MS4hiam2gEAAAAAACBguPAEAAAAAAAAV3DhCQAAAAAAAK7wuMYTAAAAAAAAkBLc8QQAAAAAAABXcOEJAAAAAAAAruDCEwAAAAAAAFzBhScAAAAAAAC4ggtPAAAAAAAAcAUXngAAAAAAAOAKLjwBAAAAAADAFVx4AgAAAAAAgCu48AQAAAAAAABX/D/SsWbAGX7kygAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 1500x1500 with 10 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#Evaluation on test data \n",
"test_loss = mymodel.evaluate(X_test,y_test)\n",
"print(\"test loss\",test_loss)\n",
"\n",
"test_labels_p = mymodel.predict(X_test)\n",
"test_labels_p = np.argmax(test_labels_p, axis=1 )\n",
"\n",
"n = 0\n",
"\n",
"f,axs = plt.subplots(1,10,figsize = (15,15))\n",
"for i in range(len(test_labels)): \n",
" if n >= 10 :\n",
" break\n",
" if (test_labels_p[i] != test_labels[i]):\n",
" axs[n].imshow(test_images[i],cmap='gray')\n",
" axs[n].set_title(f'{test_labels[i]} -> {test_labels_p[i]}')\n",
" axs[n].axis('off')\n",
" n= n+1"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "79b41f2d-d6f6-4ede-8af0-5a4e600157c3",
"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.13.9"
}
},
"nbformat": 4,
"nbformat_minor": 5
}