{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": []
   },
   "source": [
    "## Introduction to Keras and the MNIST Dataset\n",
    "\n",
    "The full Keras documentation is available here: http://keras.io"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import random\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import tensorflow as tf\n",
    "import keras"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Help on package keras.datasets in keras:\n",
      "\n",
      "NAME\n",
      "    keras.datasets - DO NOT EDIT.\n",
      "\n",
      "DESCRIPTION\n",
      "    This file was autogenerated. Do not edit it by hand,\n",
      "    since your modifications would be overwritten.\n",
      "\n",
      "PACKAGE CONTENTS\n",
      "    boston_housing (package)\n",
      "    california_housing (package)\n",
      "    cifar10 (package)\n",
      "    cifar100 (package)\n",
      "    fashion_mnist (package)\n",
      "    imdb (package)\n",
      "    mnist (package)\n",
      "    reuters (package)\n",
      "\n",
      "FILE\n",
      "    /Users/jmarshall/opt/miniconda3/envs/bioai/lib/python3.12/site-packages/keras/datasets/__init__.py\n",
      "\n",
      "\n"
     ]
    }
   ],
   "source": [
    "help(keras.datasets)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": []
   },
   "source": [
    "### Loading the MNIST Handwritten Digit Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "from keras.datasets import mnist"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "(train_images,train_labels), (test_images,test_labels) = mnist.load_data()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true,
    "jupyter": {
     "outputs_hidden": true
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[[0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        ...,\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0]],\n",
       "\n",
       "       [[0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        ...,\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0]],\n",
       "\n",
       "       [[0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        ...,\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0]],\n",
       "\n",
       "       ...,\n",
       "\n",
       "       [[0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        ...,\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0]],\n",
       "\n",
       "       [[0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        ...,\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0]],\n",
       "\n",
       "       [[0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        ...,\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0]]], dtype=uint8)"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_images"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(60000, 28, 28)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_images.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true,
    "jupyter": {
     "outputs_hidden": true
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   3,\n",
       "         18,  18,  18, 126, 136, 175,  26, 166, 255, 247, 127,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,  30,  36,  94, 154, 170,\n",
       "        253, 253, 253, 253, 253, 225, 172, 253, 242, 195,  64,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,  49, 238, 253, 253, 253, 253,\n",
       "        253, 253, 253, 253, 251,  93,  82,  82,  56,  39,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,  18, 219, 253, 253, 253, 253,\n",
       "        253, 198, 182, 247, 241,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,  80, 156, 107, 253, 253,\n",
       "        205,  11,   0,  43, 154,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,  14,   1, 154, 253,\n",
       "         90,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 139, 253,\n",
       "        190,   2,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  11, 190,\n",
       "        253,  70,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  35,\n",
       "        241, 225, 160, 108,   1,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "         81, 240, 253, 253, 119,  25,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,  45, 186, 253, 253, 150,  27,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0,  16,  93, 252, 253, 187,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0,   0,   0, 249, 253, 249,  64,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,  46, 130, 183, 253, 253, 207,   2,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  39,\n",
       "        148, 229, 253, 253, 253, 250, 182,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  24, 114, 221,\n",
       "        253, 253, 253, 253, 201,  78,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,  23,  66, 213, 253, 253,\n",
       "        253, 253, 198,  81,   2,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,  18, 171, 219, 253, 253, 253, 253,\n",
       "        195,  80,   9,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,  55, 172, 226, 253, 253, 253, 253, 244, 133,\n",
       "         11,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0, 136, 253, 253, 253, 212, 135, 132,  16,   0,\n",
       "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0]], dtype=uint8)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_images[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(28, 28)"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_images[0].shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(train_images[0]);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.rcParams[\"figure.figsize\"] = (2,2)  # set default figure width, height in inches"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 200x200 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(train_images[0]);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 200x200 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(train_images[0], cmap='binary');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 200x200 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(train_images[0], cmap='gray');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 200x200 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(train_images[42450], cmap='gray');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.uint8(5)"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_labels[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5\n"
     ]
    }
   ],
   "source": [
    "print(train_labels[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([5, 0, 4, ..., 5, 6, 8], dtype=uint8)"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_labels"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(60000,)"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_labels.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "def show_random_image():\n",
    "    n = random.randrange(60000)\n",
    "    image = train_images[n]\n",
    "    label = train_labels[n]\n",
    "    print(f\"image #{n}, label: {label}\")\n",
    "    plt.imshow(train_images[n], cmap='gray')\n",
    "    plt.axis('off')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "image #32784, label: 8\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAK4AAACuCAYAAACvDDbuAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAA49JREFUeJzt3VFu4joAQFF4mn21XVnLygor4y1gYikZCuPrOecToRbaqyi2E+d8v9/vJ4j5729/APgTwiVJuCQJlyThkiRckoRLknBJEi5Jv/a+8Xw+P/eTwOl02ruQ64hLknBJEi5JwiVJuCQJlyThkiRckoRLknBJEi5JwiVJuCQJlyThkiRckoRLknBJEi5JwiVJuCQJlyThkiRckoRLknBJEi5JwiVJuCQJlyThkiRc1t7YeWVfX1+/vfb5+fmU33W5XDZfv16vu14beX9/33z9+/t798/9+Pg4VTjikiRckoRLknBJOt93PuZk1qfujAYlW4Or0XtnNRosXTcGV1uDsNF3nnlw5qk7LM2pAknCJUm4JAmXpGWXfJ81gzBasn3U29vb7pmCy4Of4Xa7neoccUkSLknCJUm4JP2qD7hGA5gjtgY7W9fovtqR7/YeW85+lCMuScIlSbgkCZck4ZKUupB8a5R9ZDR95MLsle9KPk/wvxxxITlLc6pAknBJEi5JUy75Hrlj9chArDYIO3IH88gMd+4+gyMuScIlSbgkCZck4ZI05ZLv3mW/2ffBetS/+He47/zOjrgkCZck4ZIkXJKmXPKdYUukmss/9ndwxCVJuCQJlyThkiRckvKzCs/a/PjVtjZ2Hrk++NzfFTjikiRckoRLknBJmvJ63NGmykfubmXuTatHXI/L0pwqkCRckoRLknBJmnJW4cheWjM8Jmm0XDvDZ6vdEWxWgaU5VSBJuCQJl6TU4GzlLZQevab4OhhwHXke8AzLwwZnLM2pAknCJUm4JAmXJLMKiz/e6n3jMxyZaXj1bJJZBZbmVIEk4ZIkXJLyWzC92tYS6JFB2GgZ91lbKF0X3ZrJEZck4ZIkXJKES5JwSRIuScIlSbgkCZck4ZJkyffFZr1rtrY87IhLknBJEi5JwiVJuCSZVZhkVuHR2YbvA3fujpSef+yIS5JwSRIuScIlyRZML97SaLSservddr/3c+OZxqM7jbd+xqvvND7CFkwszakCScIlSbgkCZckswo/YDSi/4ll2L0ug5mCV1+4/iizCizNqQJJwiVJuCQZnD3R1sBoa7n2J57be51gufYnGJyxNKcKJAmXJOGSJFySzCowFbMKLM2pAknCJUm4JAmXJOGSJFyShEuScEkSLmtv7HzksUPwbI64JAmXJOGSJFyShEuScEkSLknCJUm4nIr+B1jxBwZFRH20AAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 200x200 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "show_random_image()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(10000, 28, 28)"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_images.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(10000,)"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_labels.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": []
   },
   "source": [
    "### Slicing Images and Datasets"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(60000, 28, 28)"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_images.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "How to select the **first hundred** images of the dataset?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "first_hundred = train_images[0:100]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(100, 28, 28)"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "first_hundred.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "numpy.ndarray"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "type(first_hundred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 200x200 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(random.choice(first_hundred), cmap='gray');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here is training image #0:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 200x200 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(train_images[0], cmap='gray');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "How to extract the **right half** of the image?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 200x200 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(train_images[0, :, 14:28], cmap='gray');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "How to extract the **left half** of the image?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 200x200 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(train_images[0, :, 0:14], cmap='gray');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "How about the **upper half** of the image?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 200x200 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(train_images[0, 0:14, :], cmap='gray');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And the **lower half**?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 200x200 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(train_images[0, 14:, :], cmap='gray');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "What about the **central region** of the image?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 200x200 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(train_images[0, 7:21, 7:21], cmap='gray');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can do the same thing using negative indices:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 200x200 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(train_images[0, 7:-7, 7:-7], cmap='gray');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "How to extract the center of **every** training image?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "centers = train_images[:, 7:-7, 7:-7]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(60000, 14, 14)"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "centers.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 200x200 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(centers[7777], cmap='gray');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "8\n"
     ]
    }
   ],
   "source": [
    "print(train_labels[7777])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 200x200 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(random.choice(centers), cmap='gray');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "How to extract the right half of **every** training image?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "right_halves = train_images[:, :, 14:28]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(60000, 28, 14)"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "right_halves.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 200x200 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(random.choice(right_halves), cmap='gray');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "How to extract the **upper half** of every training image?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "upper_halves = train_images[:, 0:14, :]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(60000, 14, 28)"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "upper_halves.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 200x200 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(random.choice(upper_halves), cmap='gray');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Neural Networks in Keras"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": []
   },
   "source": [
    "### Preparing the Data: Flattening the Input Images"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": []
   },
   "source": [
    "We have 60,000 training images of size 28x28:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(60000, 28, 28)"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_images.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The **size** of an array is defined to be the total number of individual elements in it:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "47040000\n"
     ]
    }
   ],
   "source": [
    "print(60000*28*28)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "47040000"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_images.size"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Our network's input layer will consist of 784 input units: one for each grayscale pixel value in\n",
    "a 28x28 pixel image.  In order for our training data to match the shape of the input layer, we first need to \"flatten\" the images by converting them from two-dimensional 28x28 arrays into one-dimensional vectors of length 784."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "784\n"
     ]
    }
   ],
   "source": [
    "print(28 * 28)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [],
   "source": [
    "flattened_train_images = train_images.reshape((60000, 784))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(60000, 28, 28)"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_images.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(60000, 784)"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "flattened_train_images.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The total number of elements is still the same as before:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "47040000"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "flattened_train_images.size"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": []
   },
   "source": [
    "### Preparing the Data: Creating the Target Vectors"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "jp-MarkdownHeadingCollapsed": true,
    "tags": []
   },
   "source": [
    "We also need to create \"one hot\" target vectors of length 10 (one value for each digit category).  In a \"one hot\" vector, all values are 0 except for a single 1 at the location corresponding to a specific digit category.  For example, image #7 is a \"three\", so its target vector is [0,0,0,1,0,0,0,0,0,0].  We can easily create a target vector corresponding to the category \"three\" with the `to_categorical` function."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 200x200 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(train_images[7], cmap='gray');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3\n"
     ]
    }
   ],
   "source": [
    "print(train_labels[7])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [],
   "source": [
    "from keras.utils import to_categorical"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Create a single \"one hot\" target vector:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0., 0., 0., 1., 0., 0., 0., 0., 0., 0.])"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "to_categorical(3, num_classes=10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]\n"
     ]
    }
   ],
   "source": [
    "print(to_categorical(3, num_classes=10))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Create \"one hot\" target vectors for all 60,000 input images at once:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_targets = to_categorical(train_labels)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(60000, 10)"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_targets.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]\n"
     ]
    }
   ],
   "source": [
    "print(train_targets[7])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[0. 0. 0. 0. 0. 1. 0. 0. 0. 0.]\n",
      " [1. 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n",
      " [0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]\n",
      " [0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]\n",
      " [0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]\n",
      " [0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]\n",
      " [0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]\n",
      " [0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]\n",
      " [0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]\n",
      " [0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]]\n"
     ]
    }
   ],
   "source": [
    "print(train_targets[0:10])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": []
   },
   "source": [
    "### Building the Neural Network"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": []
   },
   "source": [
    "<img src=\"http://science.slc.edu/jmarshall/bioai/images/mnist-network.png\" width=\"60%\">"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Step 1: Construct the layers"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "from keras.models import Sequential\n",
    "from keras.layers import Dense, Input"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2026-04-02 14:54:42.157432: I metal_plugin/src/device/metal_device.cc:1154] Metal device set to: Apple M2 Pro\n",
      "2026-04-02 14:54:42.157457: I metal_plugin/src/device/metal_device.cc:296] systemMemory: 16.00 GB\n",
      "2026-04-02 14:54:42.157464: I metal_plugin/src/device/metal_device.cc:313] maxCacheSize: 5.33 GB\n",
      "WARNING: All log messages before absl::InitializeLog() is called are written to STDERR\n",
      "I0000 00:00:1775156082.157476 409192415 pluggable_device_factory.cc:305] Could not identify NUMA node of platform GPU ID 0, defaulting to 0. Your kernel may not have been built with NUMA support.\n",
      "I0000 00:00:1775156082.157497 409192415 pluggable_device_factory.cc:271] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 0 MB memory) -> physical PluggableDevice (device: 0, name: METAL, pci bus id: <undefined>)\n"
     ]
    }
   ],
   "source": [
    "network = Sequential()\n",
    "network.add(Input(shape=(784,)))\n",
    "network.add(Dense(30, activation='sigmoid', name='hidden'))\n",
    "network.add(Dense(10, activation='sigmoid', name='output'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\">Model: \"sequential\"</span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1mModel: \"sequential\"\u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
       "┃<span style=\"font-weight: bold\"> Layer (type)                    </span>┃<span style=\"font-weight: bold\"> Output Shape           </span>┃<span style=\"font-weight: bold\">       Param # </span>┃\n",
       "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
       "│ hidden (<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\">30</span>)             │        <span style=\"color: #00af00; text-decoration-color: #00af00\">23,550</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ output (<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\">310</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",
       "│ hidden (\u001b[38;5;33mDense\u001b[0m)                  │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m30\u001b[0m)             │        \u001b[38;5;34m23,550\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ output (\u001b[38;5;33mDense\u001b[0m)                  │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m)             │           \u001b[38;5;34m310\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\">23,860</span> (93.20 KB)\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m23,860\u001b[0m (93.20 KB)\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\">23,860</span> (93.20 KB)\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m23,860\u001b[0m (93.20 KB)\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": [
    "network.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "23550 input-to-hidden weights+biases\n"
     ]
    }
   ],
   "source": [
    "print(784*30 + 30, \"input-to-hidden weights+biases\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "310 hidden-to-output weights+biases\n"
     ]
    }
   ],
   "source": [
    "print(30*10 + 10, \"hidden-to-output weights+biases\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": []
   },
   "source": [
    "#### Step 2: Specify the loss function, optimizer, and metrics"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "network.compile(loss='mean_squared_error', optimizer='SGD', metrics=['accuracy'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": []
   },
   "source": [
    "Let's check the untrained network's performance on the training images:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(60000, 784)"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "flattened_train_images.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(60000, 10)"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_targets.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2026-04-02 14:54:42.350007: I tensorflow/core/grappler/optimizers/custom_graph_optimizer_registry.cc:117] Plugin optimizer for device_type GPU is enabled.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.0788 - loss: 0.2611\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[0.2610549330711365, 0.07881666719913483]"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "network.evaluate(flattened_train_images, train_targets)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "32.0\n"
     ]
    }
   ],
   "source": [
    "print(60000/1875)  # this is the default batch size"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": []
   },
   "source": [
    "#### Step 3: Train the network"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/5\n",
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.2617 - loss: 0.1116\n",
      "Epoch 2/5\n",
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.4499 - loss: 0.0823\n",
      "Epoch 3/5\n",
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.5461 - loss: 0.0765\n",
      "Epoch 4/5\n",
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.6107 - loss: 0.0713\n",
      "Epoch 5/5\n",
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.6562 - loss: 0.0668\n"
     ]
    }
   ],
   "source": [
    "history = network.fit(flattened_train_images, train_targets, epochs=5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.6791 - loss: 0.0647\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[0.06473483145236969, 0.6790833473205566]"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "network.evaluate(flattened_train_images, train_targets)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(10000, 28, 28)"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_images.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(10000,)"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_labels.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "flattened_test_images = test_images.reshape((10000, 784))\n",
    "test_targets = to_categorical(test_labels)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(10000, 784)"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "flattened_test_images.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(10000, 10)"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_targets.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 3ms/step - accuracy: 0.6808 - loss: 0.0647\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[0.06466386467218399, 0.6808000206947327]"
      ]
     },
     "execution_count": 80,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "network.evaluate(flattened_test_images, test_targets)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": []
   },
   "source": [
    "#### Plotting the training history"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<keras.src.callbacks.history.History at 0x1573dc3b0>"
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "history"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'accuracy': [0.26170000433921814,\n",
       "  0.4499000012874603,\n",
       "  0.5460500121116638,\n",
       "  0.6107166409492493,\n",
       "  0.6562333106994629],\n",
       " 'loss': [0.11160936206579208,\n",
       "  0.08233952522277832,\n",
       "  0.07648345828056335,\n",
       "  0.07129641622304916,\n",
       "  0.06682157516479492]}"
      ]
     },
     "execution_count": 82,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "history.history"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.11160936206579208, 0.08233952522277832, 0.07648345828056335, 0.07129641622304916, 0.06682157516479492]\n"
     ]
    }
   ],
   "source": [
    "loss_values = history.history['loss']\n",
    "print(loss_values)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5"
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(loss_values)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.26170000433921814, 0.4499000012874603, 0.5460500121116638, 0.6107166409492493, 0.6562333106994629]\n"
     ]
    }
   ],
   "source": [
    "accuracy_values = history.history['accuracy']\n",
    "print(accuracy_values)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1, 2, 3, 4, 5]\n"
     ]
    }
   ],
   "source": [
    "epoch_nums = list(range(1, len(loss_values)+1))\n",
    "print(epoch_nums)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 200x200 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(loss_values);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 200x200 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(accuracy_values);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/IAAAGJCAYAAAApGAgTAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAeQNJREFUeJzt3QmczdUbx/Hv2HeR7CLZZckaLShLklYlKZI2SUSUbZBEQir+iRIqEUWlIhSlSJGoZN93yb7G/F/P73RnYTDDzNzt8369frn3d+/cOXPuNOc+v3PO80RERUVFCQAAAAAABIVU/m4AAAAAAABIOAJ5AAAAAACCCIE8AAAAAABBhEAeAAAAAIAgQiAPAAAAAEAQIZAHAAAAACCIEMgDAAAAABBECOQBAAAAAAgiBPIAAAAAAAQRAnkgjD300EMqUqTIBX1t7969FRERoWBrNwAAgSpYx2UAKY9AHghANhAn5JgzZ46/mwoAQMhjXAYQaCKioqKi/N0IAHG9//77ce6PGzdOM2fO1HvvvRfnfL169ZQnT54L7r4TJ07o1KlTSp8+faK/9t9///WODBkyyB8zFnYRY/369Sn+vQEA4YdxGUCgIZAHgsBTTz2l4cOH63zX3Q4fPqxMmTIp1BHIAwD8iXE5eNlnqaNHjypjxoz+bgpwUVhaDwSp2rVr66qrrtKiRYt0ww03eAF8t27dvMc+/fRTNWrUSPnz5/dm26+88kr17dtXJ0+ePOdePJvhtuWDgwYN0siRI72vs6+vWrWqfv755/PuxbP79uFm6tSpXtvsa8uWLavp06ef0X6bUa9SpYo3o2/f56233rqo/X2HDh1Sp06dVKhQIe/7lixZ0vs5Tr/4YSsbrrvuOl1yySXKkiWL9zxfv/m88cYbXrutT3PkyOG1c/z48RfULgBAeAjncfn777/XPffco8svv9z7HjYWP/PMMzpy5MgZz/3rr79077336rLLLvOCaRuHu3fvHuc5W7ZsUevWraP764orrlCbNm10/Pjxs/6sZsyYMd752Cv2rD9vvfVWzZgxw/v57Hvaz2beffdd3XjjjcqdO7f3fcqUKaM333wz3p/xq6++Uq1atZQ1a1Zly5bNew98nw169eqltGnTateuXWd83WOPPeZ95rCLB0BSSpOkrwYgRf39999q2LCh7rvvPj3wwAPRy+xtILMgtWPHjt6/33zzjSIjI7V//3698sor531dG5gOHDigxx9/3BsQBw4cqLvuuktr1671BqpzmTdvnj755BM9+eST3mD3+uuv6+6779bGjRt16aWXes/59ddfdfPNNytfvnzq06eP90HmhRde8Ab1C2HB+m233aZvv/3WG/grVqzoDdidO3f2Pgy8+uqr3vP++OMPbzAvX7689/1s0F69erV++OGH6NcaNWqUnn76aTVp0kTt27f3Bt6lS5fqp59+0v33339B7QMAhIdwHZcnTZrkrQq0YNtec+HChd5F8c2bN3uP+dh4ev3113tttgDXguw1a9bo888/V79+/bznbN26VdWqVdPevXu955QqVcobyydPnux9j3Tp0imxVqxYoWbNmnn99+ijj3oXD4wF7XZhwz5DpEmTxmuH9ZNtO2zbtm3019v79/DDD3vP7dq1qxeYW5/ZBRH7bPDggw96/TVx4kTvwomPXXiwdlt/+2MrIkKc7ZEHENjatm1r08pxztWqVcs7N2LEiDOef/jw4TPOPf7441GZMmWKOnr0aPS5li1bRhUuXDj6/rp167zXvPTSS6P27NkTff7TTz/1zn/++efR53r16nVGm+x+unTpolavXh197rfffvPOv/HGG9HnGjdu7LVly5Yt0edWrVoVlSZNmjNeMz6nt3vq1Kne17344otxntekSZOoiIiI6Pa8+uqr3vN27dp11te+/fbbo8qWLXveNgAAwhfj8vk/d/Tv398bgzds2BB97oYbbojKmjVrnHPm1KlT0bdbtGgRlSpVqqiff/75jNf0PS++zyDm3Xff9c7b5xkf+7xg56ZPn56gdjdo0CCqaNGi0ff37t3rtbl69epRR44cOWu7a9So4T0ntk8++cT73t9+++0Z3we4WCytB4KYzSi3atXqjPOx933ZFfzdu3d7V8DtSrYtaTufpk2bekvKfexrjV35P5+6det6S/J8bPbblqD5vtau8s+aNUt33HGHt2TOp1ixYt4sxoX48ssvlTp1am8mPTZbam/XF2w5nLEr6L4ljna1PT72HJtBOH3JIgAA5xOu43Lsn8+2utnPV7NmTW8MtplrY8vOv/vuO29m25bgx+ZbJm9js20DaNy4sbcM/nQXuv3OluY3aNDgnO3et2+f125bPm99Y/d9W/LsPXv++efPmFWP3Z4WLVp4q/dshYHPBx984G0z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z824p00rtW4t/fWXm2+yj6wAAjSQP378uBYtWqS6tlbG16BUqbz78219TQq95rFjx7R///44R0h74QUpdWrpiy/ceiUAAJJZYra8jRkzxts+F/uwr4vtoYceOuM5N998M+8jEMD+/Vf64AOpfHm3193+DGTMKD39tLRmjfT221KJEv5uJRAc/BrI7969WydPnlSePHninLf727dvT7HX7N+/v7Jnzx59FCpUSCGteHHp4YfdbSvEaeuaAABIJhey5S1btmzatm1b9LFhw4YznmOBe+znfPjhh7yHQACyokkjR0olS0oPPGA5r+z/calrV2n9epeVPtQ/fgMht7Q+EHTt2lX79u2LPjaFQ531yEjJtiZ895309df+bg0AIIRdyJY3m2G3XDi+4/QL9Ma22MV+To4cOZL5JwGQGIcOSa++KhUt6uq9r10r5col9esn2bU5K6iUOzd9CgRdIJ8rVy6lTp1aO3bsiHPe7p8tkV1yvKZ9ELAr/7GPkFewoNS2rbvNrDwAIMC20R08eFCFCxf2VsndfvvtXtWa082ZM0e5c+dWyZIl1aZNG/39999nfb2w20YH+NE//0h9+0qFC0sdO0pbt0oFCkhWbMpm4O2j5yWX8BYBQRvIp0uXTpUrV9bs2bOjz506dcq7X6NGjYB5zZD1/PNSlizS4sXSxx/7uzUAgBB0IVveLDC32fpPP/1U77//vjeO16xZU5s3b46zrH7cuHHe+P7yyy9r7ty5atiwofe94hN22+gAP7B5NPt4aQG8Lf60a2vFirm977YHvn17KXNm3hogKaSRn9meuZYtW6pKlSqqVq2aVxf+0KFD3vI706JFCxUoUMAbgH1X9v/888/o21u2bNGSJUuUJUsWFbO/FAl4TfznssukTp2kPn2knj1d1pE0fv+VAACEObvwHvviuwXxpUuX1ltvvaW+Ns0nK8DyXwUWSeXKlVP58uV15ZVXerP0N910U7zb6OzzgY/NyBPMA0nDlsm/8or0zjvS0aO+/y/dzHuTJny8BJKD36O2pk2bateuXYqMjPSuzFesWFHTp0+PvnK/ceNGbwmez9atW3X11VdH3x80aJB31KpVyxu8E/KaiMU+1Awb5mp9vPeexMUOAECAbaNLmzatN/avXr36rM8pWrSo973sOfEF8raN7mxlawFceBk5Wy5vSeuOH3fnqld3FY5v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3bpVU6dOpfcRlGxOxD5S2RzJ6tVSoULSt99K/fpJadP6u3UAAg2BPC5ehQpSs2budo8e9CgAINrx48e1aNEib+l79IePVKm8+/Pnzz9rTx08eFCFCxdWoUKFvGD9jz/+iH5s3bp12r59e5zXzJ49u7dk/2yveezYMe3fvz/OAQSK9eul2rWlnj1dQN+0qfTbby4VEQDEh0AeSaNPHyl1aumLL6QffqBXASDI2X72F154QRs3bryo19m9e7dOnjwZZ0bd2H0LxuNTsmRJb7b+008/1fvvv69Tp06pZs2a2mzpu6Xor0vMa/bv398L9n2HXSAAAsH48W5OZN48KWtWadw46cMPpRw5/N0yAIGMQB5Jo3hxl5XFdO1q6x7pWQAIYh06dNAnn3yiokWLql69epowYYI3q50SatSooRYtWqhixYqqVauW147LLrtMb7311gW/ZteuXbVv377oYxNlU+Fn+/ZJzZu7wxaI2JJ6m4V/8EES2gE4PwJ5JB1bD5Y+vfT999LXX9OzABDkgfySJUu87PKlS5dWu3btvAzxTz31lJewLqFy5cql1KlTa8eOHXHO233b+54QadOm1dVXX63VtnFYiv66xLxm+vTpvQR6sQ/AX2z23WbhbTbeFjTawsa5c6UrruA9AZAwBPJIOgULSm3butuWYvXUKXoXAIJcpUqVvOzwlkjOss6//fbbqlq1qjdbbsvfLfHcuaRLl06VK1fW7Nmzo8/ZUnm7bzPvCWFL85ctW+ZdSDBXXHGFF7DHfk3b827Z6xP6moA/nDjh5j1s77sVYiha1M1/REZKadLwngBIOAJ5JC1bVp8li2SzNZ98Qu8CQJA7ceKEPvroI912223q1KmTqlSp4gXzd999t7p166bmti74PKz03KhRozR27FgtX75cbdq00aFDh7ws9saW0dvSdx/bm//1119r7dq13uz/Aw884JWfe8SKaP+X0d5WDLz44ov67LPPvCDfXiN//vy64447krE3gAtnC0quu85lpre5jpYtXbEfrj0BuBBc+0PSypVL6tTJrRGzDPb2gYpLzAAQdCyAfvfdd/Xhhx96WeYtUH711VdVqlSp6Ofceeed3uz8+TRt2lS7du1SZGSkl4zOZvOnT58enazOEurZ9/D5559/vHJ19twcOXJ4M/o//vijV7rOp0uXLt7FgMcee0x79+7Vdddd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2089Jd16Kx0OAOGEQB4AEiN9eum221w9egvqLU30ffdJmTNL69e7+vVWx754calbN7fmlZl6AEnI/qTYrh/7E3TVVe7PDgAgvBDIA8CFyphRuvNO6cMP3SfqSZOke+5x59eskfr3lypWlEqVkiIjpd9/p68BXLTXX5e++spdV7Q/P/YnBwAQXgjkASApZMokNWkiffSRC+onTHBBvn3SXrlS6ttXKldOKltW6tPH1YsCgESyRT5durjbtqvHZuQBAOGHQB4AkprtnW/a1C2737VL+uADtxzf9tr/+afUu7dUpoxUvrz04osu0AeA8zh82JWaO35catxYevJJugwAwhWBPAAkp6xZpfvvdwnybKbeEuY1auSy4i9bJvXsKZUsKV19tVuKb0vyASAenTq5xTyWnd4KakRE0E0AEK4I5AEgpWTP7krYTZvmUk7bJ/Gbb3b165csccnxihVzyfIse5UlzwMASVOnSiNGuK4YN87VjQcAhC8CeQDwhxw5XNppy1i1fbs0apRUt66UKpUrX2dl7K64wpW1GzLElbkDEJa2bJFat3a3O3d2fyoAAOGNQB4A/O3SS6VHHpFmznRBvU271anjgvqFC9162ssvl2rWlF57zX2qBxAWTp6UHnxQ2rNHqlTJpdUAAIBAHgACyWWXSY8/Ln3zjQvYhw2TbrjBbYadP1/q0EEqVMids8e2bfN3iwEko0GDpG+/dYUxrNSc5cwEAIBAHgACVd68Utu20ty50ubNbjb+2mulqCjp+++ldu2kAgXc7P2bb7pkegBChi3I6dHD3X7jDalECX+3CAAQKAjkASAY5M8vPf20NG+etHGj2zd/zTUuqJ8zx9WhslTWtnl25Ehp925/txiIY/jw4SpSpIgyZMig6tWra6FFqWfxySefqEqVKrrkkkuUOXNmVaxYUe+9916c50RFRSkyMlL58uVTxowZVbduXa1atSpkev3AAVfw4t9/pXvvdSk1AADwIZAHgGBjS+ufecYttbfM9q+84jLdnzolzZ7tlubbbH6DBi4zvtWyB/xo4sSJ6tixo3r16qXFixerQoUKatCggXaeZRVJzpw51b17d82fP19Lly5Vq1atvGPGjBnRzxk4cKBef/11jRgxQj/99JMX8NtrHj16VKHAFtxYNUpLj2FpMyg1BwCILSLKLmkjjv379yt79uzat2+fsmXL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",
      "text/plain": [
       "<Figure size 1200x400 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(12,4)) # width, height in inches\n",
    "\n",
    "plt.subplot(1, 2, 1)\n",
    "plt.plot(epoch_nums, loss_values, 'r')\n",
    "plt.title(\"Training loss\")\n",
    "plt.xlabel(\"Epochs\")\n",
    "plt.ylabel(\"Loss\")\n",
    "\n",
    "plt.subplot(1, 2, 2)\n",
    "plt.plot(epoch_nums, accuracy_values, 'b')\n",
    "plt.title(\"Training accuracy\")\n",
    "plt.xlabel(\"Epochs\")\n",
    "plt.ylabel(\"Accuracy\")\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "def plot_history(history):\n",
    "    loss_values = history.history['loss']\n",
    "    accuracy_values = history.history['accuracy']\n",
    "    epoch_nums = range(1, len(loss_values)+1)\n",
    "    \n",
    "    plt.figure(figsize=(12,4)) # width, height in inches\n",
    "    \n",
    "    plt.subplot(1, 2, 1)\n",
    "    plt.plot(epoch_nums, loss_values, 'r')\n",
    "    plt.title(\"Training loss\")\n",
    "    plt.xlabel(\"Epochs\")\n",
    "    plt.ylabel(\"Loss\")\n",
    "    \n",
    "    plt.subplot(1, 2, 2)\n",
    "    plt.plot(epoch_nums, accuracy_values, 'b')\n",
    "    plt.title(\"Training accuracy\")\n",
    "    plt.xlabel(\"Epochs\")\n",
    "    plt.ylabel(\"Accuracy\")\n",
    "    \n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/IAAAGJCAYAAAApGAgTAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAeQNJREFUeJzt3QmczdUbx/Hv2HeR7CLZZckaLShLklYlKZI2SUSUbZBEQir+iRIqEUWlIhSlSJGoZN93yb7G/F/P73RnYTDDzNzt8369frn3d+/cOXPuNOc+v3PO80RERUVFCQAAAAAABIVU/m4AAAAAAABIOAJ5AAAAAACCCIE8AAAAAABBhEAeAAAAAIAgQiAPAAAAAEAQIZAHAAAAACCIEMgDAAAAABBECOQBAAAAAAgiBPIAAAAAAAQRAnkgjD300EMqUqTIBX1t7969FRERoWBrNwAAgSpYx2UAKY9AHghANhAn5JgzZ46/mwoAQMhjXAYQaCKioqKi/N0IAHG9//77ce6PGzdOM2fO1HvvvRfnfL169ZQnT54L7r4TJ07o1KlTSp8+faK/9t9///WODBkyyB8zFnYRY/369Sn+vQEA4YdxGUCgIZAHgsBTTz2l4cOH63zX3Q4fPqxMmTIp1BHIAwD8iXE5eNlnqaNHjypjxoz+bgpwUVhaDwSp2rVr66qrrtKiRYt0ww03eAF8t27dvMc+/fRTNWrUSPnz5/dm26+88kr17dtXJ0+ePOdePJvhtuWDgwYN0siRI72vs6+vWrWqfv755/PuxbP79uFm6tSpXtvsa8uWLavp06ef0X6bUa9SpYo3o2/f56233rqo/X2HDh1Sp06dVKhQIe/7lixZ0vs5Tr/4YSsbrrvuOl1yySXKkiWL9zxfv/m88cYbXrutT3PkyOG1c/z48RfULgBAeAjncfn777/XPffco8svv9z7HjYWP/PMMzpy5MgZz/3rr79077336rLLLvOCaRuHu3fvHuc5W7ZsUevWraP764orrlCbNm10/Pjxs/6sZsyYMd752Cv2rD9vvfVWzZgxw/v57Hvaz2beffdd3XjjjcqdO7f3fcqUKaM333wz3p/xq6++Uq1atZQ1a1Zly5bNew98nw169eqltGnTateuXWd83WOPPeZ95rCLB0BSSpOkrwYgRf39999q2LCh7rvvPj3wwAPRy+xtILMgtWPHjt6/33zzjSIjI7V//3698sor531dG5gOHDigxx9/3BsQBw4cqLvuuktr1671BqpzmTdvnj755BM9+eST3mD3+uuv6+6779bGjRt16aWXes/59ddfdfPNNytfvnzq06eP90HmhRde8Ab1C2HB+m233aZvv/3WG/grVqzoDdidO3f2Pgy8+uqr3vP++OMPbzAvX7689/1s0F69erV++OGH6NcaNWqUnn76aTVp0kTt27f3Bt6lS5fqp59+0v33339B7QMAhIdwHZcnTZrkrQq0YNtec+HChd5F8c2bN3uP+dh4ev3113tttgDXguw1a9bo888/V79+/bznbN26VdWqVdPevXu955QqVcobyydPnux9j3Tp0imxVqxYoWbNmnn99+ijj3oXD4wF7XZhwz5DpEmTxmuH9ZNtO2zbtm3019v79/DDD3vP7dq1qxeYW5/ZBRH7bPDggw96/TVx4kTvwomPXXiwdlt/+2MrIkKc7ZEHENjatm1r08pxztWqVcs7N2LEiDOef/jw4TPOPf7441GZMmWKOnr0aPS5li1bRhUuXDj6/rp167zXvPTSS6P27NkTff7TTz/1zn/++efR53r16nVGm+x+unTpolavXh197rfffvPOv/HGG9HnGjdu7LVly5Yt0edWrVoVlSZNmjNeMz6nt3vq1Kne17344otxntekSZOoiIiI6Pa8+uqr3vN27dp11te+/fbbo8qWLXveNgAAwhfj8vk/d/Tv398bgzds2BB97oYbbojKmjVrnHPm1KlT0bdbtGgRlSpVqqiff/75jNf0PS++zyDm3Xff9c7b5xkf+7xg56ZPn56gdjdo0CCqaNGi0ff37t3rtbl69epRR44cOWu7a9So4T0ntk8++cT73t9+++0Z3we4WCytB4KYzSi3atXqjPOx933ZFfzdu3d7V8DtSrYtaTufpk2bekvKfexrjV35P5+6det6S/J8bPbblqD5vtau8s+aNUt33HGHt2TOp1ixYt4sxoX48ssvlTp1am8mPTZbam/XF2w5nLEr6L4ljna1PT72HJtBOH3JIgAA5xOu43Lsn8+2utnPV7NmTW8MtplrY8vOv/vuO29m25bgx+ZbJm9js20DaNy4sbcM/nQXuv3OluY3aNDgnO3et2+f125bPm99Y/d9W/LsPXv++efPmFWP3Z4WLVp4q/dshYHPBx984G0z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z824p00rtW4t/fWXm2+yj6wAAjSQP378uBYtWqS6tlbG16BUqbz78219TQq95rFjx7R///44R0h74QUpdWrpiy/ceiUAAJJZYra8jRkzxts+F/uwr4vtoYceOuM5N998M+8jEMD+/Vf64AOpfHm3193+DGTMKD39tLRmjfT221KJEv5uJRAc/BrI7969WydPnlSePHninLf727dvT7HX7N+/v7Jnzx59FCpUSCGteHHp4YfdbSvEaeuaAABIJhey5S1btmzatm1b9LFhw4YznmOBe+znfPjhh7yHQACyokkjR0olS0oPPGA5r+z/calrV2n9epeVPtQ/fgMht7Q+EHTt2lX79u2LPjaFQ531yEjJtiZ895309df+bg0AIIRdyJY3m2G3XDi+4/QL9Ma22MV+To4cOZL5JwGQGIcOSa++KhUt6uq9r10r5col9esn2bU5K6iUOzd9CgRdIJ8rVy6lTp1aO3bsiHPe7p8tkV1yvKZ9ELAr/7GPkFewoNS2rbvNrDwAIMC20R08eFCFCxf2VsndfvvtXtWa082ZM0e5c+dWyZIl1aZNG/39999nfb2w20YH+NE//0h9+0qFC0sdO0pbt0oFCkhWbMpm4O2j5yWX8BYBQRvIp0uXTpUrV9bs2bOjz506dcq7X6NGjYB5zZD1/PNSlizS4sXSxx/7uzUAgBB0IVveLDC32fpPP/1U77//vjeO16xZU5s3b46zrH7cuHHe+P7yyy9r7ty5atiwofe94hN22+gAP7B5NPt4aQG8Lf60a2vFirm977YHvn17KXNm3hogKaSRn9meuZYtW6pKlSqqVq2aVxf+0KFD3vI706JFCxUoUMAbgH1X9v/888/o21u2bNGSJUuUJUsWFbO/FAl4TfznssukTp2kPn2knj1d1pE0fv+VAACEObvwHvviuwXxpUuX1ltvvaW+Ns0nK8DyXwUWSeXKlVP58uV15ZVXerP0N910U7zb6OzzgY/NyBPMA0nDlsm/8or0zjvS0aO+/y/dzHuTJny8BJKD36O2pk2bateuXYqMjPSuzFesWFHTp0+PvnK/ceNGbwmez9atW3X11VdH3x80aJB31KpVyxu8E/KaiMU+1Awb5mp9vPeexMUOAECAbaNLmzatN/avXr36rM8pWrSo973sOfEF8raN7mxlawFceBk5Wy5vSeuOH3fnqld3FY5v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3bpVU6dOpfcRlGxOxD5S2RzJ6tVSoULSt99K/fpJadP6u3UAAg2BPC5ehQpSs2budo8e9CgAINrx48e1aNEib+l79IePVKm8+/Pnzz9rTx08eFCFCxdWoUKFvGD9jz/+iH5s3bp12r59e5zXzJ49u7dk/2yveezYMe3fvz/OAQSK9eul2rWlnj1dQN+0qfTbby4VEQDEh0AeSaNPHyl1aumLL6QffqBXASDI2X72F154QRs3bryo19m9e7dOnjwZZ0bd2H0LxuNTsmRJb7b+008/1fvvv69Tp06pZs2a2mzpu6Xor0vMa/bv398L9n2HXSAAAsH48W5OZN48KWtWadw46cMPpRw5/N0yAIGMQB5Jo3hxl5XFdO1q6x7pWQAIYh06dNAnn3yiokWLql69epowYYI3q50SatSooRYtWqhixYqqVauW147LLrtMb7311gW/ZteuXbVv377oYxNlU+Fn+/ZJzZu7wxaI2JJ6m4V/8EES2gE4PwJ5JB1bD5Y+vfT999LXX9OzABDkgfySJUu87PKlS5dWu3btvAzxTz31lJewLqFy5cql1KlTa8eOHXHO233b+54QadOm1dVXX63VtnFYiv66xLxm+vTpvQR6sQ/AX2z23WbhbTbeFjTawsa5c6UrruA9AZAwBPJIOgULSm3butuWYvXUKXoXAIJcpUqVvOzwlkjOss6//fbbqlq1qjdbbsvfLfHcuaRLl06VK1fW7Nmzo8/ZUnm7bzPvCWFL85ctW+ZdSDBXXHGFF7DHfk3b827Z6xP6moA/nDjh5j1s77sVYiha1M1/REZKadLwngBIOAJ5JC1bVp8li2SzNZ98Qu8CQJA7ceKEPvroI912223q1KmTqlSp4gXzd999t7p166bmti74PKz03KhRozR27FgtX75cbdq00aFDh7ws9saW0dvSdx/bm//1119r7dq13uz/Aw884JWfe8SKaP+X0d5WDLz44ov67LPPvCDfXiN//vy64447krE3gAtnC0quu85lpre5jpYtXbEfrj0BuBBc+0PSypVL6tTJrRGzDPb2gYpLzAAQdCyAfvfdd/Xhhx96WeYtUH711VdVqlSp6Ofceeed3uz8+TRt2lS7du1SZGSkl4zOZvOnT58enazOEurZ9/D5559/vHJ19twcOXJ4M/o//vijV7rOp0uXLt7FgMcee0x79+7Vdddd571mhgwZkrwvgIthi1bGjJHatZMOHZIuuUQaMcJlpgeACxURdb41cWHIludZRltLhsMeugvqQLdW7O+/JasR/N+MCwAgeMYm29duSe5at27tzXLbPvXTWSBte+Yt4A82jPVICXv2SI89Jn38sbtvS+rfe8/ViAeAixmbWFqPpGe/dL4lkr17W/FeehkAgowta7cZ7nvuuSfeIN5kzpw5KIN4ICV8841UvrwL4m1x4oABkqV1IIgHkBQI5JE8nnxSKlDA1ktKF1EuCADgHzt37vSSx53Ozv3yyy9+aRMQDGz+oksXqW5dacsWqUQJacEC6bnnXIZ6AEgKBPJIHhkzuhSspl8/6eBBehoAgkjbtm3jrbW+ZcsW7zEAZ1q+3CWve+UVtzf+8cdd/t/KlektAEmLQB7Jx/bGFytm0zrSa6/R0wAQRP7880+v9NzprJ67PQYghgXtlsDOAvZff5UuvVSaOtWdy5yZngKQ9AjkkXxsT+ULL7jbdmnaMr4AAIJC+vTptWPHjjPOb9u2TWmoRgJEs/mK22+X2rSRjhyR6teXli1z5wAguRDII3lZbRXL9LJvnzRwIL0NAEGifv36Xm13y5zrY2XerHa8ZbMHIE2f7j7mfP65lC6d9Oqr0ldfSfny0TsAkheBPJL5NyyV2yNvXn/dpnLocQAIAoMGDfL2yBcuXFh16tTxjiuuuMKr7T548GB/Nw/wK5t5b99eathQsoUrZctKP/8sdejgPvoAQHLjTw2SX6NGLvOLjXq+oB4AENAKFCigpUuXauDAgSpTpowqV66s1157TcuWLVMh6mchjNmy+WrV3PyEefppF8TbzDwApJSIqChLz4HY9u/fr+zZs3vLCbNZTXRcvDlzpDp13L75FSukK66gVwEgERibkhb9icQ6dcoF71ZG7vhxKU8e6d133aw8AKT02JQmSb4jcD61a7vsL19/LfXuLY0dS58BQBCwDPUbN27UcYtcYrntttv81iYgpdnOwIcech9jzK23Su+8I+XOzXsBwD8uKJC3PXMREREqWLCgd3/hwoUaP368t/TuscceS+o2IlTYsnobAd97T+rSxW0oAwAEpLVr1+rOO+/0ltLbmO9bwGe3zcmTJ/3cQiBlfPqp1Lq19PffUsaMkqWIeOIJ+3+BdwBAkO2Rv//++/Xtt996ty3pjWWvtWC+e/fuesFXbgw4XZUq0t13u2KrPXvSPwAQwNq3b+8lt9u5c6cyZcqkP/74Q999952qVKmiObZdCghxhw65gP2OO1wQX7GitGiRKzNHEA8gKAP533//XdUsy4ekjz76SFdddZV+/PFHffDBBxozZkxStxGhxC70WDrXKVNcZhgAQECaP3++d3E+V65cSpUqlXdcd9116t+/v5627F5ACLOAvVIl6a233P3OnaUFC6TSpf3dMgC4iED+xIkTSp8+vXd71qxZ0fvkSpUqpW0XUF5s+PDhKlKkiDJkyKDq1at7s/vnMmnSJO972fPLlSunL7/8Ms7jO3bs0EMPPaT8+fN7swg333yzVq1aleh2IRmUKSM9+KC73a0bXQwAAcqWzmfNmtW7bcH81q1bvdtWjm6FJS0FQpDtGHn5Zemaa6SVK616g33WlQYOlP776AsAwRvIly1bViNGjND333+vmTNneoGysUH+0ksvTdRrTZw4UR07dlSvXr20ePFiVahQQQ0aNPCW8sXHZv6bNWum1q1b69dff9Udd9zhHbZKwNgePrtve/s+/fRT7zn2oaNu3bo6ZGuk4H+W7M6y19vI+M03/m4NACAettrut99+827bRXYrQ/fDDz94s/RFixalzxByNm2S6taVnn9e+vdftxvQ/he46SZ/twwAkqj8nO2NswQ4lh6/ZcuWGj16tHe+W7du+uuvv/TJJ58k+LXsw0HVqlU1bNgw7/6pU6e8+rTt2rXT8/aX9DRNmzb1AvJp06ZFn7vmmmtUsWJF7+LCypUrVbJkSS+wtwsOvtfMmzevXnrpJT3yyCPnbRMlaVJAu3aSvefVq9v6TTabAUCAjU0zZszwxtu77rpLq1ev1q233uqNsXbB3i7C33jjjUH9njHWI7aPPpIef1zau1fKnNmVmWvVio8nAEKs/Fzt2rW1e/du7xvlyJEj+rxlrLel7AllpWwWLVqkrl27Rp+zPXg2e2578+Jj520GPzabwZ86dap3+9ixY96/tuw+9mvaVoB58+bFG8jb1/i+ztjPhWTWvbtkF4B++kn6/HOrY0SXA0AAsbHVp1ixYt6F+j179njjvi9zPRDsDhxwcwu+qriWAuqDD+x33t8tA4BkWFp/5MgRL/D1BfEbNmzQ0KFDvT1zuRNRUNMuBtgevDx58sQ5b/ctG3587Py5nm975y+//HLv4sA///zjXSx4+eWXtXnz5rPu37fEPXblw3fYigAks7x5LSVyTFB/6hRdDgABwnLhpEmTJnrbmk/OnDkJ4hEyLHmdZaK3IN7y8PboIc2bRxAPIIQD+dtvv13jxo3zbu/du9dbHj948GBvb/qbb74pf0qbNq23tN+W/9kHDlshYKXyGjZs6M3Mx8eCflu+4Ds22SYpJD9LAXvJJVYGQfrwQ3ocAAKEjaV2UZxa8QhFtv/diuhcd520dq0lcJTmzpX69nUpfAAgZAN5S0p3/fXXe7cnT57szYjbrLwF96/bpqIEsiy4qVOn9rLMx2b3bU97fOz8+Z5fuXJlLVmyxLvIYLPw06dP199//33W5Dy27N72IMQ+kAJsRUeXLu52ZKRNAdHtABAgunfv7uW+seX0QKhYt06qVUvq1ctlqL//fpfQzoJ6AAj5QP7w4cPRJWm+/vprLxGOzXZb0jkL6BMqXbp0XtA9e/bs6HOWmM7u16hRI96vsfOxn28sc358z7dl8pdddplXeu6XX37xVhIgwFgtYtsqYZfE33nH360BAPzHktB+9913XilXSyJbqVKlOAcQTCy183vvSRUqWAUkyeZs3n/f7YfPnt3frQOAxLugZHeW9MaSy1nmestq+8wzz3jnrWRcYmezLXGdZb6vUqWKqlWr5u21tyy5rSxVqKQWLVqoQIEC3j520759e9WqVctbyt+oUSNNmDDBC9JHjhwZp868BfC2LHDZsmXe19iy//r161/Ij4vkZKlhbVOaZZqxdW4tW0oZM9LnAOBnNm4CocAy0bdpI02Y4O5fe60L4osU8XfLACCFA/nIyEjdf//9XgBv5Wd8s+E2O3/11Vcn6rWsnNyuXbu817SEdVZGzpbC+xLabdy4Mc7e9po1a2r8+PHq0aOHt+SvePHi3kUFq3frY8vp7QKBLbnPly+fdzGgZ8+eF/KjIiU8+qg0aJBlTXQl6WzvPADAr3rZ2mMgyH33nfTgg/Z5UkqdWurd29WJT3NBn4ABIMjryBsLui1grlChQnSgvXDhQm9G3jLHBzNqy/qBpYx96CFLieyW2bPODQDiYGxKWvRnaLO0Oxa024JO+6R75ZVuGX316v5uGQAkzdh0QXvkjSWXs9n3rVu3eqXdjC2ND/YgHn7ywANS6dKSJVUaMoS3AQD8zC7SW0Lasx2JNXz4cBUpUkQZMmTwqt3Yxf+EsC10Vrf+9KX+Dz30kHc+9nHzzTcnul0IPatW2QpO6aWXXBD/8MPSr78SxAMILRcUyFtCuhdeeMG7WlC4cGHvuOSSS9S3b1/vMSDR7EOh1X0xFsjv2kUnAoAfTZkyxSvn6jsmTpyo559/3tuyFjsvTULY19qWN1uub5VvbDVfgwYNvNw657J+/Xo9++yz0ZVyTmeBu60O9B0fUso0rFnQ/vbbrjb8L7+44jiTJrlcuv/laAaAkJHmQkvSvPPOOxowYICutYwhkubNm6fevXvr6NGj6tevX1K3E+HgrrusdqC0aJFbC8fMPAD4TXyVXpo0aaKyZct6gXnr1q0T/FpDhgzRo48+Gp3IdsSIEfriiy80evRo7+JAfKyGffPmzdWnTx99//33XknZ+MrHnq1cLcLL33+7lDtTprj7depI48ZJBQv6u2UAEEAz8mPHjtXbb7+tNm3aqHz58t7x5JNPatSoURozZkzStxLhISLCrYMz//uftGmTv1sEADiNlZo9vQzsuRw/flyLFi1S3bp14yzbt/vz588/69fZyr/cuXOf84LBnDlzvOdYeTz7TPK3RXNncezYMW/vYewDobOUvnx5F8SnTSsNHCjNmkUQDyC0XVAgv2fPnnj3wts5ewy4YPXqSbVr2ycuV44OABAwjhw5otdff90rC5tQu3fv9mbXfdVofOy+Jc6Nj63ys5V/NkFwNrasfty4cd5FhZdffllz585Vw4YNve8VHytja1sCfUehQoUS/DMgcB0/Lt13n7R1q1SypPTTT674TayCRwAQki5oab3tbRs2bJg3mMdm52x2HrioWXnbmmFbNt59143GJUrQoQCQwnLkyOElkPOxIjcHDhxQpkyZ9L4V4U4m9j0efPBBL4jPlSvXWZ93n0Vv/ylXrpz3+ePKK6/0ZulvuummM57ftWtXb5++j83IE8wHvx49pMWLXdEbZuEBhJMLCuQHDhyoRo0aadasWdE15G153KZNm/Tll18mdRsRbizV7K23StOmSZGRlrLY3y0CgLDz6quvxgnkbTn8ZZdd5mWctyA/oSwYtyz3O3bsiHPe7se3v33NmjVekrvGjRtHn/Ml0k2TJo1WrFjhBeynK1q0qPe9Vq9eHW8gb/vp7UDosMD9lVfcbUtyx354AOHkggL5WrVqaeXKlV4pmb/++ss7d9ddd+mxxx7Tiy++eNbsskCC2ay8BfITJ0qWCMlS0AIAUoyVd0sK6dKlU+XKlb0l8L4SchaY2/2nnnoq3m16y5Yti3OuR48e3kz9a6+9dtZZdCuFa3vkLas+Qp8Vt2nRwt1+/HHpzjv93SIASFkRUbZWLon89ttvqlSp0ln3pwULW25n++f27dunbNmy+bs54ev++yUrJXTLLdIXX/i7NQAQVmPTu+++qyxZsuiee+6Jc37SpEk6fPiwWrZsmeDXsiz39vy33npL1apV09ChQ/XRRx95kwG2V75Fixbevnvbx362iwqWtX7q1Kne/YMHD3rZ7O+++25vVt9m8bt06eIF+3YRICEz74z1wcs+uVpRhc8/tws/rthNpkz+bhUAXLzEjE2kAkHgsmR3Vl/etmvMm+fv1gBAWLGgOr496pYl/iVfhZEEatq0qQYNGqTIyEhVrFhRS5Ys0fTp06MT4G3cuNGrA59QtlR/6dKluu2221SiRAkvs73N+luZOpbPhz4rbGNBfLp07no/QTyAcMSMfDy4Sh9AbL3cyJGSbdeYO9clwwOAMJTSY1OGDBm8GfMiRYrEOW/710uXLu1lsA9mjPXB6fffpSpVXHGbV1+VOnTwd4sAIOkwI4/Q0bOnZSiSvv9emjHD360BgLBhM+826x3fNrpLL73UL21CeLNrR82auSC+YUOpfXt/twgAgiTZnSW0OxfbvwYkKUtBa8mQBg+WunWT6tenOCwApIBmzZrp6aefVtasWXXDDTd456xWe/v27eOUfgNSSpcubkY+d25XoZZFegDCWaICeVvSd77HLWENkKQsa70tr//1V+njj6XTEi8BAJJe3759vWX0VsrNyr75ss3bOJ/YPfLAxbJCNsOGudtjx0r/pVcAgLCVpHvkQwX75gJQnz5S795SyZLucvx/HyoBIFz4a2xatWqVl5wuY8aMKleunAoXLqxQwFgfPCwPYvny0u7dbk+87Y0HgFCUmLGJaAjB4ZlnpDfekFaskN57T2rVyt8tAoCwULx4ce8A/OHUKVcv3oL4ChWkAQN4HwDAUH4OwcGuSNkeeWMz85bpBgCQbKxG+8svv3zG+YEDB55RWx5ILkOGSLNmSRkzSuPHu/y3AAACeQSTNm2kAgWs4LD01lv+bg0AhLTvvvtOt9xyyxnnGzZs6D0GJLdFi2Ku4dty+jJl6HMA8GFGHsHDLsdHRrrbL74oHTzo7xYBQMg6ePCg0qVLd8b5tGnTenv4gOT9/XOl5k6ckO68U3rsMfobAGIjkEdwsb3xxYpJu3ZJr73m79YAQMiyxHYTJ0484/yECRNUhqlRJDNLardqlVuIN2oUpeYA4HQku0NwSZtWeuEF6f77pVdeccvtc+b0d6sAIOT07NlTd911l9asWaMbb7zROzd79myNHz9ekydP9nfzEMImTZLeeccF75bf9tJL/d0iAAg8zMgj+DRt6urQ7NtnWZf83RoACEmNGzfW1KlTtXr1aj355JPq1KmTtmzZom+++UbFbGUUkAwsDY5vGf3zz0t16tDNABAfAnkEn1SppH793O3XX3cFZgEASa5Ro0b64YcfdOjQIa1du1b33nuvnn32WVWwOmBAEjt5UnrgAWnvXqlqValPH7oYAM6GQB7BqVEjqUYN6cgRl/gOAJAsLEN9y5YtlT9/fg0ePNhbZr9gwQJ6G0nupZek77+XsmSRPvzQ7aYDAMSPQB7ByTbO9e/vbo8cKa1d6+8WAUDI2L59uwYMGKDixYt7NeOzZcumY8eOeUvt7XxVmy4FktCPP8bMwP/vf9KVV9K9AHAuBPIIXrVqSfXrS//+K/Xu7e/WAEDI7I0vWbKkli5dqqFDh2rr1q164403/N0shDBLedO8uVtab7lsbXk9AODcCOQR/OvwzPvvS3/84e/WAEDQ++qrr9S6dWv16dPH2yOfOnVqfzcJISwqyhWgWb9eKlLEzcbbojsAwLkRyCO4Va4s3X23+yTQs6e/WwMAQW/evHk6cOCAKleurOrVq2vYsGHavXu3v5uFEGXX4W0/vF0vGj9eyp7d3y0CgOBAII/g17evy2Q/ZYq0cKG/WwMAQe2aa67RqFGjtG3bNj3++OOaMGGCl+ju1KlTmjlzphfkA0lhzRrpySfd7V69XA5bAEDCEMgj+JUuLbVo4W537+7v1gBASMicObMefvhhb4Z+2bJlXh15S3SXO3du3Xbbbf5uHoLciRNuP/zBg9L110vduvm7RQAQXAjkERrsUr7VqZk1S/rmG3+3BgBCiiW/GzhwoDZv3qwPbR00kATDti2iu+QSt7yeVAwAkDgE8ggNliHniSfcbbusb3vmAQBJyhLf3XHHHfrss8/oWVywb7+VBgxwt0eNki6/nM4EgMQikEfosAA+Uybpp5+kzz/3d2sAAMBp/v5bevBBd729dWupSRO6CAAuBIE8QkfevFL79jF75a0gLQAACAgWvD/6qLRli1SihDR0qL9bBADBi0AeoaVzZ7fh7vffpQkT/N0aAACgmGX0VmDGUtpYqbksWegaALhQBPIILTlySF26uNuRkdLx4/5uEQAAYW/5cqlDB9cNL70kVa4c9l0CABeFQB6h5+mnpTx5pLVrpdGj/d0aAICk4cOHq0iRIsqQIYOqV6+uhZayPAGsjn1ERISXZC+2qKgoRUZGKl++fMqYMaPq1q2rVatW0dcB6NgxqVkz6cgRqW5dqWNHf7cIAIIfgTxCT+bMUo8e7vYLL7hPDgAAv5k4caI6duyoXr16afHixapQoYIaNGignTt3nvPr1q9fr2effVbXW6Hx01g5vNdff10jRozQTz/95NW9t9c8evRoMv4kuBBdu0q//SblyiWNGyel4tMnAFw0/pQiND32mCtJt22bNGyYv1sDAGFtyJAhevTRR9WqVSuVKVPGC74zZcqk0edYNXXy5Ek1b95cffr0UdGiRc+YjR86dKh69Oih22+/XeXLl9e4ceO0detWTZ06NQV+IiTU9OnSq6+62+++K+XLR98BQFIgkEdoSpdO6t3b3bZitVbvBgCQ4o4fP65FixZ5S999UqVK5d2fP3/+Wb/uhRdeUO7cudXaapSdZt26ddq+fXuc18yePbu3ZP9sr3ns2DHt378/zoHktWOH1LKlu/3UU9Ktt9LjAJBUCOQRuh54QCpdWtqzR7r8cumhh6TvvnP1bwAAKWL37t3e7Hoey10Si923YDw+8+bN0zvvvKNRluY8Hr6vS8xr9u/f3wv2fUehQoUu8CdCQpw65YZd2z1x1VW2FYJ+A4CkRCCP0JU6tTR2rCtWe/iwu12rllS8uNSvn7R5s79bCAA4zYEDB/Tggw96QXwu21SdRLp27ap9+/ZFH5s2baLvk9Ebb7hl9enTSx9+KGXMSHcDQFJKk6SvBgSaqlWlv/6SbKml7cWcOFFas8Ylw+vZU6pfX3r4Yem226QMGfzdWgAIORaMp06dWjtsnXUsdj9v3rxnPH/NmjVekrvGjRtHnztl07v2oSVNGq1YsSL66+w1LGt97NesWLFivO1Inz69dyD5WWI7XyXYwYPdjDwAIGkxI4/QFxEh1awpvf22rceUxoyRbrjBLbGfMUNq2lTKn19q105avJil9wCQhNKlS6fKlStr9uzZcQJzu1+jRo0znl+qVCktW7ZMS5YsiT5uu+021alTx7ttS+KvuOIKL5iP/Zq2592y18f3mkg5tgDOSs0dP+72xD/5JL0PAMmBGXmEX2k6y7xjx+rVLqi3Jfe2zN6y29tRoYLUqpXUvLmrlQMAuChWeq5ly5aqUqWKqlWr5mWcP3TokJfF3rRo0UIFChTw9rFbnfmrTpvCveSSS7x/Y5/v0KGDXnzxRRUvXtwL7Hv27Kn8+fOfUW8eKatTJ2n5cped3hbC2bV0AEDSY0Ye4atYMenFF61QsdvIZzPzlu3e1gR26OBm6e+5R/ryS+nff/3dWgAIWk2bNtWgQYMUGRnpLX23mfXp06dHJ6vbuHGjtlm50ETo0qWL2rVrp8cee0xVq1bVwYMHvde0CwHwjylTpBEj3G2rF3/ZZbwTAJBcIqKsGCvisOV5ltHWkuFky5aN3gknluF+/HhX7NaW2ftYUN+ihZupt+R5AJDCGJvoz0BmC9tsQZsNo507k6UeAJJ7rGdGHogtZ05X7HbRImnJEql9e+nSS6WtW109+pIlpeuuc+sFDxyg7wAAYe/kSXet24L4SpXcYjcAQPIikAfOxqYWhg6VtmyRJk+WbrlFSpVK+uEHqXVrtwHQZui//54EeQCAsPXKK9K330qZMrlSc7ZLDQCQvAjkgfOxckV33y198YVkdYf793fL6w8dismAb/dfeona9ACAsLJwoavm6qsdz+4zAEgZBPJAYthe+eefd7Xp581zM/NZsrgM+N27S4ULSw0bSh99JB07Rt8CAEKW7TC7/36XD9Zyw/5XhAAAEC6B/PDhw1WkSBEv02z16tW10C7vnsOkSZO8OrP2/HLlyulLyyoei2Wufeqpp1SwYEFlzJhRZcqU0QhfGlUgKVg9nWuvdbXpLdOyJcezmflTp2Iy4Ptq0//6K30OAAg5NsStWSNdfrn01luUmgOAsArkJ06c6NWX7dWrlxYvXqwKFSqoQYMG2rlzZ7zP//HHH9WsWTO1bt1av/76q1cv1o7ff/89+jn2elaC5v3339fy5cu9WrMW2H/22Wcp+JMhbNiM/EMPSXPnSqtWuZn5AgVc1h+rS2+Zf66+Wnr9denvv/3dWgAALprthR871qWOef99KUcOOhUAwqr8nM3AW/3XYRbwyCY0T6lQoUJebdjnbQlzPLVoDx06pGnTpkWfu+aaa7y6tL5Z96uuusp7Xk/fpi1JlStXVsOGDfViAlKpUuIHSZLCd9Ysl91+6lTp+HF33jIA3Xab9PDDUv36UurUdDaABGFsSlr054Vbt06qWNH6UIqMlPr0ScI3BgDC2P5gKT93/PhxLVq0SHXr1o1pUKpU3v358+fH+zV2Pvbzjc3gx35+zZo1vdn3LVu2yK5TfPvtt1q5cqXqW+AUj2PHjnmdFvsALooF6A0a2JITt/TeMgDZzLwF9L4M+LYWsVs3N4sPAEAQsP3wzZu7IL5GjZhEdwCAlOXXQH737t06efKk8uTJE+e83d++fXu8X2Pnz/f8N954w9sXb3vk06VLp5tvvtnbh3+D7WGOR//+/b0rH77DVgQASSZ2bXrbL//00zG16X0Z8K+/3u2zP3iQjgcABKy+fW1SRbKJog8+kNKk8XeLACA8+X2PfHKwQH7BggXerLzN+A8ePFht27bVLFvqHI+uXbt6yxd8xyYrMQYkB1uL+Nprrjb9pEkxtektA74tt8+b1/1LbXoAQICxocm3Q9F2M15xhb9bBADhy6/XUXPlyqXUqVNrx44dcc7b/bwW0MTDzp/r+UeOHFG3bt00ZcoUNWrUyDtXvnx5LVmyRIMGDTpjWb5Jnz69dwApxn7fmjRxhwX148a5GXlbZm//2lGsmKvl07KlS54HAICf/POPW1JvxVlatJCaNeOtAICwnZG3Ze+WhG727NnR5yzZnd2vYRuv4mHnYz/fzJw5M/r5J06c8A7bax+bXTCw1wYCjgXpXbtKK1a46Q6bkc+cOaY2ve2lt5l7m8GnNj0AIIVZWuQnnpBsweKVV7qCLACAMF9ab6XiRo0apbFjx3ql4tq0aeNlpW9lM5Gyq74tvKXvPu3bt/dKy9ly+b/++ku9e/fWL7/84pWXM5bdr1atWurcubPmzJmjdevWacyYMRo3bpzuvPNOv/2cQIJq0193nfTOO5YMws3K2955uwD11VfSvfe62vS2x37JEjoUAJAixoyRPvrI7YcfP17KmpWOBwCFeyBvZeJsyXtkZKRXQs6WwFug7ktot3HjRm2zrN+xMtKPHz9eI0eO9GrOT548WVOnTvVKzvlMmDDBK2nXvHlzL+ndgAED1K9fPz1hl5OBYKpN/9130sqVLru9rza9ZcC3uvR22G1q0wMAkokNQe3axSS6q1aNrgaAQOD3OvKBiNqyCNja9DNnupn602vT3367W5Jfrx616YEQxdhEf6Y0G2Zq1nRFV+rUcUOQVVcFAIR5HXkAiWCfnm6+2dWmt9J1r7/uZuXtk5btn2/YUCpc2O2rpzY9AOAi9ejhgniromo5WQniASBwEMgDwcjq0Ntax8WLY2rT2ycty4D/0kuuNv0NN1CbHgBwQaxi7yuvuNtvvy0VLEhHAkAgIZAHQqU2vc3S+2bmrWqDLwO+rza91apnJw0A4Dx27XIl5szjj0vkCgaAwEMgD4Rabfovv7QskW5mvnhx6dChmAz4JUtK/fu7mXsAAE5j13tbt5Ysz3Dp0tKQIXQRAAQiAnkgHGrTWzlHq01ve+ctA76vNv3kydSmBwBEe/NN6fPPXR7VDz+UMmWicwAgEBHIA+FQm370aFeb3v6NXZv+nntcbfr27alNDwBh7vffpU6d3O2BA6UKFfzdIgDA2RDIA+FUm95m5mPXprcg3mrT+zLgV6pEbXoACENHjkjNmklHj7pUK5ZDFQAQuAjkgXBke+f79XN76W1Pvc3M2zpKXwZ8C/CbNpWmT3f16wEAIa1LFzcjnzu3S6tiC7oAAIGLQB4IZ1YU2KZePvoopja9ZcG32vR2LnZt+tWr/d1aAEAymDZNGjbM3R47VsqTh24GgEBHIA8gbm16m5W3+vR2O3ZtepvFr1VLGjNGOniQXgOQKMOHD1eRIkWUIUMGVa9eXQsXLjzrcz/55BNVqVJFl1xyiTJnzqyKFSvqvffei/Ochx56SBEREXGOm2++mXclkSw7ve26Mh06SHQhAAQHAnkAZ7L98jY7b7P0vpl5q01v++vtE1++fK4+0Q8/UJsewHlNnDhRHTt2VK9evbR48WJVqFBBDRo00M6dO+N9fs6cOdW9e3fNnz9fS5cuVatWrbxjxowZcZ5ngfu2bduijw8tzToSzPKetmwp7d7tEtsNGEDnAUCwiIiKsoqhiG3//v3Knj279u3bp2zZstE5gNm8WRo3zm2ejL3MvkQJF9y3aOH21gNIFsE8NtkMfNWqVTXsv/Xbp06dUqFChdSuXTs9//zzCXqNSpUqqVGjRurbt2/0jPzevXs1derUsOvPpDJ4sPTss1LGjNKiRa5uPADAfxIzNjEjDyBhChZ0me4t471vZt5q09t9q1lfqJDUqJH08cdujz0AyP4cHNeiRYtUt27dmA8fqVJ5923G/XxsvmH27NlasWKFbrjhhjiPzZkzR7lz51bJkiXVpk0b/f3332d9nWPHjnkfkGIf4cx2UNmfbjN0KEE8AAQbAnkAiWOpjK0Wfeza9Far3tZoWgb8Jk3czLxttvztN3oXCHO7d+/WyZMnlee0DGp2f7v9DTkLm43IkiWL0qVL583Ev/HGG6pXr16cZfXjxo3zgvyXX35Zc+fOVcOGDb3vFZ/+/ft7sxy+w1YEhKtDh1ypuRMnpDvvlB591N8tAgAkFoE8gIuvTf/999KKFW56x4J4mxV77TWXAd9q09v6TSt1BwAJlDVrVi1ZskQ///yz+vXr5+2xtxl4n/vuu0+33XabypUrpzvuuEPTpk3znhv7ObF17drVuzjgOzZt2hS270X79m4xVYEC0qhRlJoDgGBEIA8gadheectu76tNbzPzadO6LPi2CdPK2NWs6dZwWiZ8AGEhV65cSp06tXbs2BHnvN3PmzfvWb/Olt8XK1bMy1jfqVMnNWnSxJtVP5uiRYt632v1WUplpk+f3ttvGPsIR5MmSe+844J3KwRgBUsAAMGHQB5A8tSmt0+LlvV++HBXts4+Ndp+2GeecfvtbXm+Jb6y2kcAQpYtja9cubK3BN7Hkt3Z/Ro1aiT4dexrbJ/72WzevNnbI5/PqmogXnad9bHH3G3LMVinDh0FAMGKQB5A8smVS3rySctI5bLeW0m7a691j82b52rV29rO2rWlN9+0KTreDSAE2bL4UaNGaezYsVq+fLmXmO7QoUNeSTnTokULb+m7j828z5w5U2vXrvWeP3jwYK+O/AMPPOA9fvDgQXXu3FkLFizQ+vXrvYsCt99+uzeDb2XtcCZLHWDdt3evVK2a1KcPvQQAwSyNvxsAIEzY3nkL3O2woH7yZCsuLS1YIM2d646nnnJBfdOm0l13uQsBAIJe06ZNtWvXLkVGRnoJ7my5/PTp06MT4G3cuNFbSu9jQf6TTz7pzbJnzJhRpUqV0vvvv++9jrGl+lZf3i4MWAm6/Pnzq379+l5pOltCjzPZrgRLZ2KpTcaPdzufAADBizry8aC2LJCCNmxwy/A/+kj6+ee4S/Rvukm6916XVjlnTt4WhDXGJvrzQtmuJtvNZLPy48ZJDz6YxJ0JAEgS1JEHEDwsCZ4lw1u4UFq7VhowwGW6t0+cX38tPfKI1amSbrlFGjPGrQsFACTIvn3S/fe7P6n273+7EwAAQY498gACxxVXSM89Jy1a5Goj9esnVagg/fuv9NVXrtRd7txS48bS++/bZUt/txgAAlZUlEtTsn69VKSI9L//UWoOAEIFgTyAwFS8uNStm7RkibR8ufTCC1LZstKJE9K0aW5tqAX1tuz+ww+lAwf83WIACCh2vdP2w9tOJfs3e3Z/twgAkFQI5AEEvlKlpJ49pd9/d0dkpFSypGSlqKZOdetFLai32vW21/7QIX+3GAD8as0aNxtvevWSElHpDwAQBAjkAQQXm5W3ukk2S790qdS9u1SsmHT0qPTxxy7jvQX19q/dP3LE3y0GgBRlC5fs+ubBgy7JnS1uAgCEFgJ5AMEpIkIqV0568UW3n37xYun556WiRaXDh93MvM3QX3aZ+0T76acu2AeAENe7t8sfesklbnm9La0HAIQWAnkAoRHUX321K5S8erUrY9e5s8uIb8vsbQ/9HXe4mXrbW2977G1ZPgCEmDlz3J9CM2qUdPnl/m4RACA5EMgDCL2gvkoVaeBAad06acECqWNHqWBBlxDPpqcs672VtLMs+JYN//hxf7caAC7anj2uvJxlq2/d2i1KAgCEJgJ5AKEd1FevLg0eLG3YIP3wg/T001K+fK64stWlt/r0efO6evVWt95K3QFAkLHg/dFHpS1bpBIlpKFD/d0iAEByIpAHEB5SpZJq1pRee03avFn67jupbVs3M//PP9I770gNGrig/vHHpdmzCeoBBA1bRv/JJ1LatK7UXJYs/m4RACA5EcgDCM+g3lI5Dxvmpq+++UZ64gmXGO/vv6WRI6W6daUCBVz9prlzpZMn/d1qAIiXFfHo0MHdfuklqXJlOgoAQh2BPIDwZumc69SR3nxT2rpVmjnTrU/NmVPaudOdr13b7bFv106aN086dcrfrQYAj+XtbNbMVdqsV8+lBAEAhD4CeQDwSZPGzcTbjPz27dL06S4hntVwsvs2g28z+ZYG+plnpPnzCeoB+FXXrtJvv0m5ckljx7oFRwCA0MefewCIj200tT3zo0dLO3ZIX3whtWghZcvmluNbJinbc1+kiPTss65os2WbAoAUYtcaX33V3X73XZfHEwAQHgjkAeB80qVz2e1tusuW23/6qdS8ucsmtWmTy4pv2fGLFpWee05atIigHkCysuuLLVu62089Jd16Kx0OAOGEQB4AEiN9eum221w9egvqLU30ffdJmTNL69e7+vVWx754calbN7fmlZl6AEnI/qTYrh/7E3TVVe7PDgAgvBDIA8CFyphRuvNO6cMP3SfqSZOke+5x59eskfr3lypWlEqVkiIjpd9/p68BXLTXX5e++spdV7Q/P/YnBwAQXgjkASApZMokNWkiffSRC+onTHBBvn3SXrlS6ttXKldOKltW6tPH1YsCgESyRT5durjbtqvHZuQBAOGHQB4AkprtnW/a1C2737VL+uADtxzf9tr/+afUu7dUpoxUvrz04osu0AeA8zh82JWaO35catxYevJJugwAwhWBPAAkp6xZpfvvdwnybKbeEuY1auSy4i9bJvXsKZUsKV19tVuKb0vyASAenTq5xTyWnd4KakRE0E0AEK4I5AEgpWTP7krYTZvmUk7bJ/Gbb3b165csccnxihVzyfIse5UlzwMASVOnSiNGuK4YN87VjQcAhC8CeQDwhxw5XNppy1i1fbs0apRUt66UKpUrX2dl7K64wpW1GzLElbkDEJa2bJFat3a3O3d2fyoAAOGNQB4A/O3SS6VHHpFmznRBvU271anjgvqFC9162ssvl2rWlF57zX2qBxAWTp6UHnxQ2rNHqlTJpdUAAIBAHgACyWWXSY8/Ln3zjQvYhw2TbrjBbYadP1/q0EEqVMids8e2bfN3iwEko0GDpG+/dYUxrNSc5cwEAIBAHgACVd68Utu20ty50ubNbjb+2mulqCjp+++ldu2kAgXc7P2bb7pkegBChi3I6dHD3X7jDalECX+3CAAQKAjkASAY5M8vPf20NG+etHGj2zd/zTUuqJ8zx9WhslTWtnl25Ehp925/txiIY/jw4SpSpIgyZMig6tWra6FFqWfxySefqEqVKrrkkkuUOXNmVaxYUe+9916c50RFRSkyMlL58uVTxowZVbduXa1atSpkev3AAVfw4t9/pXvvdSk1AADwIZAHgGBjS+ufecYttbfM9q+84jLdnzolzZ7tlubbbH6DBi4zvtWyB/xo4sSJ6tixo3r16qXFixerQoUKatCggXaeZRVJzpw51b17d82fP19Lly5Vq1atvGPGjBnRzxk4cKBef/11jRgxQj/99JMX8NtrHj16VKHAFtxYNUpLj2FpMyg1BwCILSLKLmkjjv379yt79uzat2+fsmXL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",
      "text/plain": [
       "<Figure size 1200x400 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_history(history)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": []
   },
   "source": [
    "### Flatten Layers"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": []
   },
   "source": [
    "Instead of flattening (reshaping) the data ourselves, another approach is to include a Flatten layer that transforms each 2-dimensional 28 $\\times$ 28 input image into a \"flat\" 1-dimensional vector of length 784.  The 2-D input image will be fed into the Flatten layer, whose flattened output will then feed into the 30-unit hidden layer.  For this to work, we must tell the Flatten layer to expect input images of shape (28,28).\n",
    "\n",
    "<img src=\"http://science.slc.edu/jmarshall/bioai/images/mnist-network-with-flatten.png\" width=\"60%\">"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "from keras.layers import Flatten"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "network = Sequential()\n",
    "network.add(Input(shape=(28,28)))\n",
    "network.add(Flatten())\n",
    "network.add(Dense(30, activation='sigmoid', name='hidden'))\n",
    "network.add(Dense(10, activation='sigmoid', name='output'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {
    "tags": []
   },
   "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",
       "│ flatten (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Flatten</span>)               │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">784</span>)            │             <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ hidden (<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\">30</span>)             │        <span style=\"color: #00af00; text-decoration-color: #00af00\">23,550</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ output (<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\">310</span> │\n",
       "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
       "</pre>\n"
      ],
      "text/plain": [
       "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
       "┃\u001b[1m \u001b[0m\u001b[1mLayer (type)                   \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape          \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m      Param #\u001b[0m\u001b[1m \u001b[0m┃\n",
       "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
       "│ flatten (\u001b[38;5;33mFlatten\u001b[0m)               │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m784\u001b[0m)            │             \u001b[38;5;34m0\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ hidden (\u001b[38;5;33mDense\u001b[0m)                  │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m30\u001b[0m)             │        \u001b[38;5;34m23,550\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ output (\u001b[38;5;33mDense\u001b[0m)                  │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m)             │           \u001b[38;5;34m310\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\">23,860</span> (93.20 KB)\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m23,860\u001b[0m (93.20 KB)\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\">23,860</span> (93.20 KB)\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m23,860\u001b[0m (93.20 KB)\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": [
    "network.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "network.compile(loss='mean_squared_error', optimizer='SGD', metrics=['accuracy'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": []
   },
   "source": [
    "Prepare the data, without flattening it:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "# load the data\n",
    "(train_images, train_labels), (test_images, test_labels) = mnist.load_data()\n",
    "\n",
    "# create the target vectors\n",
    "train_targets = to_categorical(train_labels)\n",
    "test_targets = to_categorical(test_labels)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(60000, 28, 28)"
      ]
     },
     "execution_count": 97,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_images.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(60000, 10)"
      ]
     },
     "execution_count": 98,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_targets.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.1020 - loss: 0.2786\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[0.278568297624588, 0.10204999893903732]"
      ]
     },
     "execution_count": 99,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "network.evaluate(train_images, train_targets)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/5\n",
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.2467 - loss: 0.1065\n",
      "Epoch 2/5\n",
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.4705 - loss: 0.0809\n",
      "Epoch 3/5\n",
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.5445 - loss: 0.0757\n",
      "Epoch 4/5\n",
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.6023 - loss: 0.0708\n",
      "Epoch 5/5\n",
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.6387 - loss: 0.0660\n"
     ]
    }
   ],
   "source": [
    "history = network.fit(train_images, train_targets, epochs=5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 3ms/step - accuracy: 0.6525 - loss: 0.0638\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[0.06375673413276672, 0.6525333523750305]"
      ]
     },
     "execution_count": 101,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "network.evaluate(train_images, train_targets)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 3ms/step - accuracy: 0.6532 - loss: 0.0636\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[0.06362496316432953, 0.6531999707221985]"
      ]
     },
     "execution_count": 102,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "network.evaluate(test_images, test_targets)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/oAAAGJCAYAAAA6z0jnAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAiOhJREFUeJzt3QmczdX/x/H3WMZa9j1LImsoW6SoZMm/KEpSJFGSbNkZWkVIMiVKJYn0K21SSCp7lqgkS7bsCSFLzP/xOd/umGGGmTEzd5nX8/H41l2+93vPfO+Y7/2c8zmfExYVFRUlAAAAAAAQEtL5uwEAAAAAACD5EOgDAAAAABBCCPQBAAAAAAghBPoAAAAAAIQQAn0AAAAAAEIIgT4AAAAAACGEQB8AAAAAgBBCoA8AAAAAQAgh0AcAAAAAIIQQ6AM4rwceeEAlSpRI0lkaMmSIwsLCgq7dAAAEqmC9LgNIXQT6QJCyC3VCtm+++cbfTQUAIORxXQYQSMKioqKi/N0IAIk3efLkWPcnTZqk2bNn65133on1+C233KICBQok+RSfPHlSp0+fVqZMmRL92n///ddtmTNnlj9GPKyTY/Pmzan+3gCAtIfrMoBAQqAPhIjHHntMkZGRulDf3dGjR5U1a1aFOgJ9AIA/cV0OXvZd6tixY8qSJYu/mwIkGan7QAirV6+eKlasqOXLl+uGG25wAX7//v3dcx9//LGaNGmiwoULu9H6K664Qk8//bROnTp13rmANkJu6YkjRozQ+PHj3evs9dWrV9eyZcsuOBfQ7tuXnxkzZri22WsrVKigWbNmndN+G5GvVq2aywiw93nttdcuan7hkSNH1LNnTxUtWtS9b5kyZdzPcXbniGVG1KlTRzlz5lT27Nndfr7z5vPyyy+7dts5zZUrl2vnlClTktQuAEDakJavy999953uuusuFStWzL2HXYu7d++uf/7555x9f/31V919993Kly+fC7btOjxgwIBY+/zxxx9q37599Pm6/PLL1alTJ504cSLen9W89dZb7vGYGX92Pv/v//5PX375pfv57D3tZzNvvvmmbrrpJuXPn9+9T/ny5fXqq6/G+TN+8cUXqlu3ri655BJdeuml7jPwfTcYPHiwMmbMqL17957zuo4dO7rvHNa5ACSXDMl2JAAB6c8//1Tjxo11zz336L777otO47cLnQWxPXr0cP//+uuvFRERoUOHDumFF1644HHtwvX333/r4YcfdhfM4cOH684779SmTZvchex8vv/+e3344Yd69NFH3cVwzJgxat68ubZu3ao8efK4fVauXKlGjRqpUKFCevLJJ90Xnaeeespd9JPCgvnbb79d8+bNc18MqlSp4i7ovXr1cl8WXnzxRbffzz//7C72lSpVcu9nF/UNGzZowYIF0ceaMGGCHn/8cbVo0UJdu3Z1F+bVq1dryZIluvfee5PUPgBA2pBWr8vTp093WYUWjNsxly5d6jrNt2/f7p7zsevp9ddf79psAbAF4Rs3btSnn36qZ5991u2zY8cO1ahRQwcOHHD7lC1b1l3LP/jgA/ce4eHhSqx169apVatW7vx16NDBdS4YC+qt48O+Q2TIkMG1w86TTWvs3Llz9Ovt83vwwQfdvv369XOBu50z6zCx7wb333+/O1/Tpk1zHSs+1jFh7bbz7Y+pjghhNkcfQPDr3LmzDUvHeqxu3brusXHjxp2z/9GjR8957OGHH47KmjVr1LFjx6Ifa9u2bVTx4sWj7//+++/umHny5Inav39/9OMff/yxe/zTTz+Nfmzw4MHntMnuh4eHR23YsCH6sR9//NE9/vLLL0c/dtttt7m2/PHHH9GPrV+/PipDhgznHDMuZ7d7xowZ7nXPPPNMrP1atGgRFRYWFt2eF1980e23d+/eeI/dtGnTqAoVKlywDQCAtIvr8oW/dwwdOtRdg7ds2RL92A033BB1ySWXxHrMnD59Ovp2mzZtotKlSxe1bNmyc47p2y+u7yDmzTffdI/b9xkf+75gj82aNStB7W7YsGFUyZIlo+8fOHDAtblmzZpR//zzT7ztrlWrltsnpg8//NC997x58855H+BikLoPhDgbkW7Xrt05j8ecd2YjAPv27XM96NYTbilzF9KyZUuXsu5jrzU2cnAh9evXdyl/PjZ6biluvtfaKMGcOXPUrFkzl5LnU6pUKTcKkhQzZ85U+vTp3Uh8TJbKb/0Plm5nrAfel0JpvfVxsX1sBOLslEgAAC4krV6XY/58NpXOfr7atWu7a7CNfBtLa//222/dyLil+MfkS8O3a7NNM7jttttcmv3Zkjq9z1L/GzZseN52Hzx40LXb0vPt3Nh935Q/+8z69u17zqh8zPa0adPGZf9ZhoLPu+++66Yx2DGB5ESgD4S4IkWKxJnCZinqd9xxh3LkyOEu5pZ6ZymExnfhOp+zL8C+Lxd//fVXol/re73vtXv27HFz9uwLxNnieiwhtmzZ4r6cWEpiTOXKlYt+3vdF6brrrtNDDz3k0ikttfL999+PFfT36dPHpVVa2mDp0qVd6l7M1H4AAOKTVq/LNg3A6gvkzp3bXUPt5/MFt76fz9exYLUC4mOdATad4Xz7JDXQj4td360jJFu2bK6j39rtq6vga7cvcL9Qm+w7hnX0WHDve/1nn32m1q1bJ7mDAogPgT4Q4uKqGGtz2uzi+uOPP7r5YjbfzHqjhw0b5p6PbyQ7Jhsdj0tCVuy8mNemxvmy0QQbubD5dDZX0C7MtkyhryCSdQ7YXL6pU6e6on3/+9//3P+t0A4AABe6zqS167JdP+06+vnnn7vOchuRt5/P5rUn9OdLrPgC57OLG57vc7EA/uabb3aj+KNGjXLtt3ZbEcGktNs6T6wOkC/Qt7n5x48fj+7QAZITxfiANMiq5loxICu8Y1V/fX7//XcFAqtsa6lvVgTvbHE9lhDFixd3wbul1sUc1felQ9rzPunSpXMXdtvswv7cc8+5ar9WyM969Y317FsHgG1WSMcKHlmRICvAQzEdAEBihPp1ec2aNfrtt9/09ttvu/R1HwuaYypZsqT7/08//RTvsWxE3TIezrdPzIwG60TxTcuLmcGXENbhYoH4J598Eivrwb4PxOSb9mBtulCGg/38TZs2ddP/LOC/+uqrXQE/ILkxog+kQb6e+5g99RasvvLKKwqU9llAbT3+Vlk35pcJ31z6xLr11ltdL/7YsWNjPW7V9q3X3zfHcP/+/ee81ir0G7vYG/syFpOlYNpyO3Y+T548maT2AQDSrlC/Lsf189ntl1566Zwg3jo6Jk6c6FL9Y/K91jrjrVaABeE//PDDOe/l288XfFuWXszaANbZkJif++x2W7q9LbkXU4MGDdwgwtChQ89ZIu/srAj7vpE3b16XrTF//nxG85FiGNEH0iArfmM93W3btnXF6SzQfeeddwIidd7H1r/96quv3Hx5W4rHF6Tb/LdVq1Yl+nhWtOfGG290I/O2dm7lypXd8a3oXrdu3aK/EFjKpH0psLWMbZTf5iXaF63LLrvMpef7LugFCxZ0bbN5/GvXrnVts9ecXQMAAIC0fl225e/sOvvEE0+4ZfBsRN6mvcVVP8CW9rPr7TXXXOOWzrO583bdtrR53/tYpp21xaY72D42pW7nzp1umT5bKtBG8O1abaPwtqSuLaVrQbt1IFhnwtmdCPGxY1hnvn2HsGX3Dh8+7JbYtQwHez8f+3ls4MDq+1SvXt0tp2efp03FsGKKMTsXbNlAq/9j587aZEv6ASmBQB9Ig2z9Wiv+YhXnBw4c6C5GNj/MUtXjqjjrD1WrVnWjBPalYNCgQa4irQXhFlQnpPrw2WwEwFLvbE1iW8PWeuNtbV5bm9jOg4+tk2tfKOzLgM3Js153+yJhawZbgSRjF3tLt7O0frvoWyeAfTGzcwkAQGKF+nXZglsbgbdrpY162zQAKzxo68lbx3tMdn/x4sXuPWwNexsht473u+++O1ZBQ6teb/vY9diK89ljNlqeNWvW6Pf86KOP3Jr3tp910FvHvp3buFY9iEuZMmXcPHr7TOzntmNYJ4d1FtjKADFZh4J1ADz//PN6+umn3ftbB4dvPv/Z6fsW6NvnW6hQoQS1BUisMFtjL9GvAgA/sXQ9q0y8fv16PgMAAPyM63Li2Ui/TQucNGmSK/wLpATm6AMIWLaUT0wW3M+cOVP16tXzW5sAAEiruC4nD0v/tyUGrZAvkFJI3QcQsKz6rq25a/+3KrmWwmdz5Xr37u3vpgEAkOZwXb44Nn3hl19+0fjx4920BVvBB0gppO4DCFg2h86WsNm1a5cyZcqkWrVquQI8VqAHAABwXQ4mVhto9+7dru6CFVukgC9SEoE+AAAAAAAhhDn6AAAAAACEEAJ9AAAAAABCCMX4kuj06dPasWOHm1sTFhaWvJ8KAABJYCvm/v333ypcuLDSpaMv/2JxrQcABOu1nkA/iSzIL1q0aFJfDgBAitm2bZsuu+wyzvBF4loPAAjWaz2BfhL5qmTaCb700kuTehgAAJLNoUOHXCc0lZyTB9d6AECwXusJ9JPIl65vQT6BPgAgkATjlLLIyEi98MILbjnNypUr6+WXX1aNGjXi3f/AgQMaMGCAPvzwQ+3fv1/FixfX6NGjdeutt7rnhwwZoieffDLWa8qUKaNff/01wW3iWg8ACNZrPYE+AADwq2nTpqlHjx4aN26catas6QJ2W2d63bp1yp8//zn7nzhxQrfccot77oMPPlCRIkW0ZcsW5cyZM9Z+FSpU0Jw5c6LvZ8jA1x4AQNrAFQ8AAPjVqFGj1KFDB7Vr187dt4D/888/18SJE9W3b99z9rfHbRR/4cKFypgxo3usRIkS5+xngX3BggVT4ScAACCwUJIXAAD4jY3OL1++XPXr149+zKoI2/1FixbF+ZpPPvlEtWrVUufOnVWgQAFVrFhRzz33nE6dOhVrv/Xr17uqxCVLllTr1q21devW87bl+PHjbu5jzA0AgGBEoA8AAPxm3759LkC3gD0mu2/z9eOyadMml7Jvr5s5c6YGDRqkkSNH6plnnonex6YAvPXWW5o1a5ZeffVV/f7777r++uvdkkTxGTp0qHLkyBG9sboOACBYkboPAACCbn17m58/fvx4pU+fXlWrVtUff/zhivkNHjzY7dO4cePo/StVquQCfyvY9/7776t9+/ZxHrdfv36uVsDZlY0BAAg2BPoAAMBv8ubN64L13bt3x3rc7sc3v75QoUJubr69zqdcuXIuA8CmAoSHh5/zGivUd+WVV2rDhg3xtiVTpkxuAwAg2JG6DwAA/MaCchuRnzt3bqwRe7tv8/Djct1117mA3fbz+e2331wHQFxBvjl8+LA2btzo9gEAINQR6AMAAL+ydPkJEybo7bff1tq1a9WpUycdOXIkugp/mzZtXFq9jz1vVfe7du3qAnyr0G/F+Kw4n88TTzyh+fPna/Pmza46/x133OEyAFq1auWXnxEAgNRE6j4AAPCrli1bau/evYqIiHDp91WqVHFF9HwF+qxavlXi97F5819++aW6d+/u5t8XKVLEBf19+vSJ3mf79u0uqP/zzz+VL18+1alTR4sXL3a3AQAIdWFRUVFR/m5EMLICPVaR9+DBg7r00ksv7mA//CD9/LPUtm1yNQ8AkAYl67UJnE8AwEXbu1ey2WlXXildc03qXesZ0fe3pUttDSApSxapQQOrMOTvFgEAAAAAkuDYMWnBAmn2bOmrr6SVK73HH300eQL9hCLQ97fq1aXataWFC6UhQ6TXXvN3iwAAAAAACWD58WvWeEG9BffffSf980/sfa66Srr8cqUqAn1/CwuThg+X6tSR3nhD6t5dKlvW360CAAAAAMRhxw4vqLdtzhxbEjb285akfcst3la/vhTParEpikA/EFx3ndS0qfTxx5JVFf7oI3+3CAAAAAAg6cgRaf78M+n4v/wS+7RkzSrVresF9jYbu3x5bzzXnwj0A8XQodKnn0ozZniT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",
      "text/plain": [
       "<Figure size 1200x400 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_history(history)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": []
   },
   "source": [
    "### Evaluating the network's performance"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 200x200 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(test_images[0], cmap='gray');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "7\n"
     ]
    }
   ],
   "source": [
    "print(test_labels[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0. 0. 0. 0. 0. 0. 0. 1. 0. 0.]\n"
     ]
    }
   ],
   "source": [
    "print(test_targets[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "#output = network.predict(test_images[0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": []
   },
   "source": [
    "\n",
    "OMG! What went wrong?  The problem is that we tried to feed the network an *individual* input image.  When using the `predict` method, we must always give the network a **batch** of input images, even if the batch contains just one image."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(28, 28)"
      ]
     },
     "execution_count": 108,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_images[0].shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "batch = test_images[0].reshape((1,28,28))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1, 28, 28)"
      ]
     },
     "execution_count": 110,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "batch.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 31ms/step\n"
     ]
    }
   ],
   "source": [
    "output = network.predict(batch)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.118074  , 0.05965391, 0.2105245 , 0.09902487, 0.16610557,\n",
       "        0.06177386, 0.06565031, 0.3813269 , 0.15270744, 0.18994895]],\n",
       "      dtype=float32)"
      ]
     },
     "execution_count": 112,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "output"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1, 10)"
      ]
     },
     "execution_count": 113,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "output.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": []
   },
   "source": [
    "The output of the `predict` method is always a **batch** of output vectors, even if the input batch contained just one image."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.118074  , 0.05965391, 0.2105245 , 0.09902487, 0.16610557,\n",
       "       0.06177386, 0.06565031, 0.3813269 , 0.15270744, 0.18994895],\n",
       "      dtype=float32)"
      ]
     },
     "execution_count": 114,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "output[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 115,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(10,)"
      ]
     },
     "execution_count": 115,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "output[0].shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.5047903\n"
     ]
    }
   ],
   "source": [
    "print(sum(output[0]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2\n"
     ]
    }
   ],
   "source": [
    "# returns the position of the largest value in a vector or list\n",
    "print(np.argmax([10,20,99,30,40,80]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 118,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.118074   0.05965391 0.2105245  0.09902487 0.16610557 0.06177386\n",
      " 0.06565031 0.3813269  0.15270744 0.18994895]\n"
     ]
    }
   ],
   "source": [
    "print(output[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "7\n"
     ]
    }
   ],
   "source": [
    "print(np.argmax(output[0]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "7\n"
     ]
    }
   ],
   "source": [
    "print(test_labels[0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": []
   },
   "source": [
    "Now let's give the network the entire batch of test images at once:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 916us/step\n"
     ]
    }
   ],
   "source": [
    "outputs = network.predict(test_images)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.118074  , 0.05965391, 0.21052459, ..., 0.3813269 , 0.15270744,\n",
       "        0.1899489 ],\n",
       "       [0.21619236, 0.06377807, 0.3484802 , ..., 0.04784529, 0.13735951,\n",
       "        0.06628921],\n",
       "       [0.09228194, 0.60984355, 0.07533381, ..., 0.08091846, 0.08078716,\n",
       "        0.09922282],\n",
       "       ...,\n",
       "       [0.04800604, 0.10885784, 0.05872478, ..., 0.2792294 , 0.09793379,\n",
       "        0.2634883 ],\n",
       "       [0.12514305, 0.16288173, 0.09879652, ..., 0.1187839 , 0.06043657,\n",
       "        0.1513968 ],\n",
       "       [0.2206416 , 0.13234973, 0.13868126, ..., 0.10440315, 0.1078344 ,\n",
       "        0.07241288]], dtype=float32)"
      ]
     },
     "execution_count": 122,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "outputs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(10000, 10)"
      ]
     },
     "execution_count": 123,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "outputs.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's look at the network's output for test image #0:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAK4AAACuCAYAAACvDDbuAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAABJpJREFUeJzt3c8rfF8cx/EzHx8LZYMoCz/KykZ+pBSKbMSSf4GNbJS1vaWNv8BGKQtJimKBxVgIibBAUmosUEKNrM/7+hzmM+a+7jwfy3fn8/1qPDvde4+ZSWWz2awDxPwp9A8A/AThQhLhQhLhQhLhQhLhQhLhQhLhQhLhQtLf0IWpVCq/PwngnAs9yGXHhSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTCRbK/dScORkdHvdnY2Ji59vb21pu9vLyYaxcWFrzZ3d2dufb8/DzgJ0W+seNCEuFCEuFCEuFCEuFCUiob+OWpcfgu38vLS2/W2NiYl//X4+OjOT8+PnZKbm5uvNns7Ky5Np1Ou0Lju3yRaFwqQBLhQhLhQpLUka91vNvS0mKuPTk58WbNzc3m2vb2dm/W19dnru3q6vJm19fX5tq6ujqXi/f3d3N+f3/vzWpra4P/u1dXV7G9OQvFjgtJhAtJhAtJhAtJhAtJUke+v6miosKct7a2erP9/X1zbWdnZ04/Q9Qfvp+dnQU9RflUWVnpzSYmJsy18/PzrtA48kWicakASYQLSYQLSdycCRoZGfFmi4uL5tqjoyNv1t/fb67NZDKu0Lg5Q6JxqQBJhAtJhAtJhAtJPFWIsZqaGnN+eHgYvNb6vLWlpSUXVzxVQKJxqQBJhAtJhAtJUu/yLTZRfzdbXV3tzR4eHsy1p6enLonYcSGJcCGJcCGJcCGJcCGJI9+Y6O7u9mabm5vm2tLS0uDPOtve3nZKOPJFonGpAEmEC0mEC0kc+cbE0NBQ0E3Yp42NDW+2u7vrigk7LiQRLiQRLiQRLiQRLiTxVOGXlZWVmfPBwUFv9vr6aq6dmZnxZm9vb66YsONCEuFCEuFCEuFCEjdnv2x6etqct7W1ebO1tTVz7c7Ojit27LiQRLiQRLiQRLiQRLiQxLt882h4eNibLS8vm2ufn5+DjoE/7e3tuaTiXb5INC4VIIlwIYlwIYkj3/+gqqrKnM/NzXmzkpISc+3q6mpR3YTlih0XkggXkggXkggXkggXkjjy/SbrqUDU3X9HR4c3u7i4MNdax7tRa5OMI18kGpcKkES4kES4kMSR7zc1NTUF3YRFmZqaMufFeCOWC3ZcSCJcSCJcSCJcSCJcSOKpQoSGhgZzvr6+ntPnhK2srAT/e0Rjx4UkwoUkwoUkwoUkbs4ijI+Pm/P6+vrgF3dra+vHf2+Kr7HjQhLhQhLhQhLhQhLhQhJPFZxzPT093gszOTlZiN8HArHjQhLhQhLhQhLhQhI3Z8653t5e74UpLy8PfhGj3qH79PSUy+8GX2DHhSTChSTChSTChSTChSSeKnzTwcGBNxsYGDDXZjKZn/1W8E/suJBEuJBEuJBEuJDEt+4gVvjWHSQalwqQRLiQRLiQRLhI9pEvn3mFOGHHhSTChSTChSTChSTChSTChSTChSTChSTChVP0AdNf7ZrCvzmhAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 200x200 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(test_images[0], cmap='gray')\n",
    "plt.axis('off');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.118074  , 0.05965391, 0.21052459, 0.09902488, 0.16610557,\n",
       "       0.06177387, 0.06565031, 0.3813269 , 0.15270744, 0.1899489 ],\n",
       "      dtype=float32)"
      ]
     },
     "execution_count": 125,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "outputs[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "7\n"
     ]
    }
   ],
   "source": [
    "print(np.argmax(outputs[0]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "7\n"
     ]
    }
   ],
   "source": [
    "print(test_labels[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "def show_result(n):\n",
    "    plt.imshow(test_images[n], cmap='gray')\n",
    "    plt.axis('off')\n",
    "    network_answer = np.argmax(outputs[n])\n",
    "    correct_answer = test_labels[n]\n",
    "    if network_answer == correct_answer:\n",
    "        print(f\"Correctly classified image #{n} as '{network_answer}'\")\n",
    "    else:\n",
    "        print(f\"WRONG! Misclassified image #{n} as '{network_answer}'\")\n",
    "        print(f\"Correct answer is '{correct_answer}'\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Correctly classified image #0 as '7'\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAK4AAACuCAYAAACvDDbuAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAABJpJREFUeJzt3c8rfF8cx/EzHx8LZYMoCz/KykZ+pBSKbMSSf4GNbJS1vaWNv8BGKQtJimKBxVgIibBAUmosUEKNrM/7+hzmM+a+7jwfy3fn8/1qPDvde4+ZSWWz2awDxPwp9A8A/AThQhLhQhLhQhLhQhLhQhLhQhLhQhLhQtLf0IWpVCq/PwngnAs9yGXHhSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTChSTCRbK/dScORkdHvdnY2Ji59vb21pu9vLyYaxcWFrzZ3d2dufb8/DzgJ0W+seNCEuFCEuFCEuFCEuFCUiob+OWpcfgu38vLS2/W2NiYl//X4+OjOT8+PnZKbm5uvNns7Ky5Np1Ou0Lju3yRaFwqQBLhQhLhQpLUka91vNvS0mKuPTk58WbNzc3m2vb2dm/W19dnru3q6vJm19fX5tq6ujqXi/f3d3N+f3/vzWpra4P/u1dXV7G9OQvFjgtJhAtJhAtJhAtJhAtJUke+v6miosKct7a2erP9/X1zbWdnZ04/Q9Qfvp+dnQU9RflUWVnpzSYmJsy18/PzrtA48kWicakASYQLSYQLSdycCRoZGfFmi4uL5tqjoyNv1t/fb67NZDKu0Lg5Q6JxqQBJhAtJhAtJhAtJPFWIsZqaGnN+eHgYvNb6vLWlpSUXVzxVQKJxqQBJhAtJhAtJUu/yLTZRfzdbXV3tzR4eHsy1p6enLonYcSGJcCGJcCGJcCGJcCGJI9+Y6O7u9mabm5vm2tLS0uDPOtve3nZKOPJFonGpAEmEC0mEC0kc+cbE0NBQ0E3Yp42NDW+2u7vrigk7LiQRLiQRLiQRLiQRLiTxVOGXlZWVmfPBwUFv9vr6aq6dmZnxZm9vb66YsONCEuFCEuFCEuFCEjdnv2x6etqct7W1ebO1tTVz7c7Ojit27LiQRLiQRLiQRLiQRLiQxLt882h4eNibLS8vm2ufn5+DjoE/7e3tuaTiXb5INC4VIIlwIYlwIYkj3/+gqqrKnM/NzXmzkpISc+3q6mpR3YTlih0XkggXkggXkggXkggXkjjy/SbrqUDU3X9HR4c3u7i4MNdax7tRa5OMI18kGpcKkES4kES4kMSR7zc1NTUF3YRFmZqaMufFeCOWC3ZcSCJcSCJcSCJcSCJcSOKpQoSGhgZzvr6+ntPnhK2srAT/e0Rjx4UkwoUkwoUkwoUkbs4ijI+Pm/P6+vrgF3dra+vHf2+Kr7HjQhLhQhLhQhLhQhLhQhJPFZxzPT093gszOTlZiN8HArHjQhLhQhLhQhLhQhI3Z8653t5e74UpLy8PfhGj3qH79PSUy+8GX2DHhSTChSTChSTChSTChSSeKnzTwcGBNxsYGDDXZjKZn/1W8E/suJBEuJBEuJBEuJDEt+4gVvjWHSQalwqQRLiQRLiQRLhI9pEvn3mFOGHHhSTChSTChSTChSTChSTChSTChSTChSTChVP0AdNf7ZrCvzmhAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 200x200 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "show_result(0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 136,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WRONG! Misclassified image #1328 as '6'\n",
      "Correct answer is '7'\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAK4AAACuCAYAAACvDDbuAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAABLVJREFUeJzt3c8rdFEcx/EzQw2xsBkrG9lZMgsLaUo2FKWkRLL0J2BhYc2ObMTKUmStLIXFFIqU5EeKklFIpubp6VmeM3WYmcf9nPt+Lb+dzDS9O829d9ybKBaLRQOISf72GwB+gnAhiXAhiXAhiXAhiXAhiXAhiXAhiXAhqdZ3YSKRqO47AYwxvhdy2XEhiXAhiXAhiXAhiXAhiXAhiXAhiXAhiXAhiXAhiXAhiXAhiXAhiXAhiXAhiXAhiXAhiXAhiXAhiXAhiXAhiXAhiXAhiXAhiXAhiXAhiXAhiXAhiXAhiXAhiXAhiXAhiXAhiXAhiXAhiXAhiXAR9lN3oqqvr885n5iYsGbpdNq59vr62qhbX193zg8PD02I2HEhiXAhiXAhiXAhiXAhKVH0fHhqVJ/lu7y87JxPT09bs/v7e+fau7s7a3ZxcWGiqre315qlUinn2ubmZqOEZ/kiaHxVgCTChSTChST5g7PaWvdV662tLWvW39/vXJvJZKxZLpczUTU1NWXN1tbWnGuHh4et2fb2tokqDs4QNL4qQBLhQhLhQhLhQpL8D8kLhYJzPjs7a806Ozuda2dmZqzZ6OioiaqRkRHvtTU1NSZE7LiQRLiQRLiQRLiQJH9wVsrp6ak1W11d9T6Q6+rqcq49ODgwv305u66uzpo9PT05156dnZkQseNCEuFCEuFCEuFCEuFCUrBnFVyOj4+9j9J3d3edazs6OqzZ7e2tqYaWlhbnPJvNWrOFhQXn2vPzcxMidlxIIlxIIlxIIlxIitXB2f7+vnN+dXVlzVpbW51rGxoazG/+N28pX19fJk7YcSGJcCGJcCGJcCGJcCFJ/t5hlTA5Oen9+CXX46n29vaq8r5eXl6c88vLS2vW09PjXPvx8WGUcO8wBI2vCpBEuJBEuJAUq0u+pezs7HivHRwcrMrB2cDAgDVrbGx0rl1aWpI/CCsXOy4kES4kES4kES4kES4kcVbhm9LpdFkfeH19vXM+NjZmzZLJ5LcuBccJOy4kES4kES4kES4k8XtcY0xTU5P1wTw/P3v/N20qlfL+wNvb271vRP3w8OD9N/L5vAkBv8dF0PiqAEmEC0mEC0mEC0lc8v3Puru7vdeWep5wPpAzCOVgx4UkwoUkwoUkwoUkDs5KXMa9ublxfmCbm5tlfeBzc3Pea09OTsp6rZCx40IS4UIS4UIS4UIS4UISZxWMMW9vb94/+P78/PT+cDOZjPfzeTc2NqzZ6+ur92vFDTsuJBEuJBEuJBEuJHFwVsL7+3vZH+7Q0JDXgeBfi4uLP/6P1zhix4UkwoUkwoUkwoUkwoUk7h1WRUdHR97PRHZdHo6joueZFHZcSCJcSCJcSCJcSOKSbwVks1nnvK2tzZrNz89X4iVjjx0XkggXkggXkggXkggXkjirUAHj4+Pej6Eq995j+IcdF5IIF5IIF5IIF5I4OKuix8dHa8YTcyqDHReSCBeSCBeSCBeSCBeSOKtQASsrK95nFQqFQiVeMvbYcSGJcCGJcCGJcCGJWzAhUrgFE4LGVwVIIlxIIlxIIlyEfcmXRxchSthxIYlwIYlwIYlwIYlwIYlwIYlwIYlwIYlwYRT9AWKR7XMe9gBfAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 200x200 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "show_result(random.randrange(10000))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "predictions = [np.argmax(vector) for vector in outputs]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 138,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "7\n"
     ]
    }
   ],
   "source": [
    "print(predictions[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 139,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "wrong = [i for i in range(10000) if predictions[i] != test_labels[i]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 140,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Misclassified 3468 test images out of 10000\n"
     ]
    }
   ],
   "source": [
    "print(\"Misclassified\", len(wrong), \"test images out of\", len(test_images))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 141,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "accuracy: 0.6532\n"
     ]
    }
   ],
   "source": [
    "print(\"accuracy:\", 1 - len(wrong)/10000)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": []
   },
   "source": [
    "Let's look at some of the misclassified images:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 150,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Misclassified this '9' as '4'\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAK4AAACuCAYAAACvDDbuAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAABPJJREFUeJzt3c8rfF8cx/FzP36kbGShTKnJhtKIhQVT/AcWarLARhb2RhJJlhbKhhXJgo3ZSI2yUGoslGLNwsKKbCSLKe43fXffc26d+V58et37fCzfHTPT9ew0d+50JwjDMDSAmD9/+wUA/wfhQhLhQhLhQhLhQhLhQhLhQhLhQhLhQlK978IgCH72lQDGGN8Luey4kES4kES4kES4kES4kES4kES4kES4kES4kES4kES4kES4kES4kES4kES4kES4kES4kES4kES4kES4kES4kES4kES4kES4kES4kES4kES4kES4kES4kES4kES4kES4SPaNnfE9JiYmnPP5+Xlr1tvb6/2429vbzvnCwoI1e3t7M+rYcSGJcCGJcCGJcCGJk7Nv0NPT45zv7u5as4GBAe9fm4n6BZrX11drNjs761z78vJizVZWVow6dlxIIlxIIlxIIlxIIlxI4lOFGo2Pj3t9evClqanJ+3EvLy+t2cbGhnPt3d2dNVtfX3euvb29NUnEjgtJhAtJhAtJhAtJnJxFyGQyzvne3p41a2xs9D7g5XLZOS8UCtZscXHRufbo6Miazc3NOdeWSiWTROy4kES4kES4kES4kES4kBSEUd9W/u/CIDBJ1dzcbM2urq6ca7u7u70fd2try5oVi0Xn2lwuZ80qlYpzbX19vffrHRwcNEo8c2THhSbeKkAS4UIS4UISl3yNMf39/bFOwk5PT51z1yXbhoYG59qlpSWvk7AoJycnJk3YcSGJcCGJcCGJcCGJcCEpVZd8W1panPPj42Nrls/nvR+3q6vLOb+/v7dm5+fnzrXDw8Pez3fluLw7MjLiXFutVo0SLvki0XirAEmEC0mEC0mpuuSbzWad81pOxDY3N73/3nUpuLOz0/uk5PPz07l2xXFjZrWTsLjYcSGJcCGJcCGJcCGJcCEpVZd8+/r6nPPr62vvx3h6evK+lOy6p1jUcXT9Gw4ODpxrp6amTFJxyReJxlsFSCJcSCJcSErVJd/v0NbW9mvPdXNz82vPpYYdF5IIF5IIF5IIF5IIF5JSdck3yvLysjVbW1v7keeKOo47OzvWbGZmxqRNyI2dkWS8VYAkwoUkwoUkTs6MMXV1ddaBaW9vdx6ww8NDazY0NOR9wN/f353zsbExa3Z2dmbSJuTkDEnGWwVIIlxIIlxIIlxI4ovkxpiPjw/rwDw+PjoPWEdHR6wDvrq66pyn8ROEONhxIYlwIYlwIYlwIYmTswiFQsE5z2QysQ54qVSK9ff4FzsuJBEuJBEuJBEuJBEuJPGpgjGmtbXVOjD7+/veXzqPUiwWrdnDw0Nt/yE4seNCEuFCEuFCEuFCEidnxpjR0VGvX8ypFTdm/jnsuJBEuJBEuJBEuJBEuJCUqk8Von5zd3p6+tdfC+Jhx4UkwoUkwoUkwoWkVJ2cZbNZ5zyfz8d6XNdNmb9cXFzEelxEY8eFJMKFJMKFJMKFJMKFpFR9qpDL5WI/RqVSsWblctn7htH4Huy4kES4kES4kES4kJSqk7Pn52fvtVG3SpqcnLRm1Wo11utC7dhxIYlwIYlwIYlwIYlwISkIwzD0WhgEP/9qkHqhX47suNDEWwVIIlxIIlxIIlxIIlxIIlxIIlxIIlxIIlwk+4vkvpfigN/AjgtJhAtJhAtJhAtJhAtJhAtJhAtJhAtJhAuj6B8Y0ehCdqedrAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 200x200 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "i = random.choice(wrong)\n",
    "plt.imshow(test_images[i], cmap='gray')\n",
    "plt.axis('off')\n",
    "print(f\"Misclassified this '{test_labels[i]}' as '{predictions[i]}'\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 151,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7YAAAOrCAYAAABjshrdAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAA0C9JREFUeJzs3Qe41NT2+P0ceu8dqSIgUqQJSFFURLBQBEWlKEoTUUBAegcVkKJcBSwIUkSaCkgXBURUmggIUgWU3pvUvM/K7x3+k+wcJsyZOWf2nO/nebjeLPZkQmbPTlaSvSbGNE3TAAAAAABAU0kSegMAAAAAAIgLElsAAAAAgNZIbAEAAAAAWiOxBQAAAABojcQWAAAAAKA1ElsAAAAAgNZIbAEAAAAAWiOxBQAAAABojcQWAAAAAKC1qEpsz58/b+TIkcOYOnVqQm9K1KhcubLRrVu3hN6MiHfjxg2jZMmSxpAhQxJ6U6JGkyZNjGeeeSahN0ML9L/Qo/95w3E39DjuesfYF3qMffQ9rfueGYSJEyeavpeuWLHC+v979+61tTl48KDZuHFjM2PGjGb69OnNp556yty9e7etjbxGXivrEPL/Zd3BGjx4sFm4cGHz2rVrZrT63//+F6d95PPvv/+arVq1MgsWLGimSpXK2m+dOnUyjx8/bms3Z84cM02aNOahQ4fMSBCo782ePdt85plnzEKFCpmpU6c2ixYtanbu3Nk8deqUsi7//lagQAGzX79+QW/XlClTzAwZMpinT582o9XUqVPNUaNGxXk9so+6du1qFilSxOp7+fPnN1u2bGn+/ffftnYbNmwwkyRJYm7atMmMFIH63/bt282OHTuaVapUMVOmTOk6NvrQ/+K///k+v9j+yPc4Uvufl+Ouv0ceecRq0759e1uc427CHXd37txpPv3002amTJms41PVqlXN77//XmkXacddwbFX/2OvOHz4sNm6dWszT5481jFKzn3k+OtPt7GP877wmarheV8yI0xXcGvWrGmcOXPG6Nmzp5E8eXJj1KhRxgMPPGBs2rTJyJo1a8jf8+rVq8aYMWOMTp06GUmTJjWi1Ycffmhky5bNePHFF+P0+VSpUsW4cOGC8eqrrxr58uUzfv/9d2Ps2LHGihUrjPXr1xtJkvzfzfx69eoZGTJksN534MCBRqRr3bq1kSdPHqNp06ZG/vz5jT/++MP6d3333XfGhg0bjNSpU4flfYcPH25dacqYMaMRraZNm2Zs2bLF6NixY5yurteqVcvYtm2b1feKFi1q7Nq1y+pfixcvNv78808jffr0VtuyZcsaFSpUMN577z1j8uTJhg5+/vln4/333zdKlChh3H333dZ4Fx/of97UqFHD+OKLL5S4HJ9kDHz44YdvxnTsfz5z5syx+mK4cdz17sCBA9ZxV85PunbtaqRNm9aYOHGi8eijjxrLly+3+qaPbsddwbE3so+9vj5YtWpV6/+3bdvWyJs3r/Hvv/8av/76q62dbmMffS98pml43heWxFY2dufOndaXpWLFilasTp061qOasrFDhw4N+XvOnz/fOHbsWLw/uijJoRyg3Fy8eNFIkyaNEWm+/fZb4++//7b22eOPP34zniVLFusgKid40rmEJLiNGjWyOtiAAQOMmJgYI5LNmjXLePDBB22x8uXLGy1atLAeUX/llVdC/p4bN2609pn07fj033//GSlSpLh5EcJrv0xIa9euNX777TfrYkP79u1vxosVK2a0bNnSWLZsmdGgQYObcfk+9+vXzxpT0qVLZ0S6p556yjh9+rQ1SI8YMSJeElv6n3eFCxe2/vi7dOmSdbB96KGHjFy5ctn+Trf+5xsX3nzzTeOtt94y+vbtG9b34rjr3TvvvGONDXKSKOOdaNWqlVG8eHHrgrxcUPbR7bgrOPZG9rFXtGnTxkiWLJl1DA50g0mnsY++F9l9b208n/clCVcnk4TWl9QKGbzlavhXX30Vjrc0vv76a6NgwYLGnXfeqfzd9u3brR2VPXt2646d7MxevXopJ4eSfMtVUtmRsq3yYfj7/PPPrQPMjz/+aJ0IyXzeO+64w/o7SaYkcZeDk1x5lYRW7laLy5cvWx9SkSJFjJQpU1p3SGXeqsSdpkyZYtx3333W6zNnzmyta8mSJdbfyb9v69at1vvLdsgf/yRu9+7d1p9Azp49a/03Z86ctnju3Lmt/zrvasqVFkmE4+vuU1w4k1rh+8LIVaFw9T1JMP2vuPv8888/xssvv2zdRZbPvlChQka7du2MK1eu3GyzZ88eo3HjxtaFBfncZX7VggULbOv54YcfrM/7yy+/NHr37m1daZW28lnK3Xvps/LZ161b10qqXnjhhZtXykaPHm3cc889RqpUqazPXA5up06dUrZ14cKF1lMV8nr5Hsj3V67W+farbJP0A1/fk/7os3//fut7Fo6+J4P10qVLDR3IZ+i78hhf6H/e+5+befPmGefOnbv5ndG5/4lhw4ZZ3/suXbqE/b047no/7q5atcq6YOxLaoWM4XIxTJ4mkpsBuh53BcfeyD72Sht5H3laQJJauQAmT1zERqexj74X2X3vbDyf94X8jq3s0M2bN1tZuJMkbJKkyUlEqE/+1qxZY5QrV06Jy7ZUr17dehxaHleQD0UOQnIy4yv0I8mitJEPVRJOaTt+/HjrQ5UkslKlSrZ1SlIrSbJcDZed73PixAkrOZZHUuVRWPkQZX/IgWv16tXW+8vjifJ4rDz69tdff1knBj5yZbZ///7G/fffb905lWTpl19+Mb7//nvrcSXpqB06dLCSGF9i7t9RfI/R7du375b7ShIwuSL8xhtvWHcZJTmX/ST7o379+tZFCOcdT/HTTz/dvJOrk8OHD1v/lUe4w0H6nlzUkH7jTx7xkT4vV+nls5f9KomuXPiRu/ny+R45csT6vGX59ddftw44kyZNsvqMtPO/iiUGDRpkvU5OWuXCiPx/ce3aNaN27dpGtWrVrDuFvicFZDCTCzIvvfSStf69e/daV83kQo58nr5tljbynZWBsEePHkamTJmsNosWLTKef/55q7/J1IKDBw9afVf4X0lr3ry59V35v6mjsZNHTOSKYp8+fawkUE7y5JEU+d7JgPrII4/Y2ssjvTLoybY69wXof7fb/9zIkxzSxxo2bKj8nW79T0405M7gZ599FrZpF/447no/7sp4LRernXxjtVwUv+uuu6LmuCs49kbOsVfuivnOGaXPynmlPBYvScRHH31kS1h0HPuc6HufJ97zPjPEjh07Zk3sHjhwoGsBBvk7KbASSlevXjVjYmLMN998U/m7GjVqWMWrnBOUb9y4cfP/169f30yRIoWtuJUUV5LXyeudE9irVaumFKh64IEHrL8bN26cLf7FF19YE6FXrVpli0s7af/TTz/dLCoh7Ro0aGBev3491m295557rPdyI0UA5I8Xn3zyiVXAwr9wSosWLax96Ub2T7t27Uwdvfzyy2bSpEnNv/76Kyzrv+OOO6yCIE7Nmze3PtPffvtN+TvfZyqFhmTf+/ePc+fOWcWvpLCXry/4CiZIka+LFy/a1iWfm/xd9+7dbXFZp8Rl8r+/RYsW2eIyqV/6eqVKlcxLly65bqd4/PHHY+1fvv7vxfz5883cuXPb+l7t2rWtf7cbKQBWp04dUzfDhw8PWOAnFOh/t9f//J04ccIa26TgXGx06n+NGjUy77///pvLbsWjQoXj7u0dd5988knrmHv27FlbXArNyec0YsSIqDruCo69kXPsff311612WbNmNR977DFzxowZ1jEqXbp05p133mleuHBB67HPib43NdGe94X8UWSZryTksUsnuSXu3yZUTp48aV0xcF4NlTm3K1eutK5ISCEhf745K9evX7fuIsudSv+5V3KLXK5YyJ1W3210H5kX41agSv7NcoXE38yZM627tHK37vjx4zf/yHwuIcWahNy5lbu7chfYOWfS6/wauWIc6KqxjzzKKncT5S7w3Llzjc6dO1t3Lrp37+7aXvatbLdu5JGKTz/91Jpz5n81PJTkTr2z78lnKZ/pk08+aV2tcvJ9plLUSj4HudPqI1fE5A6vfJYy2d6fzBWO7U6MPOLs7HtSzEquyPr3PbkTIO/h63vyuIc8RSGfve876tzOQORRaa93y+RpB7kDIU8IyD6SpxTkMT3nd0f3vhdf6H+31//8yVMRMi3A7TFk3fqffJ9nz55tjenxgePu7R13ZXyWp3eeffZZ666IPLElBVnWrVsX63mRLn3PDcfeyDr2StFQIXUE5PFSmZ4nT359/PHH1lOMvsdPo6H/0fcyRlTfi+/zvpA/iuw76XabPyrP9Pu3CTXnDpa5i0IeE42NJL/yGKj/vBcfSUglQZFKcnKr3kfmScaWLPoeDfWReTMyt1M+VDdHjx61/isDiyS0cgs+3OT2/hNPPGHNIfYlXZLYy6PY8ji0XAhwbofsWx0KWPiTL43Mb5VHdMP9+7LOvif9Si6I3KrvCZm74HzU3df3fH/vv47Y+p4UhPDN9/bve/IYicwFD9T3RKBtDQX5TkrFdCmK8vTTT9+sACqPQclcYZnvIY/z69734hv9LzhyMU8ejXL2Od36n0xFkEfOmjVrZqttER847nojfeyDDz6wTiR906ak7oYcm+SRPLciKTr0PTcceyPv2Os775aE1v/midT3kHFDphU4i2vq2P/oezuNxH7eF/LEVk4S5M7loUOHlL/zxaSQTqjfU3aA28TocIgtMXeLS2JcqlQpY+TIka6vkUJS8U3mD8s8C+edRJnXKVdR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/PHHH0bmzJmNN954w8iWLZtx+PBh47PPPjPuu+8+4+effzbKlCkTjrc1hg8fbmX7GTNmNKLVtGnTjC1bthgdO3aM092dWrVqGdu2bTNeffVVo2jRosauXbuMDz/80Fi8eLHx559/GunTp7fali1b1qhQoYLx3nvvGZMnTw7hvyR8+vfvbwwcONBo1KiR8eKLLxpXr1619tk///wTlveT9Y8ZM8bo1KmTkTRpUiNaSf+Q77Ps02A1bNjQKFKkiBLv2bOndfWzYsWKN2P16tUzMmTIYL2vfJ46aN26tZEnTx6jadOmRv78+a2xcOzYscZ3331nbNiwwUidOnVY3pexz5toHvs47oYPx136ns59T7z77rvGuXPnrPPwQ4cOxdouV65c1rF3xIgRxlNPPWXoYPTo0db5g7+///7b6N27t/Hoo4+G5T057/Puk08+MT799FPj6aefto67Z86cMcaPH289lbdo0SLjkUceudk2JMfdcN4183f48GEzWbJkZps2bcJy10KyfFnXsmXLzPh06dIl8/r1665/d/78+ZC/3+OPP27tp7j46aefrH01duxYW/yzzz6z4nKnzN+IESPMtGnTmufOnTMTWqC+9/PPP5sxMTHmyJEjb7meUF65k/0lr9+1a5cZn27Vvy5cuBDy97vnnnvMBx54IOTr3b9/v/WZtWrVSvm71157zervN27cMCNBoP7n60/+Jk2aZLX7+OOPbXHGvtvD2Mdx14fjbvzinE/vvif27dt38zgq53Ox3bEVs2bNso7Ju3fvNiNBMP1v0KBBVjs53/XhvC9hzvvWrVun5A/Hjx83s2fPblatWlVpH9ecI97m2Mr8wzRp0hinT58Oy/q//vprI0WKFEaNGjWUv5M7dS+//LJ1JyVlypRGoUKFjHbt2hlXrly52WbPnj1G48aNjSxZsljbKVcSFixYYFvPDz/8YMTExBhffvmldSUob968VtuzZ89ad7HSpUtn7N6926hbt6511f+FF164eZdArijdc889RqpUqYycOXMabdq0MU6dOqVs68KFC40HHnjAer3crZI7WHLFTjz44IPWNsmVKNkO+VOwYMGbr92/f7+xffv2gPtKtlfIdvjLnTu39V/nXSW5w3HhwgVj6dKlRqST/SxXHOVpAckdnFfxwtX35HO48847lb+Tz0PmC2TPnt3ar8WKFTN69epl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eBQZAAAAAKA1ElsAAAAAgNZIbAEAAAAAWkuW0BsQSdx+kL1GjRq25erVqyttZs2apcQaNWqUKAtKRau1a9cqsfbt2yuxpEmT2pbz5s0bsm3ImjWrEsuQIUNQ66pataoSW7BgQcgK2rgV2xoxYoQS++effzy9J0LHrUjT0qVLlVitWrWCWv93332nxN544w3b8p49e4JaNyJXtWrVAhY9CfeYnCyZekpToUKFgOvKkSOHEuvQoYMSS5UqVcA2V65cCfh+CL8GDRoosQ8++CCs7/nHH38oMd2LRSF8/XHIkCFKrFixYgHPt9yKKLkVc2revHmizEG4YwsAAAAA0BqJLQAAAABAayS2AAAAAACtkdgCAAAAALSWaItHFS9eXInNnj1biTVr1uyWxaRE9+7dldjkyZOVWGKdyB0NvvzySyVWsGBBJfb444/blnfv3u1p/eXLl1diXbp0sS3ffffdSpt77rnHiG87d+4MWHRt2rRpSoxCUfHPrUiYc0wTjzzySMgK+LgVybh27VpQ64cehaLcjmduxe6CNXXqVCXWrl27gMX7RN26dW3L48aNU9qkT5/e03a0atUqYBG0d99919O6EFrOz/Cpp55S2mTJkiWodf/7779K7MUXX1Riq1atCmr90JvzmNewYUOlTf369ZVYmjRplNicOXMCrsuteJRbPjE3keYY3LEFAAAAAGiNxBYAAAAAoDUSWwAAAACA1khsAQAAAABaSxTFowYNGqTEevbsqcQOHDigxC5evGhbHj16tNLm77//VmLjx49XYrNmzQpY6AL6eOeddzzFgi2OUrRoUSNcLl26pMR+/PFHJTZmzBgltnXrVtvywYMHQ7x1CNbLL78csD8GW0DFzbZt25QYhaKiS6ZMmZTYN998o8QyZ84csvecPn16wEJR58+fD2pdv/32m9Jm2bJlSix//vwB150zZ05P24DQatSokRJ7+umnbcvPPPNM0Ou/evWqbfmll15S2ixfvjzo9UMP2bNn95RPOItHuRWFcivkNHToUCW2fft22/KNGzc8bevq1as9tUsMuGMLAAAAANAaiS0AAAAAQGsktgAAAAAArUXlHFvn8+5u82nd5obVrFlTiR0/fjzg+7k9O++cmysWLFhgW+7Vq5fSZsiQIQHfD9HHbQ6Z8wfn27Ztq7SpXr26EkubNm3A9xswYIASGzZsmIctRaRwGys6deoU8Ifc3eb1fP3110psypQp8TbnG5Hr9ddfD+t82vbt2yuxyZMn25YvXLgQsvcrUaKEEkuZMmVQ63rxxReVWO/evT2dDyB4lStXVmJxmVPr9Oeffwacg43oUrx4cSW2cOFCT3PvnflE3759PeUJXrbD7RjuFpszZ46n9ScG3LEFAAAAAGiNxBYAAAAAoDUSWwAAAACA1khsAQAAAABa0754VPny5ZXYuHHjbMsHDhwIWaEor9zWFRMTY1t+9NFHlTZffPGFEtu/f3/ItguRacWKFQHbfPvtt0rsp59+UmJVqlQJuC7nj4AjslWtWlWJtW7dWolt3bo1YFGydevWeXpPrz8Mj+jhVnjuzTffDNn6Z8yYocQmTZoUVLGlvHnzKrE6deoELMbSoUMHpU3y5MmNYBw8eFCJXb9+Pah1IWH88ssvSuz5559PkG1BwnErvuRWKMrtmOp8bVxyCWdRWWfeEFsByFDmL7rjji0AAAAAQGsktgAAAAAArZHYAgAAAAC0RmILAAAAANCa9sWjWrVqpcSyZs1qW+7Tp09ETLQ2TfOWRS2A+NKoUSNPxakQGebOnavEsmTJosSaN28eVKEoQCRJol7rTp8+fch2zmOPPabEdu/eHdS6UqRIocQyZ85sxKe3335biV2+fDletyHauRVIvOuuu4Ja19GjR5XY008/rcQOHToU1Pqhr2LFigU8ZxfHjh0LWT7RoEEDJVa/fv2A2+B2PoD/hzu2AAAAAACtkdgCAAAAALRGYgsAAAAA0BqJLQAAAABAa9oXj2rTpo0S27ZtW8ACD8FKmzatpwngPXv2VGIxMTG25bZt2ypt9u/fH+dtROJx9uzZoF5XunTpkG8Lwid16tSe2v32229Brd+t6I7bWAfERcaMGT3FdDnfmDFjRoJtS2LhVmQzU6ZMAV+3du1aJbZo0SIlRqEoiJo1awYs5CSGDBmixAYPHmxbnjNnjtLmk08+UWJNmzZVYmnSpLEtjxkzRmmzYcMGPrRb4I4tAAAAAEBrJLYAAAAAAK2R2AIAAAAAtBZjuv36r1tDx/zQSHH9+nUl5vwnlSxZUmmzfft2T+t3zp91eya+Xr16nvaX89n8vn37Gjrz2HXiLFL7XiSoVq2aEvv++++VWLJk9un0mzdvVtrce++9hi7iq+9FSv87d+5cwLk44o477gg4fyxdunRKbN68eUqsRo0atuUbN24obWrVqqXEfvjhByPaRevY5/Z+zz//vBL74osvDF25Hfu//fZbJfb+++8rscOHDwf8ToRbNI19KVKkCFibpEePHgGPZ27ngv369VPahLLeSmIVrWOfV27HXec8cLfxMWvWrEose/bsAfdvrly5lDbHjx83EiPTY9/jji0AAAAAQGsktgAAAAAArZHYAgAAAAC0RmILAAAAANCa9sWj3Io5TZo0KeC2u/2zvbQ7cOCA0ubYsWNKbOjQoUps7ty5RjRJ7EUEIlWnTp2UWP/+/QP+6LdOxcyiqYCKF7t371ZiBQsWVGJr1qyxLb/11ltKmxdeeEGJtW3bNuA2DBs2zFNhl8QgMY19btuQOXNmJdaxY8eARRVLlSrl6T3/+ecf2/LEiRONUPnoo4+UmFuRtUgVTWNf/fr1bcuzZ88Oel3OY1rnzp2DXhdil5jGvlAaOXKkp3O1H3/80bb84IMPhnW7dELxKAAAAABAosCjyAAAAAAArZHYAgAAAAC0RmILAAAAANCa9sWjChQooMS6d+9uW27durXSxu2f/fHHHwcs+LRhwwalzfHjx43EiCICiPa+FyljX/HixZXYkiVLlFjevHlD9p7Tpk2zLb/xxhtKm5MnTxqJEWMfor3vxcfYlzt3btvy5MmTlTYPPfSQp3XdddddtuU9e/bEcevghrEvOG55iFshO2fRM7dCn4mV6XHs444tAAAAAEBrJLYAAAAAAK2R2AIAAAAAtEZiCwAAAADQmvbFo5BwKCKAaO97grEPCdX/6HtIqL5H/4Mbxj4kFIpHAQAAAAASBR5FBgAAAABojcQWAAAAAKA1ElsAAAAAgNZIbAEAAAAAWiOxBQAAAABojcQWAAAAAKA1ElsAAAAAgNZIbAEAAAAAWiOxBQAAAABojcQWAAAAAKA1ElsAAAAAgNZIbAEAAAAAWosxTdNM6I0AAAAAACBY3LEFAAAAAGiNxBYAAAAAoDUSWwAAAACA1khsAQAAAABaI7EFAAAAAGiNxBYAAAAAoDUSWwAAAACA1khsAQAAAABaI7EFAAAAAGiNxBYAAAAAoDUSWwAAAACA1khsAQAAAABaI7EFAAAAAGiNxBYAAAAAoDUSWwAAAACA1khsAQAAAABaI7EFAAAAAGiNxBYAAAAAoDUSWwAAAACA1khsAQAAAABaI7EFAAAAAGiNxBYAAAAAoDUSWwAAAACA1khsAQAAAABaI7EFAAAAAGiNxBYA8P+1dx9QUlPt48ezsLD0Kh0FFCnS24uCYgWkKdKxgRQFBASBtWBBkaJ0QURAfEGKghSxUcUXfiIq4oqASBFFpMtSVpCa/3nyP8OZ5GaZMDuzm7v7/ZyzYp69k8lm7tzkJvc+AQAA0BodWwAAAACA1ujYAgAAAAC0RscWAAAAAKA1OrYAAAAAAK3RsQUAAAAAaI2OLQAAAABAa3RsAQAAAABao2MLAAAAANAaHVsAAAAAgNbo2AIAAAAAtJauOrZJSUlG4cKFjTlz5qT1pqQbN998sxEfH5/Wm+F71L3I69Chg9GuXbsorDn9uXTpklG5cmVj2LBhab0p6cazzz5r1K1bN603w/do+yKP4653tH2Rx7GXuqd13TPD8N5775mBl65Zs8b6/z179lz+falSpayY20/ZsmUvl5PXSEzWIeT/Zd3heu2118zrr7/evHDhgplevfXWWynaRwE7d+40W7dubebLl8/Mnj27Wb9+ffPLL79Uyi1atMjMkSOHeeDAAdMPqHt6171ffvnFHDRokFmtWjUzV65cZtGiRc2mTZua33//vVJ206ZNZqZMmcyEhATTL0LVv4ULF5rt2rUzy5QpY32vypUrZz799NNmYmKisq7g9k7azJdffjns7Zo9e7aZJ08e8/jx42Z6NWfOHHPcuHEpWsfp06fNLl26mJUqVbL2V86cOc2qVaua48ePN8+dO2crK21eXFyc+fHHH5s61D2xb98+s23btmbevHnN3Llzm/fdd5+5e/duWxmOu2nT9gX2u9vPvHnzfH3cFbR9erd9Qo4PcvyV8/Bs2bKZ1113ndUe/vHHH74+9lL39K97Bw8eNDt37mwWKlTIqns1atQw58+fr5SLRN2LNaJg/Pjx1lXcYH/88YfxwgsvGI0aNYrGWxrnz583JkyYYPTv39/InDmzkV5NnjzZuOaaa4zOnTuHvY4///zTuOWWW6z9NGjQICNnzpzGe++9Z302q1evNho0aHC57P3332/kyZPHet9XX33V8Dvqnr/r3vTp0413333XaN26tdGrVy/jxIkTxjvvvGPdoVi2bJlxzz33XC5bo0YNo3bt2saYMWOMWbNmGTp4/PHHjeLFixsPP/ywcd111xk///yzMWnSJOPzzz83Nm3aZGTPnj0q7ztq1CjrSmfevHmN9Gru3LnGli1bjH79+oW9jjNnzhhbt241mjZtapQuXdrIlCmTsX79euu48e2331rvEVC0aFGr/Rs9erRx3333GX4nx9w777zT+k49//zzRpYsWYxx48YZt99+u5GQkGAULFgw4u/JcffqdezY0ap/weR4HEy3466g7fN32yd3ths2bGhs27bNOvaWK1fO2LVrl1XHli9fbvzyyy9G7ty5tTz2Uvf8XfdOnjxp3HrrrcahQ4eMp556yjq2zp8/37ozKyNsH3zwwctlI1L3onXl2Gno0KFWua+//joqV47lCqe8fteuXWZqSkpKSvZ3//zzT8TfT+403H777SlaR69evczY2Fhz+/bttm299tprzZo1ayrle/fubd1RunTpkpnWqHt6172NGzeap06dssWOHj1qXcWTUQNOo0ePtu6qOV/j1/oXaMuCzZw50yo3bdq0qNyxlSucsq5Vq1aZqenMmTPmxYsXr7puhqtZs2bWfooGaeNkHzrvkH300UdmTEyMctfTj3Xv9ddft2LfffedbYRE5syZzeeee+5yjONu2rR9gf0+atQoT+X9dNwVtH16t31y7i31b9KkSbb4jBkzrLicQ/v12Evd07vuvfHGG1YdW7169eWY/A116tSxRu2dPXs2onUvU2r2+suUKWPUq1cvKutfsmSJdQX+hhtuUH63fft268pAoUKFrDsm5cuXNwYPHmwr8+OPPxpNmjSxrpLmypXLuPvuu40NGzbYyvz3v/81YmJijP/973/WFS+Zz1uyZEnrd3fccYc1x+2HH36w7njmyJHDumouzp49a7z88stG2bJljbi4OOPaa6+15q1K3Gn27NnGf/7zH+v1+fPnt9a1YsUK63fy98ndBnl/2Q75kfcN2L17t/UTyrp166yrIrIfAuT95K6E3FXauXOnrbxc5ZM77nLVX0fUPf/UvVq1alnfr2ByJ+m2226zrhg7Sd37559/jJUrVxo6CN4nAQ888ID1r9vfF6m2L2vWrLaRFgF//fWX0bVrV+susnz+0gb37NnTOHfu3OUyv/32m9G2bVujQIEC1mcvd88/++wz23q++uor6zP/4IMPrJE3JUqUsMrKlVi5gy+fqXz+cidKrvo/9NBDl+8SyCiKSpUqGdmyZTOKFCliPPHEE0ZiYqKyrV988YV1d1FeL+1w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kgFs4sSJVjbEHj16mAUKFLCtS7LCyvrr1atnZSaWspLZNDjbaK9evax1DR061MrsGfzAY6/ZGSUz2X/+8x/ztddeM6dPn27279/fzJ49u1mjRg0lU7KQjGWSvdEvD4r3grrnz7o3btw4630kA7dkDHf+OB8wLtuSI0cO13rpR9KuyN8XHx+v/G0rVqyIyntu3LjRes/ly5fb4vv27bMefi77T7Ifv/POO+aQIUOsdioxMdEqc/DgQbNIkSJm3rx5rTogn0/16tWtz3nRokWX1xXIirxgwQLl/SUrsrSfbp544gnrdZLdUNY9adIk86mnnjKLFy9uW5e0Q1KucuXK5vDhw63MsVJPpQ46H/Iu7dXcuXOtzLJXm51RtqF8+fLmM888Y+0PqV8NGza0XivZ4pM7ruzatcv0O/mO3HDDDWbhwoWtfSV/67XXXmvt68OHD0flPTnuem/7OnfubN52223WdzBwHiLnJZL5WL5fuh93afv83fYdPXrUOh5Ifevbt6/V/sk2SsZ+OSacPXtW22Mvdc/fdU/IkwVeeukl6z0HDx5snYNKuynnKU4prXtR69ieOHHCzJYtm9mqVSszNciX8pprrrFOup2k4yqPMpFH3Mg2yYmN89EimzZtstKeSydYduidd95prl+/3lYmnI6tOHfunNVZlt9LZzl//vxmrVq1zFdeecXaT8FmzJhhdTAD5WS9K1euvPx7ORGV9NuSplu2JfjxK14PsMeOHTPvv//+y42cPNpDTvTcKpF0jiQ9/AsvvGDqgrrn37oXeDRMcj979uyxlZdU9A8//LCpiyv9bck9KikSqlataj3ewO0RI3KQKlSokPW5ygW7J5980nYSI485a9OmzeX2US56OR8/Em7HVshJvNQ5uXgmdadKlSpWx18eqRZMDphyYUXK5cmTx9oOuYASIBc9HnzwQWs7ZVuC65vXA6y03W3btrU6DLI/ZLtr1qxpjh071np8jVP79u2tx7vp4s8//7Q+S9l/cixr3ry59TivaOG4673tk5NCeXygfBdjY2Ot8xU5L/nhhx/SxXGXts/fbZ+QTkSXLl2scz4595M61r17d+txYU46HXupe/6vex06dLAutEq9kw62dKAPHTrkWjaldS9VnmObWuQZfvKFdT5jFuFbvHixVeGdXwZQ96Ltxx9/tO4cyr+4slmzZlkHr8CdWKTc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bt2qxNwSJnoRFxenxIYNG+YpueODDz4Ycv0TJ05UYhMmTDB0xh1bAAAAAIDW6NgCAAAAALRGxxYAAAAAoLUY0+PTomNiYqK/NUG2bdumxMqXL6/Err32WiW2f/9+I625zWF88803w5q7lDNnTl8+PN7rg8ZTKrXrnpsvv/xSid14441KrEWLFrblhIQEww91748//gj5HSlVqpShi9Sqe36pf5GsC7NmzVJi1apVU2KHDx+2Ld98883p7kHu4UqvbZ/bHFu3Y/F1110Xsfd0q0PffvutbblmzZpKmd9++81Tm5w3b96wtuvgwYNKbNSoUbblcePGGamNti+yli1bpsQaNWoUsX2+fPly23Lbtm2VMv/884+hi/Ta9rmpVKmSp/py8eLFK9aflOSVcDv3bNCgQVjrmjx5shIbM2ZMyPNF3eoed2wBAAAAAFqjYwsAAAAA0BodWwAAAACA1ujYAgAAAAC0Fmto7uzZs2m9CUbr1q1DJpnwmpxn7NixvkwUlZFUrVpVidWpU0eJDR8+XImlRbIoJ7fEUM5J95s3b07FLYKf6sI999yjxPLlyxeyXdu+fbtSxi0Ryvr168PYUvjB6dOnldiwYcOU2ODBg5XYiRMnbMt79+5VyixatEiJff/990psy5YttuUKFSp4qttuySRr165tW+7bt69SpkaNGkqsaNGiSiw+Pt62/O677yplTp48qcSQ/rglfHLWDzFlypRU2iKkROXKlZXY6tWrldg111wT8nzfa6KoPHnyKLHExETbcqZM6v3HS5cueVr/NkfivxEjRihlDhw4YKQ33LEFAAAAAGiNji0AAAAAQGt0bAEAAAAAWqNjCwAAAADQmm+TR8XExHiKuSVumjp1asS2o1GjRrblmTNnekoy4UzW48YtGcugQYOuehsRWcePH/eU9GT06NG+3PU9evRQYrGx9q/6smXLUnGLoGOddybGOXTokFJm6dKlSqxevXpKzGsyDfjPtGnTlJhb++FMPPX3339HbBvcjpVutm7dGjLmlnBy7ty5ntZfpEiRK7ar8LdatWopsZo1a4a1riVLligxEkXpy60eFCxYUImtWbNGib3wwgsh1++WtNHtfN/Zd3BLrpeUlKTEGjRooMQqVqxoWy5RooRShuRRAAAAAAD4DEORAQAAAABao2MLAAAAANAaHVsAAAAAgNZ8m/ng5Zdf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",
      "text/plain": [
       "<Figure size 1200x1200 with 30 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(12,12))  # (width, height) in inches\n",
    "rows, columns = 5, 6\n",
    "for i in range(1, columns*rows+1):\n",
    "    w = random.choice(wrong)\n",
    "    img = test_images[w]\n",
    "    correct_label = test_labels[w]\n",
    "    prediction = predictions[w]\n",
    "    plt.subplot(rows, columns, i)\n",
    "    plt.title(f'\"{prediction}\"  (correct: {correct_label})')\n",
    "    plt.axis('off')\n",
    "    plt.imshow(img, cmap='gray')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": []
   },
   "source": [
    "### Improving the Performance of the Network"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": []
   },
   "source": [
    "#### Normalizing the images"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 152,
   "metadata": {
    "collapsed": true,
    "jupyter": {
     "outputs_hidden": true
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   3,\n",
       "         18,  18,  18, 126, 136, 175,  26, 166, 255, 247, 127,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,  30,  36,  94, 154, 170,\n",
       "        253, 253, 253, 253, 253, 225, 172, 253, 242, 195,  64,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,  49, 238, 253, 253, 253, 253,\n",
       "        253, 253, 253, 253, 251,  93,  82,  82,  56,  39,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,  18, 219, 253, 253, 253, 253,\n",
       "        253, 198, 182, 247, 241,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,  80, 156, 107, 253, 253,\n",
       "        205,  11,   0,  43, 154,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,  14,   1, 154, 253,\n",
       "         90,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 139, 253,\n",
       "        190,   2,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  11, 190,\n",
       "        253,  70,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  35,\n",
       "        241, 225, 160, 108,   1,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "         81, 240, 253, 253, 119,  25,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,  45, 186, 253, 253, 150,  27,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0,  16,  93, 252, 253, 187,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0,   0,   0, 249, 253, 249,  64,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,  46, 130, 183, 253, 253, 207,   2,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  39,\n",
       "        148, 229, 253, 253, 253, 250, 182,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  24, 114, 221,\n",
       "        253, 253, 253, 253, 201,  78,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,  23,  66, 213, 253, 253,\n",
       "        253, 253, 198,  81,   2,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,  18, 171, 219, 253, 253, 253, 253,\n",
       "        195,  80,   9,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,  55, 172, 226, 253, 253, 253, 253, 244, 133,\n",
       "         11,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0, 136, 253, 253, 253, 212, 135, 132,  16,   0,\n",
       "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0],\n",
       "       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n",
       "          0,   0]], dtype=uint8)"
      ]
     },
     "execution_count": 152,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_images[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 153,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dtype('uint8')"
      ]
     },
     "execution_count": 153,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_images.dtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 154,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Min value is 0\n",
      "Max value is 255\n"
     ]
    }
   ],
   "source": [
    "print(\"Min value is\", train_images.min())\n",
    "print(\"Max value is\", train_images.max())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": []
   },
   "source": [
    "Let's try converting the pixel values into float32's in the range 0-1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 155,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "# load the data\n",
    "(train_images, train_labels), (test_images, test_labels) = mnist.load_data()\n",
    "\n",
    "# normalize to the range 0-1\n",
    "train_images = train_images.astype('float32') / 255\n",
    "test_images = test_images.astype('float32') / 255\n",
    "\n",
    "# create the target vectors\n",
    "train_targets = to_categorical(train_labels)\n",
    "test_targets = to_categorical(test_labels)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 156,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dtype('float32')"
      ]
     },
     "execution_count": 156,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_images.dtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 157,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Min value is 0.0\n",
      "Max value is 1.0\n"
     ]
    }
   ],
   "source": [
    "print(\"Min value is\", train_images.min())\n",
    "print(\"Max value is\", train_images.max())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": []
   },
   "source": [
    "Let's try this again..."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 158,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "def build_network():\n",
    "    network = Sequential()\n",
    "    network.add(Input(shape=(28,28)))\n",
    "    network.add(Flatten())\n",
    "    network.add(Dense(30, activation='sigmoid', name='hidden'))\n",
    "    network.add(Dense(10, activation='sigmoid', name='output'))\n",
    "    network.compile(loss='mean_squared_error', optimizer='SGD', metrics=['accuracy'])\n",
    "    return network"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 159,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "network = build_network()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 160,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.0816 - loss: 0.3289\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[0.328925222158432, 0.08164999634027481]"
      ]
     },
     "execution_count": 160,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "network.evaluate(train_images, train_targets)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 161,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/5\n",
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.1368 - loss: 0.1454\n",
      "Epoch 2/5\n",
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.2512 - loss: 0.0917\n",
      "Epoch 3/5\n",
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.2959 - loss: 0.0889\n",
      "Epoch 4/5\n",
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.3173 - loss: 0.0879\n",
      "Epoch 5/5\n",
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.3484 - loss: 0.0872\n"
     ]
    }
   ],
   "source": [
    "history = network.fit(train_images, train_targets, epochs=5);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 162,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.3665 - loss: 0.0869\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[0.08686599880456924, 0.36649999022483826]"
      ]
     },
     "execution_count": 162,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "network.evaluate(train_images, train_targets)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 163,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 3ms/step - accuracy: 0.3807 - loss: 0.0867\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[0.08671501278877258, 0.3806999921798706]"
      ]
     },
     "execution_count": 163,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "network.evaluate(test_images, test_targets)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 164,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/IAAAGJCAYAAAApGAgTAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAahhJREFUeJzt3QucTVX/x/HvuIw7ueWWSESUS8ijlEKkUkqFCnmKQqVIUSGphyTKJaRQqdDNU4qSkicpIZHkj4TIrULuMvN//dbujBlmmBkzs88+5/N+vXazz2XOrFlnss5vr9/6rZj4+Ph4AQAAAACAQMjmdwMAAAAAAEDqEcgDAAAAABAgBPIAAAAAAAQIgTwAAAAAAAFCIA8AAAAAQIAQyAMAAAAAECAE8gAAAAAABAiBPAAAAAAAAUIgDwAAAABAgBDIA1Hs9ttvV/ny5dP1vY8//rhiYmIUtHYDABCugjouA8h6BPJAGLKBODXH3Llz/W4qAAARj3EZQLiJiY+Pj/e7EQCSmjx5cpLbr776qmbPnq3XXnstyf1XXHGFSpQoke7uO3z4sOLi4pQrV640f+/ff//tjty5c8uPGQu7iPHLL79k+c8GAEQfxmUA4YZAHgiAe+65R6NHj9bJrrvt27dPefPmVaQjkAcA+IlxObjss9SBAweUJ08ev5sCnBJS64GAuuyyy3Teeedp8eLFuvTSS10A/8gjj7jH/vvf/+rqq69W6dKl3Wz72WefrYEDB+rIkSMnXItnM9yWPjh06FC9+OKL7vvs++vWratvv/32pGvx7LZ9uJk+fbprm31vtWrVNGvWrOPabzPqderUcTP69nPGjRt3Suv79u7dq549e6ps2bLu51auXNn9Hsde/LDMhgYNGui0005T/vz53fNC/RYycuRI127r08KFC7t2vvHGG+lqFwAgOkTzuPy///1PN910k84880z3M2wsfuCBB7R///7jnvvTTz/p5ptvVvHixV0wbePwo48+muQ5mzZt0h133JHQX2eddZa6dOmiQ4cOpfi7mkmTJrn7E2fsWX9ec801+vjjj93vZz/TfjczceJENWrUSKeffrr7OVWrVtWYMWOS/R1nzpyphg0bqkCBAipYsKB7D0KfDfr376+cOXNq+/btx31f586d3WcOu3gAZKQcGfpqALLU77//rubNm6tNmza67bbbEtLsbSCzILVHjx7u62effaZ+/fpp9+7deuaZZ076ujYw/fXXX7rrrrvcgDhkyBDdcMMN+vnnn91AdSJffvml3n33XXXt2tUNdiNGjFCrVq20YcMGFS1a1D3nu+++05VXXqlSpUppwIAB7oPME0884Qb19LBg/dprr9Xnn3/uBv6aNWu6AbtXr17uw8Dw4cPd81asWOEG8+rVq7ufZ4P2mjVrNH/+/ITXGj9+vO677z7deOON6t69uxt4ly1bpm+++Ua33HJLutoHAIgO0Touv/XWWy4r0IJte82FCxe6i+K//vqreyzExtNLLrnEtdkCXAuy165dqw8++EBPPfWUe87mzZt14YUXaufOne45VapUcWP522+/7X5GbGys0mrVqlVq27at679OnTq5iwfGgna7sGGfIXLkyOHaYf1kyw67deuW8P32/v373/92z+3Tp48LzK3P7IKIfTZo166d66+pU6e6CychduHB2m397cdSREQ4WyMPILx169bNppWT3NewYUN339ixY497/r59+46776677orPmzdv/IEDBxLu69ChQ3y5cuUSbq9bt869ZtGiReP/+OOPhPv/+9//uvs/+OCDhPv69+9/XJvsdmxsbPyaNWsS7vv+++/d/SNHjky4r0WLFq4tmzZtSrhv9erV8Tly5DjuNZNzbLunT5/uvu/JJ59M8rwbb7wxPiYmJqE9w4cPd8/bvn17iq993XXXxVerVu2kbQAARC/G5ZN/7hg0aJAbg9evX59w36WXXhpfoECBJPeZuLi4hPP27dvHZ8uWLf7bb7897jVDz0vuM4iZOHGiu98+z4TY5wW7b9asWalqd7NmzeIrVKiQcHvnzp2uzfXq1Yvfv39/iu2uX7++e05i7777rvvZn3/++XE/BzhVpNYDAWYzyh07djzu/sTrvuwK/o4dO9wVcLuSbSltJ9O6dWuXUh5i32vsyv/JNGnSxKXkhdjst6Wghb7XrvJ/+umnatmypUuZC6lYsaKbxUiPjz76SNmzZ3cz6YlZqr1dX7B0OGNX0EMpjna1PTn2HJtBODZlEQCAk4nWcTnx72dL3ez3u+iii9wYbDPXxtLO582b52a2LQU/sVCavI3NtgygRYsWLg3+WOldfmep+c2aNTthu3ft2uXabenz1jd2O7Qkz96z3r17Hzernrg97du3d9l7lmEQ8vrrr7tlBvaaQEYj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qVJFsbGxmjFjhjp27Oiea98XYoH7xIkTE27nypWLdxIAEBWYkQcAAJlq2LBh6tSpkwvGq1at6gL6vHnzasKECck+/7LLLtP111+vc889V2effba6d++u6tWr68svv0zyPAvcS5YsmXAULlyYdxIAEBUI5AEAQKY5dOiQFi9erCZNmhz98JEtm7u9YMGCk35/fHy85syZ42bvL7300iSPzZ07183SV65cWV26dNHvv/+e4uscPHhQu3fvTnIAABBUBPKZbetWafhwaefOTP9RAACEmx07dujIkSMqUaJEkvvt9pYtW1L8vl27dil//vwutf7qq6/WyJEjdcUVVyRJq3/11VddkP/000/riy++UPPmzd3PSs6gQYNUqFChhKNs2bIZ+FsCAKJRfLz01VfSG29k/c9mjXxms7V8338v5c8vdeqU6T8OAIBIUKBAAS1dulR79uxxwbqtsa9QoYJLuzdt2rRJeO7555/vUu8tDd9m6Rs3bnzc6/Xp08e9RojNyBPMAwDS48ABq/8ijRwpLV4snXaadN11Ur58yjIE8pnt1lu9QH7SJAJ5AEDUKVasmLJnz66tlqGWiN22de0psfT7ihUrunOrWr9y5Uo3qx4K5I9lQb79rDVr1iQbyNt6eorhAQBOxaZN0pgx0osvStu3e/flzi3dcIO0Z0/WBvKk1me2226zTyNezsXq1Zn+4wAACCeWGl+7dm03qx4SFxfnbtevXz/Vr2PfY+vcU/Lrr7+6NfKlSpU65TYDAJA4fX7+fMsEk8qXl556ygvizzjDlm1JGzdKL79sS8aUpQjkM5t9oGja1Dt/9dVM/3EAAIQbS2kfP368XnnlFTezboXp9u7d66rYm/bt27vU9xCbeZ89e7Z+/vln9/xnn33W7SN/m10cl8167FGvXr309ddf65dffnEXBa677jo3g594ezoAAE4lff6VV6Q6daQGDbxU+r//lqzu6ttvS+vWSb17W+aZfEFqfVbo0EGaNcsL5AcM8GboAQCIEq1bt9b27dvVr18/V+DOUuVnzZqVUABvw4YNLpU+xIL8rl27uln2PHnyuP3kJ0+e7F7HWKr+smXL3IWBnTt3qnTp0mratKkGDhxI+jwAIEPS58eNs4KtR9PnbcX0vfdKNWooLMTE274uSMIK4FhFW6uYW7BgwVPvnf37vZn5XbskSy1s1IgeBwD4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kNLrLZB/5x1p9Ggpf36/WwQAAABErc2bjxaq+/RTae/eo4/lyuWtcQ8VqjvrLD9bikhEIB8U9et7Feutcr0F8xbYAwAAAMgSto/7t98enXX/7rukj5cufbRQnVWbz5ePNwaZh0A+KKzqhQXvjz3m7SlPIA8AAABkql27pNmzjxaq27Yt6cfzCy88mjJfsyaF6pB1COSDpF07qW9fr+DdL79I5cv73SIAAAAgovzf/3mBux3/+5/0999HHytYUGrW7GihutNP97OliGYE8kFy5pneYpvPPpNee80L6gEAAACk26FD0rx5R1Pm16xJ+njlykdn3Rs0kHLmpLPhPwL5oLGUegvkrXq9pdmz0SQAAACQJlu2SB995AXvn3wi7dlz9DEL1C+77GihuooV6VyEHwL5oGnVSurWTVq7Vpo/37ssCAAAAOCEheqWLDk6675oUdLHS5aUrrrKm3lv0kQqUIDORHgjkA8aK395441ewTublSeQBwAAAI7z119eoToL3m323WbhE6tb9+is+wUXSNmy0YkIDgL5oKbXWyA/bZo0YoSUJ4/fLQIAAAB8Z+vbQ7PuX3whHT589LH8+aWmTb1Z9+bNvVl4IKgI5IPo0kulcuWk9eul6dOltm39bhEAAACQ5SxQ//JLL3C3AH7VqqSP2/r2UKG6Sy6RcuXiTUJkIJAPIsv7sVn5J57wZuYJ5AEAABAlbC9329PdAvePP5Z27z76WI4c3pyXBe4WwJ9zjp8tBTIPK0GCqn177+unn0qbNvndGgAATmj06NEqX768cufOrXr16mnhwoUpPvfdd99VnTp1dNpppylfvnyqWbOmXrNtVxOJj49Xv379VKpUKeXJk0dNmjTR6tWreReACBQfL333nfTkk9K//uWlxN9+u/TWW14QX7z40ds7dkhz5kg9ehDEI7IRyAfV2Wd7he6sBOfkyX63BgCAFE2dOlU9evRQ//79tWTJEtWoUUPNmjXTNptWS0aRIkX06KOPasGCBVq2bJk6duzojo9t6u0fQ4YM0YgRIzR27Fh98803LuC31zxw4ADvBBAB9u6V/vtfqXNnqWxZrxhd377SN994gX3i21bEbuJErx50oUJ+txzIGjHxdkkbSezevVuFChXSrl27VLBgwfDtnZdekjp1ks49V1qxgj3lASCCBWZsSobNwNetW1ejRo1yt+Pi4lS2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t+3cLrzwQnc+bdo0tz/7V199pddff12TQvt7IDLcdpt94vJGytWr/W4NACCLWJBtF+dthxkLvO1o0KCBBg0apPvuuy/Vr7Njxw43ox5aMhdit20yIDUefvhhlS5dOsnFAEurf/XVV12BXEu9/+KLL9S8efMUMwWs3TbLETosIwDBZqs9LBHUkkWstFLTpn63CADCPJC3q+KhdWiffvppwjq5KlWq6LfffsvYFsJfpUodHRlffZV3AwCihAXEVjDWWDBvNWqMbUdna9uzyuDBgzVlyhS3E42tlw9p06aN+/xx/vnnq2XLlm672W+//TbFbAErnGupiqHDlgki2Kyo3YoVUvHi0jPP+N0aAAhAIF+tWjVXsOZ///ufZs+enVAl1gb5orZlGSJzT3kL5OPi/G4NACALWLbd999/n7DG3bahmz9/vpulr1ChQqpfxy4CZM+eXVu3bk1yv90uWbLkCb/XitlaIP/JJ5+oum0EfgLWJvtZiXexScwmIGy9YeIDwWXXkgYO9M6ff97bMRcAokm6AnlLYRs3bpyrCm9VZWvUqOHuf//99xNS7hFBrrvOq1i/YYMtSPS7NQCALPDYY4+5onTGgvd169a5LeE++ugjjRgxItWvExsb6/agtxT4EHtdu13/BBt724WDgQMHup1sbF3+yfz6669ujXwpyyRDRLM/S0upt9R6m0tq08bvFgFAQLafswDe1rxZoRirIhtiFeutIA4iTJ48tk+gV7ne9pRv1MjvFgEAMpltDxdSsWJF/fTTT/rjjz/cuB+qXJ9atvVchw4dXEBuF/xt+7m9e/eqoy1sllwlettWztaxhyYMbFta2xHH9p4PraXPnz+/O/bs2aMBAwaoVatWblZ/7dq1euihh1w7E7cbkWnCBGnePMk+clqhuzT+OQJA9M7I79+/31V/DQXx69evd4NySvvBIoLS6995x9uwFQAQsawWTo4cOVxx28Ssanxag3jTunVrlyZvwXnNmjW1dOlSN9MeKoBn+9QnrrEzZswYV+3+xhtvdDPsocNew1iq/rJly9wa+XPOOUd33HGHm/W3JX/sJR/Z7JpOr17euaXWly/vd4sAIED7yDdt2lQ33HCD7r77breHqxW5y5kzp5ulHzZsmNsCJsjYWzYZ9mdSubJXud52JggF9gCAiBybbM25FZgLLZ+LNIz1wWQJgtOmSbVr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",
      "text/plain": [
       "<Figure size 1200x400 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_history(history)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Using a different optimizer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 165,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "def build_rmsprop_network():\n",
    "    network = Sequential()\n",
    "    network.add(Input(shape=(28,28)))\n",
    "    network.add(Flatten())\n",
    "    network.add(Dense(30, activation='sigmoid', name='hidden'))\n",
    "    network.add(Dense(10, activation='sigmoid', name='output'))\n",
    "    network.compile(loss='mean_squared_error', optimizer='rmsprop', metrics=['accuracy'])\n",
    "    return network"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 166,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "network = build_rmsprop_network()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 167,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Dtype is float32\n",
      "Min value is 0.0\n",
      "Max value is 1.0\n"
     ]
    }
   ],
   "source": [
    "print(\"Dtype is\", train_images.dtype)\n",
    "print(\"Min value is\", train_images.min())\n",
    "print(\"Max value is\", train_images.max())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 168,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/5\n",
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 3ms/step - accuracy: 0.7678 - loss: 0.0443\n",
      "Epoch 2/5\n",
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.9004 - loss: 0.0189\n",
      "Epoch 3/5\n",
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.9144 - loss: 0.0151\n",
      "Epoch 4/5\n",
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.9225 - loss: 0.0134\n",
      "Epoch 5/5\n",
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.9285 - loss: 0.0123\n"
     ]
    }
   ],
   "source": [
    "history = network.fit(train_images, train_targets, epochs=5);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 169,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 3ms/step - accuracy: 0.9322 - loss: 0.0117\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[0.011683933436870575, 0.932200014591217]"
      ]
     },
     "execution_count": 169,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "network.evaluate(train_images, train_targets)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 170,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 3ms/step - accuracy: 0.9318 - loss: 0.0117\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[0.011655501089990139, 0.9318000078201294]"
      ]
     },
     "execution_count": 170,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "network.evaluate(test_images, test_targets)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.12"
  },
  "widgets": {
   "application/vnd.jupyter.widget-state+json": {
    "state": {},
    "version_major": 2,
    "version_minor": 0
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
