{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "7a66657b-f3e8-430a-8551-54536858cda2", "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": "c7b33119-4f56-40c2-a9ac-e021855d5db1", "metadata": {}, "source": [ "# data Prepration " ] }, { "cell_type": "code", "execution_count": 2, "id": "d5e08183-17c7-422f-b2ad-18f9659aef78", "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": "23ff2c0e-ccbf-4a77-ba99-8a9a397a47f6", "metadata": {}, "source": [ "# model creation " ] }, { "cell_type": "code", "execution_count": 3, "id": "052f3a1e-1409-42ca-b99b-140ea2b9a4f9", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
Model: \"functional\"\n",
       "
\n" ], "text/plain": [ "\u001b[1mModel: \"functional\"\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓\n",
       "┃ Layer (type)                         ┃ Output Shape                ┃         Param # ┃\n",
       "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩\n",
       "│ input_layer (InputLayer)             │ (None, 28, 28, 1)           │               0 │\n",
       "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
       "│ conv2d (Conv2D)                      │ (None, 14, 14, 32)          │             320 │\n",
       "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
       "│ conv2d_1 (Conv2D)                    │ (None, 7, 7, 64)            │          18,496 │\n",
       "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
       "│ flatten (Flatten)                    │ (None, 3136)                │               0 │\n",
       "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
       "│ dense (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 (\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 (\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", "│ conv2d_1 (\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", "│ flatten (\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 (\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,186 (196.04 KB)\n",
       "
\n" ], "text/plain": [ "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m50,186\u001b[0m (196.04 KB)\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
 Trainable params: 50,186 (196.04 KB)\n",
       "
\n" ], "text/plain": [ "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m50,186\u001b[0m (196.04 KB)\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
 Non-trainable params: 0 (0.00 B)\n",
       "
\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" }, { "name": "stdout", "output_type": "stream", "text": [ "WARNING:tensorflow:TensorFlow GPU support is not available on native Windows for TensorFlow >= 2.11. Even if CUDA/cuDNN are installed, GPU will not be used. Please use WSL2 or the TensorFlow-DirectML plugin.\n" ] } ], "source": [ "myInput = layers.Input(shape=(28,28,1))\n", "conv1 = layers.Conv2D(32,3,activation='relu', padding='same', strides=2 )(myInput)\n", "conv2 = layers.Conv2D(64,3, activation='relu', padding='same', strides=2 )(conv1)\n", "\n", "flat = layers.Flatten()(conv2)\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": "c2d83c86-ac20-4c4c-8b08-331a9fb383e8", "metadata": {}, "source": [ "# Train and Evaluation" ] }, { "cell_type": "code", "execution_count": 4, "id": "80ed9096-af37-4844-9bf3-3d9f4106896a", "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[1m3s\u001b[0m 8ms/step - loss: 2.2916 - val_loss: 2.2780\n", "Epoch 2/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 2.2610 - val_loss: 2.2424\n", "Epoch 3/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 2.2172 - val_loss: 2.1859\n", "Epoch 4/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 2.1412 - val_loss: 2.0813\n", "Epoch 5/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 1.9934 - val_loss: 1.8713\n", "Epoch 6/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 1.7034 - val_loss: 1.4830\n", "Epoch 7/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 1.2747 - val_loss: 1.0378\n", "Epoch 8/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 0.9160 - val_loss: 0.7580\n", "Epoch 9/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 0.7160 - val_loss: 0.6122\n", "Epoch 10/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 0.6078 - val_loss: 0.5302\n", "Epoch 11/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 0.5434 - val_loss: 0.4800\n", "Epoch 12/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 0.5018 - val_loss: 0.4461\n", "Epoch 13/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 8ms/step - loss: 0.4727 - val_loss: 0.4233\n", "Epoch 14/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 8ms/step - loss: 0.4517 - val_loss: 0.4054\n", "Epoch 15/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 7ms/step - loss: 0.4354 - val_loss: 0.3918\n", "Epoch 16/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 0.4224 - val_loss: 0.3820\n", "Epoch 17/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 0.4119 - val_loss: 0.3730\n", "Epoch 18/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 0.4030 - val_loss: 0.3658\n", "Epoch 19/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 0.3953 - val_loss: 0.3595\n", "Epoch 20/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 0.3888 - val_loss: 0.3543\n", "Epoch 21/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 0.3829 - val_loss: 0.3496\n", "Epoch 22/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 0.3777 - val_loss: 0.3452\n", "Epoch 23/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 7ms/step - loss: 0.3730 - val_loss: 0.3416\n", "Epoch 24/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 0.3686 - val_loss: 0.3383\n", "Epoch 25/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 0.3648 - val_loss: 0.3349\n", "Epoch 26/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 0.3610 - val_loss: 0.3327\n", "Epoch 27/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 0.3576 - val_loss: 0.3293\n", "Epoch 28/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 0.3543 - val_loss: 0.3270\n", "Epoch 29/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 0.3514 - val_loss: 0.3248\n", "Epoch 30/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 0.3485 - val_loss: 0.3225\n", "Epoch 31/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 0.3459 - val_loss: 0.3201\n", "Epoch 32/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 0.3432 - val_loss: 0.3180\n", "Epoch 33/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 0.3409 - val_loss: 0.3160\n", "Epoch 34/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 8ms/step - loss: 0.3384 - val_loss: 0.3142\n", "Epoch 35/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 0.3362 - val_loss: 0.3121\n", "Epoch 36/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 0.3341 - val_loss: 0.3103\n", "Epoch 37/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 8ms/step - loss: 0.3319 - val_loss: 0.3086\n", "Epoch 38/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 0.3298 - val_loss: 0.3080\n", "Epoch 39/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 8ms/step - loss: 0.3278 - val_loss: 0.3059\n", "Epoch 40/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 0.3259 - val_loss: 0.3039\n", "Epoch 41/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 0.3240 - val_loss: 0.3022\n", "Epoch 42/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 0.3221 - val_loss: 0.3007\n", "Epoch 43/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 0.3205 - val_loss: 0.2991\n", "Epoch 44/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 0.3186 - val_loss: 0.2975\n", "Epoch 45/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 0.3168 - val_loss: 0.2965\n", "Epoch 46/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 0.3151 - val_loss: 0.2947\n", "Epoch 47/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 0.3135 - val_loss: 0.2935\n", "Epoch 48/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 0.3118 - val_loss: 0.2921\n", "Epoch 49/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 0.3103 - val_loss: 0.2907\n", "Epoch 50/50\n", "\u001b[1m375/375\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 7ms/step - loss: 0.3086 - val_loss: 0.2898\n" ] } ], "source": [ "history = mymodel.fit(X_train,y_train,batch_size=128,epochs=50,validation_split=0.2)" ] }, { "cell_type": "code", "execution_count": 5, "id": "d67a7b08-2bed-45c7-968a-8eec643ec655", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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kIiIiLQ6CkCNzOFw8Ktf/UovX20kut+NS/e7cel+Ny7d78bV0Pdbg6BFRESk1VELkIiIiLQ6CkAiIiLS6igAiYiISKujACQiIiKtjgJQI3rhhRdITEzE6XQyZMgQtmzZEugqtRibN29mypQpxMfHY7FYWL16td9+wzB49NFHiY+PJyQkhOuvv559+/YFprLN3KJFixg6dCgRERF06NCBqVOncvDgQb9jdL/rz5IlSxgwYIBvMrgRI0awdu1a337d64a1aNEiLBYLCxYs8JXpntefRx99FIvF4rfExsb69jfkvVYAaiTLly9nwYIFPPzww+zatYvRo0czceJETpw4EeiqtQg5OTkMHDiQxYsXV7r/D3/4A0899RSLFy/miy++IDY2lptuusn33jepuU2bNjF//nw+/fRTNmzYQHFxMePHjycnJ8d3jO53/enUqRO///3v2b59O9u3b+fGG2/k1ltv9f0S0L1uOF988QUvvvgiAwYM8CvXPa9f/fr1IzU11bfs3bvXt69B77UhjeKaa64x5s2b51fWu3dv43//938DVKOWCzBWrVrl++zxeIzY2Fjj97//va8sPz/fcLlcxp///OcA1LBlSU9PNwBj06ZNhmHofjeGNm3aGH/72990rxtQVlaW0aNHD2PDhg3GddddZzz44IOGYei/7/r2q1/9yhg4cGCl+xr6XqsFqBEUFhayY8cOxo8f71c+fvx4tm7dGqBatR5Hjx4lLS3N7/47HA6uu+463f96kJmZCUB0dDSg+92QSkpKePPNN8nJyWHEiBG61w1o/vz53HLLLYwbN86vXPe8/h06dIj4+HgSExP53ve+x5EjR4CGv9d6GWojOHv2LCUlJcTExPiVx8TEkJaWFqBatR7ee1zZ/T9+/HggqtRiGIbBwoULufbaa+nfvz+g+90Q9u7dy4gRI8jPzyc8PJxVq1bRt29f3y8B3ev69eabb7Jz506++OKLCvv033f9GjZsGK+++io9e/bk9OnT/Pa3v2XkyJHs27evwe+1AlAjslgsfp8Nw6hQJg1H97/+3XfffezZs4ePP/64wj7d7/rTq1cvkpOTycjIYMWKFcyaNYtNmzb59ute15+UlBQefPBB1q9fj9PprPI43fP6MXHiRN/2lVdeyYgRI+jWrRt///vfGT58ONBw91pdYI2gXbt22Gy2Cq096enpFZKt1D/vEwW6//Xr/vvvZ82aNXz00Ud06tTJV677Xf/sdjvdu3fn6quvZtGiRQwcOJBnn31W97oB7Nixg/T0dIYMGUJQUBBBQUFs2rSJ5557jqCgIN991T1vGGFhYVx55ZUcOnSowf/7VgBqBHa7nSFDhrBhwwa/8g0bNjBy5MgA1ar1SExMJDY21u/+FxYWsmnTJt3/WjAMg/vuu4+VK1fy4YcfkpiY6Ldf97vhGYZBQUGB7nUDGDt2LHv37iU5Odm3XH311dx1110kJydzxRVX6J43oIKCAvbv309cXFzD//dd52HUUiNvvvmmERwcbLz00kvGV199ZSxYsMAICwszjh07FuiqtQhZWVnGrl27jF27dhmA8dRTTxm7du0yjh8/bhiGYfz+9783XC6XsXLlSmPv3r3G97//fSMuLs5wu90Brnnzc++99xoul8vYuHGjkZqa6ltyc3N9x+h+15+kpCRj8+bNxtGjR409e/YYP//5zw2r1WqsX7/eMAzd68ZQ/ikww9A9r0//8z//Y2zcuNE4cuSI8emnnxqTJ082IiIifL8bG/JeKwA1oueff97o0qWLYbfbjcGDB/seG5a6++ijjwygwjJr1izDMMzHKX/1q18ZsbGxhsPhMMaMGWPs3bs3sJVupiq7z4Dxyiuv+I7R/a4///Vf/+X7e6N9+/bG2LFjfeHHMHSvG8PFAUj3vP5Mnz7diIuLM4KDg434+HjjtttuM/bt2+fb35D32mIYhlH3diQRERGR5kNjgERERKTVUQASERGRVkcBSERERFodBSARERFpdRSAREREpNVRABIREZFWRwFIREREWh0FIBEREWl1FIBERKpgsVhYvXp1oKshIg1AAUhEmqTZs2djsVgqLBMmTAh01USkBQgKdAVERKoyYcIEXnnlFb8yh8MRoNqISEuiFiARabIcDgexsbF+S5s2bQCze2rJkiVMnDiRkJAQEhMTefvtt/3O37t3LzfeeCMhISG0bduWuXPnkp2d7XfMyy+/TL9+/XA4HMTFxXHffff57T979izf/e53CQ0NpUePHqxZs8a378KFC9x11120b9+ekJAQevToUSGwiUjTpAAkIs3WL3/5S6ZNm8bu3bu5++67+f73v8/+/fsByM3NZcKECbRp04YvvviCt99+mw8++MAv4CxZsoT58+czd+5c9u7dy5o1a+jevbvfz3jssce488472bNnD5MmTeKuu+7i/Pnzvp//1VdfsXbtWvbv38+SJUto165d490AEam9enmnvIhIPZs1a5Zhs9mMsLAwv+XXv/61YRiGARjz5s3zO2fYsGHGvffeaxiGYbz44otGmzZtjOzsbN/+9957z7BarUZaWpphGIYRHx9vPPzww1XWATB+8Ytf+D5nZ2cbFovFWLt2rWEYhjFlyhTjhz/8Yf18YRFpVBoDJCJN1g033MCSJUv8yqKjo33bI0aM8Ns3YsQIkpOTAdi/fz8DBw4kLCzMt3/UqFF4PB4OHjyIxWLh1KlTjB07tto6DBgwwLcdFhZGREQE6enpANx7771MmzaNnTt3Mn78eKZOncrIkSNr9V1FpHEpAIlIkxUWFlahS+pSLBYLAIZh+LYrOyYkJKRG1wsODq5wrsfjAWDixIkcP36c9957jw8++ICxY8cyf/58/vjHP15WnUWk8WkMkIg0W59++mmFz7179wagb9++JCcnk5OT49v/ySefYLVa6dmzJxEREXTt2pX//Oc/dapD+/btmT17Nq+99hrPPPMML774Yp2uJyKNQy1AItJkFRQUkJaW5lcWFBTkG2j89ttvc/XVV3Pttdfy+uuv8/nnn/PSSy8BcNddd/GrX/2KWbNm8eijj3LmzBnuv/9+ZsyYQUxMDACPPvoo8+bNo0OHDkycOJGsrCw++eQT7r///hrV75FHHmHIkCH069ePgoIC3n33Xfr06VOPd0BEGooCkIg0Wf/+97+Ji4vzK+vVqxcHDhwAzCe03nzzTf77v/+b2NhYXn/9dfr27QtAaGgo69at48EHH2To0KGEhoYybdo0nnrqKd+1Zs2aRX5+Pk8//TQPPfQQ7dq14/bbb69x/ex2O0lJSRw7doyQkBBGjx7Nm2++WQ/fXEQamsUwDCPQlRARuVwWi4VVq1YxderUQFdFRJohjQESERGRVkcBSERERFodjQESkWZJvfciUhdqARIREZFWRwFIREREWh0FIBEREWl1FIBERESk1VEAEhERkVZHAUhERERaHQUgERERaXUUgERERKTV+f9y5raEVXuPCAAAAABJRU5ErkJggg==", "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": 6, "id": "0db70e62-8983-4bc6-bbe2-52d6fbbf68c1", "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.2894\n", "test loss 0.28942954540252686\n", "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 2ms/step\n" ] }, { "data": { "image/png": "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pXXr1hnqU3aybt06KVy4sOzdu1eqVasmkZGREhcXJz179pTk5OQMb9ff43oziYmJUqxYsZt+AMSNkpKSZNu2bVKpUqUMb8PtcZ05c6bkz59fOnTokOltZQdJSUmycOFCady4sZQtWzbD2/HnuN7qXLFjx44M9zM7CcWxReaF6rjy2SnzQu0cy3tx+mWV7zoifxyzaWlpkpycLMuXL5dx48bJ448/LqVLl87Q9lwR5CuutG3btqnnn39eLVmyRK1bt069//77qmLFiipnzpxq+fLlftnHmTNn1Pvvv6+aNWumIiMjVYECBVSXLl3UihUrVFpa2i1f/9xzzykRUfnz51fdunVTX375pZozZ44qU6aMKlq0qDp+/Lhf+hmO2rdvr+rUqaOXx/hjqZ2JsQ28atWqqfLly1uX2aempqpy5copEVFz587N9D4yO65KKTV58mRVqFAh9csvvyillJo1axaXi3tRoUIFFR0drfLly6dGjhypEhMT1ZgxY1SePHlU3bp1b7rELb38Ma5O7733nhIRNXHixEz3L7vo1KmTioyMvOGy+4zy97ju2bNHiYh67rnn/NK/7GDq1KlKRNS8efP8ts3Mjmu/fv1Ujhw51KFDh6zHO3furEREPfvss37razgLxbF1Yqld+oXquPLZKfNC7RzLe3H6ZZXvOkopNW/ePCUi+t8zzzyjUlNTM90/fwqZiaebOXPmjCpZsqSqUqWK1+ddu3ZNpaamWv9u5eTJk2rq1KmqQYMGKiIiQsXFxd1yDWSPHj2UiKiEhATr8W+//VaJiBo0aNCtf6hsaOHChSp37tzq+++/14/5OvHE2IaumTNnKhFRvXr1UkePHlWHDx9W3bp1Uzlz5lQioj755BOPrw3UuB48eFDFxsaqGTNm6Mf48OTdXXfdpUREjRo1ynp8woQJSkTUqlWrPL42UOPq9O9//1vlzp1bPfroo36ZGMsOXn31VSUiavLkybd8brDGdcCAARyr6VSjRg1VpEgRn+qcBWpcd+/eraKiolS9evXUrl271O+//66mTJmicufOrURE9ezZ0+efLzsLxbF1YuIp/UJxXPnslHmheI7lvTj9ssJ3netOnz6ttmzZolavXq1GjBih8ufPr1q3bm1NmgVbyC21MxUsWFBatmwpO3bskIsXL3p83tq1ayVXrlzWv4MHD3rddnJyspw9e1aS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Tz/9ZLXLlSunY2ftLH+c18yafSIiH330kdW+9957dWx+Pha5sbZcMFHjCQAAAAAAAEHDxBMAAAAAAABcERnMnefOndtqm7cTNC/PFhEZOXKkjr/88kuf9+FcXmdy3koWgffXv/5Vx+bSOqeUlJRAdMejqKgoq23esvTixYtWbt26dQHpUyhx/n7M9q5duwLdHfhRp06drPZnn33m9304b9f+1ltv6di5tM5cKvLuu+9auUmTJum4fPnyVs55KXO4atCggY7N86aIfVz26dPHys2cOVPHzluw++r333+32rt377bap06d0vGUKVOsnLmEvnr16lbum2++yVB/sqOEhASfn9ujRw8dm+diEZG//e1vOnYeS96Y50YRkcjIoH7MzBaSkpKstq/LnJxL7bwtWQnHZUr+YJ4fnaUVXnrpJR3fddddVs5chmcucxYROX78uD+7KCI3lhapVauWjps3b27lzHNI2bJlfd6HW0vv4dmiRYustrnsy1wOKxJaS+2yMmeZAn8stXN+j3zttdestjnv4Sw/UadOnUzvP5C44gkAAAAAAACuYOIJAAAAAAAArmDiCQAAAAAAAK4I+OL72NhYHb/88stWzrz1o7NWxNixY3UcyrchhXfm+IuIvPDCCx6fu2TJEh1Pnz7dtT75ok2bNlbbrEH23nvvWTnz9rrZRXx8vNUuUaKEjp23ekboq1y5so6d9UN69erl9/2Z9f1ERGrWrKnjTz/91Mo9+eSTOr527ZqVO3funI4vXbpk5VatWpXpfmYFS5cu1bGzdtaQIUN0PHXq1ID16boZM2bo+KmnnrJyZs2RYsWKBaxP4ca87fOtLFu2TMezZs2ycuYt1Z21gJzMuobOmmwIXU2aNLHazlthm3WdnDVZs0vNvFtZsWKFjp01dMx6a87b3rdo0ULHqampVs6ssees92TW6VuwYIHHfhUqVMhqO99vnZ/F/cFZewY283PyY489ZuUaNmyo4zNnzlg5c5w3bNjgcZsi9ria36GQPv369bPa8+fP1/Gbb75p5Xbu3Knj7du3+2X/zvqYf//733U8bdo0K2e+FztrRYUirngCAAAAAACAK5h4AgAAAAAAgCsCvtSubdu2OjZvNSoicvjwYR2bt/IVuXG5B7Kmt99+22p7u03z0KFD3e6Oz7p27RrsLoS0/fv3W23ztsIDBgywcpMnT9bx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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": "0b9378ab-d1c6-4c6d-80e4-1fbdde35d385", "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 }