644 KiB
644 KiB
Zadanie 8 - Alexnet + Dropout & BatchRegularization
Aleksandra Jonas, Aleksandra Gronowska, Iwona Christop
Przygotowanie danych
from IPython.display import Image, display
import sys
import subprocess
import pkg_resources
import numpy as np
required = { 'scikit-image'}
installed = {pkg.key for pkg in pkg_resources.working_set}
missing = required - installed
# Alexnet requires images to be of dim = (227, 227, 3)
newSize = (227,227)
if missing:
python = sys.executable
subprocess.check_call([python, '-m', 'pip', 'install', *missing], stdout=subprocess.DEVNULL)
def load_train_data(input_dir):
import numpy as np
import pandas as pd
import os
from skimage.io import imread
import cv2 as cv
from pathlib import Path
import random
from shutil import copyfile, rmtree
import json
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib
image_dir = Path(input_dir)
categories_name = []
for file in os.listdir(image_dir):
d = os.path.join(image_dir, file)
if os.path.isdir(d):
categories_name.append(file)
folders = [directory for directory in image_dir.iterdir() if directory.is_dir()]
train_img = []
categories_count=[]
labels=[]
for i, direc in enumerate(folders):
count = 0
for obj in direc.iterdir():
if os.path.isfile(obj) and os.path.basename(os.path.normpath(obj)) != 'desktop.ini':
labels.append(os.path.basename(os.path.normpath(direc)))
count += 1
img = imread(obj)#zwraca ndarry postaci xSize x ySize x colorDepth
img = img[:, :, :3]
img = cv.resize(img, newSize, interpolation=cv.INTER_AREA)# zwraca ndarray
img = img / 255 #normalizacja
train_img.append(img)
categories_count.append(count)
X={}
X["values"] = np.array(train_img)
X["categories_name"] = categories_name
X["categories_count"] = categories_count
X["labels"]=labels
return X
def load_test_data(input_dir):
import numpy as np
import pandas as pd
import os
from skimage.io import imread
import cv2 as cv
from pathlib import Path
import random
from shutil import copyfile, rmtree
import json
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib
image_path = Path(input_dir)
labels_path = image_path.parents[0] / 'test_labels.json'
jsonString = labels_path.read_text()
objects = json.loads(jsonString)
categories_name = []
categories_count=[]
count = 0
c = objects[0]['value']
for e in objects:
if e['value'] != c:
categories_count.append(count)
c = e['value']
count = 1
else:
count += 1
if not e['value'] in categories_name:
categories_name.append(e['value'])
categories_count.append(count)
test_img = []
labels=[]
for e in objects:
p = image_path / e['filename']
img = imread(p)#zwraca ndarry postaci xSize x ySize x colorDepth
img = img[:, :, :3]
img = cv.resize(img, newSize, interpolation=cv.INTER_AREA)# zwraca ndarray
img = img / 255#normalizacja
test_img.append(img)
labels.append(e['value'])
X={}
X["values"] = np.array(test_img)
X["categories_name"] = categories_name
X["categories_count"] = categories_count
X["labels"]=labels
return X
# Data load
data_train = load_train_data("./train_test_sw/train_sw")
values_train = data_train['values']
labels_train = data_train['labels']
data_test = load_test_data("./train_test_sw/test_sw")
X_test = data_test['values']
y_test = data_test['labels']
from sklearn.model_selection import train_test_split
X_train, X_validate, y_train, y_validate = train_test_split(values_train, labels_train, test_size=0.2, random_state=42)
from sklearn.preprocessing import LabelEncoder
class_le = LabelEncoder()
y_train_enc = class_le.fit_transform(y_train)
y_validate_enc = class_le.fit_transform(y_validate)
y_test_enc = class_le.fit_transform(y_test)
class_le = LabelEncoder()
y_train_enc = class_le.fit_transform(y_train)
y_validate_enc = class_le.fit_transform(y_validate)
y_test_enc = class_le.fit_transform(y_test)
import tensorflow as tf
train_ds = tf.data.Dataset.from_tensor_slices((X_train, y_train_enc))
validation_ds = tf.data.Dataset.from_tensor_slices((X_validate, y_validate_enc))
test_ds = tf.data.Dataset.from_tensor_slices((X_test, y_test_enc))
train_ds_size = tf.data.experimental.cardinality(train_ds).numpy()
test_ds_size = tf.data.experimental.cardinality(test_ds).numpy()
validation_ds_size = tf.data.experimental.cardinality(validation_ds).numpy()
print("Training data size:", train_ds_size)
print("Test data size:", test_ds_size)
print("Validation data size:", validation_ds_size)
Training data size: 820 Test data size: 259 Validation data size: 206
train_ds = (train_ds
.shuffle(buffer_size=train_ds_size)
.batch(batch_size=32, drop_remainder=True))
test_ds = (test_ds
.shuffle(buffer_size=train_ds_size)
.batch(batch_size=32, drop_remainder=True))
validation_ds = (validation_ds
.shuffle(buffer_size=train_ds_size)
.batch(batch_size=32, drop_remainder=True))
from tensorflow import keras
Dropout
Do warstw spłaszczonych
model_flat_drop = keras.models.Sequential([
keras.layers.Conv2D(filters=96, kernel_size=(11,11), strides=(4,4), activation='relu', input_shape=(227,227,3)),
keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),
keras.layers.Conv2D(filters=256, kernel_size=(5,5), strides=(1,1), activation='relu', padding="same"),
keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),
keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding="same"),
keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding="same"),
keras.layers.Conv2D(filters=256, kernel_size=(3,3), strides=(1,1), activation='relu', padding="same"),
keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),
keras.layers.Flatten(),
keras.layers.Dense(4096, activation='relu'),
keras.layers.Dropout(.5),
keras.layers.Dense(4096, activation='relu'),
keras.layers.Dropout(.5),
keras.layers.Dense(10, activation='softmax')
])
model_flat_drop.compile(loss='sparse_categorical_crossentropy', optimizer=tf.optimizers.SGD(lr=.001), metrics=['accuracy'])
model_flat_drop.summary()
WARNING:absl:`lr` is deprecated, please use `learning_rate` instead, or use the legacy optimizer, e.g.,tf.keras.optimizers.legacy.SGD.
Model: "sequential" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d (Conv2D) (None, 55, 55, 96) 34944 max_pooling2d (MaxPooling2D (None, 27, 27, 96) 0 ) conv2d_1 (Conv2D) (None, 27, 27, 256) 614656 max_pooling2d_1 (MaxPooling (None, 13, 13, 256) 0 2D) conv2d_2 (Conv2D) (None, 13, 13, 384) 885120 conv2d_3 (Conv2D) (None, 13, 13, 384) 1327488 conv2d_4 (Conv2D) (None, 13, 13, 256) 884992 max_pooling2d_2 (MaxPooling (None, 6, 6, 256) 0 2D) flatten (Flatten) (None, 9216) 0 dense (Dense) (None, 4096) 37752832 dropout (Dropout) (None, 4096) 0 dense_1 (Dense) (None, 4096) 16781312 dropout_1 (Dropout) (None, 4096) 0 dense_2 (Dense) (None, 10) 40970 ================================================================= Total params: 58,322,314 Trainable params: 58,322,314 Non-trainable params: 0 _________________________________________________________________
from keras.callbacks import ModelCheckpoint, EarlyStopping
checkpoint = ModelCheckpoint("alex_1.h5", monitor='val_accuracy', verbose=1, save_best_only=True, save_weights_only=False, mode='auto', period=1)
early = EarlyStopping(monitor='val_accuracy', min_delta=0, patience=20, verbose=1, mode='auto')
alex1 = model_flat_drop.fit_generator(
steps_per_epoch=len(train_ds),
generator=train_ds,
validation_data= validation_ds,
validation_steps=len(validation_ds),
epochs=25,
callbacks=[checkpoint,early])
WARNING:tensorflow:`period` argument is deprecated. Please use `save_freq` to specify the frequency in number of batches seen.
WARNING:tensorflow:`period` argument is deprecated. Please use `save_freq` to specify the frequency in number of batches seen. /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. alex1 = model_flat_drop.fit_generator(
Epoch 1/25
2023-01-06 21:33:12.260921: W tensorflow/tsl/platform/profile_utils/cpu_utils.cc:128] Failed to get CPU frequency: 0 Hz
25/25 [==============================] - ETA: 0s - loss: 2.2671 - accuracy: 0.1963 Epoch 1: val_accuracy improved from -inf to 0.20312, saving model to alex_1.h5 25/25 [==============================] - 24s 939ms/step - loss: 2.2671 - accuracy: 0.1963 - val_loss: 2.2120 - val_accuracy: 0.2031 Epoch 2/25 25/25 [==============================] - ETA: 0s - loss: 2.0757 - accuracy: 0.1875 Epoch 2: val_accuracy improved from 0.20312 to 0.28125, saving model to alex_1.h5 25/25 [==============================] - 22s 899ms/step - loss: 2.0757 - accuracy: 0.1875 - val_loss: 1.7334 - val_accuracy: 0.2812 Epoch 3/25 25/25 [==============================] - ETA: 0s - loss: 1.7064 - accuracy: 0.2100 Epoch 3: val_accuracy did not improve from 0.28125 25/25 [==============================] - 23s 940ms/step - loss: 1.7064 - accuracy: 0.2100 - val_loss: 1.6128 - val_accuracy: 0.2656 Epoch 4/25 25/25 [==============================] - ETA: 0s - loss: 1.6449 - accuracy: 0.2537 Epoch 4: val_accuracy improved from 0.28125 to 0.34896, saving model to alex_1.h5 25/25 [==============================] - 23s 918ms/step - loss: 1.6449 - accuracy: 0.2537 - val_loss: 1.5930 - val_accuracy: 0.3490 Epoch 5/25 25/25 [==============================] - ETA: 0s - loss: 1.6596 - accuracy: 0.2275 Epoch 5: val_accuracy did not improve from 0.34896 25/25 [==============================] - 23s 928ms/step - loss: 1.6596 - accuracy: 0.2275 - val_loss: 1.5650 - val_accuracy: 0.2865 Epoch 6/25 25/25 [==============================] - ETA: 0s - loss: 1.6292 - accuracy: 0.2625 Epoch 6: val_accuracy did not improve from 0.34896 25/25 [==============================] - 23s 935ms/step - loss: 1.6292 - accuracy: 0.2625 - val_loss: 1.5573 - val_accuracy: 0.3021 Epoch 7/25 25/25 [==============================] - ETA: 0s - loss: 1.6197 - accuracy: 0.2562 Epoch 7: val_accuracy did not improve from 0.34896 25/25 [==============================] - 23s 929ms/step - loss: 1.6197 - accuracy: 0.2562 - val_loss: 1.5328 - val_accuracy: 0.3125 Epoch 8/25 25/25 [==============================] - ETA: 0s - loss: 1.5907 - accuracy: 0.2975 Epoch 8: val_accuracy improved from 0.34896 to 0.36458, saving model to alex_1.h5 25/25 [==============================] - 24s 943ms/step - loss: 1.5907 - accuracy: 0.2975 - val_loss: 1.4958 - val_accuracy: 0.3646 Epoch 9/25 25/25 [==============================] - ETA: 0s - loss: 1.5715 - accuracy: 0.2962 Epoch 9: val_accuracy improved from 0.36458 to 0.40104, saving model to alex_1.h5 25/25 [==============================] - 24s 944ms/step - loss: 1.5715 - accuracy: 0.2962 - val_loss: 1.4821 - val_accuracy: 0.4010 Epoch 10/25 25/25 [==============================] - ETA: 0s - loss: 1.5357 - accuracy: 0.3162 Epoch 10: val_accuracy did not improve from 0.40104 25/25 [==============================] - 23s 937ms/step - loss: 1.5357 - accuracy: 0.3162 - val_loss: 1.4562 - val_accuracy: 0.3958 Epoch 11/25 25/25 [==============================] - ETA: 0s - loss: 1.5030 - accuracy: 0.3262 Epoch 11: val_accuracy improved from 0.40104 to 0.45833, saving model to alex_1.h5 25/25 [==============================] - 24s 970ms/step - loss: 1.5030 - accuracy: 0.3262 - val_loss: 1.4106 - val_accuracy: 0.4583 Epoch 12/25 25/25 [==============================] - ETA: 0s - loss: 1.4862 - accuracy: 0.3613 Epoch 12: val_accuracy improved from 0.45833 to 0.53125, saving model to alex_1.h5 25/25 [==============================] - 25s 1s/step - loss: 1.4862 - accuracy: 0.3613 - val_loss: 1.3597 - val_accuracy: 0.5312 Epoch 13/25 25/25 [==============================] - ETA: 0s - loss: 1.4194 - accuracy: 0.4162 Epoch 13: val_accuracy did not improve from 0.53125 25/25 [==============================] - 24s 974ms/step - loss: 1.4194 - accuracy: 0.4162 - val_loss: 1.3095 - val_accuracy: 0.4583 Epoch 14/25 25/25 [==============================] - ETA: 0s - loss: 1.3418 - accuracy: 0.4437 Epoch 14: val_accuracy did not improve from 0.53125 25/25 [==============================] - 24s 959ms/step - loss: 1.3418 - accuracy: 0.4437 - val_loss: 1.2787 - val_accuracy: 0.4792 Epoch 15/25 25/25 [==============================] - ETA: 0s - loss: 1.3059 - accuracy: 0.4675 Epoch 15: val_accuracy did not improve from 0.53125 25/25 [==============================] - 24s 951ms/step - loss: 1.3059 - accuracy: 0.4675 - val_loss: 1.2374 - val_accuracy: 0.4635 Epoch 16/25 25/25 [==============================] - ETA: 0s - loss: 1.2688 - accuracy: 0.4725 Epoch 16: val_accuracy did not improve from 0.53125 25/25 [==============================] - 24s 955ms/step - loss: 1.2688 - accuracy: 0.4725 - val_loss: 1.2178 - val_accuracy: 0.4583 Epoch 17/25 25/25 [==============================] - ETA: 0s - loss: 1.2209 - accuracy: 0.4875 Epoch 17: val_accuracy did not improve from 0.53125 25/25 [==============================] - 24s 958ms/step - loss: 1.2209 - accuracy: 0.4875 - val_loss: 1.2793 - val_accuracy: 0.3958 Epoch 18/25 25/25 [==============================] - ETA: 0s - loss: 1.1457 - accuracy: 0.5150 Epoch 18: val_accuracy improved from 0.53125 to 0.55729, saving model to alex_1.h5 25/25 [==============================] - 24s 980ms/step - loss: 1.1457 - accuracy: 0.5150 - val_loss: 1.0978 - val_accuracy: 0.5573 Epoch 19/25 25/25 [==============================] - ETA: 0s - loss: 1.1318 - accuracy: 0.5063 Epoch 19: val_accuracy did not improve from 0.55729 25/25 [==============================] - 27s 1s/step - loss: 1.1318 - accuracy: 0.5063 - val_loss: 1.0764 - val_accuracy: 0.5104 Epoch 20/25 25/25 [==============================] - ETA: 0s - loss: 1.1289 - accuracy: 0.5125 Epoch 20: val_accuracy improved from 0.55729 to 0.56771, saving model to alex_1.h5 25/25 [==============================] - 25s 1s/step - loss: 1.1289 - accuracy: 0.5125 - val_loss: 1.0067 - val_accuracy: 0.5677 Epoch 21/25 25/25 [==============================] - ETA: 0s - loss: 1.0175 - accuracy: 0.5638 Epoch 21: val_accuracy did not improve from 0.56771 25/25 [==============================] - 26s 1s/step - loss: 1.0175 - accuracy: 0.5638 - val_loss: 1.0095 - val_accuracy: 0.5625 Epoch 22/25 25/25 [==============================] - ETA: 0s - loss: 1.0559 - accuracy: 0.5288 Epoch 22: val_accuracy did not improve from 0.56771 25/25 [==============================] - 26s 1s/step - loss: 1.0559 - accuracy: 0.5288 - val_loss: 1.0557 - val_accuracy: 0.5208 Epoch 23/25 25/25 [==============================] - ETA: 0s - loss: 1.1151 - accuracy: 0.5412 Epoch 23: val_accuracy did not improve from 0.56771 25/25 [==============================] - 26s 1s/step - loss: 1.1151 - accuracy: 0.5412 - val_loss: 1.0837 - val_accuracy: 0.5052 Epoch 24/25 25/25 [==============================] - ETA: 0s - loss: 1.0158 - accuracy: 0.5625 Epoch 24: val_accuracy improved from 0.56771 to 0.58333, saving model to alex_1.h5 25/25 [==============================] - 28s 1s/step - loss: 1.0158 - accuracy: 0.5625 - val_loss: 0.9605 - val_accuracy: 0.5833 Epoch 25/25 25/25 [==============================] - ETA: 0s - loss: 0.9619 - accuracy: 0.5750 Epoch 25: val_accuracy did not improve from 0.58333 25/25 [==============================] - 28s 1s/step - loss: 0.9619 - accuracy: 0.5750 - val_loss: 1.4147 - val_accuracy: 0.3906
import matplotlib.pyplot as plt
plt.plot(alex1.history["accuracy"])
plt.plot(alex1.history['val_accuracy'])
plt.plot(alex1.history['loss'])
plt.plot(alex1.history['val_loss'])
plt.title("Model accuracy")
plt.ylabel("Value")
plt.xlabel("Epoch")
plt.legend(["Accuracy","Validation Accuracy","Loss","Validation Loss"])
plt.show()
model_flat_drop.evaluate(test_ds)
8/8 [==============================] - 2s 218ms/step - loss: 1.4086 - accuracy: 0.4141
[1.4086337089538574, 0.4140625]
Do warstw maxpooling
model_pool_drop = keras.models.Sequential([
keras.layers.Conv2D(filters=96, kernel_size=(11,11), strides=(4,4), activation='relu', input_shape=(227,227,3)),
keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),
keras.layers.Dropout(.5),
keras.layers.Conv2D(filters=256, kernel_size=(5,5), strides=(1,1), activation='relu', padding="same"),
keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),
keras.layers.Dropout(.5),
keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding="same"),
keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding="same"),
keras.layers.Conv2D(filters=256, kernel_size=(3,3), strides=(1,1), activation='relu', padding="same"),
keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),
keras.layers.Dropout(.5),
keras.layers.Flatten(),
keras.layers.Dense(4096, activation='relu'),
keras.layers.Dense(4096, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
model_pool_drop.compile(loss='sparse_categorical_crossentropy', optimizer=tf.optimizers.SGD(lr=.001), metrics=['accuracy'])
model_pool_drop.summary()
WARNING:absl:`lr` is deprecated, please use `learning_rate` instead, or use the legacy optimizer, e.g.,tf.keras.optimizers.legacy.SGD.
Model: "sequential_1" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d_5 (Conv2D) (None, 55, 55, 96) 34944 max_pooling2d_3 (MaxPooling (None, 27, 27, 96) 0 2D) dropout_2 (Dropout) (None, 27, 27, 96) 0 conv2d_6 (Conv2D) (None, 27, 27, 256) 614656 max_pooling2d_4 (MaxPooling (None, 13, 13, 256) 0 2D) dropout_3 (Dropout) (None, 13, 13, 256) 0 conv2d_7 (Conv2D) (None, 13, 13, 384) 885120 conv2d_8 (Conv2D) (None, 13, 13, 384) 1327488 conv2d_9 (Conv2D) (None, 13, 13, 256) 884992 max_pooling2d_5 (MaxPooling (None, 6, 6, 256) 0 2D) dropout_4 (Dropout) (None, 6, 6, 256) 0 flatten_1 (Flatten) (None, 9216) 0 dense_3 (Dense) (None, 4096) 37752832 dense_4 (Dense) (None, 4096) 16781312 dense_5 (Dense) (None, 10) 40970 ================================================================= Total params: 58,322,314 Trainable params: 58,322,314 Non-trainable params: 0 _________________________________________________________________
checkpoint = ModelCheckpoint("alex_2.h5", monitor='val_accuracy', verbose=1, save_best_only=True, save_weights_only=False, mode='auto', period=1)
early = EarlyStopping(monitor='val_accuracy', min_delta=0, patience=20, verbose=1, mode='auto')
alex2 = model_pool_drop.fit_generator(
steps_per_epoch=len(train_ds),
generator=train_ds,
validation_data= validation_ds,
validation_steps=len(validation_ds),
epochs=25,
callbacks=[checkpoint,early])
WARNING:tensorflow:`period` argument is deprecated. Please use `save_freq` to specify the frequency in number of batches seen.
WARNING:tensorflow:`period` argument is deprecated. Please use `save_freq` to specify the frequency in number of batches seen.
Epoch 1/25
/var/folders/6b/j4d60ym516x2s6wymzj707rh0000gn/T/ipykernel_13671/3758035572.py:4: UserWarning: `Model.fit_generator` is deprecated and will be removed in a future version. Please use `Model.fit`, which supports generators. alex2 = model_pool_drop.fit_generator(
25/25 [==============================] - ETA: 0s - loss: 2.0517 - accuracy: 0.1963 Epoch 1: val_accuracy improved from -inf to 0.26042, saving model to alex_2.h5 25/25 [==============================] - 24s 926ms/step - loss: 2.0517 - accuracy: 0.1963 - val_loss: 1.8585 - val_accuracy: 0.2604 Epoch 2/25 25/25 [==============================] - ETA: 0s - loss: 1.6898 - accuracy: 0.2300 Epoch 2: val_accuracy improved from 0.26042 to 0.30208, saving model to alex_2.h5 25/25 [==============================] - 23s 937ms/step - loss: 1.6898 - accuracy: 0.2300 - val_loss: 1.7242 - val_accuracy: 0.3021 Epoch 3/25 25/25 [==============================] - ETA: 0s - loss: 1.6539 - accuracy: 0.2275 Epoch 3: val_accuracy did not improve from 0.30208 25/25 [==============================] - 23s 942ms/step - loss: 1.6539 - accuracy: 0.2275 - val_loss: 1.7515 - val_accuracy: 0.2552 Epoch 4/25 25/25 [==============================] - ETA: 0s - loss: 1.6148 - accuracy: 0.2775 Epoch 4: val_accuracy did not improve from 0.30208 25/25 [==============================] - 24s 971ms/step - loss: 1.6148 - accuracy: 0.2775 - val_loss: 1.7084 - val_accuracy: 0.2812 Epoch 5/25 25/25 [==============================] - ETA: 0s - loss: 1.5876 - accuracy: 0.3013 Epoch 5: val_accuracy did not improve from 0.30208 25/25 [==============================] - 24s 947ms/step - loss: 1.5876 - accuracy: 0.3013 - val_loss: 1.6701 - val_accuracy: 0.2344 Epoch 6/25 25/25 [==============================] - ETA: 0s - loss: 1.5765 - accuracy: 0.2962 Epoch 6: val_accuracy improved from 0.30208 to 0.34896, saving model to alex_2.h5 25/25 [==============================] - 22s 894ms/step - loss: 1.5765 - accuracy: 0.2962 - val_loss: 1.6380 - val_accuracy: 0.3490 Epoch 7/25 25/25 [==============================] - ETA: 0s - loss: 1.5710 - accuracy: 0.2825 Epoch 7: val_accuracy improved from 0.34896 to 0.36979, saving model to alex_2.h5 25/25 [==============================] - 22s 865ms/step - loss: 1.5710 - accuracy: 0.2825 - val_loss: 1.6219 - val_accuracy: 0.3698 Epoch 8/25 25/25 [==============================] - ETA: 0s - loss: 1.5406 - accuracy: 0.3275 Epoch 8: val_accuracy did not improve from 0.36979 25/25 [==============================] - 22s 872ms/step - loss: 1.5406 - accuracy: 0.3275 - val_loss: 1.6149 - val_accuracy: 0.3646 Epoch 9/25 25/25 [==============================] - ETA: 0s - loss: 1.4844 - accuracy: 0.3537 Epoch 9: val_accuracy did not improve from 0.36979 25/25 [==============================] - 22s 879ms/step - loss: 1.4844 - accuracy: 0.3537 - val_loss: 1.5673 - val_accuracy: 0.3490 Epoch 10/25 25/25 [==============================] - ETA: 0s - loss: 1.4884 - accuracy: 0.3462 Epoch 10: val_accuracy improved from 0.36979 to 0.41146, saving model to alex_2.h5 25/25 [==============================] - 23s 911ms/step - loss: 1.4884 - accuracy: 0.3462 - val_loss: 1.5698 - val_accuracy: 0.4115 Epoch 11/25 25/25 [==============================] - ETA: 0s - loss: 1.4408 - accuracy: 0.3887 Epoch 11: val_accuracy did not improve from 0.41146 25/25 [==============================] - 22s 897ms/step - loss: 1.4408 - accuracy: 0.3887 - val_loss: 1.5205 - val_accuracy: 0.4115 Epoch 12/25 25/25 [==============================] - ETA: 0s - loss: 1.3852 - accuracy: 0.4250 Epoch 12: val_accuracy did not improve from 0.41146 25/25 [==============================] - 23s 905ms/step - loss: 1.3852 - accuracy: 0.4250 - val_loss: 1.5540 - val_accuracy: 0.3594 Epoch 13/25 25/25 [==============================] - ETA: 0s - loss: 1.3202 - accuracy: 0.4663 Epoch 13: val_accuracy did not improve from 0.41146 25/25 [==============================] - 23s 906ms/step - loss: 1.3202 - accuracy: 0.4663 - val_loss: 1.3669 - val_accuracy: 0.4115 Epoch 14/25 25/25 [==============================] - ETA: 0s - loss: 1.2614 - accuracy: 0.4700 Epoch 14: val_accuracy improved from 0.41146 to 0.44792, saving model to alex_2.h5 25/25 [==============================] - 23s 917ms/step - loss: 1.2614 - accuracy: 0.4700 - val_loss: 1.3723 - val_accuracy: 0.4479 Epoch 15/25 25/25 [==============================] - ETA: 0s - loss: 1.1812 - accuracy: 0.4900 Epoch 15: val_accuracy did not improve from 0.44792 25/25 [==============================] - 23s 931ms/step - loss: 1.1812 - accuracy: 0.4900 - val_loss: 1.4332 - val_accuracy: 0.3854 Epoch 16/25 25/25 [==============================] - ETA: 0s - loss: 1.1327 - accuracy: 0.5113 Epoch 16: val_accuracy did not improve from 0.44792 25/25 [==============================] - 23s 908ms/step - loss: 1.1327 - accuracy: 0.5113 - val_loss: 1.4481 - val_accuracy: 0.3802 Epoch 17/25 25/25 [==============================] - ETA: 0s - loss: 1.0848 - accuracy: 0.5462 Epoch 17: val_accuracy did not improve from 0.44792 25/25 [==============================] - 23s 915ms/step - loss: 1.0848 - accuracy: 0.5462 - val_loss: 1.6393 - val_accuracy: 0.3594 Epoch 18/25 25/25 [==============================] - ETA: 0s - loss: 1.1003 - accuracy: 0.5462 Epoch 18: val_accuracy did not improve from 0.44792 25/25 [==============================] - 23s 915ms/step - loss: 1.1003 - accuracy: 0.5462 - val_loss: 1.9934 - val_accuracy: 0.3333 Epoch 19/25 25/25 [==============================] - ETA: 0s - loss: 1.0956 - accuracy: 0.5437 Epoch 19: val_accuracy improved from 0.44792 to 0.47917, saving model to alex_2.h5 25/25 [==============================] - 24s 951ms/step - loss: 1.0956 - accuracy: 0.5437 - val_loss: 1.1398 - val_accuracy: 0.4792 Epoch 20/25 25/25 [==============================] - ETA: 0s - loss: 1.0014 - accuracy: 0.5688 Epoch 20: val_accuracy did not improve from 0.47917 25/25 [==============================] - 24s 976ms/step - loss: 1.0014 - accuracy: 0.5688 - val_loss: 1.2802 - val_accuracy: 0.4062 Epoch 21/25 25/25 [==============================] - ETA: 0s - loss: 1.1812 - accuracy: 0.5213 Epoch 21: val_accuracy did not improve from 0.47917 25/25 [==============================] - 25s 994ms/step - loss: 1.1812 - accuracy: 0.5213 - val_loss: 1.2117 - val_accuracy: 0.4219 Epoch 22/25 25/25 [==============================] - ETA: 0s - loss: 1.1199 - accuracy: 0.5362 Epoch 22: val_accuracy did not improve from 0.47917 25/25 [==============================] - 25s 1s/step - loss: 1.1199 - accuracy: 0.5362 - val_loss: 1.1858 - val_accuracy: 0.4531 Epoch 23/25 25/25 [==============================] - ETA: 0s - loss: 1.0079 - accuracy: 0.5700 Epoch 23: val_accuracy did not improve from 0.47917 25/25 [==============================] - 25s 1s/step - loss: 1.0079 - accuracy: 0.5700 - val_loss: 1.2529 - val_accuracy: 0.4219 Epoch 24/25 25/25 [==============================] - ETA: 0s - loss: 0.9996 - accuracy: 0.5750 Epoch 24: val_accuracy did not improve from 0.47917 25/25 [==============================] - 25s 1s/step - loss: 0.9996 - accuracy: 0.5750 - val_loss: 1.1984 - val_accuracy: 0.4427 Epoch 25/25 25/25 [==============================] - ETA: 0s - loss: 0.9713 - accuracy: 0.5825 Epoch 25: val_accuracy improved from 0.47917 to 0.51042, saving model to alex_2.h5 25/25 [==============================] - 25s 1s/step - loss: 0.9713 - accuracy: 0.5825 - val_loss: 1.0454 - val_accuracy: 0.5104
plt.plot(alex2.history["accuracy"])
plt.plot(alex2.history['val_accuracy'])
plt.plot(alex2.history['loss'])
plt.plot(alex2.history['val_loss'])
plt.title("Model accuracy")
plt.ylabel("Value")
plt.xlabel("Epoch")
plt.legend(["Accuracy","Validation Accuracy","Loss","Validation Loss"])
plt.show()
model_pool_drop.evaluate(test_ds)
8/8 [==============================] - 2s 265ms/step - loss: 1.0271 - accuracy: 0.5391
[1.0271097421646118, 0.5390625]
Do warstw splotowych
model_conv_drop = keras.models.Sequential([
keras.layers.Conv2D(filters=96, kernel_size=(11,11), strides=(4,4), activation='relu', input_shape=(227,227,3)),
keras.layers.Dropout(.5),
keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),
keras.layers.Conv2D(filters=256, kernel_size=(5,5), strides=(1,1), activation='relu', padding="same"),
keras.layers.Dropout(.5),
keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),
keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding="same"),
keras.layers.Dropout(.5),
keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding="same"),
keras.layers.Dropout(.5),
keras.layers.Conv2D(filters=256, kernel_size=(3,3), strides=(1,1), activation='relu', padding="same"),
keras.layers.Dropout(.5),
keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),
keras.layers.Flatten(),
keras.layers.Dense(4096, activation='relu'),
keras.layers.Dense(4096, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
model_conv_drop.compile(loss='sparse_categorical_crossentropy', optimizer=tf.optimizers.SGD(lr=.001), metrics=['accuracy'])
model_conv_drop.summary()
WARNING:absl:`lr` is deprecated, please use `learning_rate` instead, or use the legacy optimizer, e.g.,tf.keras.optimizers.legacy.SGD.
Model: "sequential_2" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d_10 (Conv2D) (None, 55, 55, 96) 34944 dropout_5 (Dropout) (None, 55, 55, 96) 0 max_pooling2d_6 (MaxPooling (None, 27, 27, 96) 0 2D) conv2d_11 (Conv2D) (None, 27, 27, 256) 614656 dropout_6 (Dropout) (None, 27, 27, 256) 0 max_pooling2d_7 (MaxPooling (None, 13, 13, 256) 0 2D) conv2d_12 (Conv2D) (None, 13, 13, 384) 885120 dropout_7 (Dropout) (None, 13, 13, 384) 0 conv2d_13 (Conv2D) (None, 13, 13, 384) 1327488 dropout_8 (Dropout) (None, 13, 13, 384) 0 conv2d_14 (Conv2D) (None, 13, 13, 256) 884992 dropout_9 (Dropout) (None, 13, 13, 256) 0 max_pooling2d_8 (MaxPooling (None, 6, 6, 256) 0 2D) flatten_2 (Flatten) (None, 9216) 0 dense_6 (Dense) (None, 4096) 37752832 dense_7 (Dense) (None, 4096) 16781312 dense_8 (Dense) (None, 10) 40970 ================================================================= Total params: 58,322,314 Trainable params: 58,322,314 Non-trainable params: 0 _________________________________________________________________
checkpoint = ModelCheckpoint("alex_3.h5", monitor='val_accuracy', verbose=1, save_best_only=True, save_weights_only=False, mode='auto', period=1)
early = EarlyStopping(monitor='val_accuracy', min_delta=0, patience=20, verbose=1, mode='auto')
alex3 = model_conv_drop.fit_generator(
steps_per_epoch=len(train_ds),
generator=train_ds,
validation_data= validation_ds,
validation_steps=len(validation_ds),
epochs=25,
callbacks=[checkpoint,early])
WARNING:tensorflow:`period` argument is deprecated. Please use `save_freq` to specify the frequency in number of batches seen.
WARNING:tensorflow:`period` argument is deprecated. Please use `save_freq` to specify the frequency in number of batches seen.
Epoch 1/25
/var/folders/6b/j4d60ym516x2s6wymzj707rh0000gn/T/ipykernel_13671/3866647797.py:4: UserWarning: `Model.fit_generator` is deprecated and will be removed in a future version. Please use `Model.fit`, which supports generators. alex3 = model_conv_drop.fit_generator(
25/25 [==============================] - ETA: 0s - loss: 1.8090 - accuracy: 0.2450 Epoch 1: val_accuracy improved from -inf to 0.21354, saving model to alex_3.h5 25/25 [==============================] - 26s 1s/step - loss: 1.8090 - accuracy: 0.2450 - val_loss: 2.1443 - val_accuracy: 0.2135 Epoch 2/25 25/25 [==============================] - ETA: 0s - loss: 1.6573 - accuracy: 0.2738 Epoch 2: val_accuracy improved from 0.21354 to 0.40104, saving model to alex_3.h5 25/25 [==============================] - 25s 1s/step - loss: 1.6573 - accuracy: 0.2738 - val_loss: 2.1381 - val_accuracy: 0.4010 Epoch 3/25 25/25 [==============================] - ETA: 0s - loss: 1.5349 - accuracy: 0.3413 Epoch 3: val_accuracy did not improve from 0.40104 25/25 [==============================] - 25s 1s/step - loss: 1.5349 - accuracy: 0.3413 - val_loss: 2.0752 - val_accuracy: 0.2760 Epoch 4/25 25/25 [==============================] - ETA: 0s - loss: 1.4963 - accuracy: 0.3688 Epoch 4: val_accuracy did not improve from 0.40104 25/25 [==============================] - 25s 1s/step - loss: 1.4963 - accuracy: 0.3688 - val_loss: 2.0778 - val_accuracy: 0.2760 Epoch 5/25 25/25 [==============================] - ETA: 0s - loss: 1.3579 - accuracy: 0.4112 Epoch 5: val_accuracy improved from 0.40104 to 0.48958, saving model to alex_3.h5 25/25 [==============================] - 26s 1s/step - loss: 1.3579 - accuracy: 0.4112 - val_loss: 1.9411 - val_accuracy: 0.4896 Epoch 6/25 25/25 [==============================] - ETA: 0s - loss: 1.2882 - accuracy: 0.4512 Epoch 6: val_accuracy did not improve from 0.48958 25/25 [==============================] - 25s 1s/step - loss: 1.2882 - accuracy: 0.4512 - val_loss: 1.8212 - val_accuracy: 0.4323 Epoch 7/25 25/25 [==============================] - ETA: 0s - loss: 1.1601 - accuracy: 0.5163 Epoch 7: val_accuracy did not improve from 0.48958 25/25 [==============================] - 25s 1s/step - loss: 1.1601 - accuracy: 0.5163 - val_loss: 1.7429 - val_accuracy: 0.3802 Epoch 8/25 25/25 [==============================] - ETA: 0s - loss: 1.2260 - accuracy: 0.4950 Epoch 8: val_accuracy did not improve from 0.48958 25/25 [==============================] - 26s 1s/step - loss: 1.2260 - accuracy: 0.4950 - val_loss: 1.8061 - val_accuracy: 0.3490 Epoch 9/25 25/25 [==============================] - ETA: 0s - loss: 1.1188 - accuracy: 0.5200 Epoch 9: val_accuracy did not improve from 0.48958 25/25 [==============================] - 27s 1s/step - loss: 1.1188 - accuracy: 0.5200 - val_loss: 1.7995 - val_accuracy: 0.3177 Epoch 10/25 25/25 [==============================] - ETA: 0s - loss: 0.9879 - accuracy: 0.5950 Epoch 10: val_accuracy did not improve from 0.48958 25/25 [==============================] - 27s 1s/step - loss: 0.9879 - accuracy: 0.5950 - val_loss: 1.8887 - val_accuracy: 0.1875 Epoch 11/25 25/25 [==============================] - ETA: 0s - loss: 0.9848 - accuracy: 0.5800 Epoch 11: val_accuracy did not improve from 0.48958 25/25 [==============================] - 26s 1s/step - loss: 0.9848 - accuracy: 0.5800 - val_loss: 1.7492 - val_accuracy: 0.3073 Epoch 12/25 25/25 [==============================] - ETA: 0s - loss: 0.9861 - accuracy: 0.6100 Epoch 12: val_accuracy did not improve from 0.48958 25/25 [==============================] - 26s 1s/step - loss: 0.9861 - accuracy: 0.6100 - val_loss: 1.6876 - val_accuracy: 0.3646 Epoch 13/25 25/25 [==============================] - ETA: 0s - loss: 0.9351 - accuracy: 0.6075 Epoch 13: val_accuracy improved from 0.48958 to 0.51562, saving model to alex_3.h5 25/25 [==============================] - 27s 1s/step - loss: 0.9351 - accuracy: 0.6075 - val_loss: 1.5044 - val_accuracy: 0.5156 Epoch 14/25 25/25 [==============================] - ETA: 0s - loss: 0.9683 - accuracy: 0.6125 Epoch 14: val_accuracy did not improve from 0.51562 25/25 [==============================] - 28s 1s/step - loss: 0.9683 - accuracy: 0.6125 - val_loss: 1.5911 - val_accuracy: 0.4375 Epoch 15/25 25/25 [==============================] - ETA: 0s - loss: 0.9354 - accuracy: 0.6037 Epoch 15: val_accuracy did not improve from 0.51562 25/25 [==============================] - 28s 1s/step - loss: 0.9354 - accuracy: 0.6037 - val_loss: 1.6423 - val_accuracy: 0.3698 Epoch 16/25 25/25 [==============================] - ETA: 0s - loss: 0.8270 - accuracy: 0.6800 Epoch 16: val_accuracy did not improve from 0.51562 25/25 [==============================] - 30s 1s/step - loss: 0.8270 - accuracy: 0.6800 - val_loss: 1.6960 - val_accuracy: 0.2708 Epoch 17/25 25/25 [==============================] - ETA: 0s - loss: 0.8327 - accuracy: 0.6488 Epoch 17: val_accuracy did not improve from 0.51562 25/25 [==============================] - 30s 1s/step - loss: 0.8327 - accuracy: 0.6488 - val_loss: 1.6061 - val_accuracy: 0.3646 Epoch 18/25 25/25 [==============================] - ETA: 0s - loss: 0.8175 - accuracy: 0.6625 Epoch 18: val_accuracy did not improve from 0.51562 25/25 [==============================] - 27s 1s/step - loss: 0.8175 - accuracy: 0.6625 - val_loss: 1.5903 - val_accuracy: 0.4531 Epoch 19/25 25/25 [==============================] - ETA: 0s - loss: 0.7260 - accuracy: 0.7063 Epoch 19: val_accuracy did not improve from 0.51562 25/25 [==============================] - 29s 1s/step - loss: 0.7260 - accuracy: 0.7063 - val_loss: 1.4000 - val_accuracy: 0.4896 Epoch 20/25 25/25 [==============================] - ETA: 0s - loss: 0.7956 - accuracy: 0.6587 Epoch 20: val_accuracy did not improve from 0.51562 25/25 [==============================] - 28s 1s/step - loss: 0.7956 - accuracy: 0.6587 - val_loss: 1.6044 - val_accuracy: 0.4010 Epoch 21/25 25/25 [==============================] - ETA: 0s - loss: 0.8474 - accuracy: 0.6625 Epoch 21: val_accuracy did not improve from 0.51562 25/25 [==============================] - 28s 1s/step - loss: 0.8474 - accuracy: 0.6625 - val_loss: 1.5974 - val_accuracy: 0.3490 Epoch 22/25 25/25 [==============================] - ETA: 0s - loss: 0.6524 - accuracy: 0.7175 Epoch 22: val_accuracy did not improve from 0.51562 25/25 [==============================] - 27s 1s/step - loss: 0.6524 - accuracy: 0.7175 - val_loss: 1.5435 - val_accuracy: 0.3594 Epoch 23/25 25/25 [==============================] - ETA: 0s - loss: 0.8152 - accuracy: 0.6725 Epoch 23: val_accuracy did not improve from 0.51562 25/25 [==============================] - 26s 1s/step - loss: 0.8152 - accuracy: 0.6725 - val_loss: 1.8228 - val_accuracy: 0.2656 Epoch 24/25 25/25 [==============================] - ETA: 0s - loss: 0.8200 - accuracy: 0.6725 Epoch 24: val_accuracy did not improve from 0.51562 25/25 [==============================] - 29s 1s/step - loss: 0.8200 - accuracy: 0.6725 - val_loss: 1.5864 - val_accuracy: 0.3854 Epoch 25/25 25/25 [==============================] - ETA: 0s - loss: 0.7701 - accuracy: 0.6825 Epoch 25: val_accuracy did not improve from 0.51562 25/25 [==============================] - 27s 1s/step - loss: 0.7701 - accuracy: 0.6825 - val_loss: 1.4605 - val_accuracy: 0.5104
plt.plot(alex3.history["accuracy"])
plt.plot(alex3.history['val_accuracy'])
plt.plot(alex3.history['loss'])
plt.plot(alex3.history['val_loss'])
plt.title("Model accuracy")
plt.ylabel("Value")
plt.xlabel("Epoch")
plt.legend(["Accuracy","Validation Accuracy","Loss","Validation Loss"])
plt.show()
model_conv_drop.evaluate(test_ds)
8/8 [==============================] - 2s 280ms/step - loss: 1.4843 - accuracy: 0.4570
[1.4843157529830933, 0.45703125]
Do warstw spłaszczonych i maxpooling
model_flat_pool_drop = keras.models.Sequential([
keras.layers.Conv2D(filters=96, kernel_size=(11,11), strides=(4,4), activation='relu', input_shape=(227,227,3)),
keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),
keras.layers.Dropout(.5),
keras.layers.Conv2D(filters=256, kernel_size=(5,5), strides=(1,1), activation='relu', padding="same"),
keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),
keras.layers.Dropout(.5),
keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding="same"),
keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding="same"),
keras.layers.Conv2D(filters=256, kernel_size=(3,3), strides=(1,1), activation='relu', padding="same"),
keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),
keras.layers.Dropout(.5),
keras.layers.Flatten(),
keras.layers.Dense(4096, activation='relu'),
keras.layers.Dropout(.5),
keras.layers.Dense(4096, activation='relu'),
keras.layers.Dropout(.5),
keras.layers.Dense(10, activation='softmax')
])
model_flat_pool_drop.compile(loss='sparse_categorical_crossentropy', optimizer=tf.optimizers.SGD(lr=.001), metrics=['accuracy'])
model_flat_pool_drop.summary()
WARNING:absl:`lr` is deprecated, please use `learning_rate` instead, or use the legacy optimizer, e.g.,tf.keras.optimizers.legacy.SGD.
Model: "sequential_3" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d_15 (Conv2D) (None, 55, 55, 96) 34944 max_pooling2d_9 (MaxPooling (None, 27, 27, 96) 0 2D) dropout_10 (Dropout) (None, 27, 27, 96) 0 conv2d_16 (Conv2D) (None, 27, 27, 256) 614656 max_pooling2d_10 (MaxPoolin (None, 13, 13, 256) 0 g2D) dropout_11 (Dropout) (None, 13, 13, 256) 0 conv2d_17 (Conv2D) (None, 13, 13, 384) 885120 conv2d_18 (Conv2D) (None, 13, 13, 384) 1327488 conv2d_19 (Conv2D) (None, 13, 13, 256) 884992 max_pooling2d_11 (MaxPoolin (None, 6, 6, 256) 0 g2D) dropout_12 (Dropout) (None, 6, 6, 256) 0 flatten_3 (Flatten) (None, 9216) 0 dense_9 (Dense) (None, 4096) 37752832 dropout_13 (Dropout) (None, 4096) 0 dense_10 (Dense) (None, 4096) 16781312 dropout_14 (Dropout) (None, 4096) 0 dense_11 (Dense) (None, 10) 40970 ================================================================= Total params: 58,322,314 Trainable params: 58,322,314 Non-trainable params: 0 _________________________________________________________________
checkpoint = ModelCheckpoint("alex_4.h5", monitor='val_accuracy', verbose=1, save_best_only=True, save_weights_only=False, mode='auto', period=1)
early = EarlyStopping(monitor='val_accuracy', min_delta=0, patience=20, verbose=1, mode='auto')
alex4 = model_flat_pool_drop.fit_generator(
steps_per_epoch=len(train_ds),
generator=train_ds,
validation_data= validation_ds,
validation_steps=len(validation_ds),
epochs=25,
callbacks=[checkpoint,early])
WARNING:tensorflow:`period` argument is deprecated. Please use `save_freq` to specify the frequency in number of batches seen.
WARNING:tensorflow:`period` argument is deprecated. Please use `save_freq` to specify the frequency in number of batches seen.
Epoch 1/25
/var/folders/6b/j4d60ym516x2s6wymzj707rh0000gn/T/ipykernel_13671/2334869237.py:4: UserWarning: `Model.fit_generator` is deprecated and will be removed in a future version. Please use `Model.fit`, which supports generators. alex4 = model_flat_pool_drop.fit_generator(
25/25 [==============================] - ETA: 0s - loss: 2.1044 - accuracy: 0.1750 Epoch 1: val_accuracy improved from -inf to 0.25000, saving model to alex_4.h5 25/25 [==============================] - 27s 1s/step - loss: 2.1044 - accuracy: 0.1750 - val_loss: 1.9644 - val_accuracy: 0.2500 Epoch 2/25 25/25 [==============================] - ETA: 0s - loss: 1.7691 - accuracy: 0.1875 Epoch 2: val_accuracy did not improve from 0.25000 25/25 [==============================] - 26s 1s/step - loss: 1.7691 - accuracy: 0.1875 - val_loss: 1.8190 - val_accuracy: 0.1979 Epoch 3/25 25/25 [==============================] - ETA: 0s - loss: 1.7062 - accuracy: 0.2113 Epoch 3: val_accuracy did not improve from 0.25000 25/25 [==============================] - 27s 1s/step - loss: 1.7062 - accuracy: 0.2113 - val_loss: 1.8115 - val_accuracy: 0.2083 Epoch 4/25 25/25 [==============================] - ETA: 0s - loss: 1.6706 - accuracy: 0.2362 Epoch 4: val_accuracy improved from 0.25000 to 0.30208, saving model to alex_4.h5 25/25 [==============================] - 26s 1s/step - loss: 1.6706 - accuracy: 0.2362 - val_loss: 1.7808 - val_accuracy: 0.3021 Epoch 5/25 25/25 [==============================] - ETA: 0s - loss: 1.6715 - accuracy: 0.2113 Epoch 5: val_accuracy improved from 0.30208 to 0.30729, saving model to alex_4.h5 25/25 [==============================] - 28s 1s/step - loss: 1.6715 - accuracy: 0.2113 - val_loss: 1.7774 - val_accuracy: 0.3073 Epoch 6/25 25/25 [==============================] - ETA: 0s - loss: 1.6512 - accuracy: 0.2425 Epoch 6: val_accuracy improved from 0.30729 to 0.32812, saving model to alex_4.h5 25/25 [==============================] - 27s 1s/step - loss: 1.6512 - accuracy: 0.2425 - val_loss: 1.7714 - val_accuracy: 0.3281 Epoch 7/25 25/25 [==============================] - ETA: 0s - loss: 1.6418 - accuracy: 0.2475 Epoch 7: val_accuracy did not improve from 0.32812 25/25 [==============================] - 27s 1s/step - loss: 1.6418 - accuracy: 0.2475 - val_loss: 1.7421 - val_accuracy: 0.2969 Epoch 8/25 25/25 [==============================] - ETA: 0s - loss: 1.5988 - accuracy: 0.2488 Epoch 8: val_accuracy did not improve from 0.32812 25/25 [==============================] - 27s 1s/step - loss: 1.5988 - accuracy: 0.2488 - val_loss: 1.7183 - val_accuracy: 0.3177 Epoch 9/25 25/25 [==============================] - ETA: 0s - loss: 1.5946 - accuracy: 0.2800 Epoch 9: val_accuracy improved from 0.32812 to 0.34896, saving model to alex_4.h5 25/25 [==============================] - 27s 1s/step - loss: 1.5946 - accuracy: 0.2800 - val_loss: 1.6653 - val_accuracy: 0.3490 Epoch 10/25 25/25 [==============================] - ETA: 0s - loss: 1.5646 - accuracy: 0.2875 Epoch 10: val_accuracy did not improve from 0.34896 25/25 [==============================] - 28s 1s/step - loss: 1.5646 - accuracy: 0.2875 - val_loss: 1.6476 - val_accuracy: 0.3490 Epoch 11/25 25/25 [==============================] - ETA: 0s - loss: 1.5359 - accuracy: 0.3200 Epoch 11: val_accuracy improved from 0.34896 to 0.45312, saving model to alex_4.h5 25/25 [==============================] - 28s 1s/step - loss: 1.5359 - accuracy: 0.3200 - val_loss: 1.5768 - val_accuracy: 0.4531 Epoch 12/25 25/25 [==============================] - ETA: 0s - loss: 1.4968 - accuracy: 0.3200 Epoch 12: val_accuracy did not improve from 0.45312 25/25 [==============================] - 27s 1s/step - loss: 1.4968 - accuracy: 0.3200 - val_loss: 1.5472 - val_accuracy: 0.3594 Epoch 13/25 25/25 [==============================] - ETA: 0s - loss: 1.4612 - accuracy: 0.3975 Epoch 13: val_accuracy did not improve from 0.45312 25/25 [==============================] - 27s 1s/step - loss: 1.4612 - accuracy: 0.3975 - val_loss: 1.4494 - val_accuracy: 0.4427 Epoch 14/25 25/25 [==============================] - ETA: 0s - loss: 1.3955 - accuracy: 0.4038 Epoch 14: val_accuracy did not improve from 0.45312 25/25 [==============================] - 27s 1s/step - loss: 1.3955 - accuracy: 0.4038 - val_loss: 1.4523 - val_accuracy: 0.3542 Epoch 15/25 25/25 [==============================] - ETA: 0s - loss: 1.3153 - accuracy: 0.4525 Epoch 15: val_accuracy did not improve from 0.45312 25/25 [==============================] - 28s 1s/step - loss: 1.3153 - accuracy: 0.4525 - val_loss: 1.3144 - val_accuracy: 0.4062 Epoch 16/25 25/25 [==============================] - ETA: 0s - loss: 1.2655 - accuracy: 0.4638 Epoch 16: val_accuracy did not improve from 0.45312 25/25 [==============================] - 26s 1s/step - loss: 1.2655 - accuracy: 0.4638 - val_loss: 1.2121 - val_accuracy: 0.4479 Epoch 17/25 25/25 [==============================] - ETA: 0s - loss: 1.1774 - accuracy: 0.4900 Epoch 17: val_accuracy improved from 0.45312 to 0.47917, saving model to alex_4.h5 25/25 [==============================] - 26s 1s/step - loss: 1.1774 - accuracy: 0.4900 - val_loss: 1.1340 - val_accuracy: 0.4792 Epoch 18/25 25/25 [==============================] - ETA: 0s - loss: 1.1709 - accuracy: 0.4875 Epoch 18: val_accuracy did not improve from 0.47917 25/25 [==============================] - 26s 1s/step - loss: 1.1709 - accuracy: 0.4875 - val_loss: 1.1360 - val_accuracy: 0.4635 Epoch 19/25 25/25 [==============================] - ETA: 0s - loss: 1.1127 - accuracy: 0.5125 Epoch 19: val_accuracy improved from 0.47917 to 0.48958, saving model to alex_4.h5 25/25 [==============================] - 26s 1s/step - loss: 1.1127 - accuracy: 0.5125 - val_loss: 1.1156 - val_accuracy: 0.4896 Epoch 20/25 25/25 [==============================] - ETA: 0s - loss: 1.0822 - accuracy: 0.5263 Epoch 20: val_accuracy improved from 0.48958 to 0.54167, saving model to alex_4.h5 25/25 [==============================] - 26s 1s/step - loss: 1.0822 - accuracy: 0.5263 - val_loss: 0.9865 - val_accuracy: 0.5417 Epoch 21/25 25/25 [==============================] - ETA: 0s - loss: 1.1573 - accuracy: 0.5063 Epoch 21: val_accuracy did not improve from 0.54167 25/25 [==============================] - 26s 1s/step - loss: 1.1573 - accuracy: 0.5063 - val_loss: 1.5426 - val_accuracy: 0.3490 Epoch 22/25 25/25 [==============================] - ETA: 0s - loss: 1.0643 - accuracy: 0.5400 Epoch 22: val_accuracy did not improve from 0.54167 25/25 [==============================] - 26s 1s/step - loss: 1.0643 - accuracy: 0.5400 - val_loss: 1.1197 - val_accuracy: 0.4896 Epoch 23/25 25/25 [==============================] - ETA: 0s - loss: 1.0817 - accuracy: 0.5512 Epoch 23: val_accuracy improved from 0.54167 to 0.56771, saving model to alex_4.h5 25/25 [==============================] - 28s 1s/step - loss: 1.0817 - accuracy: 0.5512 - val_loss: 1.0690 - val_accuracy: 0.5677 Epoch 24/25 25/25 [==============================] - ETA: 0s - loss: 1.0167 - accuracy: 0.5600 Epoch 24: val_accuracy did not improve from 0.56771 25/25 [==============================] - 28s 1s/step - loss: 1.0167 - accuracy: 0.5600 - val_loss: 1.0323 - val_accuracy: 0.5208 Epoch 25/25 25/25 [==============================] - ETA: 0s - loss: 1.1168 - accuracy: 0.5537 Epoch 25: val_accuracy did not improve from 0.56771 25/25 [==============================] - 29s 1s/step - loss: 1.1168 - accuracy: 0.5537 - val_loss: 1.1679 - val_accuracy: 0.4948
plt.plot(alex4.history["accuracy"])
plt.plot(alex4.history['val_accuracy'])
plt.plot(alex4.history['loss'])
plt.plot(alex4.history['val_loss'])
plt.title("Model accuracy")
plt.ylabel("Value")
plt.xlabel("Epoch")
plt.legend(["Accuracy","Validation Accuracy","Loss","Validation Loss"])
plt.show()
model_flat_pool_drop.evaluate(test_ds)
8/8 [==============================] - 3s 321ms/step - loss: 1.2209 - accuracy: 0.5000
[1.220850944519043, 0.5]
Do warstw spłaszczonych i splotowych
model_flat_conv_drop = keras.models.Sequential([
keras.layers.Conv2D(filters=96, kernel_size=(11,11), strides=(4,4), activation='relu', input_shape=(227,227,3)),
keras.layers.Dropout(.5),
keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),
keras.layers.Conv2D(filters=256, kernel_size=(5,5), strides=(1,1), activation='relu', padding="same"),
keras.layers.Dropout(.5),
keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),
keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding="same"),
keras.layers.Dropout(.5),
keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding="same"),
keras.layers.Dropout(.5),
keras.layers.Conv2D(filters=256, kernel_size=(3,3), strides=(1,1), activation='relu', padding="same"),
keras.layers.Dropout(.5),
keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),
keras.layers.Flatten(),
keras.layers.Dense(4096, activation='relu'),
keras.layers.Dropout(.5),
keras.layers.Dense(4096, activation='relu'),
keras.layers.Dropout(.5),
keras.layers.Dense(10, activation='softmax')
])
model_flat_conv_drop.compile(loss='sparse_categorical_crossentropy', optimizer=tf.optimizers.SGD(lr=.001), metrics=['accuracy'])
model_flat_conv_drop.summary()
WARNING:absl:`lr` is deprecated, please use `learning_rate` instead, or use the legacy optimizer, e.g.,tf.keras.optimizers.legacy.SGD.
Model: "sequential_4" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d_20 (Conv2D) (None, 55, 55, 96) 34944 dropout_15 (Dropout) (None, 55, 55, 96) 0 max_pooling2d_12 (MaxPoolin (None, 27, 27, 96) 0 g2D) conv2d_21 (Conv2D) (None, 27, 27, 256) 614656 dropout_16 (Dropout) (None, 27, 27, 256) 0 max_pooling2d_13 (MaxPoolin (None, 13, 13, 256) 0 g2D) conv2d_22 (Conv2D) (None, 13, 13, 384) 885120 dropout_17 (Dropout) (None, 13, 13, 384) 0 conv2d_23 (Conv2D) (None, 13, 13, 384) 1327488 dropout_18 (Dropout) (None, 13, 13, 384) 0 conv2d_24 (Conv2D) (None, 13, 13, 256) 884992 dropout_19 (Dropout) (None, 13, 13, 256) 0 max_pooling2d_14 (MaxPoolin (None, 6, 6, 256) 0 g2D) flatten_4 (Flatten) (None, 9216) 0 dense_12 (Dense) (None, 4096) 37752832 dropout_20 (Dropout) (None, 4096) 0 dense_13 (Dense) (None, 4096) 16781312 dropout_21 (Dropout) (None, 4096) 0 dense_14 (Dense) (None, 10) 40970 ================================================================= Total params: 58,322,314 Trainable params: 58,322,314 Non-trainable params: 0 _________________________________________________________________
checkpoint = ModelCheckpoint("alex_5.h5", monitor='val_accuracy', verbose=1, save_best_only=True, save_weights_only=False, mode='auto', period=1)
early = EarlyStopping(monitor='val_accuracy', min_delta=0, patience=20, verbose=1, mode='auto')
alex5 = model_flat_conv_drop.fit_generator(
steps_per_epoch=len(train_ds),
generator=train_ds,
validation_data= validation_ds,
validation_steps=len(validation_ds),
epochs=25,
callbacks=[checkpoint,early])
WARNING:tensorflow:`period` argument is deprecated. Please use `save_freq` to specify the frequency in number of batches seen.
WARNING:tensorflow:`period` argument is deprecated. Please use `save_freq` to specify the frequency in number of batches seen.
Epoch 1/25
/var/folders/6b/j4d60ym516x2s6wymzj707rh0000gn/T/ipykernel_13671/1544533144.py:4: UserWarning: `Model.fit_generator` is deprecated and will be removed in a future version. Please use `Model.fit`, which supports generators. alex5 = model_flat_conv_drop.fit_generator(
25/25 [==============================] - ETA: 0s - loss: 1.8865 - accuracy: 0.2087 Epoch 1: val_accuracy improved from -inf to 0.31771, saving model to alex_5.h5 25/25 [==============================] - 31s 1s/step - loss: 1.8865 - accuracy: 0.2087 - val_loss: 2.1611 - val_accuracy: 0.3177 Epoch 2/25 25/25 [==============================] - ETA: 0s - loss: 1.6987 - accuracy: 0.2250 Epoch 2: val_accuracy did not improve from 0.31771 25/25 [==============================] - 33s 1s/step - loss: 1.6987 - accuracy: 0.2250 - val_loss: 2.1324 - val_accuracy: 0.1823 Epoch 3/25 25/25 [==============================] - ETA: 0s - loss: 1.6349 - accuracy: 0.2675 Epoch 3: val_accuracy did not improve from 0.31771 25/25 [==============================] - 29s 1s/step - loss: 1.6349 - accuracy: 0.2675 - val_loss: 2.0670 - val_accuracy: 0.3125 Epoch 4/25 25/25 [==============================] - ETA: 0s - loss: 1.5613 - accuracy: 0.3212 Epoch 4: val_accuracy improved from 0.31771 to 0.34896, saving model to alex_5.h5 25/25 [==============================] - 29s 1s/step - loss: 1.5613 - accuracy: 0.3212 - val_loss: 2.0176 - val_accuracy: 0.3490 Epoch 5/25 25/25 [==============================] - ETA: 0s - loss: 1.4594 - accuracy: 0.3587 Epoch 5: val_accuracy did not improve from 0.34896 25/25 [==============================] - 30s 1s/step - loss: 1.4594 - accuracy: 0.3587 - val_loss: 1.9236 - val_accuracy: 0.3177 Epoch 6/25 25/25 [==============================] - ETA: 0s - loss: 1.3418 - accuracy: 0.4050 Epoch 6: val_accuracy improved from 0.34896 to 0.38021, saving model to alex_5.h5 25/25 [==============================] - 30s 1s/step - loss: 1.3418 - accuracy: 0.4050 - val_loss: 1.8750 - val_accuracy: 0.3802 Epoch 7/25 25/25 [==============================] - ETA: 0s - loss: 1.3014 - accuracy: 0.4437 Epoch 7: val_accuracy did not improve from 0.38021 25/25 [==============================] - 29s 1s/step - loss: 1.3014 - accuracy: 0.4437 - val_loss: 2.0340 - val_accuracy: 0.1979 Epoch 8/25 25/25 [==============================] - ETA: 0s - loss: 1.2022 - accuracy: 0.4638 Epoch 8: val_accuracy improved from 0.38021 to 0.44271, saving model to alex_5.h5 25/25 [==============================] - 29s 1s/step - loss: 1.2022 - accuracy: 0.4638 - val_loss: 1.7184 - val_accuracy: 0.4427 Epoch 9/25 25/25 [==============================] - ETA: 0s - loss: 1.1867 - accuracy: 0.4712 Epoch 9: val_accuracy did not improve from 0.44271 25/25 [==============================] - 27s 1s/step - loss: 1.1867 - accuracy: 0.4712 - val_loss: 1.8339 - val_accuracy: 0.3385 Epoch 10/25 25/25 [==============================] - ETA: 0s - loss: 1.0586 - accuracy: 0.5225 Epoch 10: val_accuracy improved from 0.44271 to 0.44792, saving model to alex_5.h5 25/25 [==============================] - 30s 1s/step - loss: 1.0586 - accuracy: 0.5225 - val_loss: 1.6957 - val_accuracy: 0.4479 Epoch 11/25 25/25 [==============================] - ETA: 0s - loss: 1.1329 - accuracy: 0.4988 Epoch 11: val_accuracy did not improve from 0.44792 25/25 [==============================] - 31s 1s/step - loss: 1.1329 - accuracy: 0.4988 - val_loss: 1.7963 - val_accuracy: 0.3646 Epoch 12/25 25/25 [==============================] - ETA: 0s - loss: 1.0527 - accuracy: 0.5387 Epoch 12: val_accuracy did not improve from 0.44792 25/25 [==============================] - 33s 1s/step - loss: 1.0527 - accuracy: 0.5387 - val_loss: 1.7027 - val_accuracy: 0.4062 Epoch 13/25 25/25 [==============================] - ETA: 0s - loss: 1.1811 - accuracy: 0.5063 Epoch 13: val_accuracy did not improve from 0.44792 25/25 [==============================] - 30s 1s/step - loss: 1.1811 - accuracy: 0.5063 - val_loss: 1.7790 - val_accuracy: 0.3542 Epoch 14/25 25/25 [==============================] - ETA: 0s - loss: 1.0314 - accuracy: 0.5450 Epoch 14: val_accuracy did not improve from 0.44792 25/25 [==============================] - 28s 1s/step - loss: 1.0314 - accuracy: 0.5450 - val_loss: 1.6602 - val_accuracy: 0.4323 Epoch 15/25 25/25 [==============================] - ETA: 0s - loss: 1.0199 - accuracy: 0.5663 Epoch 15: val_accuracy did not improve from 0.44792 25/25 [==============================] - 28s 1s/step - loss: 1.0199 - accuracy: 0.5663 - val_loss: 1.7097 - val_accuracy: 0.3542 Epoch 16/25 25/25 [==============================] - ETA: 0s - loss: 1.0358 - accuracy: 0.5525 Epoch 16: val_accuracy did not improve from 0.44792 25/25 [==============================] - 28s 1s/step - loss: 1.0358 - accuracy: 0.5525 - val_loss: 1.7355 - val_accuracy: 0.3177 Epoch 17/25 25/25 [==============================] - ETA: 0s - loss: 0.9676 - accuracy: 0.5875 Epoch 17: val_accuracy improved from 0.44792 to 0.54167, saving model to alex_5.h5 25/25 [==============================] - 28s 1s/step - loss: 0.9676 - accuracy: 0.5875 - val_loss: 1.5246 - val_accuracy: 0.5417 Epoch 18/25 25/25 [==============================] - ETA: 0s - loss: 0.9063 - accuracy: 0.5950 Epoch 18: val_accuracy did not improve from 0.54167 25/25 [==============================] - 28s 1s/step - loss: 0.9063 - accuracy: 0.5950 - val_loss: 1.5602 - val_accuracy: 0.4688 Epoch 19/25 25/25 [==============================] - ETA: 0s - loss: 0.9411 - accuracy: 0.6250 Epoch 19: val_accuracy did not improve from 0.54167 25/25 [==============================] - 28s 1s/step - loss: 0.9411 - accuracy: 0.6250 - val_loss: 1.7089 - val_accuracy: 0.2917 Epoch 20/25 25/25 [==============================] - ETA: 0s - loss: 0.8750 - accuracy: 0.6475 Epoch 20: val_accuracy did not improve from 0.54167 25/25 [==============================] - 28s 1s/step - loss: 0.8750 - accuracy: 0.6475 - val_loss: 1.7448 - val_accuracy: 0.2812 Epoch 21/25 25/25 [==============================] - ETA: 0s - loss: 0.8677 - accuracy: 0.6087 Epoch 21: val_accuracy did not improve from 0.54167 25/25 [==============================] - 28s 1s/step - loss: 0.8677 - accuracy: 0.6087 - val_loss: 1.5079 - val_accuracy: 0.5000 Epoch 22/25 25/25 [==============================] - ETA: 0s - loss: 0.8868 - accuracy: 0.6275 Epoch 22: val_accuracy did not improve from 0.54167 25/25 [==============================] - 28s 1s/step - loss: 0.8868 - accuracy: 0.6275 - val_loss: 1.6442 - val_accuracy: 0.3073 Epoch 23/25 25/25 [==============================] - ETA: 0s - loss: 0.8708 - accuracy: 0.6338 Epoch 23: val_accuracy did not improve from 0.54167 25/25 [==============================] - 29s 1s/step - loss: 0.8708 - accuracy: 0.6338 - val_loss: 1.6207 - val_accuracy: 0.3646 Epoch 24/25 25/25 [==============================] - ETA: 0s - loss: 0.7959 - accuracy: 0.6712 Epoch 24: val_accuracy did not improve from 0.54167 25/25 [==============================] - 29s 1s/step - loss: 0.7959 - accuracy: 0.6712 - val_loss: 1.6913 - val_accuracy: 0.3073 Epoch 25/25 25/25 [==============================] - ETA: 0s - loss: 0.8158 - accuracy: 0.6775 Epoch 25: val_accuracy did not improve from 0.54167 25/25 [==============================] - 29s 1s/step - loss: 0.8158 - accuracy: 0.6775 - val_loss: 1.4933 - val_accuracy: 0.4323
plt.plot(alex5.history["accuracy"])
plt.plot(alex5.history['val_accuracy'])
plt.plot(alex5.history['loss'])
plt.plot(alex5.history['val_loss'])
plt.title("Model accuracy")
plt.ylabel("Value")
plt.xlabel("Epoch")
plt.legend(["Accuracy","Validation Accuracy","Loss","Validation Loss"])
plt.show()
model_flat_conv_drop.evaluate(test_ds)
8/8 [==============================] - 2s 307ms/step - loss: 1.4823 - accuracy: 0.4531
[1.4823071956634521, 0.453125]
Do warstw maxpooling i splotowych
model_pool_conv_drop = keras.models.Sequential([
keras.layers.Conv2D(filters=96, kernel_size=(11,11), strides=(4,4), activation='relu', input_shape=(227,227,3)),
keras.layers.Dropout(.5),
keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),
keras.layers.Dropout(.5),
keras.layers.Conv2D(filters=256, kernel_size=(5,5), strides=(1,1), activation='relu', padding="same"),
keras.layers.Dropout(.5),
keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),
keras.layers.Dropout(.5),
keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding="same"),
keras.layers.Dropout(.5),
keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding="same"),
keras.layers.Dropout(.5),
keras.layers.Conv2D(filters=256, kernel_size=(3,3), strides=(1,1), activation='relu', padding="same"),
keras.layers.Dropout(.5),
keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),
keras.layers.Dropout(.5),
keras.layers.Flatten(),
keras.layers.Dense(4096, activation='relu'),
keras.layers.Dense(4096, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
model_pool_conv_drop.compile(loss='sparse_categorical_crossentropy', optimizer=tf.optimizers.SGD(lr=.001), metrics=['accuracy'])
model_pool_conv_drop.summary()
WARNING:absl:`lr` is deprecated, please use `learning_rate` instead, or use the legacy optimizer, e.g.,tf.keras.optimizers.legacy.SGD.
Model: "sequential_5" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d_25 (Conv2D) (None, 55, 55, 96) 34944 dropout_22 (Dropout) (None, 55, 55, 96) 0 max_pooling2d_15 (MaxPoolin (None, 27, 27, 96) 0 g2D) dropout_23 (Dropout) (None, 27, 27, 96) 0 conv2d_26 (Conv2D) (None, 27, 27, 256) 614656 dropout_24 (Dropout) (None, 27, 27, 256) 0 max_pooling2d_16 (MaxPoolin (None, 13, 13, 256) 0 g2D) dropout_25 (Dropout) (None, 13, 13, 256) 0 conv2d_27 (Conv2D) (None, 13, 13, 384) 885120 dropout_26 (Dropout) (None, 13, 13, 384) 0 conv2d_28 (Conv2D) (None, 13, 13, 384) 1327488 dropout_27 (Dropout) (None, 13, 13, 384) 0 conv2d_29 (Conv2D) (None, 13, 13, 256) 884992 dropout_28 (Dropout) (None, 13, 13, 256) 0 max_pooling2d_17 (MaxPoolin (None, 6, 6, 256) 0 g2D) dropout_29 (Dropout) (None, 6, 6, 256) 0 flatten_5 (Flatten) (None, 9216) 0 dense_15 (Dense) (None, 4096) 37752832 dense_16 (Dense) (None, 4096) 16781312 dense_17 (Dense) (None, 10) 40970 ================================================================= Total params: 58,322,314 Trainable params: 58,322,314 Non-trainable params: 0 _________________________________________________________________
checkpoint = ModelCheckpoint("alex_6.h5", monitor='val_accuracy', verbose=1, save_best_only=True, save_weights_only=False, mode='auto', period=1)
early = EarlyStopping(monitor='val_accuracy', min_delta=0, patience=20, verbose=1, mode='auto')
alex6 = model_pool_conv_drop.fit_generator(
steps_per_epoch=len(train_ds),
generator=train_ds,
validation_data= validation_ds,
validation_steps=len(validation_ds),
epochs=25,
callbacks=[checkpoint,early])
WARNING:tensorflow:`period` argument is deprecated. Please use `save_freq` to specify the frequency in number of batches seen.
WARNING:tensorflow:`period` argument is deprecated. Please use `save_freq` to specify the frequency in number of batches seen.
Epoch 1/25
/var/folders/6b/j4d60ym516x2s6wymzj707rh0000gn/T/ipykernel_13671/3120705445.py:4: UserWarning: `Model.fit_generator` is deprecated and will be removed in a future version. Please use `Model.fit`, which supports generators. alex6 = model_pool_conv_drop.fit_generator(
25/25 [==============================] - ETA: 0s - loss: 1.8171 - accuracy: 0.2288 Epoch 1: val_accuracy improved from -inf to 0.27604, saving model to alex_6.h5 25/25 [==============================] - 29s 1s/step - loss: 1.8171 - accuracy: 0.2288 - val_loss: 2.2332 - val_accuracy: 0.2760 Epoch 2/25 25/25 [==============================] - ETA: 0s - loss: 1.6441 - accuracy: 0.2512 Epoch 2: val_accuracy did not improve from 0.27604 25/25 [==============================] - 28s 1s/step - loss: 1.6441 - accuracy: 0.2512 - val_loss: 2.2203 - val_accuracy: 0.1823 Epoch 3/25 25/25 [==============================] - ETA: 0s - loss: 1.5645 - accuracy: 0.3013 Epoch 3: val_accuracy did not improve from 0.27604 25/25 [==============================] - 28s 1s/step - loss: 1.5645 - accuracy: 0.3013 - val_loss: 2.1670 - val_accuracy: 0.2240 Epoch 4/25 25/25 [==============================] - ETA: 0s - loss: 1.5076 - accuracy: 0.3237 Epoch 4: val_accuracy did not improve from 0.27604 25/25 [==============================] - 28s 1s/step - loss: 1.5076 - accuracy: 0.3237 - val_loss: 2.1759 - val_accuracy: 0.1875 Epoch 5/25 25/25 [==============================] - ETA: 0s - loss: 1.4085 - accuracy: 0.3913 Epoch 5: val_accuracy did not improve from 0.27604 25/25 [==============================] - 29s 1s/step - loss: 1.4085 - accuracy: 0.3913 - val_loss: 2.0652 - val_accuracy: 0.2083 Epoch 6/25 25/25 [==============================] - ETA: 0s - loss: 1.3140 - accuracy: 0.4263 Epoch 6: val_accuracy did not improve from 0.27604 25/25 [==============================] - 29s 1s/step - loss: 1.3140 - accuracy: 0.4263 - val_loss: 2.0968 - val_accuracy: 0.1875 Epoch 7/25 25/25 [==============================] - ETA: 0s - loss: 1.3008 - accuracy: 0.4275 Epoch 7: val_accuracy did not improve from 0.27604 25/25 [==============================] - 28s 1s/step - loss: 1.3008 - accuracy: 0.4275 - val_loss: 1.9457 - val_accuracy: 0.2760 Epoch 8/25 25/25 [==============================] - ETA: 0s - loss: 1.2462 - accuracy: 0.4700 Epoch 8: val_accuracy improved from 0.27604 to 0.34375, saving model to alex_6.h5 25/25 [==============================] - 29s 1s/step - loss: 1.2462 - accuracy: 0.4700 - val_loss: 1.8961 - val_accuracy: 0.3438 Epoch 9/25 25/25 [==============================] - ETA: 0s - loss: 1.2202 - accuracy: 0.4737 Epoch 9: val_accuracy did not improve from 0.34375 25/25 [==============================] - 29s 1s/step - loss: 1.2202 - accuracy: 0.4737 - val_loss: 2.0365 - val_accuracy: 0.1979 Epoch 10/25 25/25 [==============================] - ETA: 0s - loss: 1.1927 - accuracy: 0.4975 Epoch 10: val_accuracy did not improve from 0.34375 25/25 [==============================] - 30s 1s/step - loss: 1.1927 - accuracy: 0.4975 - val_loss: 2.0173 - val_accuracy: 0.2083 Epoch 11/25 25/25 [==============================] - ETA: 0s - loss: 1.1185 - accuracy: 0.5138 Epoch 11: val_accuracy did not improve from 0.34375 25/25 [==============================] - 29s 1s/step - loss: 1.1185 - accuracy: 0.5138 - val_loss: 1.8485 - val_accuracy: 0.3385 Epoch 12/25 25/25 [==============================] - ETA: 0s - loss: 1.1445 - accuracy: 0.5088 Epoch 12: val_accuracy did not improve from 0.34375 25/25 [==============================] - 29s 1s/step - loss: 1.1445 - accuracy: 0.5088 - val_loss: 1.8848 - val_accuracy: 0.2604 Epoch 13/25 25/25 [==============================] - ETA: 0s - loss: 1.1042 - accuracy: 0.5387 Epoch 13: val_accuracy did not improve from 0.34375 25/25 [==============================] - 29s 1s/step - loss: 1.1042 - accuracy: 0.5387 - val_loss: 1.9293 - val_accuracy: 0.2135 Epoch 14/25 25/25 [==============================] - ETA: 0s - loss: 1.0768 - accuracy: 0.5412 Epoch 14: val_accuracy did not improve from 0.34375 25/25 [==============================] - 29s 1s/step - loss: 1.0768 - accuracy: 0.5412 - val_loss: 1.9871 - val_accuracy: 0.1979 Epoch 15/25 25/25 [==============================] - ETA: 0s - loss: 1.0332 - accuracy: 0.5512 Epoch 15: val_accuracy did not improve from 0.34375 25/25 [==============================] - 30s 1s/step - loss: 1.0332 - accuracy: 0.5512 - val_loss: 1.9616 - val_accuracy: 0.1927 Epoch 16/25 25/25 [==============================] - ETA: 0s - loss: 1.0965 - accuracy: 0.5475 Epoch 16: val_accuracy did not improve from 0.34375 25/25 [==============================] - 35s 1s/step - loss: 1.0965 - accuracy: 0.5475 - val_loss: 1.8993 - val_accuracy: 0.2083 Epoch 17/25 25/25 [==============================] - ETA: 0s - loss: 1.0335 - accuracy: 0.5387 Epoch 17: val_accuracy did not improve from 0.34375 25/25 [==============================] - 31s 1s/step - loss: 1.0335 - accuracy: 0.5387 - val_loss: 1.9000 - val_accuracy: 0.2188 Epoch 18/25 25/25 [==============================] - ETA: 0s - loss: 1.0124 - accuracy: 0.5475 Epoch 18: val_accuracy did not improve from 0.34375 25/25 [==============================] - 32s 1s/step - loss: 1.0124 - accuracy: 0.5475 - val_loss: 1.9711 - val_accuracy: 0.1927 Epoch 19/25 25/25 [==============================] - ETA: 0s - loss: 1.0936 - accuracy: 0.5512 Epoch 19: val_accuracy did not improve from 0.34375 25/25 [==============================] - 31s 1s/step - loss: 1.0936 - accuracy: 0.5512 - val_loss: 1.9364 - val_accuracy: 0.1927 Epoch 20/25 25/25 [==============================] - ETA: 0s - loss: 0.9696 - accuracy: 0.5775 Epoch 20: val_accuracy did not improve from 0.34375 25/25 [==============================] - 31s 1s/step - loss: 0.9696 - accuracy: 0.5775 - val_loss: 1.8897 - val_accuracy: 0.1927 Epoch 21/25 25/25 [==============================] - ETA: 0s - loss: 1.0047 - accuracy: 0.5288 Epoch 21: val_accuracy did not improve from 0.34375 25/25 [==============================] - 29s 1s/step - loss: 1.0047 - accuracy: 0.5288 - val_loss: 1.8192 - val_accuracy: 0.2083 Epoch 22/25 25/25 [==============================] - ETA: 0s - loss: 0.9775 - accuracy: 0.5738 Epoch 22: val_accuracy did not improve from 0.34375 25/25 [==============================] - 29s 1s/step - loss: 0.9775 - accuracy: 0.5738 - val_loss: 1.9259 - val_accuracy: 0.1875 Epoch 23/25 25/25 [==============================] - ETA: 0s - loss: 0.9873 - accuracy: 0.5763 Epoch 23: val_accuracy did not improve from 0.34375 25/25 [==============================] - 29s 1s/step - loss: 0.9873 - accuracy: 0.5763 - val_loss: 1.9257 - val_accuracy: 0.1979 Epoch 24/25 25/25 [==============================] - ETA: 0s - loss: 0.9560 - accuracy: 0.5938 Epoch 24: val_accuracy did not improve from 0.34375 25/25 [==============================] - 29s 1s/step - loss: 0.9560 - accuracy: 0.5938 - val_loss: 1.8322 - val_accuracy: 0.2031 Epoch 25/25 25/25 [==============================] - ETA: 0s - loss: 0.9225 - accuracy: 0.6100 Epoch 25: val_accuracy did not improve from 0.34375 25/25 [==============================] - 29s 1s/step - loss: 0.9225 - accuracy: 0.6100 - val_loss: 1.7558 - val_accuracy: 0.2448
plt.plot(alex6.history["accuracy"])
plt.plot(alex6.history['val_accuracy'])
plt.plot(alex6.history['loss'])
plt.plot(alex6.history['val_loss'])
plt.title("Model accuracy")
plt.ylabel("Value")
plt.xlabel("Epoch")
plt.legend(["Accuracy","Validation Accuracy","Loss","Validation Loss"])
plt.show()
model_pool_conv_drop.evaluate(test_ds)
8/8 [==============================] - 2s 306ms/step - loss: 1.7711 - accuracy: 0.2227
[1.7710821628570557, 0.22265625]
Do warstw spłaszczonych, maxpooling i splotowych
model_drop = keras.models.Sequential([
keras.layers.Conv2D(filters=96, kernel_size=(11,11), strides=(4,4), activation='relu', input_shape=(227,227,3)),
keras.layers.Dropout(.5),
keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),
keras.layers.Dropout(.5),
keras.layers.Conv2D(filters=256, kernel_size=(5,5), strides=(1,1), activation='relu', padding="same"),
keras.layers.Dropout(.5),
keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),
keras.layers.Dropout(.5),
keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding="same"),
keras.layers.Dropout(.5),
keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding="same"),
keras.layers.Dropout(.5),
keras.layers.Conv2D(filters=256, kernel_size=(3,3), strides=(1,1), activation='relu', padding="same"),
keras.layers.Dropout(.5),
keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),
keras.layers.Dropout(.5),
keras.layers.Flatten(),
keras.layers.Dense(4096, activation='relu'),
keras.layers.Dropout(.5),
keras.layers.Dense(4096, activation='relu'),
keras.layers.Dropout(.5),
keras.layers.Dense(10, activation='softmax')
])
model_drop.compile(loss='sparse_categorical_crossentropy', optimizer=tf.optimizers.SGD(lr=.001), metrics=['accuracy'])
model_drop.summary()
WARNING:absl:`lr` is deprecated, please use `learning_rate` instead, or use the legacy optimizer, e.g.,tf.keras.optimizers.legacy.SGD.
Model: "sequential_6" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d_30 (Conv2D) (None, 55, 55, 96) 34944 dropout_30 (Dropout) (None, 55, 55, 96) 0 max_pooling2d_18 (MaxPoolin (None, 27, 27, 96) 0 g2D) dropout_31 (Dropout) (None, 27, 27, 96) 0 conv2d_31 (Conv2D) (None, 27, 27, 256) 614656 dropout_32 (Dropout) (None, 27, 27, 256) 0 max_pooling2d_19 (MaxPoolin (None, 13, 13, 256) 0 g2D) dropout_33 (Dropout) (None, 13, 13, 256) 0 conv2d_32 (Conv2D) (None, 13, 13, 384) 885120 dropout_34 (Dropout) (None, 13, 13, 384) 0 conv2d_33 (Conv2D) (None, 13, 13, 384) 1327488 dropout_35 (Dropout) (None, 13, 13, 384) 0 conv2d_34 (Conv2D) (None, 13, 13, 256) 884992 dropout_36 (Dropout) (None, 13, 13, 256) 0 max_pooling2d_20 (MaxPoolin (None, 6, 6, 256) 0 g2D) dropout_37 (Dropout) (None, 6, 6, 256) 0 flatten_6 (Flatten) (None, 9216) 0 dense_18 (Dense) (None, 4096) 37752832 dropout_38 (Dropout) (None, 4096) 0 dense_19 (Dense) (None, 4096) 16781312 dropout_39 (Dropout) (None, 4096) 0 dense_20 (Dense) (None, 10) 40970 ================================================================= Total params: 58,322,314 Trainable params: 58,322,314 Non-trainable params: 0 _________________________________________________________________
checkpoint = ModelCheckpoint("alex_7.h5", monitor='val_accuracy', verbose=1, save_best_only=True, save_weights_only=False, mode='auto', period=1)
early = EarlyStopping(monitor='val_accuracy', min_delta=0, patience=20, verbose=1, mode='auto')
alex7 = model_drop.fit_generator(
steps_per_epoch=len(train_ds),
generator=train_ds,
validation_data= validation_ds,
validation_steps=len(validation_ds),
epochs=25,
callbacks=[checkpoint,early])
WARNING:tensorflow:`period` argument is deprecated. Please use `save_freq` to specify the frequency in number of batches seen.
WARNING:tensorflow:`period` argument is deprecated. Please use `save_freq` to specify the frequency in number of batches seen.
Epoch 1/25
/var/folders/6b/j4d60ym516x2s6wymzj707rh0000gn/T/ipykernel_13671/2699219498.py:4: UserWarning: `Model.fit_generator` is deprecated and will be removed in a future version. Please use `Model.fit`, which supports generators. alex7 = model_drop.fit_generator(
25/25 [==============================] - ETA: 0s - loss: 1.9261 - accuracy: 0.2025 Epoch 1: val_accuracy improved from -inf to 0.18229, saving model to alex_7.h5 25/25 [==============================] - 30s 1s/step - loss: 1.9261 - accuracy: 0.2025 - val_loss: 2.2480 - val_accuracy: 0.1823 Epoch 2/25 25/25 [==============================] - ETA: 0s - loss: 1.7103 - accuracy: 0.1963 Epoch 2: val_accuracy improved from 0.18229 to 0.18750, saving model to alex_7.h5 25/25 [==============================] - 29s 1s/step - loss: 1.7103 - accuracy: 0.1963 - val_loss: 2.2290 - val_accuracy: 0.1875 Epoch 3/25 25/25 [==============================] - ETA: 0s - loss: 1.6472 - accuracy: 0.2362 Epoch 3: val_accuracy improved from 0.18750 to 0.19271, saving model to alex_7.h5 25/25 [==============================] - 29s 1s/step - loss: 1.6472 - accuracy: 0.2362 - val_loss: 2.1991 - val_accuracy: 0.1927 Epoch 4/25 25/25 [==============================] - ETA: 0s - loss: 1.5965 - accuracy: 0.2675 Epoch 4: val_accuracy did not improve from 0.19271 25/25 [==============================] - 29s 1s/step - loss: 1.5965 - accuracy: 0.2675 - val_loss: 2.1612 - val_accuracy: 0.1927 Epoch 5/25 25/25 [==============================] - ETA: 0s - loss: 1.5649 - accuracy: 0.2862 Epoch 5: val_accuracy did not improve from 0.19271 25/25 [==============================] - 29s 1s/step - loss: 1.5649 - accuracy: 0.2862 - val_loss: 2.1174 - val_accuracy: 0.1927 Epoch 6/25 25/25 [==============================] - ETA: 0s - loss: 1.4497 - accuracy: 0.3750 Epoch 6: val_accuracy improved from 0.19271 to 0.20312, saving model to alex_7.h5 25/25 [==============================] - 29s 1s/step - loss: 1.4497 - accuracy: 0.3750 - val_loss: 2.0352 - val_accuracy: 0.2031 Epoch 7/25 25/25 [==============================] - ETA: 0s - loss: 1.3833 - accuracy: 0.3787 Epoch 7: val_accuracy did not improve from 0.20312 25/25 [==============================] - 28s 1s/step - loss: 1.3833 - accuracy: 0.3787 - val_loss: 2.0280 - val_accuracy: 0.1771 Epoch 8/25 25/25 [==============================] - ETA: 0s - loss: 1.3506 - accuracy: 0.4025 Epoch 8: val_accuracy did not improve from 0.20312 25/25 [==============================] - 27s 1s/step - loss: 1.3506 - accuracy: 0.4025 - val_loss: 1.9642 - val_accuracy: 0.1979 Epoch 9/25 25/25 [==============================] - ETA: 0s - loss: 1.3013 - accuracy: 0.4212 Epoch 9: val_accuracy did not improve from 0.20312 25/25 [==============================] - 27s 1s/step - loss: 1.3013 - accuracy: 0.4212 - val_loss: 1.9955 - val_accuracy: 0.1927 Epoch 10/25 25/25 [==============================] - ETA: 0s - loss: 1.3089 - accuracy: 0.4387 Epoch 10: val_accuracy did not improve from 0.20312 25/25 [==============================] - 30s 1s/step - loss: 1.3089 - accuracy: 0.4387 - val_loss: 2.0652 - val_accuracy: 0.1875 Epoch 11/25 25/25 [==============================] - ETA: 0s - loss: 1.3030 - accuracy: 0.4400 Epoch 11: val_accuracy improved from 0.20312 to 0.20833, saving model to alex_7.h5 25/25 [==============================] - 29s 1s/step - loss: 1.3030 - accuracy: 0.4400 - val_loss: 1.9548 - val_accuracy: 0.2083 Epoch 12/25 25/25 [==============================] - ETA: 0s - loss: 1.1538 - accuracy: 0.4913 Epoch 12: val_accuracy did not improve from 0.20833 25/25 [==============================] - 28s 1s/step - loss: 1.1538 - accuracy: 0.4913 - val_loss: 1.8886 - val_accuracy: 0.2083 Epoch 13/25 25/25 [==============================] - ETA: 0s - loss: 1.1939 - accuracy: 0.4913 Epoch 13: val_accuracy did not improve from 0.20833 25/25 [==============================] - 27s 1s/step - loss: 1.1939 - accuracy: 0.4913 - val_loss: 1.9482 - val_accuracy: 0.1875 Epoch 14/25 25/25 [==============================] - ETA: 0s - loss: 1.1846 - accuracy: 0.4775 Epoch 14: val_accuracy did not improve from 0.20833 25/25 [==============================] - 27s 1s/step - loss: 1.1846 - accuracy: 0.4775 - val_loss: 2.0470 - val_accuracy: 0.1927 Epoch 15/25 25/25 [==============================] - ETA: 0s - loss: 1.1359 - accuracy: 0.5075 Epoch 15: val_accuracy did not improve from 0.20833 25/25 [==============================] - 29s 1s/step - loss: 1.1359 - accuracy: 0.5075 - val_loss: 1.9831 - val_accuracy: 0.1875 Epoch 16/25 25/25 [==============================] - ETA: 0s - loss: 1.1575 - accuracy: 0.4963 Epoch 16: val_accuracy did not improve from 0.20833 25/25 [==============================] - 96s 4s/step - loss: 1.1575 - accuracy: 0.4963 - val_loss: 1.9085 - val_accuracy: 0.2083 Epoch 17/25 25/25 [==============================] - ETA: 0s - loss: 1.1165 - accuracy: 0.5113 Epoch 17: val_accuracy did not improve from 0.20833 25/25 [==============================] - 110s 4s/step - loss: 1.1165 - accuracy: 0.5113 - val_loss: 1.9389 - val_accuracy: 0.1979 Epoch 18/25 25/25 [==============================] - ETA: 0s - loss: 1.1276 - accuracy: 0.5163 Epoch 18: val_accuracy did not improve from 0.20833 25/25 [==============================] - 107s 4s/step - loss: 1.1276 - accuracy: 0.5163 - val_loss: 1.9441 - val_accuracy: 0.1875 Epoch 19/25 25/25 [==============================] - ETA: 0s - loss: 1.1038 - accuracy: 0.5238 Epoch 19: val_accuracy did not improve from 0.20833 25/25 [==============================] - 69s 3s/step - loss: 1.1038 - accuracy: 0.5238 - val_loss: 2.0581 - val_accuracy: 0.1875 Epoch 20/25 25/25 [==============================] - ETA: 0s - loss: 1.1174 - accuracy: 0.5250 Epoch 20: val_accuracy did not improve from 0.20833 25/25 [==============================] - 68s 3s/step - loss: 1.1174 - accuracy: 0.5250 - val_loss: 1.9579 - val_accuracy: 0.1823 Epoch 21/25 25/25 [==============================] - ETA: 0s - loss: 1.0253 - accuracy: 0.5575 Epoch 21: val_accuracy did not improve from 0.20833 25/25 [==============================] - 69s 3s/step - loss: 1.0253 - accuracy: 0.5575 - val_loss: 1.9376 - val_accuracy: 0.1979 Epoch 22/25 25/25 [==============================] - ETA: 0s - loss: 1.1088 - accuracy: 0.5450 Epoch 22: val_accuracy did not improve from 0.20833 25/25 [==============================] - 72s 3s/step - loss: 1.1088 - accuracy: 0.5450 - val_loss: 2.0030 - val_accuracy: 0.1875 Epoch 23/25 25/25 [==============================] - ETA: 0s - loss: 1.0789 - accuracy: 0.5475 Epoch 23: val_accuracy did not improve from 0.20833 25/25 [==============================] - 59s 2s/step - loss: 1.0789 - accuracy: 0.5475 - val_loss: 1.9403 - val_accuracy: 0.1979 Epoch 24/25 25/25 [==============================] - ETA: 0s - loss: 1.0523 - accuracy: 0.5500 Epoch 24: val_accuracy did not improve from 0.20833 25/25 [==============================] - 56s 2s/step - loss: 1.0523 - accuracy: 0.5500 - val_loss: 2.0287 - val_accuracy: 0.1875 Epoch 25/25 25/25 [==============================] - ETA: 0s - loss: 1.0160 - accuracy: 0.5587 Epoch 25: val_accuracy did not improve from 0.20833 25/25 [==============================] - 52s 2s/step - loss: 1.0160 - accuracy: 0.5587 - val_loss: 1.9327 - val_accuracy: 0.1979
plt.plot(alex7.history["accuracy"])
plt.plot(alex7.history['val_accuracy'])
plt.plot(alex7.history['loss'])
plt.plot(alex7.history['val_loss'])
plt.title("Model accuracy")
plt.ylabel("Value")
plt.xlabel("Epoch")
plt.legend(["Accuracy","Validation Accuracy","Loss","Validation Loss"])
plt.show()
model_drop.evaluate(test_ds)
8/8 [==============================] - 4s 534ms/step - loss: 1.9357 - accuracy: 0.2070
[1.9356722831726074, 0.20703125]
Batch Regularization
Bez dropoutu
model_batch = keras.models.Sequential([
keras.layers.Conv2D(filters=96, kernel_size=(11,11), strides=(4,4), activation='relu', input_shape=(227,227,3)),
keras.layers.BatchNormalization(),
keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),
keras.layers.Conv2D(filters=256, kernel_size=(5,5), strides=(1,1), activation='relu', padding="same"),
keras.layers.BatchNormalization(),
keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),
keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding="same"),
keras.layers.BatchNormalization(),
keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding="same"),
keras.layers.BatchNormalization(),
keras.layers.Conv2D(filters=256, kernel_size=(3,3), strides=(1,1), activation='relu', padding="same"),
keras.layers.BatchNormalization(),
keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),
keras.layers.Flatten(),
keras.layers.Dense(4096, activation='relu'),
keras.layers.Dense(4096, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
model_batch.compile(loss='sparse_categorical_crossentropy', optimizer=tf.optimizers.SGD(lr=.001), metrics=['accuracy'])
model_batch.summary()
WARNING:absl:`lr` is deprecated, please use `learning_rate` instead, or use the legacy optimizer, e.g.,tf.keras.optimizers.legacy.SGD.
Model: "sequential_7" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d_35 (Conv2D) (None, 55, 55, 96) 34944 batch_normalization (BatchN (None, 55, 55, 96) 384 ormalization) max_pooling2d_21 (MaxPoolin (None, 27, 27, 96) 0 g2D) conv2d_36 (Conv2D) (None, 27, 27, 256) 614656 batch_normalization_1 (Batc (None, 27, 27, 256) 1024 hNormalization) max_pooling2d_22 (MaxPoolin (None, 13, 13, 256) 0 g2D) conv2d_37 (Conv2D) (None, 13, 13, 384) 885120 batch_normalization_2 (Batc (None, 13, 13, 384) 1536 hNormalization) conv2d_38 (Conv2D) (None, 13, 13, 384) 1327488 batch_normalization_3 (Batc (None, 13, 13, 384) 1536 hNormalization) conv2d_39 (Conv2D) (None, 13, 13, 256) 884992 batch_normalization_4 (Batc (None, 13, 13, 256) 1024 hNormalization) max_pooling2d_23 (MaxPoolin (None, 6, 6, 256) 0 g2D) flatten_7 (Flatten) (None, 9216) 0 dense_21 (Dense) (None, 4096) 37752832 dense_22 (Dense) (None, 4096) 16781312 dense_23 (Dense) (None, 10) 40970 ================================================================= Total params: 58,327,818 Trainable params: 58,325,066 Non-trainable params: 2,752 _________________________________________________________________
checkpoint = ModelCheckpoint("alex_8.h5", monitor='val_accuracy', verbose=1, save_best_only=True, save_weights_only=False, mode='auto', period=1)
early = EarlyStopping(monitor='val_accuracy', min_delta=0, patience=20, verbose=1, mode='auto')
alex8 = model_batch.fit_generator(
steps_per_epoch=len(train_ds),
generator=train_ds,
validation_data= validation_ds,
validation_steps=len(validation_ds),
epochs=25,
callbacks=[checkpoint,early])
WARNING:tensorflow:`period` argument is deprecated. Please use `save_freq` to specify the frequency in number of batches seen.
WARNING:tensorflow:`period` argument is deprecated. Please use `save_freq` to specify the frequency in number of batches seen.
Epoch 1/25
/var/folders/6b/j4d60ym516x2s6wymzj707rh0000gn/T/ipykernel_13671/2334374023.py:4: UserWarning: `Model.fit_generator` is deprecated and will be removed in a future version. Please use `Model.fit`, which supports generators. alex8 = model_batch.fit_generator(
25/25 [==============================] - ETA: 0s - loss: 3.5162 - accuracy: 0.4512 Epoch 1: val_accuracy improved from -inf to 0.20833, saving model to alex_8.h5 25/25 [==============================] - 51s 2s/step - loss: 3.5162 - accuracy: 0.4512 - val_loss: 2.1169 - val_accuracy: 0.2083 Epoch 2/25 25/25 [==============================] - ETA: 0s - loss: 0.6702 - accuracy: 0.7425 Epoch 2: val_accuracy did not improve from 0.20833 25/25 [==============================] - 52s 2s/step - loss: 0.6702 - accuracy: 0.7425 - val_loss: 2.1916 - val_accuracy: 0.1771 Epoch 3/25 25/25 [==============================] - ETA: 0s - loss: 0.3823 - accuracy: 0.8637 Epoch 3: val_accuracy did not improve from 0.20833 25/25 [==============================] - 52s 2s/step - loss: 0.3823 - accuracy: 0.8637 - val_loss: 2.5290 - val_accuracy: 0.1823 Epoch 4/25 25/25 [==============================] - ETA: 0s - loss: 0.2204 - accuracy: 0.9388 Epoch 4: val_accuracy did not improve from 0.20833 25/25 [==============================] - 52s 2s/step - loss: 0.2204 - accuracy: 0.9388 - val_loss: 3.1773 - val_accuracy: 0.1771 Epoch 5/25 25/25 [==============================] - ETA: 0s - loss: 0.1337 - accuracy: 0.9712 Epoch 5: val_accuracy did not improve from 0.20833 25/25 [==============================] - 53s 2s/step - loss: 0.1337 - accuracy: 0.9712 - val_loss: 3.4835 - val_accuracy: 0.1875 Epoch 6/25 25/25 [==============================] - ETA: 0s - loss: 0.0836 - accuracy: 0.9875 Epoch 6: val_accuracy did not improve from 0.20833 25/25 [==============================] - 52s 2s/step - loss: 0.0836 - accuracy: 0.9875 - val_loss: 4.0837 - val_accuracy: 0.1927 Epoch 7/25 25/25 [==============================] - ETA: 0s - loss: 0.0911 - accuracy: 0.9775 Epoch 7: val_accuracy improved from 0.20833 to 0.24479, saving model to alex_8.h5 25/25 [==============================] - 56s 2s/step - loss: 0.0911 - accuracy: 0.9775 - val_loss: 4.6900 - val_accuracy: 0.2448 Epoch 8/25 25/25 [==============================] - ETA: 0s - loss: 0.0658 - accuracy: 0.9862 Epoch 8: val_accuracy improved from 0.24479 to 0.28646, saving model to alex_8.h5 25/25 [==============================] - 52s 2s/step - loss: 0.0658 - accuracy: 0.9862 - val_loss: 4.7919 - val_accuracy: 0.2865 Epoch 9/25 25/25 [==============================] - ETA: 0s - loss: 0.0362 - accuracy: 0.9975 Epoch 9: val_accuracy improved from 0.28646 to 0.30729, saving model to alex_8.h5 25/25 [==============================] - 53s 2s/step - loss: 0.0362 - accuracy: 0.9975 - val_loss: 5.1122 - val_accuracy: 0.3073 Epoch 10/25 25/25 [==============================] - ETA: 0s - loss: 0.0309 - accuracy: 0.9962 Epoch 10: val_accuracy did not improve from 0.30729 25/25 [==============================] - 52s 2s/step - loss: 0.0309 - accuracy: 0.9962 - val_loss: 5.5180 - val_accuracy: 0.2760 Epoch 11/25 25/25 [==============================] - ETA: 0s - loss: 0.0250 - accuracy: 1.0000 Epoch 11: val_accuracy did not improve from 0.30729 25/25 [==============================] - 51s 2s/step - loss: 0.0250 - accuracy: 1.0000 - val_loss: 5.7030 - val_accuracy: 0.2969 Epoch 12/25 25/25 [==============================] - ETA: 0s - loss: 0.0243 - accuracy: 0.9962 Epoch 12: val_accuracy did not improve from 0.30729 25/25 [==============================] - 49s 2s/step - loss: 0.0243 - accuracy: 0.9962 - val_loss: 5.8668 - val_accuracy: 0.2917 Epoch 13/25 25/25 [==============================] - ETA: 0s - loss: 0.0163 - accuracy: 1.0000 Epoch 13: val_accuracy did not improve from 0.30729 25/25 [==============================] - 47s 2s/step - loss: 0.0163 - accuracy: 1.0000 - val_loss: 6.0192 - val_accuracy: 0.3021 Epoch 14/25 25/25 [==============================] - ETA: 0s - loss: 0.0121 - accuracy: 0.9987 Epoch 14: val_accuracy improved from 0.30729 to 0.32292, saving model to alex_8.h5 25/25 [==============================] - 45s 2s/step - loss: 0.0121 - accuracy: 0.9987 - val_loss: 5.2193 - val_accuracy: 0.3229 Epoch 15/25 25/25 [==============================] - ETA: 0s - loss: 0.0131 - accuracy: 1.0000 Epoch 15: val_accuracy did not improve from 0.32292 25/25 [==============================] - 43s 2s/step - loss: 0.0131 - accuracy: 1.0000 - val_loss: 5.9107 - val_accuracy: 0.3073 Epoch 16/25 25/25 [==============================] - ETA: 0s - loss: 0.0113 - accuracy: 1.0000 Epoch 16: val_accuracy did not improve from 0.32292 25/25 [==============================] - 43s 2s/step - loss: 0.0113 - accuracy: 1.0000 - val_loss: 5.8355 - val_accuracy: 0.2969 Epoch 17/25 25/25 [==============================] - ETA: 0s - loss: 0.0097 - accuracy: 1.0000 Epoch 17: val_accuracy did not improve from 0.32292 25/25 [==============================] - 45s 2s/step - loss: 0.0097 - accuracy: 1.0000 - val_loss: 5.1658 - val_accuracy: 0.3125 Epoch 18/25 25/25 [==============================] - ETA: 0s - loss: 0.0104 - accuracy: 0.9987 Epoch 18: val_accuracy did not improve from 0.32292 25/25 [==============================] - 44s 2s/step - loss: 0.0104 - accuracy: 0.9987 - val_loss: 4.9559 - val_accuracy: 0.3073 Epoch 19/25 25/25 [==============================] - ETA: 0s - loss: 0.0083 - accuracy: 1.0000 Epoch 19: val_accuracy improved from 0.32292 to 0.33333, saving model to alex_8.h5 25/25 [==============================] - 45s 2s/step - loss: 0.0083 - accuracy: 1.0000 - val_loss: 4.3347 - val_accuracy: 0.3333 Epoch 20/25 25/25 [==============================] - ETA: 0s - loss: 0.0076 - accuracy: 1.0000 Epoch 20: val_accuracy improved from 0.33333 to 0.36979, saving model to alex_8.h5 25/25 [==============================] - 46s 2s/step - loss: 0.0076 - accuracy: 1.0000 - val_loss: 3.3916 - val_accuracy: 0.3698 Epoch 21/25 25/25 [==============================] - ETA: 0s - loss: 0.0076 - accuracy: 1.0000 Epoch 21: val_accuracy improved from 0.36979 to 0.39062, saving model to alex_8.h5 25/25 [==============================] - 46s 2s/step - loss: 0.0076 - accuracy: 1.0000 - val_loss: 2.8197 - val_accuracy: 0.3906 Epoch 22/25 25/25 [==============================] - ETA: 0s - loss: 0.0056 - accuracy: 1.0000 Epoch 22: val_accuracy improved from 0.39062 to 0.45312, saving model to alex_8.h5 25/25 [==============================] - 45s 2s/step - loss: 0.0056 - accuracy: 1.0000 - val_loss: 2.2279 - val_accuracy: 0.4531 Epoch 23/25 25/25 [==============================] - ETA: 0s - loss: 0.0066 - accuracy: 1.0000 Epoch 23: val_accuracy improved from 0.45312 to 0.57292, saving model to alex_8.h5 25/25 [==============================] - 46s 2s/step - loss: 0.0066 - accuracy: 1.0000 - val_loss: 1.3994 - val_accuracy: 0.5729 Epoch 24/25 25/25 [==============================] - ETA: 0s - loss: 0.0052 - accuracy: 1.0000 Epoch 24: val_accuracy improved from 0.57292 to 0.63542, saving model to alex_8.h5 25/25 [==============================] - 49s 2s/step - loss: 0.0052 - accuracy: 1.0000 - val_loss: 1.2914 - val_accuracy: 0.6354 Epoch 25/25 25/25 [==============================] - ETA: 0s - loss: 0.0059 - accuracy: 1.0000 Epoch 25: val_accuracy improved from 0.63542 to 0.71354, saving model to alex_8.h5 25/25 [==============================] - 49s 2s/step - loss: 0.0059 - accuracy: 1.0000 - val_loss: 1.0022 - val_accuracy: 0.7135
plt.plot(alex8.history["accuracy"])
plt.plot(alex8.history['val_accuracy'])
plt.plot(alex8.history['loss'])
plt.plot(alex8.history['val_loss'])
plt.title("Model accuracy")
plt.ylabel("Value")
plt.xlabel("Epoch")
plt.legend(["Accuracy","Validation Accuracy","Loss","Validation Loss"])
plt.show()
model_batch.evaluate(test_ds)
8/8 [==============================] - 4s 557ms/step - loss: 0.8515 - accuracy: 0.7383
[0.8515095114707947, 0.73828125]
Z dropoutem
model_batch_drop = keras.models.Sequential([
keras.layers.Conv2D(filters=96, kernel_size=(11,11), strides=(4,4), activation='relu', input_shape=(227,227,3)),
keras.layers.BatchNormalization(),
keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),
keras.layers.Conv2D(filters=256, kernel_size=(5,5), strides=(1,1), activation='relu', padding="same"),
keras.layers.BatchNormalization(),
keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),
keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding="same"),
keras.layers.BatchNormalization(),
keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding="same"),
keras.layers.BatchNormalization(),
keras.layers.Conv2D(filters=256, kernel_size=(3,3), strides=(1,1), activation='relu', padding="same"),
keras.layers.BatchNormalization(),
keras.layers.MaxPool2D(pool_size=(3,3), strides=(2,2)),
keras.layers.Flatten(),
keras.layers.Dense(4096, activation='relu'),
keras.layers.Dropout(.5),
keras.layers.Dense(4096, activation='relu'),
keras.layers.Dropout(.5),
keras.layers.Dense(10, activation='softmax')
])
model_batch_drop.compile(loss='sparse_categorical_crossentropy', optimizer=tf.optimizers.SGD(lr=.001), metrics=['accuracy'])
model_batch_drop.summary()
WARNING:absl:`lr` is deprecated, please use `learning_rate` instead, or use the legacy optimizer, e.g.,tf.keras.optimizers.legacy.SGD.
Model: "sequential_8" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d_40 (Conv2D) (None, 55, 55, 96) 34944 batch_normalization_5 (Batc (None, 55, 55, 96) 384 hNormalization) max_pooling2d_24 (MaxPoolin (None, 27, 27, 96) 0 g2D) conv2d_41 (Conv2D) (None, 27, 27, 256) 614656 batch_normalization_6 (Batc (None, 27, 27, 256) 1024 hNormalization) max_pooling2d_25 (MaxPoolin (None, 13, 13, 256) 0 g2D) conv2d_42 (Conv2D) (None, 13, 13, 384) 885120 batch_normalization_7 (Batc (None, 13, 13, 384) 1536 hNormalization) conv2d_43 (Conv2D) (None, 13, 13, 384) 1327488 batch_normalization_8 (Batc (None, 13, 13, 384) 1536 hNormalization) conv2d_44 (Conv2D) (None, 13, 13, 256) 884992 batch_normalization_9 (Batc (None, 13, 13, 256) 1024 hNormalization) max_pooling2d_26 (MaxPoolin (None, 6, 6, 256) 0 g2D) flatten_8 (Flatten) (None, 9216) 0 dense_24 (Dense) (None, 4096) 37752832 dropout_40 (Dropout) (None, 4096) 0 dense_25 (Dense) (None, 4096) 16781312 dropout_41 (Dropout) (None, 4096) 0 dense_26 (Dense) (None, 10) 40970 ================================================================= Total params: 58,327,818 Trainable params: 58,325,066 Non-trainable params: 2,752 _________________________________________________________________
checkpoint = ModelCheckpoint("alex_9.h5", monitor='val_accuracy', verbose=1, save_best_only=True, save_weights_only=False, mode='auto', period=1)
early = EarlyStopping(monitor='val_accuracy', min_delta=0, patience=20, verbose=1, mode='auto')
alex9 = model_batch_drop.fit_generator(
steps_per_epoch=len(train_ds),
generator=train_ds,
validation_data= validation_ds,
validation_steps=len(validation_ds),
epochs=25,
callbacks=[checkpoint,early])
WARNING:tensorflow:`period` argument is deprecated. Please use `save_freq` to specify the frequency in number of batches seen.
WARNING:tensorflow:`period` argument is deprecated. Please use `save_freq` to specify the frequency in number of batches seen.
Epoch 1/25
/var/folders/6b/j4d60ym516x2s6wymzj707rh0000gn/T/ipykernel_13671/3373435413.py:4: UserWarning: `Model.fit_generator` is deprecated and will be removed in a future version. Please use `Model.fit`, which supports generators. alex9 = model_batch_drop.fit_generator(
25/25 [==============================] - ETA: 0s - loss: 5.1567 - accuracy: 0.3462 Epoch 1: val_accuracy improved from -inf to 0.39583, saving model to alex_9.h5 25/25 [==============================] - 53s 2s/step - loss: 5.1567 - accuracy: 0.3462 - val_loss: 1.8424 - val_accuracy: 0.3958 Epoch 2/25 25/25 [==============================] - ETA: 0s - loss: 1.5037 - accuracy: 0.5688 Epoch 2: val_accuracy did not improve from 0.39583 25/25 [==============================] - 48s 2s/step - loss: 1.5037 - accuracy: 0.5688 - val_loss: 2.2144 - val_accuracy: 0.2396 Epoch 3/25 25/25 [==============================] - ETA: 0s - loss: 0.9447 - accuracy: 0.6812 Epoch 3: val_accuracy did not improve from 0.39583 25/25 [==============================] - 45s 2s/step - loss: 0.9447 - accuracy: 0.6812 - val_loss: 3.3665 - val_accuracy: 0.1823 Epoch 4/25 25/25 [==============================] - ETA: 0s - loss: 0.7950 - accuracy: 0.7287 Epoch 4: val_accuracy did not improve from 0.39583 25/25 [==============================] - 45s 2s/step - loss: 0.7950 - accuracy: 0.7287 - val_loss: 4.1486 - val_accuracy: 0.3125 Epoch 5/25 25/25 [==============================] - ETA: 0s - loss: 0.7825 - accuracy: 0.7600 Epoch 5: val_accuracy did not improve from 0.39583 25/25 [==============================] - 44s 2s/step - loss: 0.7825 - accuracy: 0.7600 - val_loss: 5.0991 - val_accuracy: 0.2448 Epoch 6/25 25/25 [==============================] - ETA: 0s - loss: 0.4594 - accuracy: 0.8425 Epoch 6: val_accuracy did not improve from 0.39583 25/25 [==============================] - 45s 2s/step - loss: 0.4594 - accuracy: 0.8425 - val_loss: 5.7482 - val_accuracy: 0.1771 Epoch 7/25 25/25 [==============================] - ETA: 0s - loss: 0.4009 - accuracy: 0.8600 Epoch 7: val_accuracy did not improve from 0.39583 25/25 [==============================] - 48s 2s/step - loss: 0.4009 - accuracy: 0.8600 - val_loss: 7.0191 - val_accuracy: 0.2135 Epoch 8/25 25/25 [==============================] - ETA: 0s - loss: 0.2893 - accuracy: 0.9075 Epoch 8: val_accuracy did not improve from 0.39583 25/25 [==============================] - 49s 2s/step - loss: 0.2893 - accuracy: 0.9075 - val_loss: 7.8847 - val_accuracy: 0.1979 Epoch 9/25 25/25 [==============================] - ETA: 0s - loss: 0.2533 - accuracy: 0.8950 Epoch 9: val_accuracy did not improve from 0.39583 25/25 [==============================] - 47s 2s/step - loss: 0.2533 - accuracy: 0.8950 - val_loss: 8.0985 - val_accuracy: 0.2500 Epoch 10/25 25/25 [==============================] - ETA: 0s - loss: 0.2697 - accuracy: 0.9013 Epoch 10: val_accuracy did not improve from 0.39583 25/25 [==============================] - 50s 2s/step - loss: 0.2697 - accuracy: 0.9013 - val_loss: 8.7342 - val_accuracy: 0.2865 Epoch 11/25 25/25 [==============================] - ETA: 0s - loss: 0.2353 - accuracy: 0.9212 Epoch 11: val_accuracy did not improve from 0.39583 25/25 [==============================] - 48s 2s/step - loss: 0.2353 - accuracy: 0.9212 - val_loss: 8.8148 - val_accuracy: 0.3021 Epoch 12/25 25/25 [==============================] - ETA: 0s - loss: 0.1378 - accuracy: 0.9525 Epoch 12: val_accuracy did not improve from 0.39583 25/25 [==============================] - 47s 2s/step - loss: 0.1378 - accuracy: 0.9525 - val_loss: 7.8579 - val_accuracy: 0.3177 Epoch 13/25 25/25 [==============================] - ETA: 0s - loss: 0.1722 - accuracy: 0.9450 Epoch 13: val_accuracy did not improve from 0.39583 25/25 [==============================] - 47s 2s/step - loss: 0.1722 - accuracy: 0.9450 - val_loss: 7.5631 - val_accuracy: 0.3125 Epoch 14/25 25/25 [==============================] - ETA: 0s - loss: 0.1326 - accuracy: 0.9500 Epoch 14: val_accuracy did not improve from 0.39583 25/25 [==============================] - 48s 2s/step - loss: 0.1326 - accuracy: 0.9500 - val_loss: 7.8681 - val_accuracy: 0.2760 Epoch 15/25 25/25 [==============================] - ETA: 0s - loss: 0.1235 - accuracy: 0.9538 Epoch 15: val_accuracy did not improve from 0.39583 25/25 [==============================] - 46s 2s/step - loss: 0.1235 - accuracy: 0.9538 - val_loss: 8.4553 - val_accuracy: 0.3021 Epoch 16/25 25/25 [==============================] - ETA: 0s - loss: 0.0752 - accuracy: 0.9737 Epoch 16: val_accuracy did not improve from 0.39583 25/25 [==============================] - 44s 2s/step - loss: 0.0752 - accuracy: 0.9737 - val_loss: 6.6568 - val_accuracy: 0.3229 Epoch 17/25 25/25 [==============================] - ETA: 0s - loss: 0.0540 - accuracy: 0.9862 Epoch 17: val_accuracy did not improve from 0.39583 25/25 [==============================] - 46s 2s/step - loss: 0.0540 - accuracy: 0.9862 - val_loss: 6.9686 - val_accuracy: 0.3229 Epoch 18/25 25/25 [==============================] - ETA: 0s - loss: 0.0681 - accuracy: 0.9750 Epoch 18: val_accuracy did not improve from 0.39583 25/25 [==============================] - 45s 2s/step - loss: 0.0681 - accuracy: 0.9750 - val_loss: 5.2376 - val_accuracy: 0.3281 Epoch 19/25 25/25 [==============================] - ETA: 0s - loss: 0.0530 - accuracy: 0.9800 Epoch 19: val_accuracy improved from 0.39583 to 0.42708, saving model to alex_9.h5 25/25 [==============================] - 53s 2s/step - loss: 0.0530 - accuracy: 0.9800 - val_loss: 3.4478 - val_accuracy: 0.4271 Epoch 20/25 25/25 [==============================] - ETA: 0s - loss: 0.0605 - accuracy: 0.9850 Epoch 20: val_accuracy improved from 0.42708 to 0.44792, saving model to alex_9.h5 25/25 [==============================] - 50s 2s/step - loss: 0.0605 - accuracy: 0.9850 - val_loss: 2.8303 - val_accuracy: 0.4479 Epoch 21/25 25/25 [==============================] - ETA: 0s - loss: 0.0447 - accuracy: 0.9862 Epoch 21: val_accuracy improved from 0.44792 to 0.47396, saving model to alex_9.h5 25/25 [==============================] - 51s 2s/step - loss: 0.0447 - accuracy: 0.9862 - val_loss: 3.0949 - val_accuracy: 0.4740 Epoch 22/25 25/25 [==============================] - ETA: 0s - loss: 0.0601 - accuracy: 0.9825 Epoch 22: val_accuracy improved from 0.47396 to 0.70312, saving model to alex_9.h5 25/25 [==============================] - 78s 3s/step - loss: 0.0601 - accuracy: 0.9825 - val_loss: 1.2678 - val_accuracy: 0.7031 Epoch 23/25 25/25 [==============================] - ETA: 0s - loss: 0.0483 - accuracy: 0.9850 Epoch 23: val_accuracy improved from 0.70312 to 0.76562, saving model to alex_9.h5 25/25 [==============================] - 55s 2s/step - loss: 0.0483 - accuracy: 0.9850 - val_loss: 1.0314 - val_accuracy: 0.7656 Epoch 24/25 25/25 [==============================] - ETA: 0s - loss: 0.0412 - accuracy: 0.9862 Epoch 24: val_accuracy did not improve from 0.76562 25/25 [==============================] - 60s 2s/step - loss: 0.0412 - accuracy: 0.9862 - val_loss: 1.1687 - val_accuracy: 0.7083 Epoch 25/25 25/25 [==============================] - ETA: 0s - loss: 0.0650 - accuracy: 0.9725 Epoch 25: val_accuracy did not improve from 0.76562 25/25 [==============================] - 48s 2s/step - loss: 0.0650 - accuracy: 0.9725 - val_loss: 1.4878 - val_accuracy: 0.6719
plt.plot(alex9.history["accuracy"])
plt.plot(alex9.history['val_accuracy'])
plt.plot(alex9.history['loss'])
plt.plot(alex9.history['val_loss'])
plt.title("Model accuracy")
plt.ylabel("Value")
plt.xlabel("Epoch")
plt.legend(["Accuracy","Validation Accuracy","Loss","Validation Loss"])
plt.show()
model_batch_drop.evaluate(test_ds)
8/8 [==============================] - 4s 493ms/step - loss: 1.3864 - accuracy: 0.6953
[1.386448621749878, 0.6953125]