590 lines
118 KiB
Text
590 lines
118 KiB
Text
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {
|
|
"id": "I2keZzFjqmcc"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"2025-02-13 12:39:12.831009: I tensorflow/core/util/port.cc:153] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.\n",
|
|
"2025-02-13 12:39:12.831563: I external/local_xla/xla/tsl/cuda/cudart_stub.cc:32] Could not find cuda drivers on your machine, GPU will not be used.\n",
|
|
"2025-02-13 12:39:12.835242: I external/local_xla/xla/tsl/cuda/cudart_stub.cc:32] Could not find cuda drivers on your machine, GPU will not be used.\n",
|
|
"2025-02-13 12:39:12.846730: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:477] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered\n",
|
|
"WARNING: All log messages before absl::InitializeLog() is called are written to STDERR\n",
|
|
"E0000 00:00:1739446752.866428 56926 cuda_dnn.cc:8310] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered\n",
|
|
"E0000 00:00:1739446752.872158 56926 cuda_blas.cc:1418] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered\n",
|
|
"2025-02-13 12:39:12.891394: I tensorflow/core/platform/cpu_feature_guard.cc:210] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.\n",
|
|
"To enable the following instructions: AVX2 AVX_VNNI FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"import tensorflow as tf\n",
|
|
"\n",
|
|
"from tensorflow.keras import datasets, layers, models\n",
|
|
"import matplotlib.pyplot as plt"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "MRfXcFGdqsPZ",
|
|
"outputId": "6e36b70f-6853-412b-e728-bfea5c8c8ffd"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Downloading data from https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz\n",
|
|
"\u001b[1m170498071/170498071\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m16s\u001b[0m 0us/step\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"(train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.cifar10.load_data()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "SQQ6sLQZrV25",
|
|
"outputId": "cc273cbd-fd3c-49ef-ac30-8fdc51dc2d62"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"(32, 32, 3)"
|
|
]
|
|
},
|
|
"execution_count": 4,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"train_images[1].shape"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 9,
|
|
"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 0x7f61ec374410>"
|
|
]
|
|
},
|
|
"execution_count": 9,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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hJLC733ve+Err7wS/uEPfwjDMAwffPDBsLa2Nnz66afDPXv2hNddd104c+bMcGBgwHPnNh+1nb29veHXv/71cNu2beH+/fvDF154IfyTP/mT8KKLLgqz2azv1p3dcccdYU1NTbh169bwyJEjg5f+/v7Bmttvvz2cPn16+OKLL4Y7d+4MW1pawpaWFo9d233cdu7duzd84IEHwp07d4b79+8Pn3766XDWrFnhkiVLPHdu861vfStsb28P9+/fH+7Zsyf81re+FUYikfA//uM/wjA8d/tyTAygMAzDH/3oR+H06dPDZDIZXnHFFeH27dt9tzSsbrzxxrCxsTFMJpPhJz7xifDGG28M9+7d67uts/KrX/0qlPShy+rVq8MwfP9U7O985zthfX19mEqlwqVLl4YdHR1+mz4DH7Wd/f394TXXXBNOmTIlTCQS4YwZM8Jbb711zP3xdKrtkxQ+9thjgzUDAwPhX/7lX4YTJ04MKyoqwi984QvhkSNH/DV9Bj5uOw8cOBAuWbIkrKurC1OpVHjhhReGf/M3fxP29PT4bdzoL/7iL8IZM2aEyWQynDJlSrh06dLB4ROG525f8nUMAAAvRv17QACA8YkBBADwggEEAPCCAQQA8IIBBADwggEEAPCCAQQA8IIBBADwggEEAPCCAQQA8IIBBADwggEEAPDi/wGBZMk/q6p/1gAAAABJRU5ErkJggg==",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plt.imshow(train_images[2000])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 27,
|
|
"metadata": {
|
|
"id": "-TWpc3c-tXkx"
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"model = models.Sequential()\n",
|
|
"model.add(layers.Conv2D(64, (3, 3), activation='relu', input_shape=(32,32,3)))\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": 28,
|
|
"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_15 (<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\">30</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">30</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">1,792</span> │\n",
|
|
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
|
"│ max_pooling2d_10 (<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\">15</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">15</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
|
|
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
|
"│ conv2d_16 (<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\">13</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">13</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">36,928</span> │\n",
|
|
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
|
"│ max_pooling2d_11 (<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\">6</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">6</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
|
|
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
|
"│ conv2d_17 (<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\">4</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">4</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\">1024</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\">65,600</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_15 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m30\u001b[0m, \u001b[38;5;34m30\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m1,792\u001b[0m │\n",
|
|
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
|
"│ max_pooling2d_10 (\u001b[38;5;33mMaxPooling2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m15\u001b[0m, \u001b[38;5;34m15\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n",
|
|
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
|
"│ conv2d_16 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m13\u001b[0m, \u001b[38;5;34m13\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m36,928\u001b[0m │\n",
|
|
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
|
"│ max_pooling2d_11 (\u001b[38;5;33mMaxPooling2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m6\u001b[0m, \u001b[38;5;34m6\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n",
|
|
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
|
"│ conv2d_17 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m4\u001b[0m, \u001b[38;5;34m4\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;34m1024\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;34m65,600\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\">141,898</span> (554.29 KB)\n",
|
|
"</pre>\n"
|
|
],
|
|
"text/plain": [
|
|
"\u001b[1m Total params: \u001b[0m\u001b[38;5;34m141,898\u001b[0m (554.29 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\">141,898</span> (554.29 KB)\n",
|
|
"</pre>\n"
|
|
],
|
|
"text/plain": [
|
|
"\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m141,898\u001b[0m (554.29 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": 30,
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "uslCpPtpt2tD",
|
|
"outputId": "0f1211aa-afb1-45e1-c6fb-c4865b93892f"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Epoch 1/6\n",
|
|
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m15s\u001b[0m 556ms/step - accuracy: 0.1200 - loss: 2.2874 - val_accuracy: 0.1855 - val_loss: 2.1505\n",
|
|
"Epoch 2/6\n",
|
|
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m14s\u001b[0m 560ms/step - accuracy: 0.2117 - loss: 2.0862 - val_accuracy: 0.3449 - val_loss: 1.7981\n",
|
|
"Epoch 3/6\n",
|
|
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m15s\u001b[0m 594ms/step - accuracy: 0.3619 - loss: 1.7431 - val_accuracy: 0.3989 - val_loss: 1.6349\n",
|
|
"Epoch 4/6\n",
|
|
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m14s\u001b[0m 564ms/step - accuracy: 0.4179 - loss: 1.6021 - val_accuracy: 0.4420 - val_loss: 1.5258\n",
|
|
"Epoch 5/6\n",
|
|
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m14s\u001b[0m 564ms/step - accuracy: 0.4615 - loss: 1.4910 - val_accuracy: 0.4814 - val_loss: 1.4457\n",
|
|
"Epoch 6/6\n",
|
|
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m14s\u001b[0m 561ms/step - accuracy: 0.5026 - loss: 1.3813 - val_accuracy: 0.4991 - val_loss: 1.3774\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"model.compile(optimizer='adam',\n",
|
|
" loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),\n",
|
|
" metrics=['accuracy'])\n",
|
|
"\n",
|
|
"history = model.fit(train_images, train_labels, epochs=6, batch_size=2**11, \n",
|
|
" validation_data=(test_images, test_labels))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 31,
|
|
"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 0x7f617c1ef680>"
|
|
]
|
|
},
|
|
"execution_count": 31,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAG2CAYAAACDLKdOAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAT2NJREFUeJzt3Xl4VPXZxvHvTPY9IXtCIOyLEHYiihuiCEpFbYtIBVFrbQGX1AoogrYqqEXRglp9EVxAqFqQyqKIRS2gIBgWSSJbCIGsQHayzcz7x8DAkIAEkkxyuD/XNRc5Z86ZeWaK5O5vNdlsNhsiIiIiBmF2dQEiIiIi9UnhRkRERAxF4UZEREQMReFGREREDEXhRkRERAxF4UZEREQMReFGREREDEXhRkRERAxF4UZEREQMReFGREREDMWl4eabb75h+PDhxMTEYDKZWLZs2S/es27dOnr37o2Xlxft27dnwYIFDV6niIiINB8uDTelpaX06NGDuXPnntf1+/fv5+abb+a6664jOTmZRx55hPvvv5/PP/+8gSsVERGR5sLUVDbONJlMLF26lBEjRpz1mkmTJrFixQp27tzpOHfnnXdSUFDA6tWrG6FKERERaercXV1AXWzcuJHBgwc7nRsyZAiPPPLIWe+pqKigoqLCcWy1Wjl69CihoaGYTKaGKlVERETqkc1mo7i4mJiYGMzmc3c8Natwk52dTWRkpNO5yMhIioqKOH78OD4+PjXumTFjBs8880xjlSgiIiIN6ODBg7Rs2fKc1zSrcHMhpkyZQlJSkuO4sLCQVq1acfDgQQIDA11YmYiIiJyvoqIi4uLiCAgI+MVrm1W4iYqKIicnx+lcTk4OgYGBtbbaAHh5eeHl5VXjfGBgoMKNiIhIM3M+Q0qa1To3AwYMYO3atU7n1qxZw4ABA1xUkYiIiDQ1Lg03JSUlJCcnk5ycDNineicnJ5ORkQHYu5TGjBnjuP7BBx9k3759PP7446SmpvL666/zr3/9i0cffdQV5YuIiEgT5NJw88MPP9CrVy969eoFQFJSEr169WLatGkAZGVlOYIOQJs2bVixYgVr1qyhR48ezJo1i//7v/9jyJAhLqlfREREmp4ms85NYykqKiIoKIjCwkKNuREREWkm6vL7u1mNuRERERH5JQo3IiIiYigKNyIiImIoCjciIiJiKAo3IiIiYigKNyIiImIoCjciIiJiKAo3IiIiYigKNyIiImIoCjciIiJiKAo3IiIiYigKNyIiImIoCjciIiJiKAo3IiIiYigKNyIiImIoCjciIiJiKAo3IiIiYigKNyIiImIoCjciIiJiKAo3IiIiYigKNyIiImIoCjciIiJiKAo3IiIiYigKNyIiImIoCjciIiJiKAo3IiIiYigKNyIiImIoCjciIiJiKAo3IiIiYigKNyIiImIoCjciIiJiKAo3IiIiYigKNyIiImIoCjciIiJiKAo3IiIiYigKNyIiImIoCjciIiJiKAo3IiIiYigKNyIiImIoCjciIiJiKAo3IiIiYigKNyIiImIoCjciIiJiKAo3IiIiYigKNyIiImIoCjciIiJiKAo3IiIiYigKNyIiImIoCjciIiJiKAo3IiIiYigKNyIiImIoCjciIiJiKAo3IiIiYigKNyIiImIoCjciIiJiKAo3IiIiYigKNyIiImIoCjciIiJiKAo3IiIiYigKNyIiImIoCjciIiJiKAo3IiIiYigKNyIiImIoLg83c+fOJT4+Hm9vbxITE9m0adM5r589ezadOnXCx8eHuLg4Hn30UcrLyxupWhEREWnqXBpulixZQlJSEtOnT2fr1q306NGDIUOGkJubW+v1ixYtYvLkyUyfPp2UlBTmzZvHkiVLeOKJJxq5chEREWmqXBpuXn75ZX7/+98zbtw4unbtyptvvomvry/vvPNOrddv2LCBK6+8krvuuov4+HhuvPFGRo0a9YutPSIiInLpcFm4qaysZMuWLQwePPhUMWYzgwcPZuPGjbXec8UVV7BlyxZHmNm3bx8rV65k2LBhZ32fiooKioqKnB4iIiJiXO6ueuP8/HwsFguRkZFO5yMjI0lNTa31nrvuuov8/HwGDhyIzWajurqaBx988JzdUjNmzOCZZ56p19pFRESk6XL5gOK6WLduHc8//zyvv/46W7du5d///jcrVqzgb3/721nvmTJlCoWFhY7HwYMHG7FiERERaWwua7kJCwvDzc2NnJwcp/M5OTlERUXVes9TTz3F3Xffzf333w9A9+7dKS0t5YEHHuDJJ5/EbK6Z1by8vPDy8qr/DyAiIiJNkstabjw9PenTpw9r1651nLNaraxdu5YBAwbUek9ZWVmNAOPm5gaAzWZruGJFRESk2XBZyw1AUlISY8eOpW/fvvTv35/Zs2dTWlrKuHHjABgzZgyxsbHMmDEDgOHDh/Pyyy/Tq1cvEhMT2bNnD0899RTDhw93hBwRERG5tLk03IwcOZK8vDymTZtGdnY2PXv2ZPXq1Y5BxhkZGU4tNVOnTsVkMjF16lQOHTpEeHg4w4cP57nnnnPVRxAREZEmxmS7xPpzioqKCAoKorCwkMDAQFeXIyIiIuehLr+/m9VsKREREZFfonAjIiIihqJwIyIiIoaicCMiIiKGonAjIiIihqJwIyIiIoaicCMiIiKGonAjIiIihqJwIyIiIoaicCMiIiKGonAjIiIihqJwIyIiIoaicCMiIiKGonAjIiIihqJwIyIiIoaicCMiIiKGonAjIiIihqJwIyIiIoaicCMiIiKGonAjIiIihqJwIyIiIoaicCMiIiKGonAjIiIihqJwIyIiIoaicCMiIiKGonAjIiIihqJwIyIiIoaicCMiIiKGonAjIiIihqJwIyIiIoaicCMiIiKGonAjIiIihqJwIyIiIoaicCMiIiKGonAjIiIihqJwIyIiIoaicCMiIiKGonAjIiIihqJwIyIiIoaicCMiIiKGonAjIiIihqJwIyIiIoaicCMiIiKGonAjIiIihqJwIyIiIoaicCMiIiKGonAjIiIihqJwIyIiIoaicCMiIiKGonAjIiIihqJwIyIiIoaicCMiIiKGonAjIiIihqJwIyIiIoaicCMiIiKGonAjIiIihqJwIyIiIoaicCMiIiKGonAjIiIihqJwIyIiIoaicCMiIiKGonAjIiIihqJwIyIiIobi8nAzd+5c4uPj8fb2JjExkU2bNp3z+oKCAsaPH090dDReXl507NiRlStXNlK1IiIi0tS5u/LNlyxZQlJSEm+++SaJiYnMnj2bIUOGkJaWRkRERI3rKysrueGGG4iIiODjjz8mNjaWAwcOEBwc3PjFi4iISJNkstlsNle9eWJiIv369WPOnDkAWK1W4uLimDhxIpMnT65x/ZtvvslLL71EamoqHh4eF/SeRUVFBAUFUVhYSGBg4EXVLyIiIo2jLr+/XdYtVVlZyZYtWxg8ePCpYsxmBg8ezMaNG2u9Z/ny5QwYMIDx48cTGRlJt27deP7557FYLGd9n4qKCoqKipweIiIiYlwuCzf5+flYLBYiIyOdzkdGRpKdnV3rPfv27ePjjz/GYrGwcuVKnnrqKWbNmsWzzz571veZMWMGQUFBjkdcXFy9fg4RERFpWlw+oLgurFYrERERvPXWW/Tp04eRI0fy5JNP8uabb571nilTplBYWOh4HDx4sBErFhERkcbmsgHFYWFhuLm5kZOT43Q+JyeHqKioWu+Jjo7Gw8MDNzc3x7kuXbqQnZ1NZWUlnp6eNe7x8vLCy8urfosXERGRJstlLTeenp706dOHtWvXOs5ZrVbWrl3LgAEDar3nyiuvZM+ePVitVse5n3/+mejo6FqDjYiIiFx6XNotlZSUxNtvv827775LSkoKf/zjHyktLWXcuHEAjBkzhilTpjiu/+Mf/8jRo0d5+OGH+fnnn1mxYgXPP/8848ePd9VHEBERkSbGpevcjBw5kry8PKZNm0Z2djY9e/Zk9erVjkHGGRkZmM2n8ldcXByff/45jz76KAkJCcTGxvLwww8zadIkV30EERERaWJcus6NK2idGxERkeanWaxzIyIiItIQ6hxu4uPj+etf/0pGRkZD1CMiIiJyUeocbh555BH+/e9/07ZtW2644QYWL15MRUVFQ9QmIiIiUmcXFG6Sk5PZtGkTXbp0YeLEiURHRzNhwgS2bt3aEDWKiIiInLeLHlBcVVXF66+/zqRJk6iqqqJ79+489NBDjBs3DpPJVF911hsNKBYREWl+6vL7+4KngldVVbF06VLmz5/PmjVruPzyy7nvvvvIzMzkiSee4Msvv2TRokUX+vIiIiIiF6TO4Wbr1q3Mnz+fDz/8ELPZzJgxY3jllVfo3Lmz45rbbruNfv361WuhIiIiIuejzuGmX79+3HDDDbzxxhuMGDECDw+PGte0adOGO++8s14KFBEREamLOoebffv20bp163Ne4+fnx/z58y+4KBEREZELVefZUrm5uXz//fc1zn///ff88MMP9VKUiIiIyIWqc7gZP348Bw8erHH+0KFD2sBSREREXK7O4WbXrl307t27xvlevXqxa9eueilKRERE5ELVOdx4eXmRk5NT43xWVhbu7i7dZFxERESk7uHmxhtvZMqUKRQWFjrOFRQU8MQTT3DDDTfUa3EiIiIidVXnppa///3vXH311bRu3ZpevXoBkJycTGRkJO+//369FygiIiJSF3UON7GxsWzfvp2FCxeybds2fHx8GDduHKNGjap1zRsRERGRxnRBg2T8/Px44IEH6rsWERERkYt2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Tt9PU6ap4CIi0miOV1noOu1zl7z3rr8Owdfz/H/tlZaWkpSUREJCAiUlJUybNo3bbruN5ORkysrKuOaaa4iNjWX58uVERUWxdetWrFb7XoIrVqzgtttu48knn+S9996jsrKSlStX1rnmyZMnM2vWLHr16oW3tzfl5eX06dOHSZMmERgYyIoVK7j77rtp164d/fv3B2DKlCm8/fbbvPLKKwwcOJCsrCxSU1MBuP/++5kwYQKzZs3Cy8sLgA8++IDY2FgGDRpU5/qaKoUbERGRWtxxxx1Ox++88w7h4eHs2rWLDRs2kJeXx+bNm2nRogUA7du3d1z73HPPceedd/LMM884zvXo0aPONTzyyCPcfvvtTucee+wxx88TJ07k888/51//+hf9+/enuLiYV199lTlz5jB27FgA2rVrx8CBAwG4/fbbmTBhAp9++im//e1vAViwYAH33HOPodYiUrgREZFG4+Phxq6/DnHZe9fF7t27mTZtGt9//z35+fmOVpmMjAySk5Pp1auXI9icKTk5md///vcXXXPfvn2dji0WC88//zz/+te/OHToEJWVlVRUVODr6wtASkoKFRUVXH/99bW+nre3N3fffTfvvPMOv/3tb9m6dSs7d+5k+fLlF11rU6JwIyIijcZkMtWpa8iVhg8fTuvWrXn77beJiYnBarXSrVs3Kisrf3EriV963mQy1RgDVNuAYT8/P6fjl156iVdffZXZs2fTvXt3/Pz8eOSRR6isrDyv9wV711TPnj3JzMxk/vz5DBo0iNatW//ifc2JBhSLiIic4ciRI6SlpTF16lSuv/56unTpwrFjxxzPJyQkkJyczNGjR2u9PyEh4ZwDdMPDw8nKynIc7969m7Kysl+sa/369dx666387ne/o0ePHrRt25aff/7Z8XyHDh3w8fE553t3796dvn378vbbb7No0SLuvffeX3zf5kbhRkRE5AwhISGEhoby1ltvsWfPHr766iuSkpIcz48aNYqoqChGjBjB+vXr2bdvH5988gkbN24EYPr06Xz44YdMnz6dlJQUduzYwQsvvOC4f9CgQcyZM4cff/yRH374gQcffBAPD49frKtDhw6sWbOGDRs2kJKSwh/+8AdycnIcz3t7ezNp0iQef/xx3nvvPfbu3ct3333HvHnznF7n/vvvZ+bMmdhsNqdZXEahcCMiInIGs9nM4sWL2bJlC926dePRRx/lpZdecjzv6enJF198QUREBMOGDaN79+7MnDnTsZP1tddey0cffcTy5cvp2bMngwYNYtOmTY77Z82aRVxcHFdddRV33XUXjz32mGPczLlMnTqV3r17M2TIEK699lpHwDrdU089xZ///GemTZtGly5dGDlyJLm5uU7XjBo1Cnd3d0aNGoW3t/dFfFNNk8lW14n/zVxRURFBQUEUFhYSGBjo6nJERAytvLyc/fv306ZNG0P+Em2u0tPTadeuHZs3b6Z3796uLsfhXH9f6vL7u3mM6hIREZGLVlVVxZEjR5g6dSqXX355kwo29UndUiIiIpeI9evXEx0dzebNm3nzzTddXU6DUcuNiIjIJeLaa6+t8zYUzZFabkRERMRQFG5ERETEUBRuRERExFAUbkRERMRQFG5ERETEUBRuRERExFAUbkRERBpAfHw8s2fPdnUZlySFGxERETEUhRsRERFxYrFYsFqtri7jginciIhI47HZoLLUNY86rMz71ltvERMTU+MX/K233sq9997L3r17ufXWW4mMjMTf359+/frx5ZdfXvDX8vLLL9O9e3f8/PyIi4vjT3/6EyUlJU7XrF+/nmuvvRZfX19CQkIYMmQIx44dA8BqtfLiiy/Svn17vLy8aNWqFc899xwA69atw2QyUVBQ4Hit5ORkTCYT6enpACxYsIDg4GCWL19O165d8fLyIiMjg82bN3PDDTcQFhZGUFAQ11xzDVu3bnWqq6CggD/84Q9ERkbi7e1Nt27d+OyzzygtLSUwMJCPP/7Y6fply5bh5+dHcXHxBX9fv0TbL4iISOOpKoPnY1zz3k8cBk+/87r0N7/5DRMnTuS///0v119/PQBHjx5l9erVrFy5kpKSEoYNG8Zzzz2Hl5cX7733HsOHDyctLY1WrVrVuTSz2cxrr71GmzZt2LdvH3/60594/PHHef311wF7GLn++uu59957efXVV3F3d+e///0vFosFgClTpvD222/zyiuvMHDgQLKyskhNTa1TDWVlZbzwwgv83//9H6GhoURERLBv3z7Gjh3LP/7xD2w2G7NmzWLYsGHs3r2bgIAArFYrQ4cOpbi4mA8++IB27dqxa9cu3Nzc8PPz484772T+/Pn8+te/drzPyeOAgIA6f0/nS+FGRETkDCEhIQwdOpRFixY5ws3HH39MWFgY1113HWazmR49ejiu/9vf/sbSpUtZvnw5EyZMqPP7PfLII46f4+PjefbZZ3nwwQcd4ebFF1+kb9++jmOAyy67DIDi4mJeffVV5syZw9ixYwFo164dAwcOrFMNVVVVvP76606fa9CgQU7XvPXWWwQHB/P1119zyy238OWXX7Jp0yZSUlLo2LEjAG3btnVcf//993PFFVeQlZVFdHQ0ubm5rFy58qJauc6Hwo2IiDQeD197C4qr3rsORo8eze9//3tef/11vLy8WLhwIXfeeSdms5mSkhKefvppVqxYQVZWFtXV1Rw/fpyMjIwLKu3LL79kxowZpKamUlRURHV1NeXl5ZSVleHr60tycjK/+c1var03JSWFiooKRwi7UJ6eniQkJDidy8nJYerUqaxbt47c3FwsFgtlZWWOz5mcnEzLli0dweZM/fv357LLLuPdd99l8uTJfPDBB7Ru3Zqrr776omr9JRpzIyIijcdksncNueJhMtWp1OHDh2Oz2VixYgUHDx7k22+/ZfTo0QA89thjLF26lOeff55vv/2W5ORkunfvTmVlZZ2/kvT0dG655RYSEhL45JNP2LJlC3PnzgVwvJ6Pj89Z7z/Xc2Dv8gKcdgOvqqqq9XVMZ3xHY8eOJTk5mVdffZUNGzaQnJxMaGjoedV10v3338+CBQsAe5fUuHHjarxPfVO4ERERqYW3tze33347Cxcu5MMPP6RTp0707t0bsA/uveeee7jtttvo3r07UVFRjsG5dbVlyxasViuzZs3i8ssvp2PHjhw+7Ny6lZCQwNq1a2u9v0OHDvj4+Jz1+fDwcACysrIc55KTk8+rtvXr1/PQQw8xbNgwLrvsMry8vMjPz3eqKzMzk59//vmsr/G73/2OAwcO8Nprr7Fr1y5H11lDUrgRERE5i9GjR7NixQreeecdR6sN2APFv//9b5KTk9m2bRt33XXXBU+dbt++PVVVVfzjH/9g3759vP/++7z55ptO10yZMoXNmzfzpz/9ie3bt5Oamsobb7xBfn4+3t7eTJo0iccff5z33nuPvXv38t133zFv3jzH68fFxfH000+ze/duVqxYwaxZs86rtg4dOvD++++TkpLC999/z+jRo51aa6655hquvvpq7rjjDtasWcP+/ftZtWoVq1evdlwTEhLC7bffzl/+8hduvPFGWrZseUHfU10o3IiIiJzF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FTt37iQgIKDR61G4EZGzGj9+PDt37nRp37mRderUieTkZAoLC/n4448ZO3YsX3/9tQJOPTp48CAPP/wwa9aswdvb29XlGNbQoUMdPyckJJCYmEjr1q3517/+5ZJuVoWbixQWFoabmxs5OTlO53NycoiKinJRVSIXb8KECXz22Wd88803tGzZ0tXlGJKnpyft27cHoE+fPmzevJlXX32Vf/7zny6uzDi2bNlCbm4uvXv3dpyzWCx88803zJkzh4qKCtzc3FxYoTEFBwfTsWNH9uzZ45L315ibi+Tp6UmfPn1Yu3at45zVamXt2rXqO5dmyWazMWHCBJYuXcpXX31FmzZtXF3SJcNqtVJRUeHqMgzl+uuvZ8eOHSQnJzseffv2ZfTo0SQnJyvYNJCSkhL27t1LdHS0S95fLTf1ICkpibFjx9K3b1/69+/P7NmzKS0tZdy4ca4uzVBKSkqc/l/A/v37SU5OpkWLFrRq1cqFlRnL+PHjWbRoEZ9++ikBAQFkZ2cDEBQUhI+Pj4urM44pU6YwdOhQWrVqRXFxMYsWLWLdunV8/vnnri7NUAICAmqMF/Pz8yM0NFTjyOrRY489xvDhw2ndujWHDx9m+vTpuLm5MWrUKJfUo3BTD0aOHEleXh7Tpk0jOzubnj17snr16hqDjOXi/PDDD1x33XWO46SkJADGjh3LggULXFSV8bzxxhsAXHvttU7n58+fzz333NP4BRlUbm4uY8aMISsri6CgIBISEvj888+54YYbXF2aSJ1lZmYyatQojhw5Qnh4OAMHDuS7774jPDzcJfVonRsRERExFI25EREREUNRuBERERFDUbgRERERQ1G4EREREUNRuBERERFDUbgRERERQ1G4EREREUNRuBGRS57JZGLZsmWuLkNE6onCjYi41D333IPJZKrxuOmmm1xdmog0U9p+QURc7qabbmL+/PlO57y8vFxUjYg0d2q5ERGX8/LyIioqyukREhIC2LuM3njjDYYOHYqPjw9t27bl448/drp/x44dDBo0CB8fH0JDQ3nggQcoKSlxuuadd97hsssuw8vLi+joaCZMmOD0fH5+Prfddhu+vr506NCB5cuXN+yHFpEGo3AjIk3eU089xR133MG2bdsYPXo0d955JykpKQCUlpYyZMgQQkJC2Lx5Mx999BFffvmlU3h54403GD9+PA888AA7duxg+fLltG/f3uk9nnnmGX7729+yfft2hg0bxujRozl69Gijfk4RqSc2EREXGjt2rM3Nzc3m5+fn9HjuuedsNpvNBtgefPBBp3sSExNtf/zjH202m8321ltv2UJCQmwlJSWO51esWGEzm8227Oxsm81ms8XExNiefPLJs9YA2KZOneo4LikpsQG2VatW1dvnFJHGozE3IuJy1113HW+88YbTuRYtWjh+HjBggNNzAwYMIDk5GYCUlBR69OiBn5+f4/krr7wSq9VKWloaJpOJw4cPc/3115+zhoSEBMfPfn5+BAYGkpube6EfSURcSOFGRFzOz8+vRjdRffHx8Tmv6zw8PJyOTSYTVqu1IUoSkQamMTci0uR99913NY67dOkCQJcuXdi2bRulpaWO59evX4/ZbKZTp04EBAQQHx/P2rVrG7VmEXEdtdyIiMtVVFSQnZ3tdM7d3Z2wsDAAPvroI/r27cvAgQNZuHAhmzZtYt68eQCMHj2a6dOnM3bsWJ5++mny8vKYOHEid999N5GRkQA8/fTTPPjgg0RERDB06FCKi4tZv349EydObNwPKiKNQuFGRFxu9erVREdHO53r1KkTqampgH0m0+LFi/nTn/5EdHQ0H374IV27dgXA19eXzz//nIcffph+/frh6+vLHXfcwcsvv+x4rbFjx1JeXs4rr7zCY489RlhYGL/+9a8b7wOKSKMy2Ww2m6uLEBE5G5PJxNKlSxkxYoSrSxGRZkJjbkRERMRQFG5ERETEUDTmRkSaNPWci0hdqeVGREREDEXhRkRERAxF4UZEREQMReFGREREDEXhRkRERAxF4UZEREQMReFGREREDEXhRkRERAxF4UZEREQM5f8BkAPSPxbM718AAAAASUVORK5CYII=",
|
|
"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.0, 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": 33,
|
|
"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_7\"</span>\n",
|
|
"</pre>\n"
|
|
],
|
|
"text/plain": [
|
|
"\u001b[1mModel: \"sequential_7\"\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_7 (<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\">3072</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
|
|
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
|
"│ dense_18 (<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\">196,672</span> │\n",
|
|
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
|
"│ dense_19 (<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_20 (<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_21 (<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_7 (\u001b[38;5;33mFlatten\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m3072\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n",
|
|
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
|
"│ dense_18 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m196,672\u001b[0m │\n",
|
|
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
|
"│ dense_19 (\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_20 (\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_21 (\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\">247,498</span> (966.79 KB)\n",
|
|
"</pre>\n"
|
|
],
|
|
"text/plain": [
|
|
"\u001b[1m Total params: \u001b[0m\u001b[38;5;34m247,498\u001b[0m (966.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\">247,498</span> (966.79 KB)\n",
|
|
"</pre>\n"
|
|
],
|
|
"text/plain": [
|
|
"\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m247,498\u001b[0m (966.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=(32, 32, 3)))\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": 34,
|
|
"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[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 44ms/step - accuracy: 0.1018 - loss: 60.7497 - val_accuracy: 0.1001 - val_loss: 2.3026\n",
|
|
"Epoch 2/19\n",
|
|
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 33ms/step - accuracy: 0.1006 - loss: 2.3038 - val_accuracy: 0.0999 - val_loss: 2.3026\n",
|
|
"Epoch 3/19\n",
|
|
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 34ms/step - accuracy: 0.0996 - loss: 2.3028 - val_accuracy: 0.0999 - val_loss: 2.3025\n",
|
|
"Epoch 4/19\n",
|
|
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 37ms/step - accuracy: 0.0986 - loss: 2.3027 - val_accuracy: 0.0999 - val_loss: 2.3025\n",
|
|
"Epoch 5/19\n",
|
|
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 35ms/step - accuracy: 0.1003 - loss: 2.3026 - val_accuracy: 0.0999 - val_loss: 2.3026\n",
|
|
"Epoch 6/19\n",
|
|
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 34ms/step - accuracy: 0.0980 - loss: 2.3025 - val_accuracy: 0.1000 - val_loss: 2.3026\n",
|
|
"Epoch 7/19\n",
|
|
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 33ms/step - accuracy: 0.1002 - loss: 2.3025 - val_accuracy: 0.1000 - val_loss: 2.3026\n",
|
|
"Epoch 8/19\n",
|
|
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 34ms/step - accuracy: 0.0988 - loss: 2.3025 - val_accuracy: 0.0999 - val_loss: 2.3026\n",
|
|
"Epoch 9/19\n",
|
|
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 34ms/step - accuracy: 0.1013 - loss: 2.3026 - val_accuracy: 0.0999 - val_loss: 2.3026\n",
|
|
"Epoch 10/19\n",
|
|
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 36ms/step - accuracy: 0.1004 - loss: 2.3024 - val_accuracy: 0.1000 - val_loss: 2.3026\n",
|
|
"Epoch 11/19\n",
|
|
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 32ms/step - accuracy: 0.0994 - loss: 2.3025 - val_accuracy: 0.1000 - val_loss: 2.3026\n",
|
|
"Epoch 12/19\n",
|
|
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 32ms/step - accuracy: 0.1022 - loss: 2.3025 - val_accuracy: 0.1000 - val_loss: 2.3026\n",
|
|
"Epoch 13/19\n",
|
|
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 34ms/step - accuracy: 0.0982 - loss: 2.3025 - val_accuracy: 0.0999 - val_loss: 2.3026\n",
|
|
"Epoch 14/19\n",
|
|
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 33ms/step - accuracy: 0.1010 - loss: 2.3024 - val_accuracy: 0.0999 - val_loss: 2.3026\n",
|
|
"Epoch 15/19\n",
|
|
"\u001b[1m24/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━\u001b[0m \u001b[1m0s\u001b[0m 28ms/step - accuracy: 0.1013 - loss: 2.3025"
|
|
]
|
|
},
|
|
{
|
|
"ename": "KeyboardInterrupt",
|
|
"evalue": "",
|
|
"output_type": "error",
|
|
"traceback": [
|
|
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
|
"\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
|
|
"Cell \u001b[0;32mIn[34], line 5\u001b[0m\n\u001b[1;32m 1\u001b[0m fc_model\u001b[38;5;241m.\u001b[39mcompile(optimizer\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124madam\u001b[39m\u001b[38;5;124m'\u001b[39m,\n\u001b[1;32m 2\u001b[0m loss\u001b[38;5;241m=\u001b[39mtf\u001b[38;5;241m.\u001b[39mkeras\u001b[38;5;241m.\u001b[39mlosses\u001b[38;5;241m.\u001b[39mSparseCategoricalCrossentropy(from_logits\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m),\n\u001b[1;32m 3\u001b[0m metrics\u001b[38;5;241m=\u001b[39m[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124maccuracy\u001b[39m\u001b[38;5;124m'\u001b[39m])\n\u001b[0;32m----> 5\u001b[0m history \u001b[38;5;241m=\u001b[39m \u001b[43mfc_model\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfit\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtrain_images\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtrain_labels\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mepochs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m19\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbatch_size\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m2\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m11\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 6\u001b[0m \u001b[43m \u001b[49m\u001b[43mvalidation_data\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mtest_images\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtest_labels\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n",
|
|
"File \u001b[0;32m~/Dokumente/code/py/ki-dhbw/.venv/lib/python3.12/site-packages/keras/src/utils/traceback_utils.py:117\u001b[0m, in \u001b[0;36mfilter_traceback.<locals>.error_handler\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 115\u001b[0m filtered_tb \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 116\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 117\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 118\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 119\u001b[0m filtered_tb \u001b[38;5;241m=\u001b[39m _process_traceback_frames(e\u001b[38;5;241m.\u001b[39m__traceback__)\n",
|
|
"File \u001b[0;32m~/Dokumente/code/py/ki-dhbw/.venv/lib/python3.12/site-packages/keras/src/backend/tensorflow/trainer.py:395\u001b[0m, in \u001b[0;36mTensorFlowTrainer.fit\u001b[0;34m(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_batch_size, validation_freq)\u001b[0m\n\u001b[1;32m 384\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mgetattr\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m_eval_epoch_iterator\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m) \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 385\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_eval_epoch_iterator \u001b[38;5;241m=\u001b[39m TFEpochIterator(\n\u001b[1;32m 386\u001b[0m x\u001b[38;5;241m=\u001b[39mval_x,\n\u001b[1;32m 387\u001b[0m y\u001b[38;5;241m=\u001b[39mval_y,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 393\u001b[0m shuffle\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m,\n\u001b[1;32m 394\u001b[0m )\n\u001b[0;32m--> 395\u001b[0m val_logs \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mevaluate\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 396\u001b[0m \u001b[43m \u001b[49m\u001b[43mx\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mval_x\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 397\u001b[0m \u001b[43m \u001b[49m\u001b[43my\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mval_y\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 398\u001b[0m \u001b[43m \u001b[49m\u001b[43msample_weight\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mval_sample_weight\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 399\u001b[0m \u001b[43m \u001b[49m\u001b[43mbatch_size\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mvalidation_batch_size\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mbatch_size\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 400\u001b[0m \u001b[43m \u001b[49m\u001b[43msteps\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mvalidation_steps\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 401\u001b[0m \u001b[43m \u001b[49m\u001b[43mcallbacks\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcallbacks\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 402\u001b[0m \u001b[43m \u001b[49m\u001b[43mreturn_dict\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 403\u001b[0m \u001b[43m \u001b[49m\u001b[43m_use_cached_eval_dataset\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 404\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 405\u001b[0m val_logs \u001b[38;5;241m=\u001b[39m {\n\u001b[1;32m 406\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mval_\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m+\u001b[39m name: val \u001b[38;5;28;01mfor\u001b[39;00m name, val \u001b[38;5;129;01min\u001b[39;00m val_logs\u001b[38;5;241m.\u001b[39mitems()\n\u001b[1;32m 407\u001b[0m }\n\u001b[1;32m 408\u001b[0m epoch_logs\u001b[38;5;241m.\u001b[39mupdate(val_logs)\n",
|
|
"File \u001b[0;32m~/Dokumente/code/py/ki-dhbw/.venv/lib/python3.12/site-packages/keras/src/utils/traceback_utils.py:117\u001b[0m, in \u001b[0;36mfilter_traceback.<locals>.error_handler\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 115\u001b[0m filtered_tb \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 116\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 117\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 118\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 119\u001b[0m filtered_tb \u001b[38;5;241m=\u001b[39m _process_traceback_frames(e\u001b[38;5;241m.\u001b[39m__traceback__)\n",
|
|
"File \u001b[0;32m~/Dokumente/code/py/ki-dhbw/.venv/lib/python3.12/site-packages/keras/src/backend/tensorflow/trainer.py:482\u001b[0m, in \u001b[0;36mTensorFlowTrainer.evaluate\u001b[0;34m(self, x, y, batch_size, verbose, sample_weight, steps, callbacks, return_dict, **kwargs)\u001b[0m\n\u001b[1;32m 480\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mreset_metrics()\n\u001b[1;32m 481\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m epoch_iterator\u001b[38;5;241m.\u001b[39mcatch_stop_iteration():\n\u001b[0;32m--> 482\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mstep\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43miterator\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mepoch_iterator\u001b[49m\u001b[43m:\u001b[49m\n\u001b[1;32m 483\u001b[0m \u001b[43m \u001b[49m\u001b[43mcallbacks\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mon_test_batch_begin\u001b[49m\u001b[43m(\u001b[49m\u001b[43mstep\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 484\u001b[0m \u001b[43m \u001b[49m\u001b[43mlogs\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtest_function\u001b[49m\u001b[43m(\u001b[49m\u001b[43miterator\u001b[49m\u001b[43m)\u001b[49m\n",
|
|
"File \u001b[0;32m~/Dokumente/code/py/ki-dhbw/.venv/lib/python3.12/site-packages/keras/src/backend/tensorflow/trainer.py:736\u001b[0m, in \u001b[0;36mTFEpochIterator.__next__\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 735\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21m__next__\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[0;32m--> 736\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mnext\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_epoch_iterator\u001b[49m\u001b[43m)\u001b[49m\n",
|
|
"File \u001b[0;32m~/Dokumente/code/py/ki-dhbw/.venv/lib/python3.12/site-packages/keras/src/trainers/epoch_iterator.py:112\u001b[0m, in \u001b[0;36mEpochIterator._enumerate_iterator\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 110\u001b[0m \u001b[38;5;28;01myield\u001b[39;00m step, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_current_iterator\n\u001b[1;32m 111\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_num_batches \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_steps_seen \u001b[38;5;241m>\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_num_batches:\n\u001b[0;32m--> 112\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_current_iterator \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43miter\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_get_iterator\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 113\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_steps_seen \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m\n\u001b[1;32m 114\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n",
|
|
"File \u001b[0;32m~/Dokumente/code/py/ki-dhbw/.venv/lib/python3.12/site-packages/tensorflow/python/data/ops/dataset_ops.py:501\u001b[0m, in \u001b[0;36mDatasetV2.__iter__\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 499\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m context\u001b[38;5;241m.\u001b[39mexecuting_eagerly() \u001b[38;5;129;01mor\u001b[39;00m ops\u001b[38;5;241m.\u001b[39minside_function():\n\u001b[1;32m 500\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m ops\u001b[38;5;241m.\u001b[39mcolocate_with(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_variant_tensor):\n\u001b[0;32m--> 501\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43miterator_ops\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mOwnedIterator\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 502\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 503\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m`tf.data.Dataset` only supports Python-style \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 504\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124miteration in eager mode or within tf.function.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n",
|
|
"File \u001b[0;32m~/Dokumente/code/py/ki-dhbw/.venv/lib/python3.12/site-packages/tensorflow/python/data/ops/iterator_ops.py:709\u001b[0m, in \u001b[0;36mOwnedIterator.__init__\u001b[0;34m(self, dataset, components, element_spec)\u001b[0m\n\u001b[1;32m 705\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m (components \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mor\u001b[39;00m element_spec \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m):\n\u001b[1;32m 706\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[1;32m 707\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mWhen `dataset` is provided, `element_spec` and `components` must \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 708\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mnot be specified.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m--> 709\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_create_iterator\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdataset\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 711\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_next_call_count \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m\n",
|
|
"File \u001b[0;32m~/Dokumente/code/py/ki-dhbw/.venv/lib/python3.12/site-packages/tensorflow/python/data/ops/iterator_ops.py:748\u001b[0m, in \u001b[0;36mOwnedIterator._create_iterator\u001b[0;34m(self, dataset)\u001b[0m\n\u001b[1;32m 745\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(fulltype\u001b[38;5;241m.\u001b[39margs[\u001b[38;5;241m0\u001b[39m]\u001b[38;5;241m.\u001b[39margs[\u001b[38;5;241m0\u001b[39m]\u001b[38;5;241m.\u001b[39margs) \u001b[38;5;241m==\u001b[39m \u001b[38;5;28mlen\u001b[39m(\n\u001b[1;32m 746\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_flat_output_types)\n\u001b[1;32m 747\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_iterator_resource\u001b[38;5;241m.\u001b[39mop\u001b[38;5;241m.\u001b[39mexperimental_set_type(fulltype)\n\u001b[0;32m--> 748\u001b[0m \u001b[43mgen_dataset_ops\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmake_iterator\u001b[49m\u001b[43m(\u001b[49m\u001b[43mds_variant\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_iterator_resource\u001b[49m\u001b[43m)\u001b[49m\n",
|
|
"File \u001b[0;32m~/Dokumente/code/py/ki-dhbw/.venv/lib/python3.12/site-packages/tensorflow/python/ops/gen_dataset_ops.py:3478\u001b[0m, in \u001b[0;36mmake_iterator\u001b[0;34m(dataset, iterator, name)\u001b[0m\n\u001b[1;32m 3476\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m tld\u001b[38;5;241m.\u001b[39mis_eager:\n\u001b[1;32m 3477\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m-> 3478\u001b[0m _result \u001b[38;5;241m=\u001b[39m \u001b[43mpywrap_tfe\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mTFE_Py_FastPathExecute\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 3479\u001b[0m \u001b[43m \u001b[49m\u001b[43m_ctx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mMakeIterator\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mname\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdataset\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43miterator\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 3480\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m _result\n\u001b[1;32m 3481\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m _core\u001b[38;5;241m.\u001b[39m_NotOkStatusException \u001b[38;5;28;01mas\u001b[39;00m e:\n",
|
|
"\u001b[0;31mKeyboardInterrupt\u001b[0m: "
|
|
]
|
|
}
|
|
],
|
|
"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": 35,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"<matplotlib.legend.Legend at 0x7f60d8572e40>"
|
|
]
|
|
},
|
|
"execution_count": 35,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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AgAAMCAgAQAAGBCQAAAADAhIAAAABgQkAAAAAwISAACAAQEJAIAGqlOnTkpOTrZ3Gb9JBCQAAAADAhIAAKh1FRUVMpvN9i7jlhGQAACNj8UilRXbZ6vmE6TfeOMN+fn5VQoJjz76qCZOnKhTp07p0Ucflbe3t1q1aqW+fftq165dt/yRLF26VL169VLLli3l7++vP/7xj7py5YpNny+//FKDBg1SixYt1LZtW0VGRupvf/ubJMlsNmvJkiW688475ezsrI4dO+rFF1+UJO3evVsmk0mXLl2yHiszM1Mmk0nff/+9JGn9+vVq06aNPvzwQ919991ydnZWTk6ODh06pIcfflienp5yd3fXgw8+qMOHD9vUdenSJT311FPy9vaWi4uLevbsqY8//ljFxcVyc3PTe++9Z9N/27ZtatmypS5fvnzLn9ev4adGAACNT/lVabGffcZ+7rzk1PJXuz3xxBOaMWOGPv/8cw0ZMkSS9PPPPystLU07duzQlStXNGzYML344otydnbWW2+9paioKGVnZ6tjx441LsvBwUH/+Z//qc6dO+v06dP64x//qNmzZ2vVqlWSrgeaIUOGaOLEiVq+fLmaNWumzz//XBUVFZKk+Ph4vfnmm1q2bJkGDBig3NxcZWVl1aiGq1ev6uWXX9Z//dd/ycPDQ+3bt9fp06cVExOjV199VRaLRa+88oqGDRumEydOqHXr1jKbzRo6dKguX76sjRs3KjAwUMeOHZOjo6NatmypJ598UuvWrdPjjz9uHeeX161bt67x51RdBCQAAOpA27ZtNXToUKWkpFgD0nvvvSdPT0899NBDcnBwUHBwsLX/Cy+8oK1bt+rDDz/U9OnTazzezJkzrX936tRJf/7znzVt2jRrQFqyZIn69OljfS1J99xzjyTp8uXLWr58uVasWKGYmBhJUmBgoAYMGFCjGsrLy7Vq1SqbeQ0ePNimzxtvvKE2bdpoz549+v3vf69du3bp4MGDOn78uO666y5JUpcuXaz9J0+erPvuu0+5ubny9fXVhQsXtGPHjts621YdBCQAQOPTvMX1Mzn2GruaxowZoylTpmjVqlVydnbWpk2b9OSTT8rBwUFXrlzRwoULtX37duXm5uratWv6+9//rpycnFsqa9euXUpKSlJWVpaKiop07do1lZSU6OrVq2rRooUyMzP1xBNPVLnv8ePHVVpaag1yt8rJyUlBQUE2bfn5+UpISNDu3bt14cIFVVRU6OrVq9Z5ZmZm6o477rCGI6N+/frpnnvu0X//939r7ty52rhxowICAjRw4MDbqvXXsAYJAND4mEzXL3PZYzOZql1mVFSULBaLtm/frrNnz+p///d/NWbMGEnSs88+q61bt2rx4sX63//9X2VmZqpXr14qKyur8cfx/fff6/e//72CgoL0/vvvKyMjQytXrpQk6/FcXV1vuP/N3pOuX76TJMs/rb8qLy+v8jgmw+cTExOjzMxMLV++XF999ZUyMzPl4eFRrbp+MXnyZK1fv17S9ctrEyZMqDRObSMgAQBQR1xcXDRixAht2rRJb7/9trp166Z7771X0vUF0+PHj9fw4cPVq1cv+fj4WBc811RGRobMZrNeeeUV9e/fX3fddZfOn7c9wxYUFKT09PQq9+/atatcXV1v+L6Xl5ckKTc319qWmZlZrdq+/PJLPf300xo2bJjuueceOTs7q6CgwKauH3/8UX/9619veIx/+7d/0w8//KD//M//1LFjx6yXAesSAQkAgDo0ZswYbd++XWvXrrWePZKuh5ItW7YoMzNT3377rUaPHn3Lt8XfeeedKi8v16uvvqrTp09rw4YNeu2112z6xMfH69ChQ/rjH/+oI0eOKCsrS6tXr1ZBQYFcXFw0Z84czZ49W2+99ZZOnTql/fv3a82aNdbj+/v7a+HChTpx4oS2b9+uV155pVq1de3aVRs2bNDx48d14MABjRkzxuas0YMPPqiBAwcqOjpaO3fu1JkzZ/TJJ58oLS3N2qdt27YaMWKE/t//+3965JFHdMcdd9zS51QTBCQAAOrQ4MGD1a5dO2VnZ2v06NHW9qVLl6pt27a67777FBUVpcjISOvZpZoKDg7W0qVL9fLLL6tnz57atGmTkpKSbPrcdddd+p//+R99++236tevn8LDw/XBBx+oWbPry5Hnz5+vP/3pT1qwYIF69OihkSNH6sKFC5Kk5s2b6+2331ZWVpaCgoL08ssv689//nO1aluzZo3+9re/6d5779XYsWP19NNPq3379jZ93n//ffXt21ejRo3S3XffrdmzZ1vvrvvFpEmTVFZWpokTJ97SZ1RTJoulmg90gI2ioiK5u7ursLBQbm5u9i4HAJqskpISnTlzRp07d5aLi4u9y4GdbNiwQbNmzdL5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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.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
|
|
}
|