{ "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\n", "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": 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" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Dropout" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Do warstw spłaszczonych" ] }, { "cell_type": "code", "execution_count": 13, "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": 14, "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": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "WARNING:tensorflow:`period` argument is deprecated. Please use `save_freq` to specify the frequency in number of batches seen.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "WARNING:tensorflow:`period` argument is deprecated. Please use `save_freq` to specify the frequency in number of batches seen.\n", "/var/folders/6b/j4d60ym516x2s6wymzj707rh0000gn/T/ipykernel_13671/1946638494.py:6: UserWarning: `Model.fit_generator` is deprecated and will be removed in a future version. Please use `Model.fit`, which supports generators.\n", " alex1 = model_flat_drop.fit_generator(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/25\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2023-01-06 21:33:12.260921: W tensorflow/tsl/platform/profile_utils/cpu_utils.cc:128] Failed to get CPU frequency: 0 Hz\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "25/25 [==============================] - ETA: 0s - loss: 2.2671 - accuracy: 0.1963\n", "Epoch 1: val_accuracy improved from -inf to 0.20312, saving model to alex_1.h5\n", "25/25 [==============================] - 24s 939ms/step - loss: 2.2671 - accuracy: 0.1963 - val_loss: 2.2120 - val_accuracy: 0.2031\n", "Epoch 2/25\n", "25/25 [==============================] - ETA: 0s - loss: 2.0757 - accuracy: 0.1875\n", "Epoch 2: val_accuracy improved from 0.20312 to 0.28125, saving model to alex_1.h5\n", "25/25 [==============================] - 22s 899ms/step - loss: 2.0757 - accuracy: 0.1875 - val_loss: 1.7334 - val_accuracy: 0.2812\n", "Epoch 3/25\n", "25/25 [==============================] - ETA: 0s - loss: 1.7064 - accuracy: 0.2100\n", "Epoch 3: val_accuracy did not improve from 0.28125\n", "25/25 [==============================] - 23s 940ms/step - loss: 1.7064 - accuracy: 0.2100 - val_loss: 1.6128 - val_accuracy: 0.2656\n", "Epoch 4/25\n", "25/25 [==============================] - ETA: 0s - loss: 1.6449 - accuracy: 0.2537\n", "Epoch 4: val_accuracy improved from 0.28125 to 0.34896, saving model to alex_1.h5\n", "25/25 [==============================] - 23s 918ms/step - loss: 1.6449 - accuracy: 0.2537 - val_loss: 1.5930 - val_accuracy: 0.3490\n", "Epoch 5/25\n", "25/25 [==============================] - ETA: 0s - loss: 1.6596 - accuracy: 0.2275\n", "Epoch 5: val_accuracy did not improve from 0.34896\n", "25/25 [==============================] - 23s 928ms/step - loss: 1.6596 - accuracy: 0.2275 - val_loss: 1.5650 - val_accuracy: 0.2865\n", "Epoch 6/25\n", "25/25 [==============================] - ETA: 0s - loss: 1.6292 - accuracy: 0.2625\n", "Epoch 6: val_accuracy did not improve from 0.34896\n", "25/25 [==============================] - 23s 935ms/step - loss: 1.6292 - accuracy: 0.2625 - val_loss: 1.5573 - val_accuracy: 0.3021\n", "Epoch 7/25\n", "25/25 [==============================] - ETA: 0s - loss: 1.6197 - accuracy: 0.2562\n", "Epoch 7: val_accuracy did not improve from 0.34896\n", "25/25 [==============================] - 23s 929ms/step - loss: 1.6197 - accuracy: 0.2562 - val_loss: 1.5328 - val_accuracy: 0.3125\n", "Epoch 8/25\n", "25/25 [==============================] - ETA: 0s - loss: 1.5907 - accuracy: 0.2975\n", "Epoch 8: val_accuracy improved from 0.34896 to 0.36458, saving model to alex_1.h5\n", "25/25 [==============================] - 24s 943ms/step - loss: 1.5907 - accuracy: 0.2975 - val_loss: 1.4958 - val_accuracy: 0.3646\n", "Epoch 9/25\n", "25/25 [==============================] - ETA: 0s - loss: 1.5715 - accuracy: 0.2962\n", "Epoch 9: val_accuracy improved from 0.36458 to 0.40104, saving model to alex_1.h5\n", "25/25 [==============================] - 24s 944ms/step - loss: 1.5715 - accuracy: 0.2962 - val_loss: 1.4821 - val_accuracy: 0.4010\n", "Epoch 10/25\n", "25/25 [==============================] - ETA: 0s - loss: 1.5357 - accuracy: 0.3162\n", "Epoch 10: val_accuracy did not improve from 0.40104\n", "25/25 [==============================] - 23s 937ms/step - loss: 1.5357 - accuracy: 0.3162 - val_loss: 1.4562 - val_accuracy: 0.3958\n", "Epoch 11/25\n", "25/25 [==============================] - ETA: 0s - loss: 1.5030 - accuracy: 0.3262\n", "Epoch 11: val_accuracy improved from 0.40104 to 0.45833, saving model to alex_1.h5\n", "25/25 [==============================] - 24s 970ms/step - loss: 1.5030 - accuracy: 0.3262 - val_loss: 1.4106 - val_accuracy: 0.4583\n", "Epoch 12/25\n", "25/25 [==============================] - ETA: 0s - loss: 1.4862 - accuracy: 0.3613\n", "Epoch 12: val_accuracy improved from 0.45833 to 0.53125, saving model to alex_1.h5\n", "25/25 [==============================] - 25s 1s/step - loss: 1.4862 - accuracy: 0.3613 - val_loss: 1.3597 - val_accuracy: 0.5312\n", "Epoch 13/25\n", "25/25 [==============================] - ETA: 0s - loss: 1.4194 - accuracy: 0.4162\n", "Epoch 13: val_accuracy did not improve from 0.53125\n", "25/25 [==============================] - 24s 974ms/step - loss: 1.4194 - accuracy: 0.4162 - val_loss: 1.3095 - val_accuracy: 0.4583\n", "Epoch 14/25\n", "25/25 [==============================] - ETA: 0s - loss: 1.3418 - accuracy: 0.4437\n", "Epoch 14: val_accuracy did not improve from 0.53125\n", "25/25 [==============================] - 24s 959ms/step - loss: 1.3418 - accuracy: 0.4437 - val_loss: 1.2787 - val_accuracy: 0.4792\n", "Epoch 15/25\n", "25/25 [==============================] - ETA: 0s - loss: 1.3059 - accuracy: 0.4675\n", "Epoch 15: val_accuracy did not improve from 0.53125\n", "25/25 [==============================] - 24s 951ms/step - loss: 1.3059 - accuracy: 0.4675 - val_loss: 1.2374 - val_accuracy: 0.4635\n", "Epoch 16/25\n", "25/25 [==============================] - ETA: 0s - loss: 1.2688 - accuracy: 0.4725\n", "Epoch 16: val_accuracy did not improve from 0.53125\n", "25/25 [==============================] - 24s 955ms/step - loss: 1.2688 - accuracy: 0.4725 - val_loss: 1.2178 - val_accuracy: 0.4583\n", "Epoch 17/25\n", "25/25 [==============================] - ETA: 0s - loss: 1.2209 - accuracy: 0.4875\n", "Epoch 17: val_accuracy did not improve from 0.53125\n", "25/25 [==============================] - 24s 958ms/step - loss: 1.2209 - accuracy: 0.4875 - val_loss: 1.2793 - val_accuracy: 0.3958\n", "Epoch 18/25\n", "25/25 [==============================] - ETA: 0s - loss: 1.1457 - accuracy: 0.5150\n", "Epoch 18: val_accuracy improved from 0.53125 to 0.55729, saving model to alex_1.h5\n", "25/25 [==============================] - 24s 980ms/step - loss: 1.1457 - accuracy: 0.5150 - val_loss: 1.0978 - val_accuracy: 0.5573\n", "Epoch 19/25\n", "25/25 [==============================] - ETA: 0s - loss: 1.1318 - accuracy: 0.5063\n", "Epoch 19: val_accuracy did not improve from 0.55729\n", "25/25 [==============================] - 27s 1s/step - loss: 1.1318 - accuracy: 0.5063 - val_loss: 1.0764 - val_accuracy: 0.5104\n", "Epoch 20/25\n", "25/25 [==============================] - ETA: 0s - loss: 1.1289 - accuracy: 0.5125\n", "Epoch 20: val_accuracy improved from 0.55729 to 0.56771, saving model to alex_1.h5\n", "25/25 [==============================] - 25s 1s/step - loss: 1.1289 - accuracy: 0.5125 - val_loss: 1.0067 - val_accuracy: 0.5677\n", "Epoch 21/25\n", "25/25 [==============================] - ETA: 0s - loss: 1.0175 - accuracy: 0.5638\n", "Epoch 21: val_accuracy did not improve from 0.56771\n", "25/25 [==============================] - 26s 1s/step - loss: 1.0175 - accuracy: 0.5638 - val_loss: 1.0095 - val_accuracy: 0.5625\n", "Epoch 22/25\n", "25/25 [==============================] - ETA: 0s - loss: 1.0559 - accuracy: 0.5288\n", "Epoch 22: val_accuracy did not improve from 0.56771\n", "25/25 [==============================] - 26s 1s/step - loss: 1.0559 - accuracy: 0.5288 - val_loss: 1.0557 - val_accuracy: 0.5208\n", "Epoch 23/25\n", "25/25 [==============================] - ETA: 0s - loss: 1.1151 - accuracy: 0.5412\n", "Epoch 23: val_accuracy did not improve from 0.56771\n", "25/25 [==============================] - 26s 1s/step - loss: 1.1151 - accuracy: 0.5412 - val_loss: 1.0837 - val_accuracy: 0.5052\n", "Epoch 24/25\n", "25/25 [==============================] - ETA: 0s - loss: 1.0158 - accuracy: 0.5625\n", "Epoch 24: val_accuracy improved from 0.56771 to 0.58333, saving model to alex_1.h5\n", "25/25 [==============================] - 28s 1s/step - loss: 1.0158 - accuracy: 0.5625 - val_loss: 0.9605 - val_accuracy: 0.5833\n", "Epoch 25/25\n", " 6/25 [======>.......................] - ETA: 20s - loss: 0.9373 - accuracy: 0.5781" ] } ], "source": [ "from keras.callbacks import ModelCheckpoint, EarlyStopping\n", "\n", "checkpoint = ModelCheckpoint(\"alex_1.h5\", monitor='val_accuracy', verbose=1, save_best_only=True, save_weights_only=False, mode='auto', period=1)\n", "early = EarlyStopping(monitor='val_accuracy', min_delta=0, patience=20, verbose=1, mode='auto')\n", "\n", "alex1 = model_flat_drop.fit_generator(\n", " steps_per_epoch=len(train_ds), \n", " generator=train_ds, \n", " validation_data= validation_ds, \n", " validation_steps=len(validation_ds), \n", " epochs=25, \n", " callbacks=[checkpoint,early])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "source": [ "import matplotlib.pyplot as plt\n", "plt.plot(alex1.history[\"accuracy\"])\n", "plt.plot(alex1.history['val_accuracy'])\n", "plt.plot(alex1.history['loss'])\n", "plt.plot(alex1.history['val_loss'])\n", "plt.title(\"Model accuracy\")\n", "plt.ylabel(\"Value\")\n", "plt.xlabel(\"Epoch\")\n", "plt.legend([\"Accuracy\",\"Validation Accuracy\",\"Loss\",\"Validation Loss\"])\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "source": [ "alex1.evaluate(test_ds)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Do warstw maxpooling" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "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": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "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": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "source": [ "checkpoint = ModelCheckpoint(\"alex_2.h5\", monitor='val_accuracy', verbose=1, save_best_only=True, save_weights_only=False, mode='auto', period=1)\n", "early = EarlyStopping(monitor='val_accuracy', min_delta=0, patience=20, verbose=1, mode='auto')\n", "\n", "alex2 = model_pool_drop.fit_generator(\n", " steps_per_epoch=len(train_ds), \n", " generator=train_ds, \n", " validation_data= validation_ds, \n", " validation_steps=len(validation_ds), \n", " epochs=25, \n", " callbacks=[checkpoint,early])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "source": [ "plt.plot(alex2.history[\"accuracy\"])\n", "plt.plot(alex2.history['val_accuracy'])\n", "plt.plot(alex2.history['loss'])\n", "plt.plot(alex2.history['val_loss'])\n", "plt.title(\"Model accuracy\")\n", "plt.ylabel(\"Value\")\n", "plt.xlabel(\"Epoch\")\n", "plt.legend([\"Accuracy\",\"Validation Accuracy\",\"Loss\",\"Validation Loss\"])\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "source": [ "alex2.evaluate(test_ds)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Do warstw splotowych" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "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": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "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": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "source": [ "checkpoint = ModelCheckpoint(\"alex_3.h5\", monitor='val_accuracy', verbose=1, save_best_only=True, save_weights_only=False, mode='auto', period=1)\n", "early = EarlyStopping(monitor='val_accuracy', min_delta=0, patience=20, verbose=1, mode='auto')\n", "\n", "alex3 = model_conv_drop.fit_generator(\n", " steps_per_epoch=len(train_ds), \n", " generator=train_ds, \n", " validation_data= validation_ds, \n", " validation_steps=len(validation_ds), \n", " epochs=25, \n", " callbacks=[checkpoint,early])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "source": [ "plt.plot(alex3.history[\"accuracy\"])\n", "plt.plot(alex3.history['val_accuracy'])\n", "plt.plot(alex3.history['loss'])\n", "plt.plot(alex3.history['val_loss'])\n", "plt.title(\"Model accuracy\")\n", "plt.ylabel(\"Value\")\n", "plt.xlabel(\"Epoch\")\n", "plt.legend([\"Accuracy\",\"Validation Accuracy\",\"Loss\",\"Validation Loss\"])\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "source": [ "alex3.evaluate(test_ds)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Do warstw spłaszczonych i maxpooling" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "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": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "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": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "source": [ "checkpoint = ModelCheckpoint(\"alex_4.h5\", monitor='val_accuracy', verbose=1, save_best_only=True, save_weights_only=False, mode='auto', period=1)\n", "early = EarlyStopping(monitor='val_accuracy', min_delta=0, patience=20, verbose=1, mode='auto')\n", "\n", "alex4 = model_flat_pool_drop.fit_generator(\n", " steps_per_epoch=len(train_ds), \n", " generator=train_ds, \n", " validation_data= validation_ds, \n", " validation_steps=len(validation_ds), \n", " epochs=25, \n", " callbacks=[checkpoint,early])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "source": [ "plt.plot(alex4.history[\"accuracy\"])\n", "plt.plot(alex4.history['val_accuracy'])\n", "plt.plot(alex4.history['loss'])\n", "plt.plot(alex4.history['val_loss'])\n", "plt.title(\"Model accuracy\")\n", "plt.ylabel(\"Value\")\n", "plt.xlabel(\"Epoch\")\n", "plt.legend([\"Accuracy\",\"Validation Accuracy\",\"Loss\",\"Validation Loss\"])\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "source": [ "alex4.evaluate(test_ds)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Do warstw spłaszczonych i splotowych" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "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": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "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": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "source": [ "checkpoint = ModelCheckpoint(\"alex_5.h5\", monitor='val_accuracy', verbose=1, save_best_only=True, save_weights_only=False, mode='auto', period=1)\n", "early = EarlyStopping(monitor='val_accuracy', min_delta=0, patience=20, verbose=1, mode='auto')\n", "\n", "alex5 = model_flat_conv_drop.fit_generator(\n", " steps_per_epoch=len(train_ds), \n", " generator=train_ds, \n", " validation_data= validation_ds, \n", " validation_steps=len(validation_ds), \n", " epochs=25, \n", " callbacks=[checkpoint,early])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "source": [ "plt.plot(alex5.history[\"accuracy\"])\n", "plt.plot(alex5.history['val_accuracy'])\n", "plt.plot(alex5.history['loss'])\n", "plt.plot(alex5.history['val_loss'])\n", "plt.title(\"Model accuracy\")\n", "plt.ylabel(\"Value\")\n", "plt.xlabel(\"Epoch\")\n", "plt.legend([\"Accuracy\",\"Validation Accuracy\",\"Loss\",\"Validation Loss\"])\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "source": [ "alex5.evaluate(test_ds)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Do warstw maxpooling i splotowych" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "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": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "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": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "source": [ "checkpoint = ModelCheckpoint(\"alex_6.h5\", monitor='val_accuracy', verbose=1, save_best_only=True, save_weights_only=False, mode='auto', period=1)\n", "early = EarlyStopping(monitor='val_accuracy', min_delta=0, patience=20, verbose=1, mode='auto')\n", "\n", "alex6 = model_pool_conv_drop.fit_generator(\n", " steps_per_epoch=len(train_ds), \n", " generator=train_ds, \n", " validation_data= validation_ds, \n", " validation_steps=len(validation_ds), \n", " epochs=25, \n", " callbacks=[checkpoint,early])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "source": [ "plt.plot(alex6.history[\"accuracy\"])\n", "plt.plot(alex6.history['val_accuracy'])\n", "plt.plot(alex6.history['loss'])\n", "plt.plot(alex6.history['val_loss'])\n", "plt.title(\"Model accuracy\")\n", "plt.ylabel(\"Value\")\n", "plt.xlabel(\"Epoch\")\n", "plt.legend([\"Accuracy\",\"Validation Accuracy\",\"Loss\",\"Validation Loss\"])\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "source": [ "alex6.evaluate(test_ds)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Do warstw spłaszczonych, maxpooling i splotowych" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "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": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "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": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "source": [ "checkpoint = ModelCheckpoint(\"alex_7.h5\", monitor='val_accuracy', verbose=1, save_best_only=True, save_weights_only=False, mode='auto', period=1)\n", "early = EarlyStopping(monitor='val_accuracy', min_delta=0, patience=20, verbose=1, mode='auto')\n", "\n", "alex7 = model_drop.fit_generator(\n", " steps_per_epoch=len(train_ds), \n", " generator=train_ds, \n", " validation_data= validation_ds, \n", " validation_steps=len(validation_ds), \n", " epochs=25, \n", " callbacks=[checkpoint,early])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "source": [ "plt.plot(alex7.history[\"accuracy\"])\n", "plt.plot(alex7.history['val_accuracy'])\n", "plt.plot(alex7.history['loss'])\n", "plt.plot(alex7.history['val_loss'])\n", "plt.title(\"Model accuracy\")\n", "plt.ylabel(\"Value\")\n", "plt.xlabel(\"Epoch\")\n", "plt.legend([\"Accuracy\",\"Validation Accuracy\",\"Loss\",\"Validation Loss\"])\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "source": [ "alex7.evaluate(test_ds)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Batch Regularization" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Bez dropoutu" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "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": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "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": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "source": [ "checkpoint = ModelCheckpoint(\"alex_8.h5\", monitor='val_accuracy', verbose=1, save_best_only=True, save_weights_only=False, mode='auto', period=1)\n", "early = EarlyStopping(monitor='val_accuracy', min_delta=0, patience=20, verbose=1, mode='auto')\n", "\n", "alex8 = model_batch.fit_generator(\n", " steps_per_epoch=len(train_ds), \n", " generator=train_ds, \n", " validation_data= validation_ds, \n", " validation_steps=len(validation_ds), \n", " epochs=25, \n", " callbacks=[checkpoint,early])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "source": [ "plt.plot(alex8.history[\"accuracy\"])\n", "plt.plot(alex8.history['val_accuracy'])\n", "plt.plot(alex8.history['loss'])\n", "plt.plot(alex8.history['val_loss'])\n", "plt.title(\"Model accuracy\")\n", "plt.ylabel(\"Value\")\n", "plt.xlabel(\"Epoch\")\n", "plt.legend([\"Accuracy\",\"Validation Accuracy\",\"Loss\",\"Validation Loss\"])\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "source": [ "alex8.evaluate(test_ds)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Z dropoutem" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "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.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.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": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "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": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "source": [ "checkpoint = ModelCheckpoint(\"alex_9.h5\", monitor='val_accuracy', verbose=1, save_best_only=True, save_weights_only=False, mode='auto', period=1)\n", "early = EarlyStopping(monitor='val_accuracy', min_delta=0, patience=20, verbose=1, mode='auto')\n", "\n", "alex9 = model_batch_drop.fit_generator(\n", " steps_per_epoch=len(train_ds), \n", " generator=train_ds, \n", " validation_data= validation_ds, \n", " validation_steps=len(validation_ds), \n", " epochs=25, \n", " callbacks=[checkpoint,early])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "source": [ "plt.plot(alex9.history[\"accuracy\"])\n", "plt.plot(alex9.history['val_accuracy'])\n", "plt.plot(alex9.history['loss'])\n", "plt.plot(alex9.history['val_loss'])\n", "plt.title(\"Model accuracy\")\n", "plt.ylabel(\"Value\")\n", "plt.xlabel(\"Epoch\")\n", "plt.legend([\"Accuracy\",\"Validation Accuracy\",\"Loss\",\"Validation Loss\"])\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mRunning cells with '/Users/jonas/.pyenv/versions/3.9.6/bin/python' requires ipykernel package.\n", "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n", "\u001b[1;31mCommand: '/Users/jonas/.pyenv/versions/3.9.6/bin/python -m pip install ipykernel -U --force-reinstall'" ] } ], "source": [ "alex9.evaluate(test_ds)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.6" }, "orig_nbformat": 4, "vscode": { "interpreter": { "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6" } } }, "nbformat": 4, "nbformat_minor": 2 }