{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Zadanie 8 - Alexnet + Dropout & BatchRegularization\n", "### Aleksandra Jonas, Aleksandra Gronowska, Iwona Christop" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Przygotowanie danych" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from IPython.display import Image, display" ] }, { "cell_type": "code", "execution_count": 2, "id": "2fe63b50", "metadata": {}, "outputs": [], "source": [ "import sys\n", "import subprocess\n", "import pkg_resources\n", "import numpy as np\n", "\n", "required = { 'scikit-image'}\n", "installed = {pkg.key for pkg in pkg_resources.working_set}\n", "missing = required - installed\n", "# Alexnet requires images to be of dim = (227, 227, 3)\n", "newSize = (227,227)\n", "\n", "if missing: \n", " python = sys.executable\n", " subprocess.check_call([python, '-m', 'pip', 'install', *missing], stdout=subprocess.DEVNULL)\n", "\n", "def load_train_data(input_dir):\n", " import numpy as np\n", " import pandas as pd\n", " import os\n", " from skimage.io import imread\n", " import cv2 as cv\n", " from pathlib import Path\n", " import random\n", " from shutil import copyfile, rmtree\n", " import json\n", "\n", " import seaborn as sns\n", " import matplotlib.pyplot as plt\n", "\n", " import matplotlib\n", " \n", " image_dir = Path(input_dir)\n", " categories_name = []\n", " for file in os.listdir(image_dir):\n", " d = os.path.join(image_dir, file)\n", " if os.path.isdir(d):\n", " categories_name.append(file)\n", "\n", " folders = [directory for directory in image_dir.iterdir() if directory.is_dir()]\n", "\n", " train_img = []\n", " categories_count=[]\n", " labels=[]\n", " for i, direc in enumerate(folders):\n", " count = 0\n", " for obj in direc.iterdir():\n", " if os.path.isfile(obj) and os.path.basename(os.path.normpath(obj)) != 'desktop.ini':\n", " labels.append(os.path.basename(os.path.normpath(direc)))\n", " count += 1\n", " img = imread(obj)#zwraca ndarry postaci xSize x ySize x colorDepth\n", " img = img[:, :, :3]\n", " img = cv.resize(img, newSize, interpolation=cv.INTER_AREA)# zwraca ndarray\n", " img = img / 255 #normalizacja\n", " train_img.append(img)\n", " categories_count.append(count)\n", " X={}\n", " X[\"values\"] = np.array(train_img)\n", " X[\"categories_name\"] = categories_name\n", " X[\"categories_count\"] = categories_count\n", " X[\"labels\"]=labels\n", " return X\n", "\n", "def load_test_data(input_dir):\n", " import numpy as np\n", " import pandas as pd\n", " import os\n", " from skimage.io import imread\n", " import cv2 as cv\n", " from pathlib import Path\n", " import random\n", " from shutil import copyfile, rmtree\n", " import json\n", "\n", " import seaborn as sns\n", " import matplotlib.pyplot as plt\n", "\n", " import matplotlib\n", "\n", " image_path = Path(input_dir)\n", "\n", " labels_path = image_path.parents[0] / 'test_labels.json'\n", "\n", " jsonString = labels_path.read_text()\n", " objects = json.loads(jsonString)\n", "\n", " categories_name = []\n", " categories_count=[]\n", " count = 0\n", " c = objects[0]['value']\n", " for e in objects:\n", " if e['value'] != c:\n", " categories_count.append(count)\n", " c = e['value']\n", " count = 1\n", " else:\n", " count += 1\n", " if not e['value'] in categories_name:\n", " categories_name.append(e['value'])\n", "\n", " categories_count.append(count)\n", " \n", " test_img = []\n", "\n", " labels=[]\n", " for e in objects:\n", " p = image_path / e['filename']\n", " img = imread(p)#zwraca ndarry postaci xSize x ySize x colorDepth\n", " img = img[:, :, :3]\n", " img = cv.resize(img, newSize, interpolation=cv.INTER_AREA)# zwraca ndarray\n", " img = img / 255#normalizacja\n", " test_img.append(img)\n", " labels.append(e['value'])\n", "\n", " X={}\n", " X[\"values\"] = np.array(test_img)\n", " X[\"categories_name\"] = categories_name\n", " X[\"categories_count\"] = categories_count\n", " X[\"labels\"]=labels\n", " return X" ] }, { "cell_type": "code", "execution_count": 3, "id": "cc941c5a", "metadata": {}, "outputs": [], "source": [ "# Data load\n", "data_train = load_train_data(\"./train_test_sw/train_sw\")\n", "values_train = data_train['values']\n", "labels_train = data_train['labels']\n", "\n", "data_test = load_test_data(\"./train_test_sw/test_sw\")\n", "X_test = data_test['values']\n", "y_test = data_test['labels']" ] }, { "cell_type": "code", "execution_count": 4, "id": "25040ac9", "metadata": {}, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split" ] }, { "cell_type": "code", "execution_count": 5, "id": "18d44949", "metadata": {}, "outputs": [], "source": [ "X_train, X_validate, y_train, y_validate = train_test_split(values_train, labels_train, test_size=0.2, random_state=42)" ] }, { "cell_type": "code", "execution_count": 6, "id": "a1fe47e6", "metadata": {}, "outputs": [], "source": [ "from sklearn.preprocessing import LabelEncoder" ] }, { "cell_type": "code", "execution_count": 7, "id": "d90af799", "metadata": {}, "outputs": [], "source": [ "class_le = LabelEncoder()\n", "y_train_enc = class_le.fit_transform(y_train)\n", "y_validate_enc = class_le.fit_transform(y_validate)\n", "y_test_enc = class_le.fit_transform(y_test)" ] }, { "cell_type": "code", "execution_count": 8, "id": "c2323985", "metadata": {}, "outputs": [], "source": [ "import tensorflow as tf" ] }, { "cell_type": "code", "execution_count": 9, "id": "dfe674dc", "metadata": {}, "outputs": [], "source": [ "train_ds = tf.data.Dataset.from_tensor_slices((X_train, y_train_enc))\n", "validation_ds = tf.data.Dataset.from_tensor_slices((X_validate, y_validate_enc))\n", "test_ds = tf.data.Dataset.from_tensor_slices((X_test, y_test_enc))" ] }, { "cell_type": "code", "execution_count": 10, "id": "076c8ac9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Training data size: 820\n", "Test data size: 259\n", "Validation data size: 206\n" ] } ], "source": [ "train_ds_size = tf.data.experimental.cardinality(train_ds).numpy()\n", "test_ds_size = tf.data.experimental.cardinality(test_ds).numpy()\n", "validation_ds_size = tf.data.experimental.cardinality(validation_ds).numpy()\n", "print(\"Training data size:\", train_ds_size)\n", "print(\"Test data size:\", test_ds_size)\n", "print(\"Validation data size:\", validation_ds_size)" ] }, { "cell_type": "code", "execution_count": 11, "id": "07ebcd4a", "metadata": {}, "outputs": [], "source": [ "train_ds = (train_ds\n", " .shuffle(buffer_size=train_ds_size)\n", " .batch(batch_size=32, drop_remainder=True))\n", "test_ds = (test_ds\n", " .shuffle(buffer_size=train_ds_size)\n", " .batch(batch_size=32, drop_remainder=True))\n", "validation_ds = (validation_ds\n", " .shuffle(buffer_size=train_ds_size)\n", " .batch(batch_size=32, drop_remainder=True))" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "from tensorflow import keras\n", "import os\n", "import time" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "root_logdir = os.path.join(os.curdir, \"logs\\\\fit\\\\\")\n", "def get_run_logdir():\n", " run_id = time.strftime(\"run_%Y_%m_%d-%H_%M_%S\")\n", " return os.path.join(root_logdir, run_id)\n", "run_logdir = get_run_logdir()\n", "tensorboard_cb = keras.callbacks.TensorBoard(run_logdir)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Dropout" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Do warstw spłaszczonych" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "model_flat_drop = keras.models.Sequential([\n", " keras.layers.Conv2D(filters=96, kernel_size=(11,11), strides=(4,4), activation='relu', input_shape=(227,227,3)),\n", " keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),\n", " keras.layers.Conv2D(filters=256, kernel_size=(5,5), strides=(1,1), activation='relu', padding=\"same\"),\n", " keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),\n", " keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding=\"same\"),\n", " keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding=\"same\"),\n", " keras.layers.Conv2D(filters=256, kernel_size=(3,3), strides=(1,1), activation='relu', padding=\"same\"),\n", " keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),\n", " keras.layers.Flatten(),\n", " keras.layers.Dense(4096, activation='relu'),\n", " keras.layers.Dropout(.5),\n", " keras.layers.Dense(4096, activation='relu'),\n", " keras.layers.Dropout(.5),\n", " keras.layers.Dense(10, activation='softmax')\n", "])" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING:absl:`lr` is deprecated, please use `learning_rate` instead, or use the legacy optimizer, e.g.,tf.keras.optimizers.legacy.SGD.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Model: \"sequential\"\n", "_________________________________________________________________\n", " Layer (type) Output Shape Param # \n", "=================================================================\n", " conv2d (Conv2D) (None, 55, 55, 96) 34944 \n", " \n", " max_pooling2d (MaxPooling2D (None, 27, 27, 96) 0 \n", " ) \n", " \n", " conv2d_1 (Conv2D) (None, 27, 27, 256) 614656 \n", " \n", " max_pooling2d_1 (MaxPooling (None, 13, 13, 256) 0 \n", " 2D) \n", " \n", " conv2d_2 (Conv2D) (None, 13, 13, 384) 885120 \n", " \n", " conv2d_3 (Conv2D) (None, 13, 13, 384) 1327488 \n", " \n", " conv2d_4 (Conv2D) (None, 13, 13, 256) 884992 \n", " \n", " max_pooling2d_2 (MaxPooling (None, 6, 6, 256) 0 \n", " 2D) \n", " \n", " flatten (Flatten) (None, 9216) 0 \n", " \n", " dense (Dense) (None, 4096) 37752832 \n", " \n", " dropout (Dropout) (None, 4096) 0 \n", " \n", " dense_1 (Dense) (None, 4096) 16781312 \n", " \n", " dropout_1 (Dropout) (None, 4096) 0 \n", " \n", " dense_2 (Dense) (None, 10) 40970 \n", " \n", "=================================================================\n", "Total params: 58,322,314\n", "Trainable params: 58,322,314\n", "Non-trainable params: 0\n", "_________________________________________________________________\n" ] } ], "source": [ "model_flat_drop.compile(loss='sparse_categorical_crossentropy', optimizer=tf.optimizers.SGD(lr=.001), metrics=['accuracy'])\n", "model_flat_drop.summary()" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/100\n", "25/25 [==============================] - 39s 1s/step - loss: 2.2584 - accuracy: 0.2000 - val_loss: 2.1890 - val_accuracy: 0.3073\n", "Epoch 2/100\n", "25/25 [==============================] - 33s 1s/step - loss: 1.9739 - accuracy: 0.2275 - val_loss: 1.6961 - val_accuracy: 0.1875\n", "Epoch 3/100\n", "25/25 [==============================] - 33s 1s/step - loss: 1.6904 - accuracy: 0.2288 - val_loss: 1.6021 - val_accuracy: 0.2604\n", "Epoch 4/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.6571 - accuracy: 0.2138 - val_loss: 1.5939 - val_accuracy: 0.3333\n", "Epoch 5/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.6340 - accuracy: 0.2400 - val_loss: 1.5403 - val_accuracy: 0.3438\n", "Epoch 6/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.6254 - accuracy: 0.2650 - val_loss: 1.5925 - val_accuracy: 0.2917\n", "Epoch 7/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.6075 - accuracy: 0.2600 - val_loss: 1.5318 - val_accuracy: 0.3698\n", "Epoch 8/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.5569 - accuracy: 0.3338 - val_loss: 1.5195 - val_accuracy: 0.4167\n", "Epoch 9/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.5345 - accuracy: 0.3425 - val_loss: 1.5741 - val_accuracy: 0.2917\n", "Epoch 10/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.5055 - accuracy: 0.3500 - val_loss: 1.3982 - val_accuracy: 0.4115\n", "Epoch 11/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.4744 - accuracy: 0.3600 - val_loss: 1.5340 - val_accuracy: 0.3854\n", "Epoch 12/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.4548 - accuracy: 0.3913 - val_loss: 1.4387 - val_accuracy: 0.4115\n", "Epoch 13/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.4088 - accuracy: 0.4038 - val_loss: 1.4665 - val_accuracy: 0.4323\n", "Epoch 14/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.3404 - accuracy: 0.4437 - val_loss: 1.3196 - val_accuracy: 0.5052\n", "Epoch 15/100\n", "25/25 [==============================] - 37s 1s/step - loss: 1.3122 - accuracy: 0.4512 - val_loss: 1.2624 - val_accuracy: 0.5052\n", "Epoch 16/100\n", "25/25 [==============================] - 37s 1s/step - loss: 1.2144 - accuracy: 0.4925 - val_loss: 1.1976 - val_accuracy: 0.5521\n", "Epoch 17/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.1543 - accuracy: 0.5000 - val_loss: 1.1166 - val_accuracy: 0.5104\n", "Epoch 18/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.1334 - accuracy: 0.5100 - val_loss: 1.3203 - val_accuracy: 0.4635\n", "Epoch 19/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.1212 - accuracy: 0.5288 - val_loss: 1.1281 - val_accuracy: 0.5208\n", "Epoch 20/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.0779 - accuracy: 0.5250 - val_loss: 1.1841 - val_accuracy: 0.5365\n", "Epoch 21/100\n", "25/25 [==============================] - 35s 1s/step - loss: 1.0472 - accuracy: 0.5300 - val_loss: 1.0747 - val_accuracy: 0.5677\n", "Epoch 22/100\n", "25/25 [==============================] - 32s 1s/step - loss: 1.0487 - accuracy: 0.5337 - val_loss: 1.1981 - val_accuracy: 0.5312\n", "Epoch 23/100\n", "25/25 [==============================] - 35s 1s/step - loss: 1.0377 - accuracy: 0.5288 - val_loss: 1.1231 - val_accuracy: 0.5312\n", "Epoch 24/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.0117 - accuracy: 0.5600 - val_loss: 1.1580 - val_accuracy: 0.5208\n", "Epoch 25/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.9578 - accuracy: 0.5813 - val_loss: 1.1586 - val_accuracy: 0.5052\n", "Epoch 26/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.9469 - accuracy: 0.5913 - val_loss: 1.0026 - val_accuracy: 0.5625\n", "Epoch 27/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.9810 - accuracy: 0.5600 - val_loss: 0.9896 - val_accuracy: 0.5781\n", "Epoch 28/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.9239 - accuracy: 0.5825 - val_loss: 1.3049 - val_accuracy: 0.5312\n", "Epoch 29/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.9495 - accuracy: 0.5625 - val_loss: 0.9832 - val_accuracy: 0.5990\n", "Epoch 30/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.9322 - accuracy: 0.5725 - val_loss: 1.0204 - val_accuracy: 0.5677\n", "Epoch 31/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.9098 - accuracy: 0.5925 - val_loss: 1.0027 - val_accuracy: 0.5208\n", "Epoch 32/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.9288 - accuracy: 0.6050 - val_loss: 1.0639 - val_accuracy: 0.5625\n", "Epoch 33/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.8865 - accuracy: 0.6000 - val_loss: 0.9128 - val_accuracy: 0.6250\n", "Epoch 34/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.8653 - accuracy: 0.6137 - val_loss: 0.9095 - val_accuracy: 0.6146\n", "Epoch 35/100\n", "25/25 [==============================] - 39s 2s/step - loss: 0.8462 - accuracy: 0.6250 - val_loss: 1.0470 - val_accuracy: 0.5625\n", "Epoch 36/100\n", "25/25 [==============================] - 38s 2s/step - loss: 0.8485 - accuracy: 0.6012 - val_loss: 1.0561 - val_accuracy: 0.5312\n", "Epoch 37/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.8349 - accuracy: 0.6363 - val_loss: 0.9282 - val_accuracy: 0.6198\n", "Epoch 38/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.8450 - accuracy: 0.6137 - val_loss: 0.9833 - val_accuracy: 0.5885\n", "Epoch 39/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.8209 - accuracy: 0.6288 - val_loss: 1.0049 - val_accuracy: 0.5729\n", "Epoch 40/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.8213 - accuracy: 0.6237 - val_loss: 0.8432 - val_accuracy: 0.6406\n", "Epoch 41/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.7931 - accuracy: 0.6413 - val_loss: 1.0859 - val_accuracy: 0.5469\n", "Epoch 42/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.7652 - accuracy: 0.6612 - val_loss: 0.9302 - val_accuracy: 0.6094\n", "Epoch 43/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.7603 - accuracy: 0.6562 - val_loss: 0.8186 - val_accuracy: 0.6458\n", "Epoch 44/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.7221 - accuracy: 0.7125 - val_loss: 0.9047 - val_accuracy: 0.6458\n", "Epoch 45/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.7501 - accuracy: 0.6675 - val_loss: 0.8114 - val_accuracy: 0.6562\n", "Epoch 46/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.7169 - accuracy: 0.6925 - val_loss: 0.6990 - val_accuracy: 0.7031\n", "Epoch 47/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.6610 - accuracy: 0.7212 - val_loss: 0.7242 - val_accuracy: 0.6927\n", "Epoch 48/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.6846 - accuracy: 0.7075 - val_loss: 0.8100 - val_accuracy: 0.6510\n", "Epoch 49/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.6308 - accuracy: 0.7300 - val_loss: 0.7077 - val_accuracy: 0.6771\n", "Epoch 50/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.5996 - accuracy: 0.7425 - val_loss: 0.6889 - val_accuracy: 0.7031\n", "Epoch 51/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.6341 - accuracy: 0.7575 - val_loss: 0.6953 - val_accuracy: 0.7344\n", "Epoch 52/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.5816 - accuracy: 0.7525 - val_loss: 0.6998 - val_accuracy: 0.7031\n", "Epoch 53/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.5872 - accuracy: 0.7650 - val_loss: 0.7242 - val_accuracy: 0.7188\n", "Epoch 54/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.5597 - accuracy: 0.7812 - val_loss: 0.8982 - val_accuracy: 0.6719\n", "Epoch 55/100\n", "25/25 [==============================] - 38s 2s/step - loss: 0.5644 - accuracy: 0.7825 - val_loss: 0.6864 - val_accuracy: 0.7396\n", "Epoch 56/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.5228 - accuracy: 0.7763 - val_loss: 0.6602 - val_accuracy: 0.7031\n", "Epoch 57/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.4987 - accuracy: 0.7887 - val_loss: 0.6512 - val_accuracy: 0.7812\n", "Epoch 58/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.5320 - accuracy: 0.7862 - val_loss: 0.6612 - val_accuracy: 0.7604\n", "Epoch 59/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.5273 - accuracy: 0.7775 - val_loss: 0.6148 - val_accuracy: 0.7708\n", "Epoch 60/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.5277 - accuracy: 0.7875 - val_loss: 0.6853 - val_accuracy: 0.7448\n", "Epoch 61/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.4958 - accuracy: 0.7975 - val_loss: 0.7478 - val_accuracy: 0.7188\n", "Epoch 62/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.4867 - accuracy: 0.7900 - val_loss: 0.5890 - val_accuracy: 0.7188\n", "Epoch 63/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.4677 - accuracy: 0.8050 - val_loss: 0.7454 - val_accuracy: 0.6927\n", "Epoch 64/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.4793 - accuracy: 0.8225 - val_loss: 0.6097 - val_accuracy: 0.7656\n", "Epoch 65/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.4755 - accuracy: 0.8188 - val_loss: 0.6033 - val_accuracy: 0.7604\n", "Epoch 66/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.4239 - accuracy: 0.8263 - val_loss: 0.6168 - val_accuracy: 0.7865\n", "Epoch 67/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.4531 - accuracy: 0.8200 - val_loss: 0.5624 - val_accuracy: 0.7812\n", "Epoch 68/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.4397 - accuracy: 0.8388 - val_loss: 0.5696 - val_accuracy: 0.8229\n", "Epoch 69/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.4543 - accuracy: 0.8087 - val_loss: 0.6307 - val_accuracy: 0.7865\n", "Epoch 70/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.3984 - accuracy: 0.8438 - val_loss: 0.6143 - val_accuracy: 0.8125\n", "Epoch 71/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.3903 - accuracy: 0.8525 - val_loss: 0.6269 - val_accuracy: 0.7656\n", "Epoch 72/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.3671 - accuracy: 0.8525 - val_loss: 0.5292 - val_accuracy: 0.7917\n", "Epoch 73/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.4349 - accuracy: 0.8175 - val_loss: 0.6612 - val_accuracy: 0.7552\n", "Epoch 74/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.3605 - accuracy: 0.8712 - val_loss: 0.8456 - val_accuracy: 0.6615\n", "Epoch 75/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.4310 - accuracy: 0.8300 - val_loss: 0.6901 - val_accuracy: 0.7344\n", "Epoch 76/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.4062 - accuracy: 0.8263 - val_loss: 0.5469 - val_accuracy: 0.8021\n", "Epoch 77/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.3645 - accuracy: 0.8612 - val_loss: 0.5918 - val_accuracy: 0.7656\n", "Epoch 78/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.3444 - accuracy: 0.8600 - val_loss: 0.5622 - val_accuracy: 0.7969\n", "Epoch 79/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.3611 - accuracy: 0.8562 - val_loss: 0.6412 - val_accuracy: 0.7760\n", "Epoch 80/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.3853 - accuracy: 0.8475 - val_loss: 0.6283 - val_accuracy: 0.7969\n", "Epoch 81/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.3076 - accuracy: 0.8763 - val_loss: 0.6677 - val_accuracy: 0.7500\n", "Epoch 82/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.3204 - accuracy: 0.8813 - val_loss: 0.6045 - val_accuracy: 0.7865\n", "Epoch 83/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.3183 - accuracy: 0.8763 - val_loss: 0.6581 - val_accuracy: 0.8281\n", "Epoch 84/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.2913 - accuracy: 0.8863 - val_loss: 0.6067 - val_accuracy: 0.8073\n", "Epoch 85/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.3194 - accuracy: 0.8662 - val_loss: 0.6241 - val_accuracy: 0.8281\n", "Epoch 86/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.4045 - accuracy: 0.8487 - val_loss: 0.6254 - val_accuracy: 0.8073\n", "Epoch 87/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.2853 - accuracy: 0.8863 - val_loss: 0.6204 - val_accuracy: 0.7917\n", "Epoch 88/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.2844 - accuracy: 0.8737 - val_loss: 0.5187 - val_accuracy: 0.8177\n", "Epoch 89/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.2622 - accuracy: 0.8913 - val_loss: 0.7985 - val_accuracy: 0.7656\n", "Epoch 90/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.3699 - accuracy: 0.8550 - val_loss: 0.5994 - val_accuracy: 0.7917\n", "Epoch 91/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.3292 - accuracy: 0.8800 - val_loss: 0.5560 - val_accuracy: 0.8125\n", "Epoch 92/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.2759 - accuracy: 0.8913 - val_loss: 0.5550 - val_accuracy: 0.8229\n", "Epoch 93/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.3063 - accuracy: 0.8788 - val_loss: 0.6402 - val_accuracy: 0.8125\n", "Epoch 94/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.2841 - accuracy: 0.8863 - val_loss: 0.6440 - val_accuracy: 0.7760\n", "Epoch 95/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.2735 - accuracy: 0.8938 - val_loss: 0.6554 - val_accuracy: 0.8281\n", "Epoch 96/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.2625 - accuracy: 0.9025 - val_loss: 0.7760 - val_accuracy: 0.7240\n", "Epoch 97/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.2929 - accuracy: 0.8712 - val_loss: 0.5337 - val_accuracy: 0.8125\n", "Epoch 98/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.3274 - accuracy: 0.8838 - val_loss: 0.5662 - val_accuracy: 0.8021\n", "Epoch 99/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.2644 - accuracy: 0.8800 - val_loss: 0.5249 - val_accuracy: 0.8333\n", "Epoch 100/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.2609 - accuracy: 0.8950 - val_loss: 0.5722 - val_accuracy: 0.8281\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model_flat_drop.fit(train_ds,\n", " epochs=100,\n", " validation_data=validation_ds,\n", " validation_freq=1,\n", " callbacks=[tensorboard_cb])" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "8/8 [==============================] - 8s 256ms/step - loss: 0.5354 - accuracy: 0.8008\n" ] }, { "data": { "text/plain": [ "[0.535420835018158, 0.80078125]" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model_flat_drop.evaluate(test_ds)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Do warstw maxpooling" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "model_pool_drop = keras.models.Sequential([\n", " keras.layers.Conv2D(filters=96, kernel_size=(11,11), strides=(4,4), activation='relu', input_shape=(227,227,3)),\n", " keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),\n", " keras.layers.Dropout(.5),\n", " keras.layers.Conv2D(filters=256, kernel_size=(5,5), strides=(1,1), activation='relu', padding=\"same\"),\n", " keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),\n", " keras.layers.Dropout(.5),\n", " keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding=\"same\"),\n", " keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding=\"same\"),\n", " keras.layers.Conv2D(filters=256, kernel_size=(3,3), strides=(1,1), activation='relu', padding=\"same\"),\n", " keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),\n", " keras.layers.Dropout(.5),\n", " keras.layers.Flatten(),\n", " keras.layers.Dense(4096, activation='relu'),\n", " keras.layers.Dense(4096, activation='relu'),\n", " keras.layers.Dense(10, activation='softmax')\n", "])" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING:absl:`lr` is deprecated, please use `learning_rate` instead, or use the legacy optimizer, e.g.,tf.keras.optimizers.legacy.SGD.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Model: \"sequential_1\"\n", "_________________________________________________________________\n", " Layer (type) Output Shape Param # \n", "=================================================================\n", " conv2d_5 (Conv2D) (None, 55, 55, 96) 34944 \n", " \n", " max_pooling2d_3 (MaxPooling (None, 27, 27, 96) 0 \n", " 2D) \n", " \n", " dropout_2 (Dropout) (None, 27, 27, 96) 0 \n", " \n", " conv2d_6 (Conv2D) (None, 27, 27, 256) 614656 \n", " \n", " max_pooling2d_4 (MaxPooling (None, 13, 13, 256) 0 \n", " 2D) \n", " \n", " dropout_3 (Dropout) (None, 13, 13, 256) 0 \n", " \n", " conv2d_7 (Conv2D) (None, 13, 13, 384) 885120 \n", " \n", " conv2d_8 (Conv2D) (None, 13, 13, 384) 1327488 \n", " \n", " conv2d_9 (Conv2D) (None, 13, 13, 256) 884992 \n", " \n", " max_pooling2d_5 (MaxPooling (None, 6, 6, 256) 0 \n", " 2D) \n", " \n", " dropout_4 (Dropout) (None, 6, 6, 256) 0 \n", " \n", " flatten_1 (Flatten) (None, 9216) 0 \n", " \n", " dense_3 (Dense) (None, 4096) 37752832 \n", " \n", " dense_4 (Dense) (None, 4096) 16781312 \n", " \n", " dense_5 (Dense) (None, 10) 40970 \n", " \n", "=================================================================\n", "Total params: 58,322,314\n", "Trainable params: 58,322,314\n", "Non-trainable params: 0\n", "_________________________________________________________________\n" ] } ], "source": [ "model_pool_drop.compile(loss='sparse_categorical_crossentropy', optimizer=tf.optimizers.SGD(lr=.001), metrics=['accuracy'])\n", "model_pool_drop.summary()" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/100\n", "25/25 [==============================] - 38s 1s/step - loss: 2.1540 - accuracy: 0.1675 - val_loss: 2.0134 - val_accuracy: 0.1979\n", "Epoch 2/100\n", "25/25 [==============================] - 37s 1s/step - loss: 1.6939 - accuracy: 0.2037 - val_loss: 1.7293 - val_accuracy: 0.1875\n", "Epoch 3/100\n", "25/25 [==============================] - 35s 1s/step - loss: 1.6265 - accuracy: 0.2512 - val_loss: 1.7483 - val_accuracy: 0.2031\n", "Epoch 4/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.6241 - accuracy: 0.2463 - val_loss: 1.7277 - val_accuracy: 0.2135\n", "Epoch 5/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.6075 - accuracy: 0.2675 - val_loss: 1.6551 - val_accuracy: 0.2292\n", "Epoch 6/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.5647 - accuracy: 0.3025 - val_loss: 1.6350 - val_accuracy: 0.4219\n", "Epoch 7/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.5461 - accuracy: 0.2937 - val_loss: 1.6199 - val_accuracy: 0.2812\n", "Epoch 8/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.5298 - accuracy: 0.3250 - val_loss: 1.6913 - val_accuracy: 0.3594\n", "Epoch 9/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.4970 - accuracy: 0.3338 - val_loss: 1.6024 - val_accuracy: 0.4167\n", "Epoch 10/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.4647 - accuracy: 0.3625 - val_loss: 1.6006 - val_accuracy: 0.3646\n", "Epoch 11/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.4492 - accuracy: 0.3925 - val_loss: 1.6130 - val_accuracy: 0.3542\n", "Epoch 12/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.3774 - accuracy: 0.4112 - val_loss: 1.6229 - val_accuracy: 0.3646\n", "Epoch 13/100\n", "25/25 [==============================] - 35s 1s/step - loss: 1.3320 - accuracy: 0.4375 - val_loss: 1.5338 - val_accuracy: 0.4219\n", "Epoch 14/100\n", "25/25 [==============================] - 37s 1s/step - loss: 1.3045 - accuracy: 0.4412 - val_loss: 1.4971 - val_accuracy: 0.3802\n", "Epoch 15/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.2122 - accuracy: 0.4938 - val_loss: 1.5767 - val_accuracy: 0.4271\n", "Epoch 16/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.2045 - accuracy: 0.5038 - val_loss: 1.3564 - val_accuracy: 0.4583\n", "Epoch 17/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.1888 - accuracy: 0.5050 - val_loss: 1.3598 - val_accuracy: 0.4323\n", "Epoch 18/100\n", "25/25 [==============================] - 32s 1s/step - loss: 1.1004 - accuracy: 0.5400 - val_loss: 1.3798 - val_accuracy: 0.4010\n", "Epoch 19/100\n", "25/25 [==============================] - 35s 1s/step - loss: 1.1161 - accuracy: 0.5138 - val_loss: 1.4139 - val_accuracy: 0.4688\n", "Epoch 20/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.1024 - accuracy: 0.5300 - val_loss: 1.3807 - val_accuracy: 0.4115\n", "Epoch 21/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.0852 - accuracy: 0.5350 - val_loss: 1.2784 - val_accuracy: 0.4688\n", "Epoch 22/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.9935 - accuracy: 0.5500 - val_loss: 1.0615 - val_accuracy: 0.5260\n", "Epoch 23/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.0719 - accuracy: 0.5300 - val_loss: 1.6332 - val_accuracy: 0.4479\n", "Epoch 24/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.9728 - accuracy: 0.5625 - val_loss: 1.3436 - val_accuracy: 0.4531\n", "Epoch 25/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.9514 - accuracy: 0.5788 - val_loss: 1.1052 - val_accuracy: 0.4792\n", "Epoch 26/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.0354 - accuracy: 0.5437 - val_loss: 1.2274 - val_accuracy: 0.4896\n", "Epoch 27/100\n", "25/25 [==============================] - 38s 1s/step - loss: 0.9764 - accuracy: 0.5675 - val_loss: 1.2700 - val_accuracy: 0.4531\n", "Epoch 28/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.9111 - accuracy: 0.5800 - val_loss: 1.3311 - val_accuracy: 0.4792\n", "Epoch 29/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.8978 - accuracy: 0.5987 - val_loss: 1.2087 - val_accuracy: 0.5208\n", "Epoch 30/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.9541 - accuracy: 0.5913 - val_loss: 1.0234 - val_accuracy: 0.5885\n", "Epoch 31/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.9083 - accuracy: 0.6000 - val_loss: 1.1497 - val_accuracy: 0.4844\n", "Epoch 32/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.8709 - accuracy: 0.6263 - val_loss: 0.9774 - val_accuracy: 0.6146\n", "Epoch 33/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.8831 - accuracy: 0.6400 - val_loss: 1.3298 - val_accuracy: 0.4635\n", "Epoch 34/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.9105 - accuracy: 0.6000 - val_loss: 1.0325 - val_accuracy: 0.5312\n", "Epoch 35/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.8981 - accuracy: 0.6225 - val_loss: 0.9792 - val_accuracy: 0.5833\n", "Epoch 36/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.8302 - accuracy: 0.6325 - val_loss: 1.0503 - val_accuracy: 0.5417\n", "Epoch 37/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.8196 - accuracy: 0.6450 - val_loss: 1.1518 - val_accuracy: 0.5208\n", "Epoch 38/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.7978 - accuracy: 0.6450 - val_loss: 1.0733 - val_accuracy: 0.5521\n", "Epoch 39/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.8764 - accuracy: 0.6200 - val_loss: 1.1687 - val_accuracy: 0.5521\n", "Epoch 40/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.8347 - accuracy: 0.6350 - val_loss: 0.9538 - val_accuracy: 0.5521\n", "Epoch 41/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.7740 - accuracy: 0.6600 - val_loss: 0.9828 - val_accuracy: 0.5573\n", "Epoch 42/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.7792 - accuracy: 0.6575 - val_loss: 0.9347 - val_accuracy: 0.6146\n", "Epoch 43/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.7643 - accuracy: 0.6637 - val_loss: 1.0073 - val_accuracy: 0.5521\n", "Epoch 44/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.8491 - accuracy: 0.6300 - val_loss: 0.9072 - val_accuracy: 0.5781\n", "Epoch 45/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.7689 - accuracy: 0.6662 - val_loss: 0.9700 - val_accuracy: 0.5885\n", "Epoch 46/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.7808 - accuracy: 0.6762 - val_loss: 0.8849 - val_accuracy: 0.5885\n", "Epoch 47/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.7912 - accuracy: 0.6700 - val_loss: 0.9794 - val_accuracy: 0.5938\n", "Epoch 48/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.7140 - accuracy: 0.6900 - val_loss: 1.0859 - val_accuracy: 0.5156\n", "Epoch 49/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.7231 - accuracy: 0.6812 - val_loss: 0.9919 - val_accuracy: 0.5312\n", "Epoch 50/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.7164 - accuracy: 0.6775 - val_loss: 0.8754 - val_accuracy: 0.5938\n", "Epoch 51/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.6902 - accuracy: 0.7000 - val_loss: 0.7496 - val_accuracy: 0.6667\n", "Epoch 52/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.6941 - accuracy: 0.6950 - val_loss: 0.8111 - val_accuracy: 0.6406\n", "Epoch 53/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.6511 - accuracy: 0.6963 - val_loss: 0.9502 - val_accuracy: 0.5365\n", "Epoch 54/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.7010 - accuracy: 0.6775 - val_loss: 1.1635 - val_accuracy: 0.5156\n", "Epoch 55/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.6365 - accuracy: 0.7063 - val_loss: 0.7768 - val_accuracy: 0.6615\n", "Epoch 56/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.6422 - accuracy: 0.7138 - val_loss: 0.8124 - val_accuracy: 0.6667\n", "Epoch 57/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.6389 - accuracy: 0.7050 - val_loss: 0.7729 - val_accuracy: 0.6719\n", "Epoch 58/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.6144 - accuracy: 0.7312 - val_loss: 1.0041 - val_accuracy: 0.5312\n", "Epoch 59/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.7239 - accuracy: 0.6963 - val_loss: 0.8224 - val_accuracy: 0.6510\n", "Epoch 60/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.6382 - accuracy: 0.7000 - val_loss: 0.6888 - val_accuracy: 0.6823\n", "Epoch 61/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.6108 - accuracy: 0.7225 - val_loss: 0.6762 - val_accuracy: 0.6823\n", "Epoch 62/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.5994 - accuracy: 0.7412 - val_loss: 0.8999 - val_accuracy: 0.5573\n", "Epoch 63/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.5431 - accuracy: 0.7487 - val_loss: 0.7129 - val_accuracy: 0.6771\n", "Epoch 64/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.5872 - accuracy: 0.7550 - val_loss: 0.7451 - val_accuracy: 0.6406\n", "Epoch 65/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.5637 - accuracy: 0.7425 - val_loss: 0.6809 - val_accuracy: 0.6927\n", "Epoch 66/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.5531 - accuracy: 0.7412 - val_loss: 0.8347 - val_accuracy: 0.6094\n", "Epoch 67/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.5204 - accuracy: 0.7625 - val_loss: 0.9630 - val_accuracy: 0.5833\n", "Epoch 68/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.5477 - accuracy: 0.7613 - val_loss: 0.7513 - val_accuracy: 0.6302\n", "Epoch 69/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.5896 - accuracy: 0.7500 - val_loss: 0.6534 - val_accuracy: 0.6927\n", "Epoch 70/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.5651 - accuracy: 0.7375 - val_loss: 0.6118 - val_accuracy: 0.7292\n", "Epoch 71/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.4896 - accuracy: 0.7788 - val_loss: 0.6155 - val_accuracy: 0.7292\n", "Epoch 72/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.4835 - accuracy: 0.7625 - val_loss: 0.8160 - val_accuracy: 0.6250\n", "Epoch 73/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.5748 - accuracy: 0.7412 - val_loss: 0.7547 - val_accuracy: 0.6302\n", "Epoch 74/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.4459 - accuracy: 0.7937 - val_loss: 0.7444 - val_accuracy: 0.6667\n", "Epoch 75/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.4576 - accuracy: 0.7775 - val_loss: 1.0260 - val_accuracy: 0.6667\n", "Epoch 76/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.8701 - accuracy: 0.6825 - val_loss: 0.8563 - val_accuracy: 0.6198\n", "Epoch 77/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.5644 - accuracy: 0.7462 - val_loss: 0.7395 - val_accuracy: 0.6406\n", "Epoch 78/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.4464 - accuracy: 0.7950 - val_loss: 0.7404 - val_accuracy: 0.6510\n", "Epoch 79/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.4584 - accuracy: 0.7862 - val_loss: 0.7534 - val_accuracy: 0.6510\n", "Epoch 80/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.5297 - accuracy: 0.7700 - val_loss: 0.6617 - val_accuracy: 0.7083\n", "Epoch 81/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.4441 - accuracy: 0.7950 - val_loss: 0.7048 - val_accuracy: 0.6927\n", "Epoch 82/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.5024 - accuracy: 0.7713 - val_loss: 0.7456 - val_accuracy: 0.6875\n", "Epoch 83/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.4858 - accuracy: 0.7750 - val_loss: 0.6363 - val_accuracy: 0.7552\n", "Epoch 84/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.4293 - accuracy: 0.8112 - val_loss: 0.6452 - val_accuracy: 0.6875\n", "Epoch 85/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.4369 - accuracy: 0.8000 - val_loss: 0.7804 - val_accuracy: 0.6510\n", "Epoch 86/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.3787 - accuracy: 0.8125 - val_loss: 0.7369 - val_accuracy: 0.6719\n", "Epoch 87/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.5366 - accuracy: 0.7837 - val_loss: 0.9294 - val_accuracy: 0.6615\n", "Epoch 88/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.4486 - accuracy: 0.8037 - val_loss: 0.6532 - val_accuracy: 0.6875\n", "Epoch 89/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.3971 - accuracy: 0.8263 - val_loss: 0.5793 - val_accuracy: 0.7188\n", "Epoch 90/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.4023 - accuracy: 0.8087 - val_loss: 0.6973 - val_accuracy: 0.7135\n", "Epoch 91/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.3739 - accuracy: 0.8338 - val_loss: 0.6377 - val_accuracy: 0.6927\n", "Epoch 92/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.4167 - accuracy: 0.7950 - val_loss: 0.6365 - val_accuracy: 0.7188\n", "Epoch 93/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.4039 - accuracy: 0.8163 - val_loss: 0.7140 - val_accuracy: 0.6719\n", "Epoch 94/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.3655 - accuracy: 0.8125 - val_loss: 0.5506 - val_accuracy: 0.7500\n", "Epoch 95/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.4764 - accuracy: 0.7925 - val_loss: 0.6725 - val_accuracy: 0.6927\n", "Epoch 96/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.3864 - accuracy: 0.8163 - val_loss: 0.7746 - val_accuracy: 0.6615\n", "Epoch 97/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.3479 - accuracy: 0.8413 - val_loss: 0.6701 - val_accuracy: 0.7083\n", "Epoch 98/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.3446 - accuracy: 0.8388 - val_loss: 0.5623 - val_accuracy: 0.7656\n", "Epoch 99/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.3953 - accuracy: 0.8150 - val_loss: 0.6013 - val_accuracy: 0.7448\n", "Epoch 100/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.3247 - accuracy: 0.8400 - val_loss: 0.6237 - val_accuracy: 0.7552\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model_pool_drop.fit(train_ds,\n", " epochs=100,\n", " validation_data=validation_ds,\n", " validation_freq=1,\n", " callbacks=[tensorboard_cb])" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "8/8 [==============================] - 3s 278ms/step - loss: 0.6054 - accuracy: 0.7578\n" ] }, { "data": { "text/plain": [ "[0.6054161787033081, 0.7578125]" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model_pool_drop.evaluate(test_ds)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Do warstw splotowych" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "model_conv_drop = keras.models.Sequential([\n", " keras.layers.Conv2D(filters=96, kernel_size=(11,11), strides=(4,4), activation='relu', input_shape=(227,227,3)),\n", " keras.layers.Dropout(.5),\n", " keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),\n", " keras.layers.Conv2D(filters=256, kernel_size=(5,5), strides=(1,1), activation='relu', padding=\"same\"),\n", " keras.layers.Dropout(.5),\n", " keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),\n", " keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding=\"same\"),\n", " keras.layers.Dropout(.5),\n", " keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding=\"same\"),\n", " keras.layers.Dropout(.5),\n", " keras.layers.Conv2D(filters=256, kernel_size=(3,3), strides=(1,1), activation='relu', padding=\"same\"),\n", " keras.layers.Dropout(.5),\n", " keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),\n", " keras.layers.Flatten(),\n", " keras.layers.Dense(4096, activation='relu'),\n", " keras.layers.Dense(4096, activation='relu'),\n", " keras.layers.Dense(10, activation='softmax')\n", "])" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING:absl:`lr` is deprecated, please use `learning_rate` instead, or use the legacy optimizer, e.g.,tf.keras.optimizers.legacy.SGD.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Model: \"sequential_2\"\n", "_________________________________________________________________\n", " Layer (type) Output Shape Param # \n", "=================================================================\n", " conv2d_10 (Conv2D) (None, 55, 55, 96) 34944 \n", " \n", " dropout_5 (Dropout) (None, 55, 55, 96) 0 \n", " \n", " max_pooling2d_6 (MaxPooling (None, 27, 27, 96) 0 \n", " 2D) \n", " \n", " conv2d_11 (Conv2D) (None, 27, 27, 256) 614656 \n", " \n", " dropout_6 (Dropout) (None, 27, 27, 256) 0 \n", " \n", " max_pooling2d_7 (MaxPooling (None, 13, 13, 256) 0 \n", " 2D) \n", " \n", " conv2d_12 (Conv2D) (None, 13, 13, 384) 885120 \n", " \n", " dropout_7 (Dropout) (None, 13, 13, 384) 0 \n", " \n", " conv2d_13 (Conv2D) (None, 13, 13, 384) 1327488 \n", " \n", " dropout_8 (Dropout) (None, 13, 13, 384) 0 \n", " \n", " conv2d_14 (Conv2D) (None, 13, 13, 256) 884992 \n", " \n", " dropout_9 (Dropout) (None, 13, 13, 256) 0 \n", " \n", " max_pooling2d_8 (MaxPooling (None, 6, 6, 256) 0 \n", " 2D) \n", " \n", " flatten_2 (Flatten) (None, 9216) 0 \n", " \n", " dense_6 (Dense) (None, 4096) 37752832 \n", " \n", " dense_7 (Dense) (None, 4096) 16781312 \n", " \n", " dense_8 (Dense) (None, 10) 40970 \n", " \n", "=================================================================\n", "Total params: 58,322,314\n", "Trainable params: 58,322,314\n", "Non-trainable params: 0\n", "_________________________________________________________________\n" ] } ], "source": [ "model_conv_drop.compile(loss='sparse_categorical_crossentropy', optimizer=tf.optimizers.SGD(lr=.001), metrics=['accuracy'])\n", "model_conv_drop.summary()" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/100\n", "25/25 [==============================] - 39s 1s/step - loss: 1.8422 - accuracy: 0.2313 - val_loss: 2.1335 - val_accuracy: 0.2604\n", "Epoch 2/100\n", "25/25 [==============================] - 37s 1s/step - loss: 1.7023 - accuracy: 0.2837 - val_loss: 2.0904 - val_accuracy: 0.2969\n", "Epoch 3/100\n", "25/25 [==============================] - 37s 1s/step - loss: 1.5376 - accuracy: 0.3313 - val_loss: 2.0778 - val_accuracy: 0.2292\n", "Epoch 4/100\n", "25/25 [==============================] - 37s 1s/step - loss: 1.4663 - accuracy: 0.3800 - val_loss: 2.0102 - val_accuracy: 0.3542\n", "Epoch 5/100\n", "25/25 [==============================] - 37s 1s/step - loss: 1.4467 - accuracy: 0.3938 - val_loss: 1.9956 - val_accuracy: 0.3073\n", "Epoch 6/100\n", "25/25 [==============================] - 38s 1s/step - loss: 1.2621 - accuracy: 0.4863 - val_loss: 1.8875 - val_accuracy: 0.3333\n", "Epoch 7/100\n", "25/25 [==============================] - 37s 1s/step - loss: 1.2946 - accuracy: 0.4675 - val_loss: 1.8695 - val_accuracy: 0.3958\n", "Epoch 8/100\n", "25/25 [==============================] - 38s 2s/step - loss: 1.1517 - accuracy: 0.5100 - val_loss: 1.7409 - val_accuracy: 0.4583\n", "Epoch 9/100\n", "25/25 [==============================] - 37s 1s/step - loss: 1.1045 - accuracy: 0.5350 - val_loss: 1.8332 - val_accuracy: 0.2031\n", "Epoch 10/100\n", "25/25 [==============================] - 37s 1s/step - loss: 1.0446 - accuracy: 0.5462 - val_loss: 1.7515 - val_accuracy: 0.3490\n", "Epoch 11/100\n", "25/25 [==============================] - 37s 1s/step - loss: 1.0663 - accuracy: 0.5575 - val_loss: 1.7029 - val_accuracy: 0.3594\n", "Epoch 12/100\n", "25/25 [==============================] - 37s 1s/step - loss: 1.0778 - accuracy: 0.5650 - val_loss: 1.7780 - val_accuracy: 0.3021\n", "Epoch 13/100\n", "25/25 [==============================] - 37s 1s/step - loss: 1.0175 - accuracy: 0.5663 - val_loss: 1.8585 - val_accuracy: 0.2760\n", "Epoch 14/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.9161 - accuracy: 0.6100 - val_loss: 1.6880 - val_accuracy: 0.3802\n", "Epoch 15/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.8277 - accuracy: 0.6488 - val_loss: 1.5378 - val_accuracy: 0.4323\n", "Epoch 16/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.8719 - accuracy: 0.6463 - val_loss: 1.6053 - val_accuracy: 0.5052\n", "Epoch 17/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.7539 - accuracy: 0.6812 - val_loss: 1.6414 - val_accuracy: 0.4115\n", "Epoch 18/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.7815 - accuracy: 0.6812 - val_loss: 1.4664 - val_accuracy: 0.6146\n", "Epoch 19/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.7458 - accuracy: 0.6913 - val_loss: 1.4077 - val_accuracy: 0.5677\n", "Epoch 20/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.9790 - accuracy: 0.5913 - val_loss: 1.7290 - val_accuracy: 0.2812\n", "Epoch 21/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.7419 - accuracy: 0.6950 - val_loss: 1.4896 - val_accuracy: 0.5000\n", "Epoch 22/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.6879 - accuracy: 0.7200 - val_loss: 1.3856 - val_accuracy: 0.5469\n", "Epoch 23/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.6642 - accuracy: 0.7125 - val_loss: 1.4391 - val_accuracy: 0.3594\n", "Epoch 24/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.6317 - accuracy: 0.7412 - val_loss: 1.3867 - val_accuracy: 0.5417\n", "Epoch 25/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.6106 - accuracy: 0.7462 - val_loss: 1.3900 - val_accuracy: 0.5469\n", "Epoch 26/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.6000 - accuracy: 0.7287 - val_loss: 1.3455 - val_accuracy: 0.5677\n", "Epoch 27/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.5725 - accuracy: 0.7900 - val_loss: 1.2634 - val_accuracy: 0.6667\n", "Epoch 28/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.5605 - accuracy: 0.7688 - val_loss: 1.2915 - val_accuracy: 0.6198\n", "Epoch 29/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.5432 - accuracy: 0.7875 - val_loss: 1.2972 - val_accuracy: 0.5469\n", "Epoch 30/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.5862 - accuracy: 0.7663 - val_loss: 1.3937 - val_accuracy: 0.4375\n", "Epoch 31/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.5134 - accuracy: 0.8000 - val_loss: 1.3887 - val_accuracy: 0.4792\n", "Epoch 32/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.5530 - accuracy: 0.7800 - val_loss: 1.3789 - val_accuracy: 0.4219\n", "Epoch 33/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.4936 - accuracy: 0.7763 - val_loss: 1.1190 - val_accuracy: 0.6771\n", "Epoch 34/100\n", "25/25 [==============================] - 38s 1s/step - loss: 0.5085 - accuracy: 0.7950 - val_loss: 1.3130 - val_accuracy: 0.5260\n", "Epoch 35/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.4900 - accuracy: 0.7962 - val_loss: 1.2185 - val_accuracy: 0.5573\n", "Epoch 36/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.4537 - accuracy: 0.8263 - val_loss: 1.5491 - val_accuracy: 0.3438\n", "Epoch 37/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.4313 - accuracy: 0.8325 - val_loss: 1.3085 - val_accuracy: 0.5052\n", "Epoch 38/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.4185 - accuracy: 0.8288 - val_loss: 1.1157 - val_accuracy: 0.6667\n", "Epoch 39/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.4420 - accuracy: 0.8037 - val_loss: 1.0747 - val_accuracy: 0.6719\n", "Epoch 40/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.6217 - accuracy: 0.7613 - val_loss: 1.2203 - val_accuracy: 0.5938\n", "Epoch 41/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.4495 - accuracy: 0.8125 - val_loss: 1.2375 - val_accuracy: 0.5573\n", "Epoch 42/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.3707 - accuracy: 0.8413 - val_loss: 1.1054 - val_accuracy: 0.5885\n", "Epoch 43/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.4187 - accuracy: 0.8138 - val_loss: 1.1526 - val_accuracy: 0.6198\n", "Epoch 44/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.3886 - accuracy: 0.8462 - val_loss: 1.0597 - val_accuracy: 0.6458\n", "Epoch 45/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.3577 - accuracy: 0.8425 - val_loss: 1.0726 - val_accuracy: 0.6302\n", "Epoch 46/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.4222 - accuracy: 0.8225 - val_loss: 1.1023 - val_accuracy: 0.6146\n", "Epoch 47/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.3652 - accuracy: 0.8462 - val_loss: 1.1679 - val_accuracy: 0.6250\n", "Epoch 48/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.3453 - accuracy: 0.8537 - val_loss: 1.1139 - val_accuracy: 0.5781\n", "Epoch 49/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.3015 - accuracy: 0.8763 - val_loss: 1.0735 - val_accuracy: 0.6302\n", "Epoch 50/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.3289 - accuracy: 0.8587 - val_loss: 1.0207 - val_accuracy: 0.6667\n", "Epoch 51/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.3748 - accuracy: 0.8475 - val_loss: 1.1093 - val_accuracy: 0.5885\n", "Epoch 52/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.4012 - accuracy: 0.8375 - val_loss: 1.2312 - val_accuracy: 0.5417\n", "Epoch 53/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.2989 - accuracy: 0.8813 - val_loss: 1.0820 - val_accuracy: 0.6615\n", "Epoch 54/100\n", "25/25 [==============================] - 38s 1s/step - loss: 0.2973 - accuracy: 0.8750 - val_loss: 0.9210 - val_accuracy: 0.7188\n", "Epoch 55/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.3219 - accuracy: 0.8650 - val_loss: 1.1205 - val_accuracy: 0.6198\n", "Epoch 56/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.3142 - accuracy: 0.8750 - val_loss: 0.9678 - val_accuracy: 0.6771\n", "Epoch 57/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.2701 - accuracy: 0.8788 - val_loss: 0.9047 - val_accuracy: 0.6927\n", "Epoch 58/100\n", "25/25 [==============================] - 38s 1s/step - loss: 0.2940 - accuracy: 0.8788 - val_loss: 1.0407 - val_accuracy: 0.6458\n", "Epoch 59/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.2552 - accuracy: 0.9025 - val_loss: 0.9503 - val_accuracy: 0.6719\n", "Epoch 60/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.2430 - accuracy: 0.8913 - val_loss: 0.9695 - val_accuracy: 0.6719\n", "Epoch 61/100\n", "25/25 [==============================] - 39s 2s/step - loss: 0.3017 - accuracy: 0.8850 - val_loss: 0.9939 - val_accuracy: 0.6771\n", "Epoch 62/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.2430 - accuracy: 0.8938 - val_loss: 0.8850 - val_accuracy: 0.7083\n", "Epoch 63/100\n", "25/25 [==============================] - 38s 1s/step - loss: 0.2560 - accuracy: 0.9025 - val_loss: 1.0165 - val_accuracy: 0.6146\n", "Epoch 64/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.2406 - accuracy: 0.8938 - val_loss: 0.9506 - val_accuracy: 0.6198\n", "Epoch 65/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.2375 - accuracy: 0.9125 - val_loss: 1.0983 - val_accuracy: 0.5312\n", "Epoch 66/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.3581 - accuracy: 0.8625 - val_loss: 1.0290 - val_accuracy: 0.6875\n", "Epoch 67/100\n", "25/25 [==============================] - 38s 1s/step - loss: 0.2074 - accuracy: 0.9175 - val_loss: 0.9548 - val_accuracy: 0.6146\n", "Epoch 68/100\n", "25/25 [==============================] - 38s 1s/step - loss: 0.2374 - accuracy: 0.9025 - val_loss: 1.0477 - val_accuracy: 0.6146\n", "Epoch 69/100\n", "25/25 [==============================] - 39s 2s/step - loss: 0.2269 - accuracy: 0.9075 - val_loss: 1.2301 - val_accuracy: 0.5312\n", "Epoch 70/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.1970 - accuracy: 0.9300 - val_loss: 1.2733 - val_accuracy: 0.5052\n", "Epoch 71/100\n", "25/25 [==============================] - 39s 2s/step - loss: 0.2358 - accuracy: 0.9112 - val_loss: 0.9070 - val_accuracy: 0.6979\n", "Epoch 72/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.2292 - accuracy: 0.9125 - val_loss: 1.0493 - val_accuracy: 0.5469\n", "Epoch 73/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.1826 - accuracy: 0.9250 - val_loss: 0.8005 - val_accuracy: 0.7552\n", "Epoch 74/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.2046 - accuracy: 0.9237 - val_loss: 0.9878 - val_accuracy: 0.6615\n", "Epoch 75/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.1801 - accuracy: 0.9225 - val_loss: 0.9359 - val_accuracy: 0.6719\n", "Epoch 76/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.2322 - accuracy: 0.9125 - val_loss: 0.8830 - val_accuracy: 0.6927\n", "Epoch 77/100\n", "25/25 [==============================] - 38s 2s/step - loss: 0.1762 - accuracy: 0.9325 - val_loss: 1.0842 - val_accuracy: 0.4844\n", "Epoch 78/100\n", "25/25 [==============================] - 38s 1s/step - loss: 0.1705 - accuracy: 0.9413 - val_loss: 0.9062 - val_accuracy: 0.6667\n", "Epoch 79/100\n", "25/25 [==============================] - 38s 2s/step - loss: 0.4088 - accuracy: 0.8625 - val_loss: 1.0009 - val_accuracy: 0.6875\n", "Epoch 80/100\n", "25/25 [==============================] - 38s 1s/step - loss: 0.1877 - accuracy: 0.9388 - val_loss: 0.9098 - val_accuracy: 0.6719\n", "Epoch 81/100\n", "25/25 [==============================] - 38s 1s/step - loss: 0.1855 - accuracy: 0.9362 - val_loss: 1.0068 - val_accuracy: 0.6302\n", "Epoch 82/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.1567 - accuracy: 0.9375 - val_loss: 0.9050 - val_accuracy: 0.6823\n", "Epoch 83/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.1537 - accuracy: 0.9475 - val_loss: 0.9882 - val_accuracy: 0.5885\n", "Epoch 84/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.1718 - accuracy: 0.9425 - val_loss: 1.1189 - val_accuracy: 0.5729\n", "Epoch 85/100\n", "25/25 [==============================] - 38s 1s/step - loss: 0.1222 - accuracy: 0.9575 - val_loss: 0.9589 - val_accuracy: 0.5677\n", "Epoch 86/100\n", "25/25 [==============================] - 38s 2s/step - loss: 0.2028 - accuracy: 0.9212 - val_loss: 1.0172 - val_accuracy: 0.6146\n", "Epoch 87/100\n", "25/25 [==============================] - 38s 1s/step - loss: 0.1412 - accuracy: 0.9488 - val_loss: 0.9860 - val_accuracy: 0.6458\n", "Epoch 88/100\n", "25/25 [==============================] - 38s 1s/step - loss: 0.1566 - accuracy: 0.9513 - val_loss: 0.9333 - val_accuracy: 0.6510\n", "Epoch 89/100\n", "25/25 [==============================] - 40s 2s/step - loss: 0.3019 - accuracy: 0.9062 - val_loss: 1.5026 - val_accuracy: 0.3854\n", "Epoch 90/100\n", "25/25 [==============================] - 38s 2s/step - loss: 0.1974 - accuracy: 0.9438 - val_loss: 0.9424 - val_accuracy: 0.6719\n", "Epoch 91/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.1236 - accuracy: 0.9550 - val_loss: 0.9276 - val_accuracy: 0.5990\n", "Epoch 92/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.1786 - accuracy: 0.9350 - val_loss: 0.7350 - val_accuracy: 0.7760\n", "Epoch 93/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.2246 - accuracy: 0.9287 - val_loss: 0.8939 - val_accuracy: 0.6771\n", "Epoch 94/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.1033 - accuracy: 0.9663 - val_loss: 0.8567 - val_accuracy: 0.6406\n", "Epoch 95/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.1007 - accuracy: 0.9688 - val_loss: 0.8316 - val_accuracy: 0.7083\n", "Epoch 96/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.1740 - accuracy: 0.9325 - val_loss: 0.8963 - val_accuracy: 0.6771\n", "Epoch 97/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.0915 - accuracy: 0.9700 - val_loss: 0.7647 - val_accuracy: 0.7552\n", "Epoch 98/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.1030 - accuracy: 0.9625 - val_loss: 0.8457 - val_accuracy: 0.7135\n", "Epoch 99/100\n", "25/25 [==============================] - 38s 1s/step - loss: 0.1826 - accuracy: 0.9312 - val_loss: 1.0152 - val_accuracy: 0.6719\n", "Epoch 100/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.1084 - accuracy: 0.9575 - val_loss: 1.0453 - val_accuracy: 0.5312\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model_conv_drop.fit(train_ds,\n", " epochs=100,\n", " validation_data=validation_ds,\n", " validation_freq=1,\n", " callbacks=[tensorboard_cb])" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "8/8 [==============================] - 3s 289ms/step - loss: 0.9870 - accuracy: 0.5664\n" ] }, { "data": { "text/plain": [ "[0.9869575500488281, 0.56640625]" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model_conv_drop.evaluate(test_ds)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Do warstw spłaszczonych i maxpooling" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "model_flat_pool_drop = keras.models.Sequential([\n", " keras.layers.Conv2D(filters=96, kernel_size=(11,11), strides=(4,4), activation='relu', input_shape=(227,227,3)),\n", " keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),\n", " keras.layers.Dropout(.5),\n", " keras.layers.Conv2D(filters=256, kernel_size=(5,5), strides=(1,1), activation='relu', padding=\"same\"),\n", " keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),\n", " keras.layers.Dropout(.5),\n", " keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding=\"same\"),\n", " keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding=\"same\"),\n", " keras.layers.Conv2D(filters=256, kernel_size=(3,3), strides=(1,1), activation='relu', padding=\"same\"),\n", " keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),\n", " keras.layers.Dropout(.5),\n", " keras.layers.Flatten(),\n", " keras.layers.Dense(4096, activation='relu'),\n", " keras.layers.Dropout(.5),\n", " keras.layers.Dense(4096, activation='relu'),\n", " keras.layers.Dropout(.5),\n", " keras.layers.Dense(10, activation='softmax')\n", "])" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING:absl:`lr` is deprecated, please use `learning_rate` instead, or use the legacy optimizer, e.g.,tf.keras.optimizers.legacy.SGD.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Model: \"sequential_3\"\n", "_________________________________________________________________\n", " Layer (type) Output Shape Param # \n", "=================================================================\n", " conv2d_15 (Conv2D) (None, 55, 55, 96) 34944 \n", " \n", " max_pooling2d_9 (MaxPooling (None, 27, 27, 96) 0 \n", " 2D) \n", " \n", " dropout_10 (Dropout) (None, 27, 27, 96) 0 \n", " \n", " conv2d_16 (Conv2D) (None, 27, 27, 256) 614656 \n", " \n", " max_pooling2d_10 (MaxPoolin (None, 13, 13, 256) 0 \n", " g2D) \n", " \n", " dropout_11 (Dropout) (None, 13, 13, 256) 0 \n", " \n", " conv2d_17 (Conv2D) (None, 13, 13, 384) 885120 \n", " \n", " conv2d_18 (Conv2D) (None, 13, 13, 384) 1327488 \n", " \n", " conv2d_19 (Conv2D) (None, 13, 13, 256) 884992 \n", " \n", " max_pooling2d_11 (MaxPoolin (None, 6, 6, 256) 0 \n", " g2D) \n", " \n", " dropout_12 (Dropout) (None, 6, 6, 256) 0 \n", " \n", " flatten_3 (Flatten) (None, 9216) 0 \n", " \n", " dense_9 (Dense) (None, 4096) 37752832 \n", " \n", " dropout_13 (Dropout) (None, 4096) 0 \n", " \n", " dense_10 (Dense) (None, 4096) 16781312 \n", " \n", " dropout_14 (Dropout) (None, 4096) 0 \n", " \n", " dense_11 (Dense) (None, 10) 40970 \n", " \n", "=================================================================\n", "Total params: 58,322,314\n", "Trainable params: 58,322,314\n", "Non-trainable params: 0\n", "_________________________________________________________________\n" ] } ], "source": [ "model_flat_pool_drop.compile(loss='sparse_categorical_crossentropy', optimizer=tf.optimizers.SGD(lr=.001), metrics=['accuracy'])\n", "model_flat_pool_drop.summary()" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/100\n", "25/25 [==============================] - 37s 1s/step - loss: 2.0917 - accuracy: 0.1775 - val_loss: 1.9565 - val_accuracy: 0.2708\n", "Epoch 2/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.7322 - accuracy: 0.2000 - val_loss: 1.8304 - val_accuracy: 0.3177\n", "Epoch 3/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.6923 - accuracy: 0.2325 - val_loss: 1.8261 - val_accuracy: 0.3073\n", "Epoch 4/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.6810 - accuracy: 0.2175 - val_loss: 1.7829 - val_accuracy: 0.2656\n", "Epoch 5/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.6517 - accuracy: 0.2225 - val_loss: 1.7979 - val_accuracy: 0.2396\n", "Epoch 6/100\n", "25/25 [==============================] - 35s 1s/step - loss: 1.6633 - accuracy: 0.2225 - val_loss: 1.7933 - val_accuracy: 0.2240\n", "Epoch 7/100\n", "25/25 [==============================] - 35s 1s/step - loss: 1.6198 - accuracy: 0.2637 - val_loss: 1.7102 - val_accuracy: 0.3906\n", "Epoch 8/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.6002 - accuracy: 0.2763 - val_loss: 1.7037 - val_accuracy: 0.3490\n", "Epoch 9/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.6232 - accuracy: 0.2612 - val_loss: 1.7178 - val_accuracy: 0.4219\n", "Epoch 10/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.5658 - accuracy: 0.3038 - val_loss: 1.6378 - val_accuracy: 0.3333\n", "Epoch 11/100\n", "25/25 [==============================] - 35s 1s/step - loss: 1.5433 - accuracy: 0.3137 - val_loss: 1.6015 - val_accuracy: 0.3385\n", "Epoch 12/100\n", "25/25 [==============================] - 35s 1s/step - loss: 1.4841 - accuracy: 0.3363 - val_loss: 1.5526 - val_accuracy: 0.3438\n", "Epoch 13/100\n", "25/25 [==============================] - 35s 1s/step - loss: 1.4081 - accuracy: 0.3837 - val_loss: 1.4210 - val_accuracy: 0.3802\n", "Epoch 14/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.3291 - accuracy: 0.4375 - val_loss: 1.2532 - val_accuracy: 0.4948\n", "Epoch 15/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.2583 - accuracy: 0.4550 - val_loss: 1.2151 - val_accuracy: 0.4531\n", "Epoch 16/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.1925 - accuracy: 0.5088 - val_loss: 1.2792 - val_accuracy: 0.3698\n", "Epoch 17/100\n", "25/25 [==============================] - 34s 1s/step - loss: 1.1364 - accuracy: 0.5163 - val_loss: 1.2483 - val_accuracy: 0.4635\n", "Epoch 18/100\n", "25/25 [==============================] - 33s 1s/step - loss: 1.1357 - accuracy: 0.5038 - val_loss: 1.1645 - val_accuracy: 0.4479\n", "Epoch 19/100\n", "25/25 [==============================] - 33s 1s/step - loss: 1.1218 - accuracy: 0.4963 - val_loss: 1.2317 - val_accuracy: 0.4479\n", "Epoch 20/100\n", "25/25 [==============================] - 33s 1s/step - loss: 1.1589 - accuracy: 0.5038 - val_loss: 1.0579 - val_accuracy: 0.5312\n", "Epoch 21/100\n", "25/25 [==============================] - 33s 1s/step - loss: 1.0452 - accuracy: 0.5675 - val_loss: 1.0819 - val_accuracy: 0.5312\n", "Epoch 22/100\n", "25/25 [==============================] - 33s 1s/step - loss: 1.0479 - accuracy: 0.5688 - val_loss: 1.0547 - val_accuracy: 0.5573\n", "Epoch 23/100\n", "25/25 [==============================] - 33s 1s/step - loss: 1.0540 - accuracy: 0.5450 - val_loss: 0.9755 - val_accuracy: 0.5312\n", "Epoch 24/100\n", "25/25 [==============================] - 33s 1s/step - loss: 1.0686 - accuracy: 0.5638 - val_loss: 1.0784 - val_accuracy: 0.5573\n", "Epoch 25/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.9795 - accuracy: 0.5750 - val_loss: 0.9952 - val_accuracy: 0.5625\n", "Epoch 26/100\n", "25/25 [==============================] - 33s 1s/step - loss: 1.0000 - accuracy: 0.5638 - val_loss: 1.2539 - val_accuracy: 0.4635\n", "Epoch 27/100\n", "25/25 [==============================] - 33s 1s/step - loss: 1.0407 - accuracy: 0.5537 - val_loss: 1.2266 - val_accuracy: 0.4948\n", "Epoch 28/100\n", "25/25 [==============================] - 33s 1s/step - loss: 1.0390 - accuracy: 0.5450 - val_loss: 0.9923 - val_accuracy: 0.5833\n", "Epoch 29/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.9594 - accuracy: 0.5913 - val_loss: 1.0368 - val_accuracy: 0.5469\n", "Epoch 30/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.9869 - accuracy: 0.5738 - val_loss: 0.8615 - val_accuracy: 0.5573\n", "Epoch 31/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.9585 - accuracy: 0.5775 - val_loss: 1.0329 - val_accuracy: 0.5260\n", "Epoch 32/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.9576 - accuracy: 0.5713 - val_loss: 1.1186 - val_accuracy: 0.5208\n", "Epoch 33/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.9654 - accuracy: 0.5638 - val_loss: 0.8668 - val_accuracy: 0.5938\n", "Epoch 34/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.9641 - accuracy: 0.5600 - val_loss: 0.8702 - val_accuracy: 0.6094\n", "Epoch 35/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.9572 - accuracy: 0.5875 - val_loss: 0.9063 - val_accuracy: 0.5677\n", "Epoch 36/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.9522 - accuracy: 0.5962 - val_loss: 1.0374 - val_accuracy: 0.5521\n", "Epoch 37/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.9262 - accuracy: 0.6087 - val_loss: 1.5964 - val_accuracy: 0.3542\n", "Epoch 38/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.9213 - accuracy: 0.6150 - val_loss: 0.8814 - val_accuracy: 0.6250\n", "Epoch 39/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.9015 - accuracy: 0.6125 - val_loss: 1.1375 - val_accuracy: 0.4948\n", "Epoch 40/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.8985 - accuracy: 0.6100 - val_loss: 1.0702 - val_accuracy: 0.5469\n", "Epoch 41/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.9110 - accuracy: 0.5987 - val_loss: 1.1127 - val_accuracy: 0.5260\n", "Epoch 42/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.9490 - accuracy: 0.5888 - val_loss: 0.8745 - val_accuracy: 0.6354\n", "Epoch 43/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.8498 - accuracy: 0.6388 - val_loss: 0.9744 - val_accuracy: 0.6094\n", "Epoch 44/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.9338 - accuracy: 0.6000 - val_loss: 0.7914 - val_accuracy: 0.6771\n", "Epoch 45/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.8778 - accuracy: 0.6187 - val_loss: 0.9569 - val_accuracy: 0.6094\n", "Epoch 46/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.8683 - accuracy: 0.6488 - val_loss: 0.8768 - val_accuracy: 0.6302\n", "Epoch 47/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.9314 - accuracy: 0.5888 - val_loss: 0.8695 - val_accuracy: 0.6510\n", "Epoch 48/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.8562 - accuracy: 0.6087 - val_loss: 0.9378 - val_accuracy: 0.6146\n", "Epoch 49/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.8526 - accuracy: 0.6425 - val_loss: 0.7878 - val_accuracy: 0.6771\n", "Epoch 50/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.8686 - accuracy: 0.6075 - val_loss: 0.7986 - val_accuracy: 0.6823\n", "Epoch 51/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.8529 - accuracy: 0.6338 - val_loss: 0.9565 - val_accuracy: 0.6094\n", "Epoch 52/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.8452 - accuracy: 0.6425 - val_loss: 0.8586 - val_accuracy: 0.6510\n", "Epoch 53/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.7898 - accuracy: 0.6438 - val_loss: 0.7577 - val_accuracy: 0.6823\n", "Epoch 54/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.7980 - accuracy: 0.6488 - val_loss: 0.8313 - val_accuracy: 0.6510\n", "Epoch 55/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.8150 - accuracy: 0.6388 - val_loss: 0.7770 - val_accuracy: 0.6823\n", "Epoch 56/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.8610 - accuracy: 0.6538 - val_loss: 0.7361 - val_accuracy: 0.6927\n", "Epoch 57/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.8102 - accuracy: 0.6612 - val_loss: 0.9088 - val_accuracy: 0.6302\n", "Epoch 58/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.8354 - accuracy: 0.6388 - val_loss: 0.8243 - val_accuracy: 0.6250\n", "Epoch 59/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.7939 - accuracy: 0.6513 - val_loss: 0.7328 - val_accuracy: 0.6823\n", "Epoch 60/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.8086 - accuracy: 0.6338 - val_loss: 1.4440 - val_accuracy: 0.5417\n", "Epoch 61/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.8329 - accuracy: 0.6500 - val_loss: 1.1445 - val_accuracy: 0.5729\n", "Epoch 62/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.7804 - accuracy: 0.6425 - val_loss: 0.7927 - val_accuracy: 0.6615\n", "Epoch 63/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.7279 - accuracy: 0.6925 - val_loss: 0.8555 - val_accuracy: 0.6719\n", "Epoch 64/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.7491 - accuracy: 0.6862 - val_loss: 0.7689 - val_accuracy: 0.6823\n", "Epoch 65/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.7468 - accuracy: 0.6775 - val_loss: 0.8862 - val_accuracy: 0.5990\n", "Epoch 66/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.7560 - accuracy: 0.6950 - val_loss: 0.9006 - val_accuracy: 0.6198\n", "Epoch 67/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.6820 - accuracy: 0.6950 - val_loss: 0.9478 - val_accuracy: 0.5990\n", "Epoch 68/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.6749 - accuracy: 0.7250 - val_loss: 0.7632 - val_accuracy: 0.6719\n", "Epoch 69/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.8980 - accuracy: 0.6313 - val_loss: 1.2917 - val_accuracy: 0.5208\n", "Epoch 70/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.8385 - accuracy: 0.6250 - val_loss: 0.9292 - val_accuracy: 0.5677\n", "Epoch 71/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.8319 - accuracy: 0.6400 - val_loss: 0.9105 - val_accuracy: 0.5990\n", "Epoch 72/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.8015 - accuracy: 0.6562 - val_loss: 0.9724 - val_accuracy: 0.6250\n", "Epoch 73/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.7114 - accuracy: 0.7000 - val_loss: 0.7665 - val_accuracy: 0.6771\n", "Epoch 74/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.8950 - accuracy: 0.6150 - val_loss: 0.8339 - val_accuracy: 0.6042\n", "Epoch 75/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.8064 - accuracy: 0.6637 - val_loss: 0.7158 - val_accuracy: 0.7240\n", "Epoch 76/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.7647 - accuracy: 0.6800 - val_loss: 0.8539 - val_accuracy: 0.5677\n", "Epoch 77/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.7230 - accuracy: 0.6875 - val_loss: 0.9702 - val_accuracy: 0.5781\n", "Epoch 78/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.7361 - accuracy: 0.7063 - val_loss: 1.1083 - val_accuracy: 0.5677\n", "Epoch 79/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.7267 - accuracy: 0.7075 - val_loss: 0.8585 - val_accuracy: 0.6615\n", "Epoch 80/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.7779 - accuracy: 0.6775 - val_loss: 1.3162 - val_accuracy: 0.5104\n", "Epoch 81/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.7000 - accuracy: 0.6975 - val_loss: 0.8335 - val_accuracy: 0.6250\n", "Epoch 82/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.6793 - accuracy: 0.7262 - val_loss: 0.9848 - val_accuracy: 0.6146\n", "Epoch 83/100\n", "25/25 [==============================] - 32s 1s/step - loss: 0.6640 - accuracy: 0.7025 - val_loss: 0.7998 - val_accuracy: 0.6250\n", "Epoch 84/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.7114 - accuracy: 0.7063 - val_loss: 0.8843 - val_accuracy: 0.6146\n", "Epoch 85/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.7037 - accuracy: 0.7138 - val_loss: 0.7425 - val_accuracy: 0.6562\n", "Epoch 86/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.6398 - accuracy: 0.7437 - val_loss: 0.6782 - val_accuracy: 0.7240\n", "Epoch 87/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.6463 - accuracy: 0.7175 - val_loss: 1.0489 - val_accuracy: 0.5885\n", "Epoch 88/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.6026 - accuracy: 0.7462 - val_loss: 1.8062 - val_accuracy: 0.5365\n", "Epoch 89/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.5925 - accuracy: 0.7538 - val_loss: 1.4441 - val_accuracy: 0.5573\n", "Epoch 90/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.6420 - accuracy: 0.7262 - val_loss: 0.7644 - val_accuracy: 0.6719\n", "Epoch 91/100\n", "25/25 [==============================] - 34s 1s/step - loss: 0.5179 - accuracy: 0.7837 - val_loss: 0.6801 - val_accuracy: 0.6927\n", "Epoch 92/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.6311 - accuracy: 0.7387 - val_loss: 0.8016 - val_accuracy: 0.7031\n", "Epoch 93/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.6578 - accuracy: 0.7412 - val_loss: 0.9470 - val_accuracy: 0.6510\n", "Epoch 94/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.6059 - accuracy: 0.7450 - val_loss: 0.6827 - val_accuracy: 0.7083\n", "Epoch 95/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.5553 - accuracy: 0.7575 - val_loss: 0.7752 - val_accuracy: 0.6979\n", "Epoch 96/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.5328 - accuracy: 0.7812 - val_loss: 0.5755 - val_accuracy: 0.7448\n", "Epoch 97/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.4946 - accuracy: 0.7887 - val_loss: 0.8354 - val_accuracy: 0.6823\n", "Epoch 98/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.5000 - accuracy: 0.7812 - val_loss: 0.7233 - val_accuracy: 0.6875\n", "Epoch 99/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.5272 - accuracy: 0.7750 - val_loss: 1.0468 - val_accuracy: 0.5990\n", "Epoch 100/100\n", "25/25 [==============================] - 33s 1s/step - loss: 0.4910 - accuracy: 0.7900 - val_loss: 0.7302 - val_accuracy: 0.6562\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model_flat_pool_drop.fit(train_ds,\n", " epochs=100,\n", " validation_data=validation_ds,\n", " validation_freq=1,\n", " callbacks=[tensorboard_cb])" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "8/8 [==============================] - 3s 272ms/step - loss: 0.6817 - accuracy: 0.7227\n" ] }, { "data": { "text/plain": [ "[0.6817080974578857, 0.72265625]" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model_flat_pool_drop.evaluate(test_ds)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Do warstw spłaszczonych i splotowych" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "model_flat_conv_drop = keras.models.Sequential([\n", " keras.layers.Conv2D(filters=96, kernel_size=(11,11), strides=(4,4), activation='relu', input_shape=(227,227,3)),\n", " keras.layers.Dropout(.5),\n", " keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),\n", " keras.layers.Conv2D(filters=256, kernel_size=(5,5), strides=(1,1), activation='relu', padding=\"same\"),\n", " keras.layers.Dropout(.5),\n", " keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),\n", " keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding=\"same\"),\n", " keras.layers.Dropout(.5),\n", " keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding=\"same\"),\n", " keras.layers.Dropout(.5),\n", " keras.layers.Conv2D(filters=256, kernel_size=(3,3), strides=(1,1), activation='relu', padding=\"same\"),\n", " keras.layers.Dropout(.5),\n", " keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),\n", " keras.layers.Flatten(),\n", " keras.layers.Dense(4096, activation='relu'),\n", " keras.layers.Dropout(.5),\n", " keras.layers.Dense(4096, activation='relu'),\n", " keras.layers.Dropout(.5),\n", " keras.layers.Dense(10, activation='softmax')\n", "])" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING:absl:`lr` is deprecated, please use `learning_rate` instead, or use the legacy optimizer, e.g.,tf.keras.optimizers.legacy.SGD.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Model: \"sequential_4\"\n", "_________________________________________________________________\n", " Layer (type) Output Shape Param # \n", "=================================================================\n", " conv2d_20 (Conv2D) (None, 55, 55, 96) 34944 \n", " \n", " dropout_15 (Dropout) (None, 55, 55, 96) 0 \n", " \n", " max_pooling2d_12 (MaxPoolin (None, 27, 27, 96) 0 \n", " g2D) \n", " \n", " conv2d_21 (Conv2D) (None, 27, 27, 256) 614656 \n", " \n", " dropout_16 (Dropout) (None, 27, 27, 256) 0 \n", " \n", " max_pooling2d_13 (MaxPoolin (None, 13, 13, 256) 0 \n", " g2D) \n", " \n", " conv2d_22 (Conv2D) (None, 13, 13, 384) 885120 \n", " \n", " dropout_17 (Dropout) (None, 13, 13, 384) 0 \n", " \n", " conv2d_23 (Conv2D) (None, 13, 13, 384) 1327488 \n", " \n", " dropout_18 (Dropout) (None, 13, 13, 384) 0 \n", " \n", " conv2d_24 (Conv2D) (None, 13, 13, 256) 884992 \n", " \n", " dropout_19 (Dropout) (None, 13, 13, 256) 0 \n", " \n", " max_pooling2d_14 (MaxPoolin (None, 6, 6, 256) 0 \n", " g2D) \n", " \n", " flatten_4 (Flatten) (None, 9216) 0 \n", " \n", " dense_12 (Dense) (None, 4096) 37752832 \n", " \n", " dropout_20 (Dropout) (None, 4096) 0 \n", " \n", " dense_13 (Dense) (None, 4096) 16781312 \n", " \n", " dropout_21 (Dropout) (None, 4096) 0 \n", " \n", " dense_14 (Dense) (None, 10) 40970 \n", " \n", "=================================================================\n", "Total params: 58,322,314\n", "Trainable params: 58,322,314\n", "Non-trainable params: 0\n", "_________________________________________________________________\n" ] } ], "source": [ "model_flat_conv_drop.compile(loss='sparse_categorical_crossentropy', optimizer=tf.optimizers.SGD(lr=.001), metrics=['accuracy'])\n", "model_flat_conv_drop.summary()" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/100\n", "25/25 [==============================] - 38s 1s/step - loss: 1.8599 - accuracy: 0.2175 - val_loss: 2.1514 - val_accuracy: 0.2500\n", "Epoch 2/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.6948 - accuracy: 0.2500 - val_loss: 2.1303 - val_accuracy: 0.2656\n", "Epoch 3/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.5830 - accuracy: 0.3088 - val_loss: 2.0759 - val_accuracy: 0.1875\n", "Epoch 4/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.5122 - accuracy: 0.3425 - val_loss: 2.0394 - val_accuracy: 0.2344\n", "Epoch 5/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.4322 - accuracy: 0.3787 - val_loss: 1.9146 - val_accuracy: 0.3594\n", "Epoch 6/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.2522 - accuracy: 0.4450 - val_loss: 1.9610 - val_accuracy: 0.2448\n", "Epoch 7/100\n", "25/25 [==============================] - 35s 1s/step - loss: 1.2729 - accuracy: 0.4475 - val_loss: 1.7461 - val_accuracy: 0.4792\n", "Epoch 8/100\n", "25/25 [==============================] - 35s 1s/step - loss: 1.3159 - accuracy: 0.4475 - val_loss: 1.7940 - val_accuracy: 0.4323\n", "Epoch 9/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.1717 - accuracy: 0.4988 - val_loss: 1.6668 - val_accuracy: 0.5208\n", "Epoch 10/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.1578 - accuracy: 0.4825 - val_loss: 1.6895 - val_accuracy: 0.4062\n", "Epoch 11/100\n", "25/25 [==============================] - 35s 1s/step - loss: 1.0373 - accuracy: 0.5225 - val_loss: 1.6572 - val_accuracy: 0.4271\n", "Epoch 12/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.1024 - accuracy: 0.5050 - val_loss: 1.7203 - val_accuracy: 0.4062\n", "Epoch 13/100\n", "25/25 [==============================] - 35s 1s/step - loss: 1.0335 - accuracy: 0.5487 - val_loss: 1.5971 - val_accuracy: 0.4583\n", "Epoch 14/100\n", "25/25 [==============================] - 35s 1s/step - loss: 1.0407 - accuracy: 0.5238 - val_loss: 1.7055 - val_accuracy: 0.4010\n", "Epoch 15/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.0026 - accuracy: 0.5462 - val_loss: 1.5315 - val_accuracy: 0.4583\n", "Epoch 16/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.0267 - accuracy: 0.5350 - val_loss: 1.5610 - val_accuracy: 0.4844\n", "Epoch 17/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.9454 - accuracy: 0.5663 - val_loss: 1.7559 - val_accuracy: 0.2708\n", "Epoch 18/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.9948 - accuracy: 0.5675 - val_loss: 1.6200 - val_accuracy: 0.4219\n", "Epoch 19/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.9074 - accuracy: 0.5987 - val_loss: 1.7146 - val_accuracy: 0.2917\n", "Epoch 20/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.9107 - accuracy: 0.5950 - val_loss: 1.5316 - val_accuracy: 0.4427\n", "Epoch 21/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.8628 - accuracy: 0.6212 - val_loss: 1.6812 - val_accuracy: 0.3021\n", "Epoch 22/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.9339 - accuracy: 0.6200 - val_loss: 1.4395 - val_accuracy: 0.5104\n", "Epoch 23/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.8752 - accuracy: 0.6150 - val_loss: 1.5659 - val_accuracy: 0.4219\n", "Epoch 24/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.8968 - accuracy: 0.6200 - val_loss: 1.4972 - val_accuracy: 0.4531\n", "Epoch 25/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.8278 - accuracy: 0.6463 - val_loss: 1.5808 - val_accuracy: 0.3958\n", "Epoch 26/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.8339 - accuracy: 0.6450 - val_loss: 1.4826 - val_accuracy: 0.4427\n", "Epoch 27/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.7643 - accuracy: 0.6675 - val_loss: 1.3160 - val_accuracy: 0.5573\n", "Epoch 28/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.8465 - accuracy: 0.6325 - val_loss: 1.4294 - val_accuracy: 0.4844\n", "Epoch 29/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.7217 - accuracy: 0.7000 - val_loss: 1.4546 - val_accuracy: 0.4427\n", "Epoch 30/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.7759 - accuracy: 0.6700 - val_loss: 1.5743 - val_accuracy: 0.3854\n", "Epoch 31/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.7494 - accuracy: 0.6737 - val_loss: 1.4131 - val_accuracy: 0.4427\n", "Epoch 32/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.8117 - accuracy: 0.6712 - val_loss: 1.5993 - val_accuracy: 0.3229\n", "Epoch 33/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.6711 - accuracy: 0.7063 - val_loss: 1.4211 - val_accuracy: 0.4635\n", "Epoch 34/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.7168 - accuracy: 0.6988 - val_loss: 1.4401 - val_accuracy: 0.4115\n", "Epoch 35/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.6766 - accuracy: 0.7287 - val_loss: 1.3782 - val_accuracy: 0.4583\n", "Epoch 36/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.6349 - accuracy: 0.7312 - val_loss: 1.3980 - val_accuracy: 0.4219\n", "Epoch 37/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.6949 - accuracy: 0.7163 - val_loss: 1.4965 - val_accuracy: 0.3646\n", "Epoch 38/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.6801 - accuracy: 0.7375 - val_loss: 1.4329 - val_accuracy: 0.4219\n", "Epoch 39/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.6067 - accuracy: 0.7538 - val_loss: 1.2681 - val_accuracy: 0.5260\n", "Epoch 40/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.6001 - accuracy: 0.7450 - val_loss: 1.4195 - val_accuracy: 0.4062\n", "Epoch 41/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.6434 - accuracy: 0.7287 - val_loss: 1.4461 - val_accuracy: 0.3854\n", "Epoch 42/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.5218 - accuracy: 0.7738 - val_loss: 1.4192 - val_accuracy: 0.4010\n", "Epoch 43/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.5784 - accuracy: 0.7425 - val_loss: 1.5090 - val_accuracy: 0.3958\n", "Epoch 44/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.4925 - accuracy: 0.7950 - val_loss: 1.4046 - val_accuracy: 0.3750\n", "Epoch 45/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.5452 - accuracy: 0.7788 - val_loss: 1.4319 - val_accuracy: 0.4062\n", "Epoch 46/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.4841 - accuracy: 0.7725 - val_loss: 1.1874 - val_accuracy: 0.5729\n", "Epoch 47/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.4485 - accuracy: 0.8175 - val_loss: 1.1916 - val_accuracy: 0.5469\n", "Epoch 48/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.6050 - accuracy: 0.7513 - val_loss: 1.2601 - val_accuracy: 0.4948\n", "Epoch 49/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.5776 - accuracy: 0.7563 - val_loss: 1.2410 - val_accuracy: 0.5052\n", "Epoch 50/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.4671 - accuracy: 0.7925 - val_loss: 1.3867 - val_accuracy: 0.4219\n", "Epoch 51/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.4418 - accuracy: 0.8075 - val_loss: 1.1037 - val_accuracy: 0.6250\n", "Epoch 52/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.4319 - accuracy: 0.8175 - val_loss: 1.5872 - val_accuracy: 0.3385\n", "Epoch 53/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.4272 - accuracy: 0.8213 - val_loss: 1.3312 - val_accuracy: 0.4583\n", "Epoch 54/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.4158 - accuracy: 0.8275 - val_loss: 1.3446 - val_accuracy: 0.4167\n", "Epoch 55/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.5541 - accuracy: 0.8062 - val_loss: 1.3947 - val_accuracy: 0.4115\n", "Epoch 56/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.4572 - accuracy: 0.8012 - val_loss: 1.5154 - val_accuracy: 0.3698\n", "Epoch 57/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.4160 - accuracy: 0.8150 - val_loss: 1.2559 - val_accuracy: 0.4740\n", "Epoch 58/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.3743 - accuracy: 0.8313 - val_loss: 1.0860 - val_accuracy: 0.5729\n", "Epoch 59/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.4149 - accuracy: 0.8250 - val_loss: 1.2052 - val_accuracy: 0.5052\n", "Epoch 60/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.4006 - accuracy: 0.8062 - val_loss: 0.9254 - val_accuracy: 0.6615\n", "Epoch 61/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.3485 - accuracy: 0.8712 - val_loss: 1.2242 - val_accuracy: 0.5000\n", "Epoch 62/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.3578 - accuracy: 0.8612 - val_loss: 1.1742 - val_accuracy: 0.5312\n", "Epoch 63/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.9528 - accuracy: 0.7188 - val_loss: 1.4248 - val_accuracy: 0.4115\n", "Epoch 64/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.5106 - accuracy: 0.7962 - val_loss: 1.3560 - val_accuracy: 0.4062\n", "Epoch 65/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.4529 - accuracy: 0.8075 - val_loss: 1.2284 - val_accuracy: 0.4896\n", "Epoch 66/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.4449 - accuracy: 0.8238 - val_loss: 1.3032 - val_accuracy: 0.4271\n", "Epoch 67/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.3620 - accuracy: 0.8512 - val_loss: 1.3937 - val_accuracy: 0.3802\n", "Epoch 68/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.4211 - accuracy: 0.8413 - val_loss: 1.5752 - val_accuracy: 0.3229\n", "Epoch 69/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.3619 - accuracy: 0.8500 - val_loss: 1.3213 - val_accuracy: 0.4583\n", "Epoch 70/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.3436 - accuracy: 0.8587 - val_loss: 1.3979 - val_accuracy: 0.3854\n", "Epoch 71/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.3347 - accuracy: 0.8550 - val_loss: 1.3089 - val_accuracy: 0.4844\n", "Epoch 72/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.3278 - accuracy: 0.8562 - val_loss: 1.1956 - val_accuracy: 0.5052\n", "Epoch 73/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.3228 - accuracy: 0.8687 - val_loss: 1.2078 - val_accuracy: 0.5000\n", "Epoch 74/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.5337 - accuracy: 0.8037 - val_loss: 1.2706 - val_accuracy: 0.4792\n", "Epoch 75/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.3490 - accuracy: 0.8650 - val_loss: 1.4795 - val_accuracy: 0.4062\n", "Epoch 76/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.2937 - accuracy: 0.8737 - val_loss: 1.1618 - val_accuracy: 0.5417\n", "Epoch 77/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.5818 - accuracy: 0.8112 - val_loss: 1.3942 - val_accuracy: 0.4062\n", "Epoch 78/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.4328 - accuracy: 0.8225 - val_loss: 1.3289 - val_accuracy: 0.4271\n", "Epoch 79/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.3534 - accuracy: 0.8625 - val_loss: 1.3902 - val_accuracy: 0.3906\n", "Epoch 80/100\n", "25/25 [==============================] - 39s 2s/step - loss: 0.3293 - accuracy: 0.8725 - val_loss: 1.2934 - val_accuracy: 0.4740\n", "Epoch 81/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.3620 - accuracy: 0.8562 - val_loss: 1.2229 - val_accuracy: 0.4688\n", "Epoch 82/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.2888 - accuracy: 0.8813 - val_loss: 1.2308 - val_accuracy: 0.5000\n", "Epoch 83/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.2521 - accuracy: 0.8975 - val_loss: 1.0596 - val_accuracy: 0.5365\n", "Epoch 84/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.2750 - accuracy: 0.8725 - val_loss: 1.2119 - val_accuracy: 0.5052\n", "Epoch 85/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.2639 - accuracy: 0.9087 - val_loss: 1.2608 - val_accuracy: 0.4740\n", "Epoch 86/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.3473 - accuracy: 0.8512 - val_loss: 1.0966 - val_accuracy: 0.5990\n", "Epoch 87/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.2814 - accuracy: 0.8800 - val_loss: 1.0908 - val_accuracy: 0.5625\n", "Epoch 88/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.2442 - accuracy: 0.8988 - val_loss: 1.0714 - val_accuracy: 0.5521\n", "Epoch 89/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.2632 - accuracy: 0.9000 - val_loss: 1.2409 - val_accuracy: 0.5000\n", "Epoch 90/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.2928 - accuracy: 0.8687 - val_loss: 1.2651 - val_accuracy: 0.5208\n", "Epoch 91/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.2357 - accuracy: 0.9025 - val_loss: 1.1588 - val_accuracy: 0.5312\n", "Epoch 92/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.2177 - accuracy: 0.9075 - val_loss: 1.1720 - val_accuracy: 0.5469\n", "Epoch 93/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.7621 - accuracy: 0.7962 - val_loss: 1.3168 - val_accuracy: 0.5260\n", "Epoch 94/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.4913 - accuracy: 0.8150 - val_loss: 1.3253 - val_accuracy: 0.4479\n", "Epoch 95/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.3095 - accuracy: 0.8850 - val_loss: 1.0981 - val_accuracy: 0.5312\n", "Epoch 96/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.3121 - accuracy: 0.8662 - val_loss: 1.1353 - val_accuracy: 0.5260\n", "Epoch 97/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.2517 - accuracy: 0.9038 - val_loss: 1.1186 - val_accuracy: 0.5625\n", "Epoch 98/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.2424 - accuracy: 0.9112 - val_loss: 1.2868 - val_accuracy: 0.4844\n", "Epoch 99/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.2683 - accuracy: 0.8900 - val_loss: 1.1035 - val_accuracy: 0.5729\n", "Epoch 100/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.2120 - accuracy: 0.9075 - val_loss: 1.0550 - val_accuracy: 0.5781\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model_flat_conv_drop.fit(train_ds,\n", " epochs=100,\n", " validation_data=validation_ds,\n", " validation_freq=1,\n", " callbacks=[tensorboard_cb])" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "8/8 [==============================] - 4s 260ms/step - loss: 0.9765 - accuracy: 0.6445\n" ] }, { "data": { "text/plain": [ "[0.9765039086341858, 0.64453125]" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model_flat_conv_drop.evaluate(test_ds)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Do warstw maxpooling i splotowych" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [], "source": [ "model_pool_conv_drop = keras.models.Sequential([\n", " keras.layers.Conv2D(filters=96, kernel_size=(11,11), strides=(4,4), activation='relu', input_shape=(227,227,3)),\n", " keras.layers.Dropout(.5),\n", " keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),\n", " keras.layers.Dropout(.5),\n", " keras.layers.Conv2D(filters=256, kernel_size=(5,5), strides=(1,1), activation='relu', padding=\"same\"),\n", " keras.layers.Dropout(.5),\n", " keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),\n", " keras.layers.Dropout(.5),\n", " keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding=\"same\"),\n", " keras.layers.Dropout(.5),\n", " keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding=\"same\"),\n", " keras.layers.Dropout(.5),\n", " keras.layers.Conv2D(filters=256, kernel_size=(3,3), strides=(1,1), activation='relu', padding=\"same\"),\n", " keras.layers.Dropout(.5),\n", " keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),\n", " keras.layers.Dropout(.5),\n", " keras.layers.Flatten(),\n", " keras.layers.Dense(4096, activation='relu'),\n", " keras.layers.Dense(4096, activation='relu'),\n", " keras.layers.Dense(10, activation='softmax')\n", "])" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING:absl:`lr` is deprecated, please use `learning_rate` instead, or use the legacy optimizer, e.g.,tf.keras.optimizers.legacy.SGD.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Model: \"sequential_5\"\n", "_________________________________________________________________\n", " Layer (type) Output Shape Param # \n", "=================================================================\n", " conv2d_25 (Conv2D) (None, 55, 55, 96) 34944 \n", " \n", " dropout_22 (Dropout) (None, 55, 55, 96) 0 \n", " \n", " max_pooling2d_15 (MaxPoolin (None, 27, 27, 96) 0 \n", " g2D) \n", " \n", " dropout_23 (Dropout) (None, 27, 27, 96) 0 \n", " \n", " conv2d_26 (Conv2D) (None, 27, 27, 256) 614656 \n", " \n", " dropout_24 (Dropout) (None, 27, 27, 256) 0 \n", " \n", " max_pooling2d_16 (MaxPoolin (None, 13, 13, 256) 0 \n", " g2D) \n", " \n", " dropout_25 (Dropout) (None, 13, 13, 256) 0 \n", " \n", " conv2d_27 (Conv2D) (None, 13, 13, 384) 885120 \n", " \n", " dropout_26 (Dropout) (None, 13, 13, 384) 0 \n", " \n", " conv2d_28 (Conv2D) (None, 13, 13, 384) 1327488 \n", " \n", " dropout_27 (Dropout) (None, 13, 13, 384) 0 \n", " \n", " conv2d_29 (Conv2D) (None, 13, 13, 256) 884992 \n", " \n", " dropout_28 (Dropout) (None, 13, 13, 256) 0 \n", " \n", " max_pooling2d_17 (MaxPoolin (None, 6, 6, 256) 0 \n", " g2D) \n", " \n", " dropout_29 (Dropout) (None, 6, 6, 256) 0 \n", " \n", " flatten_5 (Flatten) (None, 9216) 0 \n", " \n", " dense_15 (Dense) (None, 4096) 37752832 \n", " \n", " dense_16 (Dense) (None, 4096) 16781312 \n", " \n", " dense_17 (Dense) (None, 10) 40970 \n", " \n", "=================================================================\n", "Total params: 58,322,314\n", "Trainable params: 58,322,314\n", "Non-trainable params: 0\n", "_________________________________________________________________\n" ] } ], "source": [ "model_pool_conv_drop.compile(loss='sparse_categorical_crossentropy', optimizer=tf.optimizers.SGD(lr=.001), metrics=['accuracy'])\n", "model_pool_conv_drop.summary()" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/100\n", "25/25 [==============================] - 38s 1s/step - loss: 1.8169 - accuracy: 0.2000 - val_loss: 2.2493 - val_accuracy: 0.1875\n", "Epoch 2/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.6415 - accuracy: 0.2438 - val_loss: 2.2203 - val_accuracy: 0.1979\n", "Epoch 3/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.5604 - accuracy: 0.2862 - val_loss: 2.1751 - val_accuracy: 0.2083\n", "Epoch 4/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.5147 - accuracy: 0.3113 - val_loss: 2.1321 - val_accuracy: 0.1927\n", "Epoch 5/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.3579 - accuracy: 0.4162 - val_loss: 2.0497 - val_accuracy: 0.2865\n", "Epoch 6/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.3016 - accuracy: 0.4525 - val_loss: 2.0358 - val_accuracy: 0.2344\n", "Epoch 7/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.2612 - accuracy: 0.4512 - val_loss: 1.9886 - val_accuracy: 0.2292\n", "Epoch 8/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.3036 - accuracy: 0.4437 - val_loss: 2.0800 - val_accuracy: 0.1927\n", "Epoch 9/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.1765 - accuracy: 0.4850 - val_loss: 1.8733 - val_accuracy: 0.3021\n", "Epoch 10/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.2216 - accuracy: 0.5000 - val_loss: 2.0504 - val_accuracy: 0.1927\n", "Epoch 11/100\n", "25/25 [==============================] - 37s 1s/step - loss: 1.1682 - accuracy: 0.4850 - val_loss: 1.9643 - val_accuracy: 0.2396\n", "Epoch 12/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.1334 - accuracy: 0.5150 - val_loss: 1.9832 - val_accuracy: 0.2292\n", "Epoch 13/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.0921 - accuracy: 0.5113 - val_loss: 1.8860 - val_accuracy: 0.2500\n", "Epoch 14/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.0653 - accuracy: 0.5050 - val_loss: 1.8309 - val_accuracy: 0.2604\n", "Epoch 15/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.0711 - accuracy: 0.5325 - val_loss: 1.8706 - val_accuracy: 0.2604\n", "Epoch 16/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.0179 - accuracy: 0.5562 - val_loss: 1.8749 - val_accuracy: 0.2188\n", "Epoch 17/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.0475 - accuracy: 0.5462 - val_loss: 1.8350 - val_accuracy: 0.2240\n", "Epoch 18/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.0022 - accuracy: 0.5738 - val_loss: 1.6695 - val_accuracy: 0.4115\n", "Epoch 19/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.9710 - accuracy: 0.5938 - val_loss: 1.8079 - val_accuracy: 0.2240\n", "Epoch 20/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.0680 - accuracy: 0.5612 - val_loss: 1.7820 - val_accuracy: 0.2500\n", "Epoch 21/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.0123 - accuracy: 0.5713 - val_loss: 1.7886 - val_accuracy: 0.2500\n", "Epoch 22/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.9476 - accuracy: 0.6100 - val_loss: 1.6905 - val_accuracy: 0.3125\n", "Epoch 23/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.9235 - accuracy: 0.6000 - val_loss: 1.6969 - val_accuracy: 0.3073\n", "Epoch 24/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.8894 - accuracy: 0.5987 - val_loss: 1.7731 - val_accuracy: 0.2396\n", "Epoch 25/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.9201 - accuracy: 0.6212 - val_loss: 1.7130 - val_accuracy: 0.2448\n", "Epoch 26/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.9261 - accuracy: 0.6150 - val_loss: 1.7654 - val_accuracy: 0.2552\n", "Epoch 27/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.9241 - accuracy: 0.6250 - val_loss: 1.6630 - val_accuracy: 0.3021\n", "Epoch 28/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.9109 - accuracy: 0.6200 - val_loss: 1.5995 - val_accuracy: 0.3542\n", "Epoch 29/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.8485 - accuracy: 0.6450 - val_loss: 1.7325 - val_accuracy: 0.2344\n", "Epoch 30/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.8655 - accuracy: 0.6388 - val_loss: 1.6539 - val_accuracy: 0.3229\n", "Epoch 31/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.8572 - accuracy: 0.6338 - val_loss: 1.7899 - val_accuracy: 0.2240\n", "Epoch 32/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.9136 - accuracy: 0.6313 - val_loss: 1.7606 - val_accuracy: 0.2240\n", "Epoch 33/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.7934 - accuracy: 0.6550 - val_loss: 1.7149 - val_accuracy: 0.2292\n", "Epoch 34/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.8042 - accuracy: 0.6463 - val_loss: 1.7325 - val_accuracy: 0.2604\n", "Epoch 35/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.8510 - accuracy: 0.6388 - val_loss: 1.6244 - val_accuracy: 0.3021\n", "Epoch 36/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.7933 - accuracy: 0.6562 - val_loss: 1.7268 - val_accuracy: 0.2552\n", "Epoch 37/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.7170 - accuracy: 0.7075 - val_loss: 1.4832 - val_accuracy: 0.4323\n", "Epoch 38/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.8339 - accuracy: 0.6413 - val_loss: 1.6859 - val_accuracy: 0.2604\n", "Epoch 39/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.7030 - accuracy: 0.6825 - val_loss: 1.6517 - val_accuracy: 0.2500\n", "Epoch 40/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.7162 - accuracy: 0.6913 - val_loss: 1.6911 - val_accuracy: 0.2708\n", "Epoch 41/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.7770 - accuracy: 0.6650 - val_loss: 1.6254 - val_accuracy: 0.3125\n", "Epoch 42/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.6581 - accuracy: 0.7225 - val_loss: 1.6136 - val_accuracy: 0.3229\n", "Epoch 43/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.6846 - accuracy: 0.7100 - val_loss: 1.6485 - val_accuracy: 0.2865\n", "Epoch 44/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.6980 - accuracy: 0.6888 - val_loss: 1.7597 - val_accuracy: 0.2552\n", "Epoch 45/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.6496 - accuracy: 0.7400 - val_loss: 1.6483 - val_accuracy: 0.3073\n", "Epoch 46/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.6251 - accuracy: 0.7250 - val_loss: 1.6830 - val_accuracy: 0.2917\n", "Epoch 47/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.6244 - accuracy: 0.7163 - val_loss: 1.6909 - val_accuracy: 0.3177\n", "Epoch 48/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.7036 - accuracy: 0.7088 - val_loss: 1.6145 - val_accuracy: 0.2708\n", "Epoch 49/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.6414 - accuracy: 0.7088 - val_loss: 1.8017 - val_accuracy: 0.2500\n", "Epoch 50/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.6729 - accuracy: 0.6988 - val_loss: 1.6652 - val_accuracy: 0.3229\n", "Epoch 51/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.5843 - accuracy: 0.7350 - val_loss: 1.5871 - val_accuracy: 0.3385\n", "Epoch 52/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.6044 - accuracy: 0.7300 - val_loss: 1.6579 - val_accuracy: 0.2708\n", "Epoch 53/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.5451 - accuracy: 0.7475 - val_loss: 1.6316 - val_accuracy: 0.3125\n", "Epoch 54/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.5658 - accuracy: 0.7475 - val_loss: 1.4053 - val_accuracy: 0.4635\n", "Epoch 55/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.5437 - accuracy: 0.7500 - val_loss: 1.8277 - val_accuracy: 0.2448\n", "Epoch 56/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.5834 - accuracy: 0.7462 - val_loss: 1.9969 - val_accuracy: 0.2292\n", "Epoch 57/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.5382 - accuracy: 0.7462 - val_loss: 1.6513 - val_accuracy: 0.3229\n", "Epoch 58/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.5030 - accuracy: 0.7825 - val_loss: 1.6703 - val_accuracy: 0.3490\n", "Epoch 59/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.6065 - accuracy: 0.7275 - val_loss: 1.6761 - val_accuracy: 0.2708\n", "Epoch 60/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.5541 - accuracy: 0.7625 - val_loss: 1.6730 - val_accuracy: 0.2500\n", "Epoch 61/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.4906 - accuracy: 0.7713 - val_loss: 1.6541 - val_accuracy: 0.2865\n", "Epoch 62/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.5298 - accuracy: 0.7675 - val_loss: 1.7023 - val_accuracy: 0.2865\n", "Epoch 63/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.4985 - accuracy: 0.7875 - val_loss: 1.9830 - val_accuracy: 0.2344\n", "Epoch 64/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.4888 - accuracy: 0.7750 - val_loss: 1.6680 - val_accuracy: 0.2969\n", "Epoch 65/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.4419 - accuracy: 0.7875 - val_loss: 1.8855 - val_accuracy: 0.2656\n", "Epoch 66/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.4638 - accuracy: 0.7800 - val_loss: 1.6730 - val_accuracy: 0.3229\n", "Epoch 67/100\n", "25/25 [==============================] - 38s 2s/step - loss: 0.4665 - accuracy: 0.7875 - val_loss: 1.7077 - val_accuracy: 0.3229\n", "Epoch 68/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.4436 - accuracy: 0.7837 - val_loss: 1.8192 - val_accuracy: 0.3073\n", "Epoch 69/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.4956 - accuracy: 0.7800 - val_loss: 1.7902 - val_accuracy: 0.2917\n", "Epoch 70/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.4772 - accuracy: 0.7875 - val_loss: 1.7419 - val_accuracy: 0.2969\n", "Epoch 71/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.3955 - accuracy: 0.8263 - val_loss: 1.8084 - val_accuracy: 0.2708\n", "Epoch 72/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.4335 - accuracy: 0.8037 - val_loss: 1.8921 - val_accuracy: 0.2812\n", "Epoch 73/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.4031 - accuracy: 0.8138 - val_loss: 1.9873 - val_accuracy: 0.2656\n", "Epoch 74/100\n", "25/25 [==============================] - 38s 1s/step - loss: 1.2079 - accuracy: 0.6175 - val_loss: 1.9448 - val_accuracy: 0.2188\n", "Epoch 75/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.6683 - accuracy: 0.7350 - val_loss: 1.9602 - val_accuracy: 0.2396\n", "Epoch 76/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.5714 - accuracy: 0.7725 - val_loss: 1.5198 - val_accuracy: 0.3333\n", "Epoch 77/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.4513 - accuracy: 0.7950 - val_loss: 1.6600 - val_accuracy: 0.3021\n", "Epoch 78/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.4323 - accuracy: 0.8062 - val_loss: 1.7079 - val_accuracy: 0.3177\n", "Epoch 79/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.4245 - accuracy: 0.8037 - val_loss: 1.8053 - val_accuracy: 0.2708\n", "Epoch 80/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.4046 - accuracy: 0.8163 - val_loss: 1.8561 - val_accuracy: 0.2760\n", "Epoch 81/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.4789 - accuracy: 0.7775 - val_loss: 1.9273 - val_accuracy: 0.2552\n", "Epoch 82/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.4086 - accuracy: 0.8138 - val_loss: 2.1020 - val_accuracy: 0.2656\n", "Epoch 83/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.4059 - accuracy: 0.8238 - val_loss: 2.0258 - val_accuracy: 0.2917\n", "Epoch 84/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.3803 - accuracy: 0.8163 - val_loss: 1.7981 - val_accuracy: 0.2812\n", "Epoch 85/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.4042 - accuracy: 0.8138 - val_loss: 1.7933 - val_accuracy: 0.2083\n", "Epoch 86/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.4212 - accuracy: 0.8413 - val_loss: 1.6624 - val_accuracy: 0.2812\n", "Epoch 87/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.3808 - accuracy: 0.8363 - val_loss: 2.4115 - val_accuracy: 0.2292\n", "Epoch 88/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.6500 - accuracy: 0.7550 - val_loss: 1.9146 - val_accuracy: 0.2396\n", "Epoch 89/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.4128 - accuracy: 0.8188 - val_loss: 2.1177 - val_accuracy: 0.2500\n", "Epoch 90/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.3811 - accuracy: 0.8313 - val_loss: 2.1652 - val_accuracy: 0.2396\n", "Epoch 91/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.3584 - accuracy: 0.8363 - val_loss: 1.9992 - val_accuracy: 0.2604\n", "Epoch 92/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.3575 - accuracy: 0.8375 - val_loss: 1.9204 - val_accuracy: 0.2656\n", "Epoch 93/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.3357 - accuracy: 0.8413 - val_loss: 2.0910 - val_accuracy: 0.2396\n", "Epoch 94/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.4440 - accuracy: 0.8175 - val_loss: 2.1375 - val_accuracy: 0.2292\n", "Epoch 95/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.3838 - accuracy: 0.8300 - val_loss: 2.0104 - val_accuracy: 0.2708\n", "Epoch 96/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.3214 - accuracy: 0.8575 - val_loss: 2.2511 - val_accuracy: 0.2552\n", "Epoch 97/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.3630 - accuracy: 0.8300 - val_loss: 2.1232 - val_accuracy: 0.2604\n", "Epoch 98/100\n", "25/25 [==============================] - 38s 2s/step - loss: 0.3356 - accuracy: 0.8512 - val_loss: 2.0751 - val_accuracy: 0.2865\n", "Epoch 99/100\n", "25/25 [==============================] - 38s 2s/step - loss: 0.3300 - accuracy: 0.8475 - val_loss: 1.9835 - val_accuracy: 0.3073\n", "Epoch 100/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.3392 - accuracy: 0.8500 - val_loss: 2.2578 - val_accuracy: 0.2552\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model_pool_conv_drop.fit(train_ds,\n", " epochs=100,\n", " validation_data=validation_ds,\n", " validation_freq=1,\n", " callbacks=[tensorboard_cb])" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "8/8 [==============================] - 2s 269ms/step - loss: 2.1567 - accuracy: 0.2891\n" ] }, { "data": { "text/plain": [ "[2.1567039489746094, 0.2890625]" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model_pool_conv_drop.evaluate(test_ds)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Do warstw spłaszczonych, maxpooling i splotowych" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [], "source": [ "model_drop = keras.models.Sequential([\n", " keras.layers.Conv2D(filters=96, kernel_size=(11,11), strides=(4,4), activation='relu', input_shape=(227,227,3)),\n", " keras.layers.Dropout(.5),\n", " keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),\n", " keras.layers.Dropout(.5),\n", " keras.layers.Conv2D(filters=256, kernel_size=(5,5), strides=(1,1), activation='relu', padding=\"same\"),\n", " keras.layers.Dropout(.5),\n", " keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),\n", " keras.layers.Dropout(.5),\n", " keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding=\"same\"),\n", " keras.layers.Dropout(.5),\n", " keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding=\"same\"),\n", " keras.layers.Dropout(.5),\n", " keras.layers.Conv2D(filters=256, kernel_size=(3,3), strides=(1,1), activation='relu', padding=\"same\"),\n", " keras.layers.Dropout(.5),\n", " keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),\n", " keras.layers.Dropout(.5),\n", " keras.layers.Flatten(),\n", " keras.layers.Dense(4096, activation='relu'),\n", " keras.layers.Dropout(.5),\n", " keras.layers.Dense(4096, activation='relu'),\n", " keras.layers.Dropout(.5),\n", " keras.layers.Dense(10, activation='softmax')\n", "])" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING:absl:`lr` is deprecated, please use `learning_rate` instead, or use the legacy optimizer, e.g.,tf.keras.optimizers.legacy.SGD.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Model: \"sequential_6\"\n", "_________________________________________________________________\n", " Layer (type) Output Shape Param # \n", "=================================================================\n", " conv2d_30 (Conv2D) (None, 55, 55, 96) 34944 \n", " \n", " dropout_30 (Dropout) (None, 55, 55, 96) 0 \n", " \n", " max_pooling2d_18 (MaxPoolin (None, 27, 27, 96) 0 \n", " g2D) \n", " \n", " dropout_31 (Dropout) (None, 27, 27, 96) 0 \n", " \n", " conv2d_31 (Conv2D) (None, 27, 27, 256) 614656 \n", " \n", " dropout_32 (Dropout) (None, 27, 27, 256) 0 \n", " \n", " max_pooling2d_19 (MaxPoolin (None, 13, 13, 256) 0 \n", " g2D) \n", " \n", " dropout_33 (Dropout) (None, 13, 13, 256) 0 \n", " \n", " conv2d_32 (Conv2D) (None, 13, 13, 384) 885120 \n", " \n", " dropout_34 (Dropout) (None, 13, 13, 384) 0 \n", " \n", " conv2d_33 (Conv2D) (None, 13, 13, 384) 1327488 \n", " \n", " dropout_35 (Dropout) (None, 13, 13, 384) 0 \n", " \n", " conv2d_34 (Conv2D) (None, 13, 13, 256) 884992 \n", " \n", " dropout_36 (Dropout) (None, 13, 13, 256) 0 \n", " \n", " max_pooling2d_20 (MaxPoolin (None, 6, 6, 256) 0 \n", " g2D) \n", " \n", " dropout_37 (Dropout) (None, 6, 6, 256) 0 \n", " \n", " flatten_6 (Flatten) (None, 9216) 0 \n", " \n", " dense_18 (Dense) (None, 4096) 37752832 \n", " \n", " dropout_38 (Dropout) (None, 4096) 0 \n", " \n", " dense_19 (Dense) (None, 4096) 16781312 \n", " \n", " dropout_39 (Dropout) (None, 4096) 0 \n", " \n", " dense_20 (Dense) (None, 10) 40970 \n", " \n", "=================================================================\n", "Total params: 58,322,314\n", "Trainable params: 58,322,314\n", "Non-trainable params: 0\n", "_________________________________________________________________\n" ] } ], "source": [ "model_drop.compile(loss='sparse_categorical_crossentropy', optimizer=tf.optimizers.SGD(lr=.001), metrics=['accuracy'])\n", "model_drop.summary()" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/100\n", "25/25 [==============================] - 39s 1s/step - loss: 1.9247 - accuracy: 0.1900 - val_loss: 2.2491 - val_accuracy: 0.1875\n", "Epoch 2/100\n", "25/25 [==============================] - 38s 2s/step - loss: 1.7130 - accuracy: 0.2062 - val_loss: 2.2165 - val_accuracy: 0.1771\n", "Epoch 3/100\n", "25/25 [==============================] - 39s 2s/step - loss: 1.6761 - accuracy: 0.2350 - val_loss: 2.1936 - val_accuracy: 0.2292\n", "Epoch 4/100\n", "25/25 [==============================] - 37s 1s/step - loss: 1.6171 - accuracy: 0.2500 - val_loss: 2.1467 - val_accuracy: 0.1927\n", "Epoch 5/100\n", "25/25 [==============================] - 37s 1s/step - loss: 1.5317 - accuracy: 0.3175 - val_loss: 2.0777 - val_accuracy: 0.1927\n", "Epoch 6/100\n", "25/25 [==============================] - 37s 1s/step - loss: 1.4446 - accuracy: 0.3938 - val_loss: 2.0430 - val_accuracy: 0.1979\n", "Epoch 7/100\n", "25/25 [==============================] - 37s 1s/step - loss: 1.3851 - accuracy: 0.3787 - val_loss: 1.9749 - val_accuracy: 0.2188\n", "Epoch 8/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.3739 - accuracy: 0.4100 - val_loss: 1.9833 - val_accuracy: 0.2135\n", "Epoch 9/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.3105 - accuracy: 0.4212 - val_loss: 1.9121 - val_accuracy: 0.2448\n", "Epoch 10/100\n", "25/25 [==============================] - 37s 1s/step - loss: 1.2919 - accuracy: 0.4212 - val_loss: 1.9497 - val_accuracy: 0.2240\n", "Epoch 11/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.2476 - accuracy: 0.4750 - val_loss: 1.9766 - val_accuracy: 0.2083\n", "Epoch 12/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.2704 - accuracy: 0.4325 - val_loss: 2.0245 - val_accuracy: 0.1823\n", "Epoch 13/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.1780 - accuracy: 0.4725 - val_loss: 1.9085 - val_accuracy: 0.2240\n", "Epoch 14/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.1744 - accuracy: 0.4750 - val_loss: 1.8902 - val_accuracy: 0.2135\n", "Epoch 15/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.2046 - accuracy: 0.4638 - val_loss: 1.9528 - val_accuracy: 0.2031\n", "Epoch 16/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.2021 - accuracy: 0.5000 - val_loss: 1.9438 - val_accuracy: 0.2031\n", "Epoch 17/100\n", "25/25 [==============================] - 37s 1s/step - loss: 1.1076 - accuracy: 0.5113 - val_loss: 1.9135 - val_accuracy: 0.2031\n", "Epoch 18/100\n", "25/25 [==============================] - 40s 2s/step - loss: 1.0509 - accuracy: 0.5250 - val_loss: 1.8978 - val_accuracy: 0.2135\n", "Epoch 19/100\n", "25/25 [==============================] - 37s 1s/step - loss: 1.1375 - accuracy: 0.5163 - val_loss: 1.8838 - val_accuracy: 0.2135\n", "Epoch 20/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.0640 - accuracy: 0.5462 - val_loss: 1.9466 - val_accuracy: 0.2031\n", "Epoch 21/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.0863 - accuracy: 0.5163 - val_loss: 1.9305 - val_accuracy: 0.2083\n", "Epoch 22/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.0853 - accuracy: 0.5288 - val_loss: 1.9383 - val_accuracy: 0.2083\n", "Epoch 23/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.0640 - accuracy: 0.5288 - val_loss: 1.9474 - val_accuracy: 0.2031\n", "Epoch 24/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.0696 - accuracy: 0.5437 - val_loss: 1.8716 - val_accuracy: 0.2031\n", "Epoch 25/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.0901 - accuracy: 0.5387 - val_loss: 1.9141 - val_accuracy: 0.1979\n", "Epoch 26/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.0558 - accuracy: 0.5312 - val_loss: 1.8808 - val_accuracy: 0.1927\n", "Epoch 27/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.0350 - accuracy: 0.5562 - val_loss: 1.9078 - val_accuracy: 0.2083\n", "Epoch 28/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.0032 - accuracy: 0.5487 - val_loss: 1.9923 - val_accuracy: 0.1823\n", "Epoch 29/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.0444 - accuracy: 0.5525 - val_loss: 1.8429 - val_accuracy: 0.2135\n", "Epoch 30/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.0202 - accuracy: 0.5512 - val_loss: 1.8479 - val_accuracy: 0.2135\n", "Epoch 31/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.0019 - accuracy: 0.5537 - val_loss: 1.9275 - val_accuracy: 0.2135\n", "Epoch 32/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.0272 - accuracy: 0.5437 - val_loss: 1.9026 - val_accuracy: 0.2031\n", "Epoch 33/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.9633 - accuracy: 0.5663 - val_loss: 1.9349 - val_accuracy: 0.2031\n", "Epoch 34/100\n", "25/25 [==============================] - 36s 1s/step - loss: 1.0038 - accuracy: 0.5688 - val_loss: 1.9385 - val_accuracy: 0.1979\n", "Epoch 35/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.9373 - accuracy: 0.5900 - val_loss: 2.0208 - val_accuracy: 0.2031\n", "Epoch 36/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.9253 - accuracy: 0.5888 - val_loss: 1.9166 - val_accuracy: 0.2031\n", "Epoch 37/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.9618 - accuracy: 0.5788 - val_loss: 1.8177 - val_accuracy: 0.1979\n", "Epoch 38/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.9833 - accuracy: 0.5688 - val_loss: 1.9429 - val_accuracy: 0.1979\n", "Epoch 39/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.9389 - accuracy: 0.5888 - val_loss: 1.8995 - val_accuracy: 0.1979\n", "Epoch 40/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.9457 - accuracy: 0.5775 - val_loss: 1.9466 - val_accuracy: 0.2083\n", "Epoch 41/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.9740 - accuracy: 0.5738 - val_loss: 1.7971 - val_accuracy: 0.2240\n", "Epoch 42/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.9194 - accuracy: 0.5975 - val_loss: 2.0969 - val_accuracy: 0.1823\n", "Epoch 43/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.9476 - accuracy: 0.5900 - val_loss: 1.8180 - val_accuracy: 0.2083\n", "Epoch 44/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.9245 - accuracy: 0.6000 - val_loss: 1.8373 - val_accuracy: 0.2188\n", "Epoch 45/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.9001 - accuracy: 0.5925 - val_loss: 1.8846 - val_accuracy: 0.2083\n", "Epoch 46/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.8989 - accuracy: 0.5962 - val_loss: 2.0002 - val_accuracy: 0.1979\n", "Epoch 47/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.8539 - accuracy: 0.6288 - val_loss: 1.9201 - val_accuracy: 0.1927\n", "Epoch 48/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.9051 - accuracy: 0.6263 - val_loss: 1.9303 - val_accuracy: 0.2083\n", "Epoch 49/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.8572 - accuracy: 0.6363 - val_loss: 1.8043 - val_accuracy: 0.2135\n", "Epoch 50/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.8245 - accuracy: 0.6513 - val_loss: 1.9120 - val_accuracy: 0.2083\n", "Epoch 51/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.8384 - accuracy: 0.6463 - val_loss: 1.8960 - val_accuracy: 0.2031\n", "Epoch 52/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.8193 - accuracy: 0.6375 - val_loss: 1.6472 - val_accuracy: 0.2969\n", "Epoch 53/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.8076 - accuracy: 0.6712 - val_loss: 2.0521 - val_accuracy: 0.2031\n", "Epoch 54/100\n", "25/25 [==============================] - 38s 1s/step - loss: 0.8572 - accuracy: 0.6225 - val_loss: 2.0045 - val_accuracy: 0.2135\n", "Epoch 55/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.8142 - accuracy: 0.6600 - val_loss: 1.9518 - val_accuracy: 0.2083\n", "Epoch 56/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.8600 - accuracy: 0.6538 - val_loss: 1.7073 - val_accuracy: 0.2604\n", "Epoch 57/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.7840 - accuracy: 0.6850 - val_loss: 1.9704 - val_accuracy: 0.2031\n", "Epoch 58/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.7923 - accuracy: 0.6825 - val_loss: 1.8118 - val_accuracy: 0.2500\n", "Epoch 59/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.7204 - accuracy: 0.6938 - val_loss: 1.9559 - val_accuracy: 0.2292\n", "Epoch 60/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.7991 - accuracy: 0.6488 - val_loss: 1.9263 - val_accuracy: 0.2135\n", "Epoch 61/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.7813 - accuracy: 0.6725 - val_loss: 1.8279 - val_accuracy: 0.2448\n", "Epoch 62/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.7738 - accuracy: 0.6750 - val_loss: 2.1088 - val_accuracy: 0.2188\n", "Epoch 63/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.7300 - accuracy: 0.6938 - val_loss: 2.0727 - val_accuracy: 0.2135\n", "Epoch 64/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.7127 - accuracy: 0.7025 - val_loss: 1.9929 - val_accuracy: 0.2292\n", "Epoch 65/100\n", "25/25 [==============================] - 38s 1s/step - loss: 0.7034 - accuracy: 0.7200 - val_loss: 2.1949 - val_accuracy: 0.1979\n", "Epoch 66/100\n", "25/25 [==============================] - 38s 1s/step - loss: 0.7238 - accuracy: 0.6888 - val_loss: 2.1694 - val_accuracy: 0.2240\n", "Epoch 67/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.7244 - accuracy: 0.7000 - val_loss: 2.2779 - val_accuracy: 0.2031\n", "Epoch 68/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.6549 - accuracy: 0.7237 - val_loss: 2.1810 - val_accuracy: 0.2240\n", "Epoch 69/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.5940 - accuracy: 0.7487 - val_loss: 1.9802 - val_accuracy: 0.2552\n", "Epoch 70/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.6346 - accuracy: 0.7300 - val_loss: 2.4555 - val_accuracy: 0.2083\n", "Epoch 71/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.5913 - accuracy: 0.7437 - val_loss: 2.3821 - val_accuracy: 0.2240\n", "Epoch 72/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.5870 - accuracy: 0.7312 - val_loss: 2.0892 - val_accuracy: 0.2292\n", "Epoch 73/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.8009 - accuracy: 0.6600 - val_loss: 2.1879 - val_accuracy: 0.2292\n", "Epoch 74/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.6669 - accuracy: 0.7125 - val_loss: 2.1540 - val_accuracy: 0.2344\n", "Epoch 75/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.6351 - accuracy: 0.7325 - val_loss: 1.9588 - val_accuracy: 0.2344\n", "Epoch 76/100\n", "25/25 [==============================] - 38s 2s/step - loss: 0.6817 - accuracy: 0.7237 - val_loss: 2.0462 - val_accuracy: 0.2292\n", "Epoch 77/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.6122 - accuracy: 0.7538 - val_loss: 2.0432 - val_accuracy: 0.2344\n", "Epoch 78/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.5707 - accuracy: 0.7625 - val_loss: 2.4277 - val_accuracy: 0.2240\n", "Epoch 79/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.6518 - accuracy: 0.7300 - val_loss: 1.9735 - val_accuracy: 0.2448\n", "Epoch 80/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.5680 - accuracy: 0.7613 - val_loss: 1.8923 - val_accuracy: 0.2760\n", "Epoch 81/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.6130 - accuracy: 0.7412 - val_loss: 1.9575 - val_accuracy: 0.2812\n", "Epoch 82/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.5543 - accuracy: 0.7750 - val_loss: 1.9804 - val_accuracy: 0.2656\n", "Epoch 83/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.5484 - accuracy: 0.7588 - val_loss: 2.0896 - val_accuracy: 0.2552\n", "Epoch 84/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.5875 - accuracy: 0.7500 - val_loss: 2.1894 - val_accuracy: 0.2344\n", "Epoch 85/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.5803 - accuracy: 0.7588 - val_loss: 2.0186 - val_accuracy: 0.2240\n", "Epoch 86/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.5683 - accuracy: 0.7688 - val_loss: 2.3338 - val_accuracy: 0.2344\n", "Epoch 87/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.5192 - accuracy: 0.7613 - val_loss: 2.2686 - val_accuracy: 0.2240\n", "Epoch 88/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.4986 - accuracy: 0.7713 - val_loss: 2.2567 - val_accuracy: 0.2344\n", "Epoch 89/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.4916 - accuracy: 0.7925 - val_loss: 2.4030 - val_accuracy: 0.2344\n", "Epoch 90/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.5215 - accuracy: 0.7700 - val_loss: 2.1048 - val_accuracy: 0.2396\n", "Epoch 91/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.4871 - accuracy: 0.7850 - val_loss: 2.4577 - val_accuracy: 0.2292\n", "Epoch 92/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.5142 - accuracy: 0.7688 - val_loss: 2.3448 - val_accuracy: 0.2344\n", "Epoch 93/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.5245 - accuracy: 0.7837 - val_loss: 2.6430 - val_accuracy: 0.2083\n", "Epoch 94/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.4893 - accuracy: 0.7700 - val_loss: 2.2934 - val_accuracy: 0.2865\n", "Epoch 95/100\n", "25/25 [==============================] - 39s 2s/step - loss: 0.5475 - accuracy: 0.7675 - val_loss: 1.9955 - val_accuracy: 0.2656\n", "Epoch 96/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.4791 - accuracy: 0.7900 - val_loss: 2.2937 - val_accuracy: 0.2448\n", "Epoch 97/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.5287 - accuracy: 0.7750 - val_loss: 2.1882 - val_accuracy: 0.2344\n", "Epoch 98/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.4331 - accuracy: 0.8150 - val_loss: 2.3296 - val_accuracy: 0.2396\n", "Epoch 99/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.4675 - accuracy: 0.8000 - val_loss: 2.7121 - val_accuracy: 0.2240\n", "Epoch 100/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.5437 - accuracy: 0.7738 - val_loss: 2.6578 - val_accuracy: 0.2292\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model_drop.fit(train_ds,\n", " epochs=100,\n", " validation_data=validation_ds,\n", " validation_freq=1,\n", " callbacks=[tensorboard_cb])" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "8/8 [==============================] - 3s 269ms/step - loss: 2.6610 - accuracy: 0.2227\n" ] }, { "data": { "text/plain": [ "[2.6609723567962646, 0.22265625]" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model_drop.evaluate(test_ds)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Batch Regularization" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Bez dropoutu" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [], "source": [ "model_batch = keras.models.Sequential([\n", " keras.layers.Conv2D(filters=96, kernel_size=(11,11), strides=(4,4), activation='relu', input_shape=(227,227,3)),\n", " keras.layers.BatchNormalization(),\n", " keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),\n", " keras.layers.Conv2D(filters=256, kernel_size=(5,5), strides=(1,1), activation='relu', padding=\"same\"),\n", " keras.layers.BatchNormalization(),\n", " keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),\n", " keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding=\"same\"),\n", " keras.layers.BatchNormalization(),\n", " keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding=\"same\"),\n", " keras.layers.BatchNormalization(),\n", " keras.layers.Conv2D(filters=256, kernel_size=(3,3), strides=(1,1), activation='relu', padding=\"same\"),\n", " keras.layers.BatchNormalization(),\n", " keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),\n", " keras.layers.Flatten(),\n", " keras.layers.Dense(4096, activation='relu'),\n", " keras.layers.Dense(4096, activation='relu'),\n", " keras.layers.Dense(10, activation='softmax')\n", "])" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING:absl:`lr` is deprecated, please use `learning_rate` instead, or use the legacy optimizer, e.g.,tf.keras.optimizers.legacy.SGD.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Model: \"sequential_7\"\n", "_________________________________________________________________\n", " Layer (type) Output Shape Param # \n", "=================================================================\n", " conv2d_35 (Conv2D) (None, 55, 55, 96) 34944 \n", " \n", " batch_normalization (BatchN (None, 55, 55, 96) 384 \n", " ormalization) \n", " \n", " max_pooling2d_21 (MaxPoolin (None, 27, 27, 96) 0 \n", " g2D) \n", " \n", " conv2d_36 (Conv2D) (None, 27, 27, 256) 614656 \n", " \n", " batch_normalization_1 (Batc (None, 27, 27, 256) 1024 \n", " hNormalization) \n", " \n", " max_pooling2d_22 (MaxPoolin (None, 13, 13, 256) 0 \n", " g2D) \n", " \n", " conv2d_37 (Conv2D) (None, 13, 13, 384) 885120 \n", " \n", " batch_normalization_2 (Batc (None, 13, 13, 384) 1536 \n", " hNormalization) \n", " \n", " conv2d_38 (Conv2D) (None, 13, 13, 384) 1327488 \n", " \n", " batch_normalization_3 (Batc (None, 13, 13, 384) 1536 \n", " hNormalization) \n", " \n", " conv2d_39 (Conv2D) (None, 13, 13, 256) 884992 \n", " \n", " batch_normalization_4 (Batc (None, 13, 13, 256) 1024 \n", " hNormalization) \n", " \n", " max_pooling2d_23 (MaxPoolin (None, 6, 6, 256) 0 \n", " g2D) \n", " \n", " flatten_7 (Flatten) (None, 9216) 0 \n", " \n", " dense_21 (Dense) (None, 4096) 37752832 \n", " \n", " dense_22 (Dense) (None, 4096) 16781312 \n", " \n", " dense_23 (Dense) (None, 10) 40970 \n", " \n", "=================================================================\n", "Total params: 58,327,818\n", "Trainable params: 58,325,066\n", "Non-trainable params: 2,752\n", "_________________________________________________________________\n" ] } ], "source": [ "model_batch.compile(loss='sparse_categorical_crossentropy', optimizer=tf.optimizers.SGD(lr=.001), metrics=['accuracy'])\n", "model_batch.summary()" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/100\n", "25/25 [==============================] - 40s 1s/step - loss: 3.1972 - accuracy: 0.5163 - val_loss: 2.0980 - val_accuracy: 0.1979\n", "Epoch 2/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.4927 - accuracy: 0.8238 - val_loss: 2.2667 - val_accuracy: 0.1823\n", "Epoch 3/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.2552 - accuracy: 0.9150 - val_loss: 2.7730 - val_accuracy: 0.1771\n", "Epoch 4/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.1681 - accuracy: 0.9475 - val_loss: 3.5623 - val_accuracy: 0.1719\n", "Epoch 5/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0812 - accuracy: 0.9837 - val_loss: 4.0812 - val_accuracy: 0.1667\n", "Epoch 6/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0845 - accuracy: 0.9825 - val_loss: 4.5273 - val_accuracy: 0.1771\n", "Epoch 7/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0401 - accuracy: 0.9962 - val_loss: 5.9585 - val_accuracy: 0.1823\n", "Epoch 8/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0248 - accuracy: 0.9987 - val_loss: 6.4777 - val_accuracy: 0.1875\n", "Epoch 9/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.0303 - accuracy: 0.9950 - val_loss: 6.8994 - val_accuracy: 0.1979\n", "Epoch 10/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.0212 - accuracy: 0.9987 - val_loss: 6.7732 - val_accuracy: 0.2708\n", "Epoch 11/100\n", "25/25 [==============================] - 39s 2s/step - loss: 0.0169 - accuracy: 0.9975 - val_loss: 8.2072 - val_accuracy: 0.2135\n", "Epoch 12/100\n", "25/25 [==============================] - 39s 2s/step - loss: 0.0134 - accuracy: 1.0000 - val_loss: 8.3724 - val_accuracy: 0.2396\n", "Epoch 13/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0118 - accuracy: 0.9987 - val_loss: 8.3638 - val_accuracy: 0.2812\n", "Epoch 14/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0092 - accuracy: 1.0000 - val_loss: 8.3157 - val_accuracy: 0.2812\n", "Epoch 15/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0068 - accuracy: 1.0000 - val_loss: 8.0873 - val_accuracy: 0.3021\n", "Epoch 16/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.0070 - accuracy: 1.0000 - val_loss: 7.9629 - val_accuracy: 0.2969\n", "Epoch 17/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0056 - accuracy: 1.0000 - val_loss: 6.8316 - val_accuracy: 0.3281\n", "Epoch 18/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.0048 - accuracy: 1.0000 - val_loss: 6.1176 - val_accuracy: 0.3385\n", "Epoch 19/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.0095 - accuracy: 0.9987 - val_loss: 4.9330 - val_accuracy: 0.3333\n", "Epoch 20/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0088 - accuracy: 1.0000 - val_loss: 4.0413 - val_accuracy: 0.4271\n", "Epoch 21/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0061 - accuracy: 1.0000 - val_loss: 3.4398 - val_accuracy: 0.4427\n", "Epoch 22/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.0046 - accuracy: 1.0000 - val_loss: 2.4394 - val_accuracy: 0.5208\n", "Epoch 23/100\n", "25/25 [==============================] - 35s 1s/step - loss: 0.0033 - accuracy: 1.0000 - val_loss: 1.8135 - val_accuracy: 0.5990\n", "Epoch 24/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0042 - accuracy: 1.0000 - val_loss: 1.4458 - val_accuracy: 0.6823\n", "Epoch 25/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0036 - accuracy: 1.0000 - val_loss: 1.0700 - val_accuracy: 0.7500\n", "Epoch 26/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0031 - accuracy: 1.0000 - val_loss: 0.6903 - val_accuracy: 0.8385\n", "Epoch 27/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0047 - accuracy: 1.0000 - val_loss: 0.2748 - val_accuracy: 0.9010\n", "Epoch 28/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0060 - accuracy: 1.0000 - val_loss: 0.6901 - val_accuracy: 0.8229\n", "Epoch 29/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0050 - accuracy: 1.0000 - val_loss: 0.3001 - val_accuracy: 0.9115\n", "Epoch 30/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0039 - accuracy: 1.0000 - val_loss: 0.2927 - val_accuracy: 0.9167\n", "Epoch 31/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0037 - accuracy: 1.0000 - val_loss: 0.2734 - val_accuracy: 0.9323\n", "Epoch 32/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0028 - accuracy: 1.0000 - val_loss: 0.2591 - val_accuracy: 0.9271\n", "Epoch 33/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0063 - accuracy: 0.9987 - val_loss: 0.2963 - val_accuracy: 0.9115\n", "Epoch 34/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0033 - accuracy: 1.0000 - val_loss: 0.2725 - val_accuracy: 0.9219\n", "Epoch 35/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0024 - accuracy: 1.0000 - val_loss: 0.2243 - val_accuracy: 0.9427\n", "Epoch 36/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0031 - accuracy: 1.0000 - val_loss: 0.2625 - val_accuracy: 0.9375\n", "Epoch 37/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0022 - accuracy: 1.0000 - val_loss: 0.2448 - val_accuracy: 0.9271\n", "Epoch 38/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0028 - accuracy: 1.0000 - val_loss: 0.2700 - val_accuracy: 0.9010\n", "Epoch 39/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0053 - accuracy: 1.0000 - val_loss: 0.2650 - val_accuracy: 0.9167\n", "Epoch 40/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0030 - accuracy: 1.0000 - val_loss: 0.2695 - val_accuracy: 0.9167\n", "Epoch 41/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0019 - accuracy: 1.0000 - val_loss: 0.2012 - val_accuracy: 0.9375\n", "Epoch 42/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0020 - accuracy: 1.0000 - val_loss: 0.2457 - val_accuracy: 0.9271\n", "Epoch 43/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0017 - accuracy: 1.0000 - val_loss: 0.2456 - val_accuracy: 0.9271\n", "Epoch 44/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0020 - accuracy: 1.0000 - val_loss: 0.2094 - val_accuracy: 0.9323\n", "Epoch 45/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0013 - accuracy: 1.0000 - val_loss: 0.2487 - val_accuracy: 0.9167\n", "Epoch 46/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0012 - accuracy: 1.0000 - val_loss: 0.2507 - val_accuracy: 0.9167\n", "Epoch 47/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0015 - accuracy: 1.0000 - val_loss: 0.2457 - val_accuracy: 0.9167\n", "Epoch 48/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.0019 - accuracy: 1.0000 - val_loss: 0.1729 - val_accuracy: 0.9375\n", "Epoch 49/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0012 - accuracy: 1.0000 - val_loss: 0.2499 - val_accuracy: 0.9167\n", "Epoch 50/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0013 - accuracy: 1.0000 - val_loss: 0.2496 - val_accuracy: 0.9271\n", "Epoch 51/100\n", "25/25 [==============================] - 36s 1s/step - loss: 9.5720e-04 - accuracy: 1.0000 - val_loss: 0.2233 - val_accuracy: 0.9375\n", "Epoch 52/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0015 - accuracy: 1.0000 - val_loss: 0.2813 - val_accuracy: 0.9219\n", "Epoch 53/100\n", "25/25 [==============================] - 36s 1s/step - loss: 9.6567e-04 - accuracy: 1.0000 - val_loss: 0.2644 - val_accuracy: 0.9219\n", "Epoch 54/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0012 - accuracy: 1.0000 - val_loss: 0.2469 - val_accuracy: 0.9271\n", "Epoch 55/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0010 - accuracy: 1.0000 - val_loss: 0.2527 - val_accuracy: 0.9219\n", "Epoch 56/100\n", "25/25 [==============================] - 36s 1s/step - loss: 8.3443e-04 - accuracy: 1.0000 - val_loss: 0.2546 - val_accuracy: 0.9167\n", "Epoch 57/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0145 - accuracy: 0.9950 - val_loss: 0.2987 - val_accuracy: 0.9115\n", "Epoch 58/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0025 - accuracy: 1.0000 - val_loss: 0.2696 - val_accuracy: 0.9115\n", "Epoch 59/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.0016 - accuracy: 1.0000 - val_loss: 0.2572 - val_accuracy: 0.9271\n", "Epoch 60/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.0014 - accuracy: 1.0000 - val_loss: 0.2536 - val_accuracy: 0.9167\n", "Epoch 61/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0024 - accuracy: 1.0000 - val_loss: 0.2361 - val_accuracy: 0.9271\n", "Epoch 62/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0016 - accuracy: 1.0000 - val_loss: 0.2345 - val_accuracy: 0.9271\n", "Epoch 63/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0011 - accuracy: 1.0000 - val_loss: 0.2381 - val_accuracy: 0.9219\n", "Epoch 64/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0015 - accuracy: 1.0000 - val_loss: 0.1838 - val_accuracy: 0.9427\n", "Epoch 65/100\n", "25/25 [==============================] - 38s 2s/step - loss: 0.0012 - accuracy: 1.0000 - val_loss: 0.2077 - val_accuracy: 0.9271\n", "Epoch 66/100\n", "25/25 [==============================] - 36s 1s/step - loss: 9.0273e-04 - accuracy: 1.0000 - val_loss: 0.2517 - val_accuracy: 0.9219\n", "Epoch 67/100\n", "25/25 [==============================] - 36s 1s/step - loss: 9.5187e-04 - accuracy: 1.0000 - val_loss: 0.2012 - val_accuracy: 0.9219\n", "Epoch 68/100\n", "25/25 [==============================] - 36s 1s/step - loss: 9.6461e-04 - accuracy: 1.0000 - val_loss: 0.2327 - val_accuracy: 0.9323\n", "Epoch 69/100\n", "25/25 [==============================] - 37s 1s/step - loss: 9.4358e-04 - accuracy: 1.0000 - val_loss: 0.2500 - val_accuracy: 0.9271\n", "Epoch 70/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.0013 - accuracy: 1.0000 - val_loss: 0.3345 - val_accuracy: 0.8698\n", "Epoch 71/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0012 - accuracy: 1.0000 - val_loss: 0.2188 - val_accuracy: 0.9271\n", "Epoch 72/100\n", "25/25 [==============================] - 36s 1s/step - loss: 6.7185e-04 - accuracy: 1.0000 - val_loss: 0.2477 - val_accuracy: 0.9271\n", "Epoch 73/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0019 - accuracy: 1.0000 - val_loss: 0.2466 - val_accuracy: 0.9167\n", "Epoch 74/100\n", "25/25 [==============================] - 36s 1s/step - loss: 8.7229e-04 - accuracy: 1.0000 - val_loss: 0.2320 - val_accuracy: 0.9115\n", "Epoch 75/100\n", "25/25 [==============================] - 36s 1s/step - loss: 6.4097e-04 - accuracy: 1.0000 - val_loss: 0.2350 - val_accuracy: 0.9115\n", "Epoch 76/100\n", "25/25 [==============================] - 36s 1s/step - loss: 6.8064e-04 - accuracy: 1.0000 - val_loss: 0.2128 - val_accuracy: 0.9323\n", "Epoch 77/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0013 - accuracy: 1.0000 - val_loss: 0.2293 - val_accuracy: 0.9323\n", "Epoch 78/100\n", "25/25 [==============================] - 36s 1s/step - loss: 6.8025e-04 - accuracy: 1.0000 - val_loss: 0.2027 - val_accuracy: 0.9271\n", "Epoch 79/100\n", "25/25 [==============================] - 36s 1s/step - loss: 7.1451e-04 - accuracy: 1.0000 - val_loss: 0.2372 - val_accuracy: 0.9219\n", "Epoch 80/100\n", "25/25 [==============================] - 36s 1s/step - loss: 8.0297e-04 - accuracy: 1.0000 - val_loss: 0.2419 - val_accuracy: 0.9219\n", "Epoch 81/100\n", "25/25 [==============================] - 36s 1s/step - loss: 5.7819e-04 - accuracy: 1.0000 - val_loss: 0.2482 - val_accuracy: 0.9115\n", "Epoch 82/100\n", "25/25 [==============================] - 36s 1s/step - loss: 5.6841e-04 - accuracy: 1.0000 - val_loss: 0.2458 - val_accuracy: 0.9219\n", "Epoch 83/100\n", "25/25 [==============================] - 36s 1s/step - loss: 6.9683e-04 - accuracy: 1.0000 - val_loss: 0.2376 - val_accuracy: 0.9219\n", "Epoch 84/100\n", "25/25 [==============================] - 37s 1s/step - loss: 0.0012 - accuracy: 1.0000 - val_loss: 0.2349 - val_accuracy: 0.9167\n", "Epoch 85/100\n", "25/25 [==============================] - 36s 1s/step - loss: 8.7577e-04 - accuracy: 1.0000 - val_loss: 0.2515 - val_accuracy: 0.9219\n", "Epoch 86/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0011 - accuracy: 1.0000 - val_loss: 0.2352 - val_accuracy: 0.9271\n", "Epoch 87/100\n", "25/25 [==============================] - 36s 1s/step - loss: 8.1894e-04 - accuracy: 1.0000 - val_loss: 0.2092 - val_accuracy: 0.9271\n", "Epoch 88/100\n", "25/25 [==============================] - 36s 1s/step - loss: 6.5846e-04 - accuracy: 1.0000 - val_loss: 0.2377 - val_accuracy: 0.9271\n", "Epoch 89/100\n", "25/25 [==============================] - 36s 1s/step - loss: 4.9351e-04 - accuracy: 1.0000 - val_loss: 0.2482 - val_accuracy: 0.9219\n", "Epoch 90/100\n", "25/25 [==============================] - 36s 1s/step - loss: 5.2903e-04 - accuracy: 1.0000 - val_loss: 0.2308 - val_accuracy: 0.9323\n", "Epoch 91/100\n", "25/25 [==============================] - 36s 1s/step - loss: 6.2774e-04 - accuracy: 1.0000 - val_loss: 0.2199 - val_accuracy: 0.9323\n", "Epoch 92/100\n", "25/25 [==============================] - 36s 1s/step - loss: 0.0012 - accuracy: 1.0000 - val_loss: 0.2666 - val_accuracy: 0.9219\n", "Epoch 93/100\n", "25/25 [==============================] - 36s 1s/step - loss: 7.7254e-04 - accuracy: 1.0000 - val_loss: 0.2651 - val_accuracy: 0.9219\n", "Epoch 94/100\n", "25/25 [==============================] - 36s 1s/step - loss: 7.5749e-04 - accuracy: 1.0000 - val_loss: 0.2622 - val_accuracy: 0.9219\n", "Epoch 95/100\n", "25/25 [==============================] - 36s 1s/step - loss: 5.5629e-04 - accuracy: 1.0000 - val_loss: 0.2442 - val_accuracy: 0.9219\n", "Epoch 96/100\n", "25/25 [==============================] - 36s 1s/step - loss: 6.3401e-04 - accuracy: 1.0000 - val_loss: 0.2543 - val_accuracy: 0.9167\n", "Epoch 97/100\n", "25/25 [==============================] - 36s 1s/step - loss: 6.4368e-04 - accuracy: 1.0000 - val_loss: 0.2596 - val_accuracy: 0.9271\n", "Epoch 98/100\n", "25/25 [==============================] - 36s 1s/step - loss: 4.0174e-04 - accuracy: 1.0000 - val_loss: 0.2583 - val_accuracy: 0.9271\n", "Epoch 99/100\n", "25/25 [==============================] - 36s 1s/step - loss: 7.2224e-04 - accuracy: 1.0000 - val_loss: 0.2414 - val_accuracy: 0.9323\n", "Epoch 100/100\n", "25/25 [==============================] - 36s 1s/step - loss: 4.4288e-04 - accuracy: 1.0000 - val_loss: 0.2390 - val_accuracy: 0.9271\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model_batch.fit(train_ds,\n", " epochs=100,\n", " validation_data=validation_ds,\n", " validation_freq=1,\n", " callbacks=[tensorboard_cb])" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "8/8 [==============================] - 5s 294ms/step - loss: 0.2599 - accuracy: 0.9180\n" ] }, { "data": { "text/plain": [ "[0.25985682010650635, 0.91796875]" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model_batch.evaluate(test_ds)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Z dropoutem" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [], "source": [ "model_batch_drop = keras.models.Sequential([\n", " keras.layers.Conv2D(filters=96, kernel_size=(11,11), strides=(4,4), activation='relu', input_shape=(227,227,3)),\n", " keras.layers.BatchNormalization(),\n", " keras.layers.Dropout(.5),\n", " keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),\n", " keras.layers.Dropout(.5),\n", " keras.layers.Conv2D(filters=256, kernel_size=(5,5), strides=(1,1), activation='relu', padding=\"same\"),\n", " keras.layers.BatchNormalization(),\n", " keras.layers.Dropout(.5),\n", " keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),\n", " keras.layers.Dropout(.5),\n", " keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding=\"same\"),\n", " keras.layers.BatchNormalization(),\n", " keras.layers.Dropout(.5),\n", " keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding=\"same\"),\n", " keras.layers.BatchNormalization(),\n", " keras.layers.Dropout(.5),\n", " keras.layers.Conv2D(filters=256, kernel_size=(3,3), strides=(1,1), activation='relu', padding=\"same\"),\n", " keras.layers.BatchNormalization(),\n", " keras.layers.Dropout(.5),\n", " keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),\n", " keras.layers.Dropout(.5),\n", " keras.layers.Flatten(),\n", " keras.layers.Dense(4096, activation='relu'),\n", " keras.layers.Dropout(.5),\n", " keras.layers.Dense(4096, activation='relu'),\n", " keras.layers.Dropout(.5),\n", " keras.layers.Dense(10, activation='softmax')\n", "])" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING:absl:`lr` is deprecated, please use `learning_rate` instead, or use the legacy optimizer, e.g.,tf.keras.optimizers.legacy.SGD.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Model: \"sequential_8\"\n", "_________________________________________________________________\n", " Layer (type) Output Shape Param # \n", "=================================================================\n", " conv2d_40 (Conv2D) (None, 55, 55, 96) 34944 \n", " \n", " batch_normalization_5 (Batc (None, 55, 55, 96) 384 \n", " hNormalization) \n", " \n", " dropout_40 (Dropout) (None, 55, 55, 96) 0 \n", " \n", " max_pooling2d_24 (MaxPoolin (None, 27, 27, 96) 0 \n", " g2D) \n", " \n", " dropout_41 (Dropout) (None, 27, 27, 96) 0 \n", " \n", " conv2d_41 (Conv2D) (None, 27, 27, 256) 614656 \n", " \n", " batch_normalization_6 (Batc (None, 27, 27, 256) 1024 \n", " hNormalization) \n", " \n", " dropout_42 (Dropout) (None, 27, 27, 256) 0 \n", " \n", " max_pooling2d_25 (MaxPoolin (None, 13, 13, 256) 0 \n", " g2D) \n", " \n", " dropout_43 (Dropout) (None, 13, 13, 256) 0 \n", " \n", " conv2d_42 (Conv2D) (None, 13, 13, 384) 885120 \n", " \n", " batch_normalization_7 (Batc (None, 13, 13, 384) 1536 \n", " hNormalization) \n", " \n", " dropout_44 (Dropout) (None, 13, 13, 384) 0 \n", " \n", " conv2d_43 (Conv2D) (None, 13, 13, 384) 1327488 \n", " \n", " batch_normalization_8 (Batc (None, 13, 13, 384) 1536 \n", " hNormalization) \n", " \n", " dropout_45 (Dropout) (None, 13, 13, 384) 0 \n", " \n", " conv2d_44 (Conv2D) (None, 13, 13, 256) 884992 \n", " \n", " batch_normalization_9 (Batc (None, 13, 13, 256) 1024 \n", " hNormalization) \n", " \n", " dropout_46 (Dropout) (None, 13, 13, 256) 0 \n", " \n", " max_pooling2d_26 (MaxPoolin (None, 6, 6, 256) 0 \n", " g2D) \n", " \n", " dropout_47 (Dropout) (None, 6, 6, 256) 0 \n", " \n", " flatten_8 (Flatten) (None, 9216) 0 \n", " \n", " dense_24 (Dense) (None, 4096) 37752832 \n", " \n", " dropout_48 (Dropout) (None, 4096) 0 \n", " \n", " dense_25 (Dense) (None, 4096) 16781312 \n", " \n", " dropout_49 (Dropout) (None, 4096) 0 \n", " \n", " dense_26 (Dense) (None, 10) 40970 \n", " \n", "=================================================================\n", "Total params: 58,327,818\n", "Trainable params: 58,325,066\n", "Non-trainable params: 2,752\n", "_________________________________________________________________\n" ] } ], "source": [ "model_batch_drop.compile(loss='sparse_categorical_crossentropy', optimizer=tf.optimizers.SGD(lr=.001), metrics=['accuracy'])\n", "model_batch_drop.summary()" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/100\n", "25/25 [==============================] - 42s 2s/step - loss: 18.7754 - accuracy: 0.2300 - val_loss: 3.0447 - val_accuracy: 0.2500\n", "Epoch 2/100\n", "25/25 [==============================] - 40s 2s/step - loss: 5.7450 - accuracy: 0.2862 - val_loss: 2.0106 - val_accuracy: 0.2031\n", "Epoch 3/100\n", "25/25 [==============================] - 40s 2s/step - loss: 5.0484 - accuracy: 0.2800 - val_loss: 1.8900 - val_accuracy: 0.1927\n", "Epoch 4/100\n", "25/25 [==============================] - 40s 2s/step - loss: 3.9955 - accuracy: 0.2988 - val_loss: 1.8577 - val_accuracy: 0.1979\n", "Epoch 5/100\n", "25/25 [==============================] - 40s 2s/step - loss: 4.0152 - accuracy: 0.3063 - val_loss: 1.8857 - val_accuracy: 0.1979\n", "Epoch 6/100\n", "25/25 [==============================] - 40s 2s/step - loss: 3.2712 - accuracy: 0.3063 - val_loss: 1.8446 - val_accuracy: 0.1250\n", "Epoch 7/100\n", "25/25 [==============================] - 41s 2s/step - loss: 2.5423 - accuracy: 0.3587 - val_loss: 1.8951 - val_accuracy: 0.1875\n", "Epoch 8/100\n", "25/25 [==============================] - 44s 2s/step - loss: 2.3186 - accuracy: 0.3625 - val_loss: 1.8989 - val_accuracy: 0.1615\n", "Epoch 9/100\n", "25/25 [==============================] - 42s 2s/step - loss: 2.1973 - accuracy: 0.3663 - val_loss: 2.0297 - val_accuracy: 0.2031\n", "Epoch 10/100\n", "25/25 [==============================] - 40s 2s/step - loss: 1.8098 - accuracy: 0.4275 - val_loss: 2.0467 - val_accuracy: 0.2083\n", "Epoch 11/100\n", "25/25 [==============================] - 40s 2s/step - loss: 1.6218 - accuracy: 0.4888 - val_loss: 2.1542 - val_accuracy: 0.1615\n", "Epoch 12/100\n", "25/25 [==============================] - 40s 2s/step - loss: 1.7138 - accuracy: 0.4762 - val_loss: 2.4840 - val_accuracy: 0.2292\n", "Epoch 13/100\n", "25/25 [==============================] - 40s 2s/step - loss: 1.5391 - accuracy: 0.5238 - val_loss: 2.5269 - val_accuracy: 0.1667\n", "Epoch 14/100\n", "25/25 [==============================] - 41s 2s/step - loss: 1.3664 - accuracy: 0.5763 - val_loss: 2.6138 - val_accuracy: 0.2188\n", "Epoch 15/100\n", "25/25 [==============================] - 40s 2s/step - loss: 1.3573 - accuracy: 0.5537 - val_loss: 3.0465 - val_accuracy: 0.2083\n", "Epoch 16/100\n", "25/25 [==============================] - 40s 2s/step - loss: 1.3332 - accuracy: 0.5638 - val_loss: 2.8962 - val_accuracy: 0.2240\n", "Epoch 17/100\n", "25/25 [==============================] - 40s 2s/step - loss: 1.2500 - accuracy: 0.5863 - val_loss: 2.7711 - val_accuracy: 0.2188\n", "Epoch 18/100\n", "25/25 [==============================] - 40s 2s/step - loss: 1.1243 - accuracy: 0.6100 - val_loss: 2.8280 - val_accuracy: 0.2240\n", "Epoch 19/100\n", "25/25 [==============================] - 40s 2s/step - loss: 1.0187 - accuracy: 0.6150 - val_loss: 2.7781 - val_accuracy: 0.2240\n", "Epoch 20/100\n", "25/25 [==============================] - 40s 2s/step - loss: 1.0591 - accuracy: 0.6263 - val_loss: 2.7976 - val_accuracy: 0.2240\n", "Epoch 21/100\n", "25/25 [==============================] - 40s 2s/step - loss: 0.9730 - accuracy: 0.6513 - val_loss: 2.6593 - val_accuracy: 0.2500\n", "Epoch 22/100\n", "25/25 [==============================] - 40s 2s/step - loss: 1.0428 - accuracy: 0.6538 - val_loss: 2.9169 - val_accuracy: 0.2396\n", "Epoch 23/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.9658 - accuracy: 0.6587 - val_loss: 2.9805 - val_accuracy: 0.2396\n", "Epoch 24/100\n", "25/25 [==============================] - 40s 2s/step - loss: 0.8756 - accuracy: 0.6625 - val_loss: 2.9590 - val_accuracy: 0.2604\n", "Epoch 25/100\n", "25/25 [==============================] - 40s 2s/step - loss: 0.9395 - accuracy: 0.6737 - val_loss: 2.7804 - val_accuracy: 0.2188\n", "Epoch 26/100\n", "25/25 [==============================] - 40s 2s/step - loss: 0.8502 - accuracy: 0.6938 - val_loss: 2.9480 - val_accuracy: 0.2448\n", "Epoch 27/100\n", "25/25 [==============================] - 40s 2s/step - loss: 0.8092 - accuracy: 0.7350 - val_loss: 3.3202 - val_accuracy: 0.2188\n", "Epoch 28/100\n", "25/25 [==============================] - 40s 2s/step - loss: 0.7796 - accuracy: 0.7150 - val_loss: 2.8618 - val_accuracy: 0.1823\n", "Epoch 29/100\n", "25/25 [==============================] - 40s 2s/step - loss: 0.7650 - accuracy: 0.7175 - val_loss: 3.1987 - val_accuracy: 0.1719\n", "Epoch 30/100\n", "25/25 [==============================] - 40s 2s/step - loss: 0.6968 - accuracy: 0.7437 - val_loss: 3.0807 - val_accuracy: 0.1562\n", "Epoch 31/100\n", "25/25 [==============================] - 40s 2s/step - loss: 0.7408 - accuracy: 0.7387 - val_loss: 4.7095 - val_accuracy: 0.1771\n", "Epoch 32/100\n", "25/25 [==============================] - 40s 2s/step - loss: 0.7883 - accuracy: 0.7138 - val_loss: 3.5988 - val_accuracy: 0.1250\n", "Epoch 33/100\n", "25/25 [==============================] - 40s 2s/step - loss: 0.6965 - accuracy: 0.7237 - val_loss: 3.8168 - val_accuracy: 0.1771\n", "Epoch 34/100\n", "25/25 [==============================] - 42s 2s/step - loss: 0.6220 - accuracy: 0.7725 - val_loss: 3.1421 - val_accuracy: 0.1615\n", "Epoch 35/100\n", "25/25 [==============================] - 40s 2s/step - loss: 0.6952 - accuracy: 0.7563 - val_loss: 3.3574 - val_accuracy: 0.1771\n", "Epoch 36/100\n", "25/25 [==============================] - 40s 2s/step - loss: 0.6311 - accuracy: 0.7638 - val_loss: 3.9404 - val_accuracy: 0.1250\n", "Epoch 37/100\n", "25/25 [==============================] - 40s 2s/step - loss: 0.6131 - accuracy: 0.7713 - val_loss: 4.1547 - val_accuracy: 0.1094\n", "Epoch 38/100\n", "25/25 [==============================] - 40s 2s/step - loss: 0.6917 - accuracy: 0.7575 - val_loss: 3.6349 - val_accuracy: 0.1562\n", "Epoch 39/100\n", "25/25 [==============================] - 40s 2s/step - loss: 0.6401 - accuracy: 0.7825 - val_loss: 3.6254 - val_accuracy: 0.1458\n", "Epoch 40/100\n", "25/25 [==============================] - 40s 2s/step - loss: 0.6787 - accuracy: 0.7437 - val_loss: 3.9394 - val_accuracy: 0.1562\n", "Epoch 41/100\n", "25/25 [==============================] - 40s 2s/step - loss: 0.5985 - accuracy: 0.7825 - val_loss: 3.8814 - val_accuracy: 0.1562\n", "Epoch 42/100\n", "25/25 [==============================] - 40s 2s/step - loss: 0.5920 - accuracy: 0.7850 - val_loss: 4.7182 - val_accuracy: 0.1302\n", "Epoch 43/100\n", "25/25 [==============================] - 40s 2s/step - loss: 0.6628 - accuracy: 0.7563 - val_loss: 3.4734 - val_accuracy: 0.1719\n", "Epoch 44/100\n", "25/25 [==============================] - 40s 2s/step - loss: 0.5662 - accuracy: 0.7912 - val_loss: 3.6088 - val_accuracy: 0.1667\n", "Epoch 45/100\n", "25/25 [==============================] - 42s 2s/step - loss: 0.5879 - accuracy: 0.7763 - val_loss: 3.9871 - val_accuracy: 0.1302\n", "Epoch 46/100\n", "25/25 [==============================] - 40s 2s/step - loss: 0.4717 - accuracy: 0.8062 - val_loss: 3.6940 - val_accuracy: 0.1719\n", "Epoch 47/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.5342 - accuracy: 0.8037 - val_loss: 4.1004 - val_accuracy: 0.1615\n", "Epoch 48/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.5903 - accuracy: 0.7800 - val_loss: 4.2024 - val_accuracy: 0.1667\n", "Epoch 49/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.6181 - accuracy: 0.7887 - val_loss: 4.1097 - val_accuracy: 0.1458\n", "Epoch 50/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.5110 - accuracy: 0.8112 - val_loss: 4.3863 - val_accuracy: 0.1979\n", "Epoch 51/100\n", "25/25 [==============================] - 42s 2s/step - loss: 0.5459 - accuracy: 0.8037 - val_loss: 4.2418 - val_accuracy: 0.1354\n", "Epoch 52/100\n", "25/25 [==============================] - 42s 2s/step - loss: 0.5215 - accuracy: 0.8062 - val_loss: 4.4408 - val_accuracy: 0.2135\n", "Epoch 53/100\n", "25/25 [==============================] - 42s 2s/step - loss: 0.5577 - accuracy: 0.8213 - val_loss: 5.2647 - val_accuracy: 0.1510\n", "Epoch 54/100\n", "25/25 [==============================] - 40s 2s/step - loss: 0.5364 - accuracy: 0.7887 - val_loss: 4.3820 - val_accuracy: 0.1615\n", "Epoch 55/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.5056 - accuracy: 0.8163 - val_loss: 3.0960 - val_accuracy: 0.2292\n", "Epoch 56/100\n", "25/25 [==============================] - 44s 2s/step - loss: 0.5088 - accuracy: 0.8275 - val_loss: 4.1318 - val_accuracy: 0.1667\n", "Epoch 57/100\n", "25/25 [==============================] - 42s 2s/step - loss: 0.5356 - accuracy: 0.7987 - val_loss: 3.8712 - val_accuracy: 0.1562\n", "Epoch 58/100\n", "25/25 [==============================] - 42s 2s/step - loss: 0.4303 - accuracy: 0.8388 - val_loss: 3.7644 - val_accuracy: 0.1771\n", "Epoch 59/100\n", "25/25 [==============================] - 42s 2s/step - loss: 0.3881 - accuracy: 0.8350 - val_loss: 4.0027 - val_accuracy: 0.1719\n", "Epoch 60/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.5084 - accuracy: 0.8338 - val_loss: 4.0352 - val_accuracy: 0.1458\n", "Epoch 61/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.4368 - accuracy: 0.8238 - val_loss: 3.6374 - val_accuracy: 0.1615\n", "Epoch 62/100\n", "25/25 [==============================] - 42s 2s/step - loss: 0.4437 - accuracy: 0.8300 - val_loss: 3.5370 - val_accuracy: 0.1979\n", "Epoch 63/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.4130 - accuracy: 0.8425 - val_loss: 3.9090 - val_accuracy: 0.1458\n", "Epoch 64/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.3847 - accuracy: 0.8500 - val_loss: 3.9670 - val_accuracy: 0.1510\n", "Epoch 65/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.4029 - accuracy: 0.8425 - val_loss: 4.5627 - val_accuracy: 0.1302\n", "Epoch 66/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.3499 - accuracy: 0.8550 - val_loss: 3.7520 - val_accuracy: 0.1667\n", "Epoch 67/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.3891 - accuracy: 0.8600 - val_loss: 4.5331 - val_accuracy: 0.1771\n", "Epoch 68/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.4390 - accuracy: 0.8363 - val_loss: 4.4191 - val_accuracy: 0.1823\n", "Epoch 69/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.3524 - accuracy: 0.8600 - val_loss: 5.4688 - val_accuracy: 0.1406\n", "Epoch 70/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.4448 - accuracy: 0.8550 - val_loss: 4.3226 - val_accuracy: 0.1927\n", "Epoch 71/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.3959 - accuracy: 0.8525 - val_loss: 4.6061 - val_accuracy: 0.2031\n", "Epoch 72/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.3506 - accuracy: 0.8775 - val_loss: 3.8307 - val_accuracy: 0.1615\n", "Epoch 73/100\n", "25/25 [==============================] - 42s 2s/step - loss: 0.3496 - accuracy: 0.8750 - val_loss: 4.3153 - val_accuracy: 0.1823\n", "Epoch 74/100\n", "25/25 [==============================] - 42s 2s/step - loss: 0.4924 - accuracy: 0.8263 - val_loss: 3.8766 - val_accuracy: 0.1875\n", "Epoch 75/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.4854 - accuracy: 0.8487 - val_loss: 5.7284 - val_accuracy: 0.1562\n", "Epoch 76/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.4044 - accuracy: 0.8625 - val_loss: 5.3349 - val_accuracy: 0.0938\n", "Epoch 77/100\n", "25/25 [==============================] - 42s 2s/step - loss: 0.4885 - accuracy: 0.8375 - val_loss: 3.9680 - val_accuracy: 0.1719\n", "Epoch 78/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.3635 - accuracy: 0.8500 - val_loss: 4.1063 - val_accuracy: 0.1719\n", "Epoch 79/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.3271 - accuracy: 0.8675 - val_loss: 4.6011 - val_accuracy: 0.1615\n", "Epoch 80/100\n", "25/25 [==============================] - 42s 2s/step - loss: 0.3255 - accuracy: 0.8712 - val_loss: 4.8067 - val_accuracy: 0.1771\n", "Epoch 81/100\n", "25/25 [==============================] - 42s 2s/step - loss: 0.3612 - accuracy: 0.8600 - val_loss: 4.4704 - val_accuracy: 0.1562\n", "Epoch 82/100\n", "25/25 [==============================] - 42s 2s/step - loss: 0.3358 - accuracy: 0.8775 - val_loss: 4.3849 - val_accuracy: 0.1562\n", "Epoch 83/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.3253 - accuracy: 0.8850 - val_loss: 4.4543 - val_accuracy: 0.1927\n", "Epoch 84/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.2932 - accuracy: 0.8800 - val_loss: 4.2358 - val_accuracy: 0.2188\n", "Epoch 85/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.2768 - accuracy: 0.8938 - val_loss: 4.6282 - val_accuracy: 0.2500\n", "Epoch 86/100\n", "25/25 [==============================] - 42s 2s/step - loss: 0.3475 - accuracy: 0.8800 - val_loss: 4.8860 - val_accuracy: 0.1979\n", "Epoch 87/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.4666 - accuracy: 0.8575 - val_loss: 6.6145 - val_accuracy: 0.1719\n", "Epoch 88/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.3518 - accuracy: 0.8712 - val_loss: 6.0062 - val_accuracy: 0.1615\n", "Epoch 89/100\n", "25/25 [==============================] - 42s 2s/step - loss: 0.3243 - accuracy: 0.8725 - val_loss: 5.5636 - val_accuracy: 0.1979\n", "Epoch 90/100\n", "25/25 [==============================] - 42s 2s/step - loss: 0.3085 - accuracy: 0.8950 - val_loss: 4.9411 - val_accuracy: 0.1562\n", "Epoch 91/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.3635 - accuracy: 0.8838 - val_loss: 8.3831 - val_accuracy: 0.1510\n", "Epoch 92/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.3729 - accuracy: 0.8675 - val_loss: 5.3772 - val_accuracy: 0.1458\n", "Epoch 93/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.4809 - accuracy: 0.8462 - val_loss: 3.2538 - val_accuracy: 0.2031\n", "Epoch 94/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.3623 - accuracy: 0.8675 - val_loss: 4.4434 - val_accuracy: 0.1875\n", "Epoch 95/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.3453 - accuracy: 0.8675 - val_loss: 7.2843 - val_accuracy: 0.1771\n", "Epoch 96/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.4527 - accuracy: 0.8700 - val_loss: 3.5670 - val_accuracy: 0.2240\n", "Epoch 97/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.3839 - accuracy: 0.8662 - val_loss: 4.9288 - val_accuracy: 0.1458\n", "Epoch 98/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.2978 - accuracy: 0.8863 - val_loss: 5.4240 - val_accuracy: 0.2292\n", "Epoch 99/100\n", "25/25 [==============================] - 41s 2s/step - loss: 0.3522 - accuracy: 0.8750 - val_loss: 5.5607 - val_accuracy: 0.1771\n", "Epoch 100/100\n", "25/25 [==============================] - 42s 2s/step - loss: 0.3677 - accuracy: 0.8775 - val_loss: 7.4051 - val_accuracy: 0.1146\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model_batch_drop.fit(train_ds,\n", " epochs=100,\n", " validation_data=validation_ds,\n", " validation_freq=1,\n", " callbacks=[tensorboard_cb])" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "8/8 [==============================] - 5s 283ms/step - loss: 9.0089 - accuracy: 0.1758\n" ] }, { "data": { "text/plain": [ "[9.008861541748047, 0.17578125]" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model_batch_drop.evaluate(test_ds)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3.9.4 64-bit", "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.9.4" }, "orig_nbformat": 4, "vscode": { "interpreter": { "hash": "085c51388782ab7dcc7b32a500f9634129d1cddb82cd7a37058a5984251a0bc1" } } }, "nbformat": 4, "nbformat_minor": 2 }