{ "cells": [ { "cell_type": "code", "execution_count": 3, "id": "449ccd64-ec1a-46b6-9e95-cb03f4d01296", "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": "06e6b0ab-0b31-4ade-ac9f-4e1d37de2c85", "metadata": {}, "source": [ "# data Prepration " ] }, { "cell_type": "code", "execution_count": 4, "id": "e70e5895-f688-4b36-8ee3-3e9fa77433c1", "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,28,28,1)\n", "X_test = test_images.reshape(10000,28,28,1)\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" ] }, { "cell_type": "markdown", "id": "0d73c52c-40f2-4a37-a289-5bd24f24cec7", "metadata": {}, "source": [ "# model creation " ] }, { "cell_type": "code", "execution_count": 9, "id": "e33a3d4a-7f5d-4763-b3c4-ede9a74b484a", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
Model: \"functional_1\"\n",
       "
\n" ], "text/plain": [ "\u001b[1mModel: \"functional_1\"\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓\n",
       "┃ Layer (type)                         ┃ Output Shape                ┃         Param # ┃\n",
       "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩\n",
       "│ input_layer_4 (InputLayer)           │ (None, 28, 28, 1)           │               0 │\n",
       "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
       "│ conv2d_5 (Conv2D)                    │ (None, 14, 14, 32)          │             320 │\n",
       "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
       "│ batch_normalization_5                │ (None, 14, 14, 32)          │             128 │\n",
       "│ (BatchNormalization)                 │                             │                 │\n",
       "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
       "│ activation_2 (Activation)            │ (None, 14, 14, 32)          │               0 │\n",
       "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
       "│ conv2d_6 (Conv2D)                    │ (None, 7, 7, 64)            │          18,496 │\n",
       "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
       "│ batch_normalization_6                │ (None, 7, 7, 64)            │             256 │\n",
       "│ (BatchNormalization)                 │                             │                 │\n",
       "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
       "│ activation_3 (Activation)            │ (None, 7, 7, 64)            │               0 │\n",
       "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
       "│ flatten_1 (Flatten)                  │ (None, 3136)                │               0 │\n",
       "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
       "│ dense_1 (Dense)                      │ (None, 10)                  │          31,370 │\n",
       "└──────────────────────────────────────┴─────────────────────────────┴─────────────────┘\n",
       "
\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", "│ input_layer_4 (\u001b[38;5;33mInputLayer\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m28\u001b[0m, \u001b[38;5;34m28\u001b[0m, \u001b[38;5;34m1\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n", "│ conv2d_5 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m14\u001b[0m, \u001b[38;5;34m14\u001b[0m, \u001b[38;5;34m32\u001b[0m) │ \u001b[38;5;34m320\u001b[0m │\n", "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n", "│ batch_normalization_5 │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m14\u001b[0m, \u001b[38;5;34m14\u001b[0m, \u001b[38;5;34m32\u001b[0m) │ \u001b[38;5;34m128\u001b[0m │\n", "│ (\u001b[38;5;33mBatchNormalization\u001b[0m) │ │ │\n", "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n", "│ activation_2 (\u001b[38;5;33mActivation\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m14\u001b[0m, \u001b[38;5;34m14\u001b[0m, \u001b[38;5;34m32\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n", "│ conv2d_6 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m7\u001b[0m, \u001b[38;5;34m7\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m18,496\u001b[0m │\n", "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n", "│ batch_normalization_6 │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m7\u001b[0m, \u001b[38;5;34m7\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m256\u001b[0m │\n", "│ (\u001b[38;5;33mBatchNormalization\u001b[0m) │ │ │\n", "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n", "│ activation_3 (\u001b[38;5;33mActivation\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m7\u001b[0m, \u001b[38;5;34m7\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n", "│ flatten_1 (\u001b[38;5;33mFlatten\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m3136\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n", "│ dense_1 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m) │ \u001b[38;5;34m31,370\u001b[0m │\n", "└──────────────────────────────────────┴─────────────────────────────┴─────────────────┘\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
 Total params: 50,570 (197.54 KB)\n",
       "
\n" ], "text/plain": [ "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m50,570\u001b[0m (197.54 KB)\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
 Trainable params: 50,378 (196.79 KB)\n",
       "
\n" ], "text/plain": [ "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m50,378\u001b[0m (196.79 KB)\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
 Non-trainable params: 192 (768.00 B)\n",
       "
\n" ], "text/plain": [ "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m192\u001b[0m (768.00 B)\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "myInput = layers.Input(shape=(28,28,1))\n", "conv1 = layers.Conv2D(32,3, padding='same', strides=2 )(myInput)\n", "bn1 = layers.BatchNormalization()(conv1)\n", "ac1 = layers.Activation('relu')(bn1)\n", "conv2 = layers.Conv2D(64,3, padding='same', strides=2 )(ac1)\n", "bn2 = layers.BatchNormalization()(conv2)\n", "ac2=layers.Activation('relu')(bn2)\n", "\n", "flat = layers.Flatten()(ac2)\n", "out_layer = layers.Dense(10,activation='softmax')(flat)\n", "\n", "mymodel = models.Model(myInput,out_layer)\n", "\n", "\n", "mymodel.summary()\n", "mymodel.compile(\n", " optimizer=optimizers.SGD(learning_rate=0.001),\n", " loss=losses.categorical_crossentropy\n", ")\n", "\n", "\n" ] }, { "cell_type": "markdown", "id": "49ed788e-2c4e-4a77-9c86-6da3d1dcd089", "metadata": {}, "source": [ "# Train and Evaluation" ] }, { "cell_type": "code", "execution_count": 10, "id": "042a17cd-f9c0-4eea-975c-bc1bd4257a90", "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[1m5s\u001b[0m 11ms/step - loss: 1.1879 - val_loss: 1.2940\n", "Epoch 2/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.5931 - val_loss: 0.4890\n", "Epoch 3/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.4617 - val_loss: 0.3935\n", "Epoch 4/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.3955 - val_loss: 0.3476\n", "Epoch 5/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.3528 - val_loss: 0.3151\n", "Epoch 6/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.3217 - val_loss: 0.2909\n", "Epoch 7/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.2972 - val_loss: 0.2712\n", "Epoch 8/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.2775 - val_loss: 0.2564\n", "Epoch 9/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.2610 - val_loss: 0.2423\n", "Epoch 10/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.2469 - val_loss: 0.2302\n", "Epoch 11/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.2345 - val_loss: 0.2196\n", "Epoch 12/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.2236 - val_loss: 0.2103\n", "Epoch 13/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.2140 - val_loss: 0.2024\n", "Epoch 14/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.2051 - val_loss: 0.1950\n", "Epoch 15/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.1971 - val_loss: 0.1880\n", "Epoch 16/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.1901 - val_loss: 0.1819\n", "Epoch 17/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.1834 - val_loss: 0.1765\n", "Epoch 18/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.1773 - val_loss: 0.1715\n", "Epoch 19/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.1721 - val_loss: 0.1668\n", "Epoch 20/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.1669 - val_loss: 0.1627\n", "Epoch 21/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.1620 - val_loss: 0.1586\n", "Epoch 22/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.1577 - val_loss: 0.1551\n", "Epoch 23/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.1537 - val_loss: 0.1514\n", "Epoch 24/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.1497 - val_loss: 0.1479\n", "Epoch 25/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.1463 - val_loss: 0.1452\n", "Epoch 26/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.1428 - val_loss: 0.1422\n", "Epoch 27/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.1397 - val_loss: 0.1398\n", "Epoch 28/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.1366 - val_loss: 0.1371\n", "Epoch 29/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.1337 - val_loss: 0.1344\n", "Epoch 30/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.1309 - val_loss: 0.1326\n", "Epoch 31/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.1286 - val_loss: 0.1299\n", "Epoch 32/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.1258 - val_loss: 0.1281\n", "Epoch 33/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.1237 - val_loss: 0.1261\n", "Epoch 34/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.1213 - val_loss: 0.1240\n", "Epoch 35/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.1194 - val_loss: 0.1224\n", "Epoch 36/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 11ms/step - loss: 0.1173 - val_loss: 0.1205\n", "Epoch 37/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.1151 - val_loss: 0.1189\n", "Epoch 38/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.1133 - val_loss: 0.1174\n", "Epoch 39/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.1115 - val_loss: 0.1161\n", "Epoch 40/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.1097 - val_loss: 0.1143\n", "Epoch 41/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.1082 - val_loss: 0.1129\n", "Epoch 42/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.1064 - val_loss: 0.1116\n", "Epoch 43/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.1050 - val_loss: 0.1101\n", "Epoch 44/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 12ms/step - loss: 0.1035 - val_loss: 0.1090\n", "Epoch 45/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.1020 - val_loss: 0.1080\n", "Epoch 46/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.1007 - val_loss: 0.1066\n", "Epoch 47/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.0992 - val_loss: 0.1056\n", "Epoch 48/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.0980 - val_loss: 0.1044\n", "Epoch 49/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.0966 - val_loss: 0.1033\n", "Epoch 50/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 11ms/step - loss: 0.0953 - val_loss: 0.1022\n" ] } ], "source": [ "history = mymodel.fit(X_train,y_train,batch_size=128,epochs=50,validation_split=0.2)" ] }, { "cell_type": "code", "execution_count": 11, "id": "60822a89-5a77-4b5d-85e0-592889588a2e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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J1ALDxUl/nt/te3A/dG+xVVXXcUdd9zBe++9x8iRIwHYt28fb731Fv/5z3+orq7m4osv5sEHH8TlcvHss88yduxYvvzyS7p06XJcZdbW1nLRRRdx5pln8sknn1BRUcGkSZO47bbbeOaZZwgGg1xxxRX86Ec/4rnnnsPv9/Pxxx9jGAYA119/PYMGDWL27NlYrVZKS0ux2+3HVdO3SWrLzaJFixg7dixFRUVHNHjpxRdf5MILL6SgoICsrCyGDRvGW2+9lZhij4QGFIuISBzk5uZy0UUX8c9//jO6b/78+eTm5jJy5EgGDhzILbfcwoABA+jVqxcPPvgg3bt355VXXjnu7547dy51dXX87W9/o3///lxwwQU8+uij/P3vf2fnzp14PB4qKyu59NJL6dGjB3369GHChAnRUFVWVsaoUaM4+eST6dWrF1dddRUDBw487rpaktSWm5qaGgYOHMiNN97IuHHjvvX8RYsWceGFF/LQQw+Rk5PDnDlzGDt2LB999BGDBg1KQMXfIjrmpr65sT61iojICcyeFmlFScb3HoXrr7+em2++mVmzZuF0Opk7dy7f//73sVqt1NTUcP/99/Pqq6+ybds2gsEgdXV1lJWVHXeZ69atY+DAgaSnH2hlGjFiBOFwmC+//JJzzjmHiRMn8p3vfIcLL7yQUaNGcfXVV9OxY0cApk2bxqRJk/j73//OqFGjuOqqq+jRo8dx19WSpLbcjBkzhgcffJArr7zyiM6fOXMmP//5zzn99NPp1asXDz30EL169eI///nPYd/j8/nweDyNtriJ/qKaEPTF73tERCR2DCPSPZTo7Sj/D/DYsWMJh8O89tprlJeXs3jxYn7wgx8A8LOf/YwXXniB3/zmNyxevJjS0lIGDBiA3+8/7stjmma0i6nppYvsnzNnDh9++CHDhw9n3rx59O7dm2XLlgFw3333sWbNGi655BLeffdd+vbty0svvXTcdbWkVQ8oDofDVFVVkZube9hzZsyYQXZ2dnQrLi6OX0EHp3CNuxERkRhyu91ceeWVzJ07l+eee47evXszePBgABYvXszEiRP57ne/y4ABA+jQoQObNm2Kyff27duX0tJSamoOLAq9ZMkSLBYLvXv3ju4bNGgQ06dPZ+nSpfTv379RF1rv3r256667ePvtt7nyyiuZM2dOTGo7nFYdbv7whz9QU1PD1Vdffdhzpk+fTmVlZXQrLy+PX0FWG1gdkecKNyIiEmPXX389r732Gk8//XS01QagZ8+evPjii5SWlvLpp59y3XXXNZlZdTzf6XK5mDBhAp9//jnvvfcet99+OzfccAOFhYVs3LiR6dOn8+GHH7J582befvttvvrqK/r06UNdXR233XYb77//Pps3b2bJkiV88skn9OnTJya1HU6rnS313HPPcd999/Hvf/+b9u3bH/Y8p9OJ0+mMez3VviBvfr6DsYYTJ34NKhYRkZi74IILyM3N5csvv+S6666L7n/kkUf44Q9/yPDhw8nPz+cXv/hFzIZhpKWl8dZbb3HnnXdy+umnk5aWxrhx43j44Yejx7/44gueffZZ9uzZQ8eOHbntttu45ZZbCAaD7Nmzh/Hjx7Nz507y8/O58soruf/++2NS2+EYpnkUE+3jyDAMXnrpJa644opvPXfevHnceOONzJ8/n0suueSovsfj8ZCdnU1lZSVZWVnHWG1TOyq9nDnj/1jmvI0Oxl64eSEUnRqzzxcRkePn9XrZuHEjJSUluFyuZJcjh2jp3+do/n63um6p5557jokTJ/LPf/7zqINNPGW4Io1gtWZDt5RabkRERJIhqeGmurqa0tJSSktLAdi4cSOlpaXRqWvTp09n/Pjx0fOfe+45xo8fzx/+8AfOPPNMduzYwY4dO6isrExG+Y2k2a0YBnip7wIL1LT8BhERkSSYO3cuGRkZzW79+vVLdnkxkdQxN8uXL+f888+Pvp42bRoAEyZM4JlnnmH79u2N5ug//vjjBINBpkyZwpQpU6L7G85PJovFIMNpozbcEG7UciMiIieeyy67jKFDhzZ7LN53Dk6UpIab8847j5aG/BwaWN5///34FnScMp026mrru6W0eKaIyAnrBBlumhSZmZlkZmYmu4xmxerfpdWNuTmRZbhs1EW7pRRuRERONA0tE7W1+m/0iajhpoNWq/W4PqfVTgU/EWU4Dw436pYSETnRWK1WcnJyqKioACLTmA93911JrHA4zK5du0hLS8NmO754onATQxkuO7WmBhSLiJzIOnToABANOHLisFgsdOnS5bgDp8JNDGU6bXjRVHARkROZYRh07NiR9u3bEwgEkl2OHMThcGCxHP+IGYWbGMpw2qht6JbSgGIRkROa1Wo97rEdcmLSgOIYynDZqDM1oFhERCSZ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pLjQymoiIiISU0aSp50r3IiIiEhKUbgRERGRlKJwIyIiIilF4UZERERSisKNiIiIpBSFGxEREUkpCjciIiKSUhRuREREJKUo3IiIiEhKUbgRERGRlKJwIyIiIilF4UZERERSisKNiIiIpBRbsgtItIZl2D0eT5IrERERkSPV8He74e94S9pcuKmqqgKguLg4yZWIiIjI0aqqqiI7O7vFcwzzSCJQCgmHw2zbto3MzEwMw4jpZ3s8HoqLiykvLycrKyumny1N6Xonlq53Yul6J5aud2Idy/U2TZOqqiqKioqwWFoeVdPmWm4sFgudO3eO63dkZWXpfxwJpOudWLreiaXrnVi63ol1tNf721psGmhAsYiIiKQUhRsRERFJKQo3MeR0Orn33ntxOp3JLqVN0PVOLF3vxNL1Tixd78SK9/VucwOKRUREJLWp5UZERERSisKNiIiIpBSFGxEREUkpCjciIiKSUhRuYmTWrFmUlJTgcrkYPHgwixcvTnZJKWPRokWMHTuWoqIiDMPg5ZdfbnTcNE3uu+8+ioqKcLvdnHfeeaxZsyY5xbZyM2bM4PTTTyczM5P27dtzxRVX8OWXXzY6R9c7dmbPns0pp5wSvZHZsGHDeOONN6LHda3ja8aMGRiGwdSpU6P7dM1j57777sMwjEZbhw4dosfjea0VbmJg3rx5TJ06lbvvvptVq1Zx9tlnM2bMGMrKypJdWkqoqalh4MCBPProo80e/93vfsfDDz/Mo48+yieffEKHDh248MILo+uIyZFbuHAhU6ZMYdmyZSxYsIBgMMjo0aOpqamJnqPrHTudO3fmt7/9LcuXL2f58uVccMEFXH755dH/wOtax88nn3zCE088wSmnnNJov655bPXr14/t27dHt9WrV0ePxfVam3LczjjjDHPy5MmN9p188snmL3/5yyRVlLoA86WXXoq+DofDZocOHczf/va30X1er9fMzs42//KXvyShwtRSUVFhAubChQtN09T1ToR27dqZTz75pK51HFVVVZm9evUyFyxYYJ577rnmnXfeaZqmfr9j7d577zUHDhzY7LF4X2u13Bwnv9/PihUrGD16dKP9o0ePZunSpUmqqu3YuHEjO3bsaHT9nU4n5557rq5/DFRWVgKQm5sL6HrHUygU4vnnn6empoZhw4bpWsfRlClTuOSSSxg1alSj/brmsbd+/XqKioooKSnh+9//Phs2bADif63b3MKZsbZ7925CoRCFhYWN9hcWFrJjx44kVdV2NFzj5q7/5s2bk1FSyjBNk2nTpnHWWWfRv39/QNc7HlavXs2wYcPwer1kZGTw0ksv0bdv3+h/4HWtY+v5559n5cqVfPLJJ02O6fc7toYOHcrf/vY3evfuzc6dO3nwwQcZPnw4a9asifu1VriJEcMwGr02TbPJPokfXf/Yu+222/jss8/44IMPmhzT9Y6dk046idLSUvbv388LL7zAhAkTWLhwYfS4rnXslJeXc+edd/L222/jcrkOe56ueWyMGTMm+nzAgAEMGzaMHj168Oyzz3LmmWcC8bvW6pY6Tvn5+Vit1iatNBUVFU0SqcRew8h7Xf/Yuv3223nllVd477336Ny5c3S/rnfsORwOevbsyZAhQ5gxYwYDBw7kj3/8o651HKxYsYKKigoGDx6MzWbDZrOxcOFC/vSnP2Gz2aLXVdc8PtLT0xkwYADr16+P+++3ws1xcjgcDB48mAULFjTav2DBAoYPH56kqtqOkpISOnTo0Oj6+/1+Fi5cqOt/DEzT5LbbbuPFF1/k3XffpaSkpNFxXe/4M00Tn8+nax0HI0eOZPXq1ZSWlka3IUOGcP3111NaWkr37t11zePI5/Oxbt06OnbsGP/f7+Mekizm888/b9rtdvOpp54y165da06dOtVMT083N23alOzSUkJVVZW5atUqc9WqVSZgPvzww+aqVavMzZs3m6Zpmr/97W/N7Oxs88UXXzRXr15tXnvttWbHjh1Nj8eT5Mpbn1tvvdXMzs4233//fXP79u3Rrba2NnqOrnfsTJ8+3Vy0aJG5ceNG87PPPjN/9atfmRaLxXz77bdN09S1ToSDZ0uZpq55LP3kJz8x33//fXPDhg3msmXLzEsvvdTMzMyM/m2M57VWuImRxx57zOzatavpcDjM0047LTp1Vo7fe++9ZwJNtgkTJpimGZlSeO+995odOnQwnU6nec4555irV69ObtGtVHPXGTDnzJkTPUfXO3Z++MMfRv+7UVBQYI4cOTIabExT1zoRDg03uuaxc80115gdO3Y07Xa7WVRUZF555ZXmmjVrosfjea0N0zTN42//ERERETkxaMyNiIiIpBSFGxEREUkpCjciIiKSUhRuREREJKUo3IiIiEhKUbgRERGRlKJwIyIiIilF4UZERERSisKNiLRJhmHw8ssvJ7sMEYkDhRsRSbiJEydiGEaT7aKLLkp2aSKSAmzJLkBE2qaLLrqIOXPmNNrndDqTVI2IpBK13IhIUjidTjp06NBoa9euHRDpMpo9ezZjxozB7XZTUlLC/PnzG71/9erVXHDBBbjdbvLy8rj55puprq5udM7TTz9Nv379cDqddOzYkdtuu63R8d27d/Pd736XtLQ0evXqxSuvvBI9tm/fPq6//noKCgpwu9306tWrSRgTkROTwo2InJB+/etfM27cOD799FN+8IMfcO2117Ju3ToAamtrueiii2jXrh2ffPIJ8+fP55133mkUXmbPns2UKVO4+eabWb16Na+88go9e/Zs9B33338/V199NZ999hkXX3wx119/PXv37o1+/9q1a3njjTdYt24ds2fPJj8/P3EXQESOXUzWFhcROQoTJkwwrVarmZ6e3mh74IEHTNM0TcCcPHlyo/cMHTrUvPXWW03TNM0nnnjCbNeunVldXR09/tprr5kWi8XcsWOHaZqmWVRUZN59992HrQEw/+u//iv6urq62jQMw3zjjTdM0zTNsWPHmjfeeGNsfmARSSiNuRGRpDj//POZPXt2o325ubnR58OGDWt0bNiwYZSWlgKwbt06Bg4cSHp6evT4iBEjCIfDfPnllxiGwbZt2xg5cmSLNZxyyinR5+np6WRmZlJRUQHArbfeyrhx41i5ciWjR4/miiuuYPjw4cf0s4pIYinciEhSpKenN+km+jaGYQBgmmb0eXPnuN3uI/o8u93e5L3hcBiAMWPGsHnzZl577TXeeecdRo4cyZQpU/j9739/VDWLSOJpzI2InJCWLVvW5PXJJ58MQN++fSktLaWmpiZ6fMmSJVgsFnr37k1mZibdunXj//7v/46rhoKCAiZOnMg//vEPZs6cyRNPPHFcnyciiaGWGxFJCp/Px44dOxrts9ls0UG78+fPZ8iQIZx11lnMnTuXjz/+mKeeegqA66+/nnvvvZcJEyZw3333sWvXLm6//XZuuOEGCgsLAbjvvvuYPHky7du3Z8yYMVRVVbFkyRJuv/32I6rvnnvuYfDgwfTr1w+fz8err75Knz59YngFRCReFG5EJCnefPNNOnbs2GjfSSedxBdffAFEZjI9//zz/PjHP6ZDhw7MnTuXvn37ApCWlsZbb73FnXfeyemnn05aWhrjxo3j4Ycfjn7WhAkT8Hq9PPLII/z0pz8lPz+f733ve0dcn8PhYPr06WzatAm3283ZZ5/N888/H4OfXETizTBN00x2ESIiBzMMg5deeokrrrgi2aWISCukMTciIiKSUhRuREREJKVozI2InHDUWy4ix0MtNyIiIpJSFG5EREQkpSjciIiISEpRuBEREZGUonAjIiIiKUXhRkRERFKKwo2IiIikFIUbERERSSn/H/TOk+wZcqBlAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "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": 12, "id": "0e498679-4267-4a12-8a26-28c2fd4119ba", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 2ms/step - loss: 0.0940\n", "test loss 0.09398777782917023\n", "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 2ms/step\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABJ4AAACKCAYAAADrG4B0AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAL+dJREFUeJzt3XucTdX/+PH3mDEzjFuM2wwjfWpIQpF75COEKZ8ukqTkfilRSqSiTEpIN0pRiMh00eUbX2XwqY9yD/lI8iHXIvdxz/r98fm1vmttzpkzZ/aec+bM6/l49Hi813mfvfcya/bZZ3Z7vVeUUkoJAAAAAAAA4LJCoe4AAAAAAAAAIhM3ngAAAAAAAOAJbjwBAAAAAADAE9x4AgAAAAAAgCe48QQAAAAAAABPcOMJAAAAAAAAnuDGEwAAAAAAADzBjScAAAAAAAB4ghtPAAAAAAAA8ETY3nh6++23JSoqSooVKxbqrlxgx44d0r17d0lKSpK4uDhJTk6WW2+9NdTdCnvffPONtGvXTi655BIpUqSIXHHFFfLss8+GuluWV199VapXry5xcXFStWpVGTVqlJw9ezbU3QpbK1askDZt2kjx4sWlWLFi0qJFC/n2229D3S3t3XfflaioKJ//Pf/886HuYthZvHixdO/eXapXry4JCQmSnJwsHTp0kNWrV4e6axrjmnNLlizx+fP67rvvQt09ERHJysqSu+66S6pVqybFixeXhIQEueqqq2T06NGSlZUV6u6FNa6vkWfdunXSvn17SUlJkSJFikjp0qWlUaNG8t5774W6axY+h3Nu7dq18o9//EOSkpKkaNGiUr16dXnmmWfkxIkToe6ahXM2Z8J9XLnG5ly3bt38ft8Ml+9Pe/fulW7dukm5cuUkPj5eatWqJVOnTg11ty4QE+oOXMzu3btlyJAhkpSUJEeOHAl1dywbN26UG264QS677DIZN26cVKpUSfbu3SsLFy4MddfC2uzZs6Vr165y5513yowZM6RYsWLyyy+/yJ49e0LdNS09PV2efPJJefzxx6V169aycuVKGTFihOzevVumTJkS6u6FnZUrV0qzZs2kfv36MnPmTFFKydixY6Vly5aSmZkpjRo1CnUXpX379rJ8+fILXn/qqadk0aJF3DC+iMmTJ8sff/whDz30kNSoUUP2798v48ePl4YNG8rChQvl73//e6i7yLjmwnPPPSctWrSwXqtZs2aIemM7e/asKKXk4YcflqpVq0qhQoVk2bJl8swzz8iSJUvkq6++CnUXwxLX18h0+PBhqVy5snTu3FmSk5MlKytLZs2aJV27dpXt27fLiBEjQt1F7Y477pBHHnnEei0lJSVEvQlvmzZtksaNG0u1atVk4sSJkpiYqD/nVq9eLfPnzw91F0WEczan8sO4co3NuSeffFL69u17wes333yzxMXFyXXXXReCXtmOHDkiTZs2lTNnzsjYsWOlYsWK8v7770vPnj3lyJEj8vDDD4e6i/9HhaG0tDR18803q/vuu08lJCTkal9//PGH2r9/vyv9On/+vKpTp46qU6eOOnXqlCv7LAh27dqlEhISVL9+/Vzdr5tje+DAARUfH6969+5tvZ6enq6ioqLUjz/+6MpxIkmbNm1U+fLlVVZWln7t6NGjKjExUTVu3Djo/bo5rhdz/PhxVaxYMdW0aVPPjpGf/fbbbxe8duzYMVW+fHnVsmXLoPfLuIZWZmamEhE1b948V/fr9bgqpdRjjz2mRET98ssvnh4nP+L6WvA0aNBAVa5cOejt3T5nRUQNGDDAtf1FuieeeEKJiNq6dav1eu/evZWIqIMHDwa1X87Z0MoP4+oL19icWbJkiRIRNWLEiKD34ea4jhkzRomIWrVqlfV669atVUJCgjp06JArx3FD2E21e++992Tp0qUyadIkV/a3fv16qVixorRt21ZmzJghx44dC3pfy5Ytk3Xr1smgQYMkLi7Olf4VBG+//bZkZWXJ0KFDXd2vm2O7YMECOXXqlNx///3W6/fff78opeSTTz7JZW8jz7fffis33HCDFC1aVL9WvHhxadasmfzrX/+SvXv3BrVfN8f1YubOnSvHjx+Xnj17urrfSFGuXLkLXitWrJjUqFFDdu7cGfR+GdfI5PW4ioiULVtWRERiYsLyIe2Q4vpa8CQmJubqXMiLcxa+FS5cWERESpYsab1eqlQpKVSokMTGxga1X87Z0MoP4+oL19icmTp1qkRFRUn37t2D3oeb4/rtt99K+fLlpW7dutbraWlpkpWVJQsWLAh6324LqxtPv//+uwwaNEief/55qVSpkiv7bNiwoUyfPl0KFy4svXr1knLlyknHjh3lo48+ktOnT+doX8uWLROR//5x3a5dO4mPj5dixYpJWlqabN682ZX+RqJly5ZJ6dKlZfPmzVKnTh2JiYmRcuXKSd++feXo0aNB79fNsd24caOIiFx99dXW6xUrVpTExESdx/85c+bMRW/A/vXahg0bgtqvm+N6MVOnTpUSJUpIx44dc72vguLIkSOyZs0aueqqq4LeB+MaHgYMGCAxMTFSokQJadOmjXzzzTe52p8X46qUknPnzsnRo0dlwYIFMn78eOncuTNTdy6C62vkO3/+vJw7d072798vkyZNkoULF+bqRqMX5+zs2bOlSJEiEhcXJ3Xr1pV33nkn6P5Fuvvuu09KlSol/fr1k23btsmxY8fk888/lzfffFMGDBggCQkJQe2Xcza08sO4/oVrbPCOHDkiGRkZ0rJlS6latWrQ+3FzXLP7e2z9+vVB99N1IX3eyuH2229XjRs3VufPn1dKKVem2pkOHTqkpk2bplq3bq1iYmJUyZIlVbdu3dTChQvVuXPnst2+T58+SkRUiRIlVI8ePdRXX32lZs6cqapUqaISExPVnj17XOtrJKlWrZqKj49XxYsXV88995zKzMxUY8eOVUWKFFFNmjTR450buR3bXr16qbi4uIvmUlNTVevWrXPdx0hTp04dlZqaqv7880/92tmzZ9Vll12mRETNnj0718fI7bg6/fvf/1Yiovr06ZPrvhUkXbp0UTExMRc8xhssxjXvrVmzRj300EPq448/VsuWLVPTpk1TV155pYqOjlYLFixw5Rhujev777+vRET/d//996uzZ8+60sdIw/U18v313VNEVGxsrJo0aZJr+3bjnL377rvVrFmz1LJly1RGRoZq27ZtrqehRLp///vfqnr16tbn3MCBA105X5XinA2VcB/Xv3CNDd7kyZOViKj333/ftX3mdlwHDRqkChUqpHbs2GG93rVrVyUiF0yZDaWwufGUkZGhYmNjrXnDgd54On/+vDp79qz1X3b279+vJk+erJo3b66ioqJUuXLlsp3b2qtXLyUiqk2bNtbra9euVSKinnjiiWyPWxBdccUVSkTUmDFjrNcnTpyoREQtWrTI57Z5Obbx8fEXzaWmpl4w5lBq6tSpSkRUv3791K5du9Svv/6qevTooaKjo5WIqDlz5vjcNq/G1WnIkCFKRNTKlStztF1BNmLECCUi6tVXX832vYxr/nLo0CFVqVIlVatWLb/vy+txPXjwoFq5cqVavHixSk9P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AADgiZDWeLriiiusdqB1nd577z2r/corr/h8b6dOnXTsXLLUWSfBXM7XrEeC3DGXgXTOaTWX7+3SpYuVM2v6HDp0yJvO+VGjRg0dO5cEPn78uI4nTJiQZ32KNGXKlLHavXv39vleammFv8svv1zH5jLqTmY9PxGR999/37M+4eKaN2/uM7d06VJXjtGrVy+rPWzYMB2bNYucChXi/4k5Ob+vmK655hodT58+3cp17txZxwcPHgzq2M5aLh07drTa5hLrzmWfn376aR0vW7bMylHXKf84efKkz/Zll11m5cxaXs4aTwWVuay6iEhSUlJA261du9Zq+1tW3az11rNnTyvn/J56/vz5gI7vZH42O89n5D1/NZ3Mv39FRObOnatjs96TCDWf8oL5966ISFpams/3zpo1y+vuhAzf7gAAAAAAAOAJbjwBAAAAAADAEyGdamc+np2d//znPzo2l3gVEfnzzz99ble2bFkdOx9VnzlzptW+//77A+4PArdx40Ydf/jhh1bu7rvv1vELL7xg5cxHhV999VUr9+abb+r43LlzQfctJub/TgFzmpCI/Viq07x583QcSctc5jXz/BQRufTSS32+98iRIx73BjnlnC41fPhwHSckJPjc7rPPPvOsT/DNnN4xf/58K2dOmyhXrlzA+7zlllt07Jy+V758easdHR2tY+f1eN26dTo2l/oWEdm3b1/A/YlUv/zyi46dn5vmFJsbb7zRys2ZM0fH/fv3t3Ivvviijp3XP1OJEiWstrO8wbXXXqtjc5qVSPDT+2B/B3JOW/3xxx913L17d0+O37RpUx3Hx8dbuX79+um4ZcuWVs78ffTH/J2OdM7PO39TZ03OkiTPPvusjp2fk+Y0uIoVK1o559S6QI/vVKlSJR3zuZz3spu6ak6p/OCDD6zc8uXLdeycanfnnXf63A7uqFq1qtU2p8g7nT592uvuhAxPPAEAAAAAAMAT3HgCAAAAAACAJ7jxBAAAAAAAAE/keY0nc/n0Fi1a+HzfmTNnrLZZC2jHjh0BHy85OVnHzjmTZu0DkeCXF0Xgxo8f7zN32223WW1zbruzpkTDhg11fODAgYCPv3jxYqttzms2f8dE7NoUgwcP9rsfuMOsGRRsDQLkndtvv91q33vvvT7f++677+p41apVXnUJfpg1looVK2bl2rdvr+N27doFtX9nzS/n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", "text/plain": [ "
" ] }, "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": "a5c46a75-ba84-42ee-8824-74fbd79ef95a", "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 }