ki-dhbw/tasks/16 - wie gut ist das.ipynb

596 lines
106 KiB
Text
Raw Permalink Normal View History

2025-02-13 14:23:29 +01:00
{
"cells": [
{
"cell_type": "code",
"execution_count": 66,
"metadata": {
"id": "I2keZzFjqmcc"
},
"outputs": [],
"source": [
"import tensorflow as tf\n",
"\n",
"from tensorflow.keras import datasets, layers, models\n",
"from tensorflow import keras\n",
"import matplotlib.pyplot as plt\n",
"import random\n",
"import numpy as np\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "MRfXcFGdqsPZ",
"outputId": "6e36b70f-6853-412b-e728-bfea5c8c8ffd"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1360\n"
]
}
],
"source": [
"(train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.mnist.load_data()\n",
"\n",
"selection_img = []\n",
"selection_labels = []\n",
"\n",
"c = random.randint(50, 50000)\n",
"print(c)\n",
"n = 1000\n",
"\n",
"i=0\n",
"while i < n:\n",
" p = random.randint(50, 40000)\n",
" selection_img.append(train_images[p])\n",
" selection_labels.append(train_labels[p])\n",
" i += 1\n",
"assert len(selection_img) == n\n",
"\n",
"selection_img = np.array(selection_img)\n",
"selection_labels = np.array(selection_labels)\n",
"assert len(selection_img) == n"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "SQQ6sLQZrV25",
"outputId": "cc273cbd-fd3c-49ef-ac30-8fdc51dc2d62"
},
"outputs": [
{
"data": {
"text/plain": [
"(28, 28)"
]
},
"execution_count": 68,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"selection_img[1].shape"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 282
},
"id": "Y7MiDICErjtO",
"outputId": "ad14bbdb-50c9-4eda-85bd-208cb5b25a44"
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7f6944673020>"
]
},
"execution_count": 69,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAaAAAAGdCAYAAABU0qcqAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAGxtJREFUeJzt3X9w1PW97/HXhiQraLIxhmQTCRjwByoQbynEXJRiyRDSGS4I546onQEPgwMGb4FavekoaNszsdhaj16q58xtSZ0rYr3Dj5E50tFgwrUm9BBhuNy2uSQTSyhJUM5hNwQJgXzuH1xXFxLpd9nlnR/Px8x3hux+P/m+/fodnnzZZeNzzjkBAHCVJVkPAAAYnggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwkWw9wMV6e3t17NgxpaWlyefzWY8DAPDIOafOzk7l5eUpKan/+5wBF6Bjx44pPz/fegwAwBVqbW3VmDFj+n1+wAUoLS1NknSPvqNkpRhPAwDw6px69KH+JfL7eX8SFqCNGzfqhRdeUHt7uwoLC/XKK69o+vTpl133xV+7JStFyT4CBACDzv//hNHLvYySkDchvPXWW1q7dq3Wr1+vjz/+WIWFhSotLdXx48cTcTgAwCCUkAC9+OKLWr58uR555BHdcccdeu211zRq1Cj9+te/TsThAACDUNwDdPbsWTU0NKikpOTLgyQlqaSkRHV1dZfs393drXA4HLUBAIa+uAfos88+0/nz55WTkxP1eE5Ojtrb2y/Zv7KyUoFAILLxDjgAGB7M/yFqRUWFQqFQZGttbbUeCQBwFcT9XXBZWVkaMWKEOjo6oh7v6OhQMBi8ZH+/3y+/3x/vMQAAA1zc74BSU1M1depUVVdXRx7r7e1VdXW1iouL4304AMAglZB/B7R27VotWbJE3/zmNzV9+nS99NJL6urq0iOPPJKIwwEABqGEBOiBBx7Qp59+qnXr1qm9vV133XWXdu3adckbEwAAw5fPOeesh/iqcDisQCCgWZrPJyEAwCB0zvWoRjsUCoWUnp7e737m74IDAAxPBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADARNwD9Oyzz8rn80VtEydOjPdhAACDXHIivumdd96p999//8uDJCfkMACAQSwhZUhOTlYwGEzEtwYADBEJeQ3o8OHDysvL0/jx4/Xwww/ryJEj/e7b3d2tcDgctQEAhr64B6ioqEhVVVXatWuXXn31VbW0tOjee+9VZ2dnn/tXVlYqEAhEtvz8/HiPBAAYgHzOOZfIA5w8eVLjxo3Tiy++qGXLll3yfHd3t7q7uyNfh8Nh5efna5bmK9mXksjRAAAJcM71qEY7FAqFlJ6e3u9+CX93QEZGhm699VY1NTX1+bzf75ff70/0GACAASbh/w7o1KlTam5uVm5ubqIPBQAYROIeoCeeeEK1tbX65JNP9NFHH+n+++/XiBEj9OCDD8b7UACAQSzufwV39OhRPfjggzpx4oRGjx6te+65R/X19Ro9enS8DwUAGMTiHqAtW7bE+1sCAIYgPgsOAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATCRbDwAMRyOuv97zmvbFEz2vGflZr+c1kpTxUav3RSnefztx/lTPa3ynz3g/zqhrPK+RJN+p057XnPvrsZiONRxxBwQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmODDSIErlHTXHZ7X3PnrP3lesy7jv3le03DmJs9rJOnboxo9r0lL8v7BpzkjRnpec+Tc557X3JQ8yvMaSfq/Pd4/+PTdU5M8r/m3c9d6XvPGv97teY0k3br8X2NalwjcAQEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJvgwUuCr7p7iecnPtvyT5zX/9NlMz2vWPfz3ntektH7meY0kvfXNMs9rzl3Dn2evpqTYPot0QOGKAQCYIEAAABOeA7Rnzx7NmzdPeXl58vl82r59e9TzzjmtW7dOubm5GjlypEpKSnT48OF4zQsAGCI8B6irq0uFhYXauHFjn89v2LBBL7/8sl577TXt3btX1157rUpLS3XmjPcf7AQAGLo8vwmhrKxMZWV9v0DpnNNLL72kp59+WvPnz5ckvf7668rJydH27du1ePHiK5sWADBkxPU1oJaWFrW3t6ukpCTyWCAQUFFRkerq6vpc093drXA4HLUBAIa+uAaovb1dkpSTkxP1eE5OTuS5i1VWVioQCES2/Pz8eI4EABigzN8FV1FRoVAoFNlaW1utRwIAXAVxDVAwGJQkdXR0RD3e0dERee5ifr9f6enpURsAYOiLa4AKCgoUDAZVXV0deSwcDmvv3r0qLi6O56EAAIOc53fBnTp1Sk1NTZGvW1padODAAWVmZmrs2LFavXq1fvKTn+iWW25RQUGBnnnmGeXl5WnBggXxnBsAMMh5DtC+fft03333Rb5eu3atJGnJkiWqqqrSk08+qa6uLj366KM6efKk7rnnHu3atUvXXHNN/KYGAAx6Puecsx7iq8LhsAKBgGZpvpJ9KdbjYJAaMXp0TOtu33XC85p5GQc8r3n+7x70vMbt/z+e1wAWzrke1WiHQqHQ176ub/4uOADA8ESAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATnn8cAzAYnLs5L6Z1zwd3eV7z7uk0z2tu/uemy+90kepPJnte4zvgfTZJyv+Hj2JaB3jBHRAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIPI8WQlPxpOKZ1d+75+zhPYut/P/aPMa27r+lxz2vS3qqP6VgYvrgDAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBM8GGkGJLON7XEtK7gwTgPEkfJY270vmbviJiOteWFn3les6Jmoec15zuOe16DoYM7IACACQIEADBBgAAAJggQAMAEAQIAmCBAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABB9GCgxht2xbGdO66f/hsOc1fLAovOIOCABgggABAEx4DtCePXs0b9485eXlyefzafv27VHPL126VD6fL2qbO3duvOYFAAwRngPU1dWlwsJCbdy4sd995s6dq7a2tsj25ptvXtGQAIChx/ObEMrKylRWVva1+/j9fgWDwZiHAgAMfQl5DaimpkbZ2dm67bbbtHLlSp04caLffbu7uxUOh6M2AMDQF/cAzZ07V6+//rqqq6v105/+VLW1tSorK9P58+f73L+yslKBQCCy5efnx3skAMAAFPd/B7R48eLIrydPnqwpU6ZowoQJqqmp0ezZsy/Zv6KiQmvXro18HQ6HiRAADAMJfxv2+PHjlZWVpaampj6f9/v9Sk9Pj9oAAENfwgN09OhRnThxQrm5uYk+FABgEPH8V3CnTp2KuptpaWnRgQMHlJmZqczMTD333HNatGiRgsGgmpub9eSTT+rmm29WaWlpXAc
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.imshow(selection_img[19])"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {
"id": "-TWpc3c-tXkx"
},
"outputs": [],
"source": [
"model = models.Sequential()\n",
"model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))\n",
"model.add(layers.MaxPooling2D((2, 2)))\n",
"model.add(layers.Conv2D(64, (3, 3), activation='relu'))\n",
"model.add(layers.MaxPooling2D((2, 2)))\n",
"model.add(layers.Conv2D(64, (3, 3), activation='relu'))\n",
"model.add(layers.Flatten())\n",
"model.add(layers.Dense(64, activation='relu'))\n",
"model.add(layers.Dense(10))"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "HIsZlqvyt1qr",
"outputId": "fe8d632b-0fe7-4e36-e70a-bedfc5908deb"
},
"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_5\"</span>\n",
"</pre>\n"
],
"text/plain": [
"\u001b[1mModel: \"sequential_5\"\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",
"│ conv2d_12 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Conv2D</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">26</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">26</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">320</span> │\n",
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
"│ max_pooling2d_8 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">MaxPooling2D</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">13</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">13</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
"│ conv2d_13 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Conv2D</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">11</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">11</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">18,496</span> │\n",
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
"│ max_pooling2d_9 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">MaxPooling2D</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">5</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">5</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
"│ conv2d_14 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Conv2D</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">3</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">3</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">36,928</span> │\n",
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
"│ flatten_5 (<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\">576</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
"│ dense_12 (<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\">64</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">36,928</span> │\n",
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
"│ dense_13 (<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\">650</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",
"│ conv2d_12 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m26\u001b[0m, \u001b[38;5;34m26\u001b[0m, \u001b[38;5;34m32\u001b[0m) │ \u001b[38;5;34m320\u001b[0m │\n",
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
"│ max_pooling2d_8 (\u001b[38;5;33mMaxPooling2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m13\u001b[0m, \u001b[38;5;34m13\u001b[0m, \u001b[38;5;34m32\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n",
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
"│ conv2d_13 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m11\u001b[0m, \u001b[38;5;34m11\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m18,496\u001b[0m │\n",
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
"│ max_pooling2d_9 (\u001b[38;5;33mMaxPooling2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m5\u001b[0m, \u001b[38;5;34m5\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n",
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
"│ conv2d_14 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m3\u001b[0m, \u001b[38;5;34m3\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m36,928\u001b[0m │\n",
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
"│ flatten_5 (\u001b[38;5;33mFlatten\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m576\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n",
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
"│ dense_12 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m36,928\u001b[0m │\n",
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
"│ dense_13 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m) │ \u001b[38;5;34m650\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\">93,322</span> (364.54 KB)\n",
"</pre>\n"
],
"text/plain": [
"\u001b[1m Total params: \u001b[0m\u001b[38;5;34m93,322\u001b[0m (364.54 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\">93,322</span> (364.54 KB)\n",
"</pre>\n"
],
"text/plain": [
"\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m93,322\u001b[0m (364.54 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": [
"model.summary()"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "uslCpPtpt2tD",
"outputId": "0f1211aa-afb1-45e1-c6fb-c4865b93892f"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/9\n",
"\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2s/step - accuracy: 0.1120 - loss: 48.5177 - val_accuracy: 0.1275 - val_loss: 28.9219\n",
"Epoch 2/9\n",
"\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 598ms/step - accuracy: 0.1330 - loss: 28.9148 - val_accuracy: 0.1592 - val_loss: 24.3249\n",
"Epoch 3/9\n",
"\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 626ms/step - accuracy: 0.1660 - loss: 24.4470 - val_accuracy: 0.1298 - val_loss: 18.6818\n",
"Epoch 4/9\n",
"\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 579ms/step - accuracy: 0.1290 - loss: 18.8173 - val_accuracy: 0.1308 - val_loss: 14.6285\n",
"Epoch 5/9\n",
"\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 632ms/step - accuracy: 0.1310 - loss: 14.5580 - val_accuracy: 0.1820 - val_loss: 10.9390\n",
"Epoch 6/9\n",
"\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 641ms/step - accuracy: 0.1940 - loss: 10.8034 - val_accuracy: 0.2025 - val_loss: 8.2526\n",
"Epoch 7/9\n",
"\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 585ms/step - accuracy: 0.2130 - loss: 8.1689 - val_accuracy: 0.2245 - val_loss: 5.8517\n",
"Epoch 8/9\n",
"\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 617ms/step - accuracy: 0.2380 - loss: 5.7613 - val_accuracy: 0.2664 - val_loss: 4.2264\n",
"Epoch 9/9\n",
"\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 623ms/step - accuracy: 0.2920 - loss: 4.1206 - val_accuracy: 0.3445 - val_loss: 3.0474\n"
]
}
],
"source": [
"model.compile(optimizer='adam',\n",
" loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),\n",
" metrics=['accuracy'])\n",
"\n",
"history = model.fit(selection_img, selection_labels, epochs=9, batch_size=2**11, \n",
" validation_data=(test_images, test_labels))"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 300
},
"id": "Y8mAWZshvBGJ",
"outputId": "cc8ec1f2-4dae-479a-ea06-32e09c484f60"
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7f69446500e0>"
]
},
"execution_count": 73,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(history.history['accuracy'], label='accuracy')\n",
"plt.plot(history.history['val_accuracy'], label = 'val_accuracy')\n",
"plt.xlabel('Epoch')\n",
"plt.ylabel('Accuracy')\n",
"plt.ylim([0.94, 1])\n",
"plt.legend(loc='lower right')\n",
"\n",
"#test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2)"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "HCN3gqhtvGzj",
"outputId": "fa85df97-a484-419c-8b14-5b5c1a528be3"
},
"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_6\"</span>\n",
"</pre>\n"
],
"text/plain": [
"\u001b[1mModel: \"sequential_6\"\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_6 (<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",
"│ dense_14 (<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\">64</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">50,240</span> │\n",
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
"│ dense_15 (<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\">256</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">16,640</span> │\n",
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
"│ dense_16 (<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\">128</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">32,896</span> │\n",
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
"│ dense_17 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">10</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">1,290</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_6 (\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",
"│ dense_14 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m50,240\u001b[0m │\n",
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
"│ dense_15 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m256\u001b[0m) │ \u001b[38;5;34m16,640\u001b[0m │\n",
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
"│ dense_16 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m128\u001b[0m) │ \u001b[38;5;34m32,896\u001b[0m │\n",
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
"│ dense_17 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m) │ \u001b[38;5;34m1,290\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\">101,066</span> (394.79 KB)\n",
"</pre>\n"
],
"text/plain": [
"\u001b[1m Total params: \u001b[0m\u001b[38;5;34m101,066\u001b[0m (394.79 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\">101,066</span> (394.79 KB)\n",
"</pre>\n"
],
"text/plain": [
"\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m101,066\u001b[0m (394.79 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": [
"fc_model = models.Sequential()\n",
"fc_model.add(layers.Flatten(input_shape=(28, 28, 1)))\n",
"fc_model.add(layers.Dense(64, activation='relu'))\n",
"fc_model.add(layers.Dense(256, activation='relu'))\n",
"fc_model.add(layers.Dense(128, activation='relu'))\n",
"fc_model.add(layers.Dense(10))\n",
"fc_model.summary()"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "o-lxxt6q1O7S",
"outputId": "0f9e418d-faab-4487-8d1e-420ee9f355ed"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/19\n",
"\u001b[1m30/30\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 23ms/step - accuracy: 0.4177 - loss: 15.6053 - val_accuracy: 0.7225 - val_loss: 1.2895\n",
"Epoch 2/19\n",
"\u001b[1m30/30\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 20ms/step - accuracy: 0.7484 - loss: 1.1079 - val_accuracy: 0.8024 - val_loss: 0.7737\n",
"Epoch 3/19\n",
"\u001b[1m30/30\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 21ms/step - accuracy: 0.8176 - loss: 0.7050 - val_accuracy: 0.8383 - val_loss: 0.6190\n",
"Epoch 4/19\n",
"\u001b[1m30/30\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 20ms/step - accuracy: 0.8530 - loss: 0.5398 - val_accuracy: 0.8599 - val_loss: 0.5313\n",
"Epoch 5/19\n",
"\u001b[1m30/30\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 21ms/step - accuracy: 0.8783 - loss: 0.4372 - val_accuracy: 0.8771 - val_loss: 0.4639\n",
"Epoch 6/19\n",
"\u001b[1m30/30\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 20ms/step - accuracy: 0.8949 - loss: 0.3731 - val_accuracy: 0.8882 - val_loss: 0.4265\n",
"Epoch 7/19\n",
"\u001b[1m30/30\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 19ms/step - accuracy: 0.9082 - loss: 0.3144 - val_accuracy: 0.8944 - val_loss: 0.3981\n",
"Epoch 8/19\n",
"\u001b[1m30/30\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 17ms/step - accuracy: 0.9165 - loss: 0.2879 - val_accuracy: 0.9004 - val_loss: 0.3754\n",
"Epoch 9/19\n",
"\u001b[1m30/30\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 21ms/step - accuracy: 0.9275 - loss: 0.2425 - val_accuracy: 0.9061 - val_loss: 0.3531\n",
"Epoch 10/19\n",
"\u001b[1m30/30\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 19ms/step - accuracy: 0.9331 - loss: 0.2240 - val_accuracy: 0.9078 - val_loss: 0.3421\n",
"Epoch 11/19\n",
"\u001b[1m30/30\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 21ms/step - accuracy: 0.9379 - loss: 0.2070 - val_accuracy: 0.9120 - val_loss: 0.3314\n",
"Epoch 12/19\n",
"\u001b[1m30/30\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 18ms/step - accuracy: 0.9425 - loss: 0.1831 - val_accuracy: 0.9151 - val_loss: 0.3192\n",
"Epoch 13/19\n",
"\u001b[1m30/30\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 19ms/step - accuracy: 0.9485 - loss: 0.1684 - val_accuracy: 0.9179 - val_loss: 0.3143\n",
"Epoch 14/19\n",
"\u001b[1m30/30\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 21ms/step - accuracy: 0.9542 - loss: 0.1522 - val_accuracy: 0.9203 - val_loss: 0.3055\n",
"Epoch 15/19\n",
"\u001b[1m30/30\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 21ms/step - accuracy: 0.9562 - loss: 0.1423 - val_accuracy: 0.9223 - val_loss: 0.3027\n",
"Epoch 16/19\n",
"\u001b[1m30/30\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 21ms/step - accuracy: 0.9596 - loss: 0.1327 - val_accuracy: 0.9239 - val_loss: 0.2996\n",
"Epoch 17/19\n",
"\u001b[1m30/30\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 22ms/step - accuracy: 0.9627 - loss: 0.1240 - val_accuracy: 0.9250 - val_loss: 0.2908\n",
"Epoch 18/19\n",
"\u001b[1m30/30\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 24ms/step - accuracy: 0.9655 - loss: 0.1138 - val_accuracy: 0.9251 - val_loss: 0.2913\n",
"Epoch 19/19\n",
"\u001b[1m30/30\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 25ms/step - accuracy: 0.9674 - loss: 0.1049 - val_accuracy: 0.9282 - val_loss: 0.2847\n"
]
}
],
"source": [
"fc_model.compile(optimizer='adam',\n",
" loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),\n",
" metrics=['accuracy'])\n",
"\n",
"history = fc_model.fit(train_images, train_labels, epochs=19, batch_size=2**11,\n",
" validation_data=(test_images, test_labels))"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7f697d01d160>"
]
},
"execution_count": 76,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAkgAAAG2CAYAAACEbnlbAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAdPlJREFUeJzt3Xd4VFX+x/H3pBdIAklIIwSI9F4DiqiIRnBZKSqCqzRBdgGVrD8FpYiusror4qrYlrJKEQtgwcWVKFioBkIRiDQJhCQkQDqpc39/DAxOCiSYZFI+r+eZJ5M75975XgaSD+eee47JMAwDEREREbFysHcBIiIiIjWNApKIiIhIMQpIIiIiIsUoIImIiIgUo4AkIiIiUowCkoiIiEgxCkgiIiIixSggiYiIiBSjgCQiIiJSjAKSiIiISDF2DUjfffcdQ4YMITg4GJPJxLp16666z6ZNm+jevTuurq5cd911LFu2rESbN954g+bNm+Pm5kZERAQ7duyweT03N5cpU6bg6+tLgwYNGDFiBMnJyZV0ViIiIlLb2TUgZWdn06VLF954441ytT9+/Dh33nknt9xyC7GxsTz22GM89NBDfPXVV9Y2q1evJioqirlz57Jr1y66dOlCZGQkZ86csbaZPn06n3/+OR999BGbN2/m9OnTDB8+vNLPT0RERGonU01ZrNZkMrF27VqGDh1aZpsnn3yS9evXs3//fuu2++67j7S0NDZs2ABAREQEvXr14vXXXwfAbDYTGhrKtGnTmDFjBunp6fj7+7Ny5UruvvtuAA4dOkS7du3YunUrffr0qbqTFBERkVrByd4FVMTWrVsZOHCgzbbIyEgee+wxAPLz84mJiWHmzJnW1x0cHBg4cCBbt24FICYmhoKCApvjtG3blmbNml0xIOXl5ZGXl2f93mw2c+7cOXx9fTGZTJV1iiIiIlKFDMMgMzOT4OBgHBzKvpBWqwJSUlISAQEBNtsCAgLIyMjgwoULnD9/nqKiolLbHDp0yHoMFxcXfHx8SrRJSkoq873nz5/PvHnzKudERERExK5OnjxJ06ZNy3y9VgUke5o5cyZRUVHW79PT02nWrBknT57Ey8vLjpWJiIhIeWVkZBAaGkrDhg2v2K5WBaTAwMASd5slJyfj5eWFu7s7jo6OODo6ltomMDDQeoz8/HzS0tJsepF+26Y0rq6uuLq6ltju5eWlgCQiIlLLXG14TK2aB6lv375ER0fbbPv666/p27cvAC4uLvTo0cOmjdlsJjo62tqmR48eODs727SJi4sjPj7e2kZERETqN7v2IGVlZXHkyBHr98ePHyc2NpbGjRvTrFkzZs6cSUJCAu+99x4AkydP5vXXX+eJJ55g/PjxfPPNN3z44YesX7/eeoyoqCjGjBlDz5496d27NwsXLiQ7O5tx48YB4O3tzYQJE4iKiqJx48Z4eXkxbdo0+vbtqzvYREREBLBzQPrpp5+45ZZbrN9fGuMzZswYli1bRmJiIvHx8dbXW7Rowfr165k+fTqvvvoqTZs25d///jeRkZHWNiNHjiQlJYU5c+aQlJRE165d2bBhg83A7VdeeQUHBwdGjBhBXl4ekZGRLFq0qBrOWERERGqDGjMPUm2TkZGBt7c36enpGoMkIiJSS5T393etGoMkIiIiUh0UkERERESKUUASERERKUYBSURERKQYBSQRERGRYhSQRERERIpRQBIREREpRgFJREREpBgFJBEREZFiFJBEREREilFAEhERESlGAUlERESkGAUkERERkWIUkERERESKUUASERERKUYBSURERKQYBSQRERGRYhSQRERERIpRQBIREREpRgFJREREpBgFJBEREZFiFJBEREREilFAEhERESlGAUlERESkGAUkERERkWIUkERERESKUUASERERKUYBSURERKQYBSQRERGRYhSQRERERIpRQBIREREpRgFJREREpBgFJBEREZFiFJBEREREilFAEhERESnG7gHpjTfeoHnz5ri5uREREcGOHTvKbFtQUMCzzz5LeHg4bm5udOnShQ0bNti0ad68OSaTqcRjypQp1jY333xzidcnT55cZecoIiIitYtdA9Lq1auJiopi7ty57Nq1iy5duhAZGcmZM2dKbT9r1izefvttXnvtNQ4cOMDkyZMZNmwYu3fvtrbZuXMniYmJ1sfXX38NwD333GNzrIkTJ9q0e+mll6ruREVERKRWMRmGYdjrzSMiIujVqxevv/46AGazmdDQUKZNm8aMGTNKtA8ODubpp5+26Q0aMWIE7u7uLF++vNT3eOyxx/jiiy84fPgwJpMJsPQgde3alYULF15z7RkZGXh7e5Oeno6Xl9c1H0dERESqT3l/f9utByk/P5+YmBgGDhx4uRgHBwYOHMjWrVtL3ScvLw83Nzebbe7u7vzwww9lvsfy5csZP368NRxdsmLFCvz8/OjYsSMzZ84kJyfnivXm5eWRkZFh8xAREZG6ycleb5yamkpRUREBAQE22wMCAjh06FCp+0RGRrJgwQL69+9PeHg40dHRrFmzhqKiolLbr1u3jrS0NMaOHWuzffTo0YSFhREcHMzevXt58skniYuLY82aNWXWO3/+fObNm1exkxQREZFayW4B6Vq8+uqrTJw4kbZt22IymQgPD2fcuHEsWbKk1PaLFy9m0KBBBAcH22yfNGmS9XmnTp0ICgri1ltv5ejRo4SHh5d6rJkzZxIVFWX9PiMjg9DQ0Eo4KxEREalp7HaJzc/PD0dHR5KTk222JycnExgYWOo+/v7+rFu3juzsbE6cOMGhQ4do0KABLVu2LNH2xIkTbNy4kYceeuiqtURERABw5MiRMtu4urri5eVl8xAREZG6yW4BycXFhR49ehAdHW3dZjabiY6Opm/fvlfc183NjZCQEAoLC/nkk0+46667SrRZunQpTZo04c4777xqLbGxsQAEBQVV7CRERESkTrLrJbaoqCjGjBlDz5496d27NwsXLiQ7O5tx48YB8OCDDxISEsL8+fMB2L59OwkJCXTt2pWEhASeeeYZzGYzTzzxhM1xzWYzS5cuZcyYMTg52Z7i0aNHWblyJYMHD8bX15e9e/cyffp0+vfvT+fOnavnxEVERKRGs2tAGjlyJCkpKcyZM4ekpCS6du3Khg0brAO34+PjcXC43MmVm5vLrFmzOHbsGA0aNGDw4MG8//77+Pj42Bx348aNxMfHM378+BLv6eLiwsaNG61hLDQ0lBEjRjBr1qwqPVcRERGpPew6D1JtpnmQREREap8aPw+SiIiISE2lgCQiIiJSjAKSiIiISDEKSCIiIiLFKCCJiIiIFKOAJCIiIlKMApKIiIjUOGazgdlsv5mIatVitSIiIlK3ZOUVcjwlm2OpWRxNyeZYShbHUrI5nprNx3/uS4dgb7vUpYAkIiIiVarIbJBw/gJHUy3h51IIOpaaRXJGXpn7HUvJVkASERGR2i39QoE1/Bz9TQj69WwO+YXmMvfz9XShpb8nLf0aWL76W742a+xRjdXbUkASERGRcissMhN/Lscafiw9QpbnqVn5Ze7n4uhAcz+PEiEo3K8B3h7O1XgG5aOAJCIiIiWYzQYnz+cQl5TJ4TNZxCVl8ktyJsdSsskvKrs3KMDLtdQQFNLIHUcHUzWewe+jgCQiIlKPGYZBQtoFDidnEZdsCUG/JGdy5EwWuQWlByF3Z0da+HlaQ1D4xctjLfw9aeBaN6JF3TgLERERuSLDMDiTmWftCbI8sjhyJousvMJS93FxcqBVkwa0Dmh48WF5HuLjjkMt6g26FgpIIiIidUxqVp4lACVl8suZLMvX5EwycksPQs6OJlr6NaBVQAPaBDSkVUBD2gQ2pFljj1p1WawyKSCJiIjUYoZhcDw1m+9+SeH7w6nEnkzjbHbpg6UdTNDcz9MaglpfDETN/TxxdtTc0b+lgCQiIlLLZOQWsOVIKpt/SeX7wymcOn/B5nWTCUIbeVgvi7UJbEirJg1p6e+Jm7OjnaquXRSQREREargis8HeU2l8dzEQ7T6ZRtFvluFwcXSgZ/NG3NjKn77hvrQOaICHi37F/x7
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(history.history['accuracy'], label='accuracy')\n",
"plt.plot(history.history['val_accuracy'], label = 'val_accuracy')\n",
"plt.xlabel('Epoch')\n",
"plt.ylabel('Accuracy')\n",
"plt.ylim([0.8, 1])\n",
"plt.legend(loc='lower right')"
]
}
],
"metadata": {
"accelerator": "GPU",
"colab": {
"provenance": []
},
"gpuClass": "standard",
"kernelspec": {
"display_name": ".venv",
"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.9"
}
},
"nbformat": 4,
"nbformat_minor": 1
}