{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "5eba25cd",
   "metadata": {},
   "outputs": [],
   "source": [
    "import tensorflow as tf\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "34de9001",
   "metadata": {},
   "outputs": [],
   "source": [
    "mnist= tf.keras.datasets.mnist"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "edeb9021",
   "metadata": {},
   "outputs": [],
   "source": [
    "(x_tr,y_tr),(x_te,y_te)=mnist.load_data()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "173ed3ab",
   "metadata": {},
   "outputs": [],
   "source": [
    "x_tr = tf.keras.utils.normalize(x_tr, axis=1)\n",
    "x_te = tf.keras.utils.normalize(x_te, axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "21844de0",
   "metadata": {},
   "outputs": [],
   "source": [
    "model = tf.keras.Sequential()\n",
    "model.add(tf.keras.layers.Flatten())\n",
    "model.add(tf.keras.layers.Dense(1024, activation = tf.nn.relu))\n",
    "model.add(tf.keras.layers.Dense(512, activation = tf.nn.elu))\n",
    "model.add(tf.keras.layers.Dense(10, activation = tf.nn.softmax))\n",
    "model.compile('adam',loss= 'sparse_categorical_crossentropy',metrics=['accuracy'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "3836a8cf",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1875/1875 [==============================] - 35s 18ms/step - loss: 0.1904 - accuracy: 0.9420\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<tensorflow.python.keras.callbacks.History at 0x24e0dd62940>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.fit(x_tr,y_tr)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "73837f32",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "dc50c9b6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1875/1875 [==============================] - 13s 7ms/step - loss: 0.0883 - accuracy: 0.9721\n",
      "[0.08832705020904541, 0.9721166491508484]\n",
      "313/313 [==============================] - 3s 7ms/step - loss: 0.1097 - accuracy: 0.9662\n",
      "[0.10969053953886032, 0.9661999940872192]\n"
     ]
    }
   ],
   "source": [
    "print(model.evaluate(x_tr, y_tr))\n",
    "print(model.evaluate(x_te, y_te))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "090d7f3d",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2952feba",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8c67aba9",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "7f6f8313",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:Layers in a Sequential model should only have a single input tensor, but we receive a <class 'tuple'> input: (<tf.Tensor 'IteratorGetNext:0' shape=(None, 28, 28) dtype=float32>,)\n",
      "Consider rewriting this model with the Functional API.\n"
     ]
    }
   ],
   "source": [
    "predictions = model.predict([x_te])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3ba668e1",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "63d67141",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "9f62f05d",
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import random "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "351201e0",
   "metadata": {},
   "outputs": [],
   "source": [
    "def pred():\n",
    "    num=random.randint(0,9999)\n",
    "    plt.imshow(x_te[num], cmap=plt.cm.binary)\n",
    "    print('output, prediction is:',np.argmax(predictions[num]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c7f239fe",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "68f74408",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "output, prediction is: 3\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "pred()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6f4290a4",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "bcf85b1d",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
