In this notebook, I will go over steps to retrain Inception V3 for the skin cancer dataset.
import os
from glob import glob
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from keras.utils.np_utils import to_categorical # convert to one-hot-encoding
from keras.preprocessing.image import ImageDataGenerator
from keras import layers
from keras import Model
from keras.applications.inception_v3 import InceptionV3, preprocess_input
from keras.optimizers import Adam
from keras.callbacks import ReduceLROnPlateau, EarlyStopping
%matplotlib inline
import matplotlib.pyplot as plt
Using TensorFlow backend.
X_train = np.load("/floyd/input/skin_cancer_192_256/256_192_train.npy")
y_train = np.load("/floyd/input/skin_cancer_192_256/train_labels.npy")
X_val = np.load("/floyd/input/skin_cancer_192_256/256_192_val.npy")
y_val = np.load("/floyd/input/skin_cancer_192_256/val_labels.npy")
X_train.shape, X_val.shape
((8111, 192, 256, 3), (902, 192, 256, 3))
y_train.shape, y_val.shape
((8111,), (902,))
y_train = to_categorical(y_train)
y_val = to_categorical(y_val)
y_train.shape, y_val.shape
((8111, 7), (902, 7))
pre_trained_model = InceptionV3(input_shape=(192, 256, 3), include_top=False, weights="imagenet")
for layer in pre_trained_model.layers:
print(layer.name)
layer.trainable = False
print(len(pre_trained_model.layers))
input_1 conv2d_1 batch_normalization_1 activation_1 conv2d_2 batch_normalization_2 activation_2 conv2d_3 batch_normalization_3 activation_3 max_pooling2d_1 conv2d_4 batch_normalization_4 activation_4 conv2d_5 batch_normalization_5 activation_5 max_pooling2d_2 conv2d_9 batch_normalization_9 activation_9 conv2d_7 conv2d_10 batch_normalization_7 batch_normalization_10 activation_7 activation_10 average_pooling2d_1 conv2d_6 conv2d_8 conv2d_11 conv2d_12 batch_normalization_6 batch_normalization_8 batch_normalization_11 batch_normalization_12 activation_6 activation_8 activation_11 activation_12 mixed0 conv2d_16 batch_normalization_16 activation_16 conv2d_14 conv2d_17 batch_normalization_14 batch_normalization_17 activation_14 activation_17 average_pooling2d_2 conv2d_13 conv2d_15 conv2d_18 conv2d_19 batch_normalization_13 batch_normalization_15 batch_normalization_18 batch_normalization_19 activation_13 activation_15 activation_18 activation_19 mixed1 conv2d_23 batch_normalization_23 activation_23 conv2d_21 conv2d_24 batch_normalization_21 batch_normalization_24 activation_21 activation_24 average_pooling2d_3 conv2d_20 conv2d_22 conv2d_25 conv2d_26 batch_normalization_20 batch_normalization_22 batch_normalization_25 batch_normalization_26 activation_20 activation_22 activation_25 activation_26 mixed2 conv2d_28 batch_normalization_28 activation_28 conv2d_29 batch_normalization_29 activation_29 conv2d_27 conv2d_30 batch_normalization_27 batch_normalization_30 activation_27 activation_30 max_pooling2d_3 mixed3 conv2d_35 batch_normalization_35 activation_35 conv2d_36 batch_normalization_36 activation_36 conv2d_32 conv2d_37 batch_normalization_32 batch_normalization_37 activation_32 activation_37 conv2d_33 conv2d_38 batch_normalization_33 batch_normalization_38 activation_33 activation_38 average_pooling2d_4 conv2d_31 conv2d_34 conv2d_39 conv2d_40 batch_normalization_31 batch_normalization_34 batch_normalization_39 batch_normalization_40 activation_31 activation_34 activation_39 activation_40 mixed4 conv2d_45 batch_normalization_45 activation_45 conv2d_46 batch_normalization_46 activation_46 conv2d_42 conv2d_47 batch_normalization_42 batch_normalization_47 activation_42 activation_47 conv2d_43 conv2d_48 batch_normalization_43 batch_normalization_48 activation_43 activation_48 average_pooling2d_5 conv2d_41 conv2d_44 conv2d_49 conv2d_50 batch_normalization_41 batch_normalization_44 batch_normalization_49 batch_normalization_50 activation_41 activation_44 activation_49 activation_50 mixed5 conv2d_55 batch_normalization_55 activation_55 conv2d_56 batch_normalization_56 activation_56 conv2d_52 conv2d_57 batch_normalization_52 batch_normalization_57 activation_52 activation_57 conv2d_53 conv2d_58 batch_normalization_53 batch_normalization_58 activation_53 activation_58 average_pooling2d_6 conv2d_51 conv2d_54 conv2d_59 conv2d_60 batch_normalization_51 batch_normalization_54 batch_normalization_59 batch_normalization_60 activation_51 activation_54 activation_59 activation_60 mixed6 conv2d_65 batch_normalization_65 activation_65 conv2d_66 batch_normalization_66 activation_66 conv2d_62 conv2d_67 batch_normalization_62 batch_normalization_67 activation_62 activation_67 conv2d_63 conv2d_68 batch_normalization_63 batch_normalization_68 activation_63 activation_68 average_pooling2d_7 conv2d_61 conv2d_64 conv2d_69 conv2d_70 batch_normalization_61 batch_normalization_64 batch_normalization_69 batch_normalization_70 activation_61 activation_64 activation_69 activation_70 mixed7 conv2d_73 batch_normalization_73 activation_73 conv2d_74 batch_normalization_74 activation_74 conv2d_71 conv2d_75 batch_normalization_71 batch_normalization_75 activation_71 activation_75 conv2d_72 conv2d_76 batch_normalization_72 batch_normalization_76 activation_72 activation_76 max_pooling2d_4 mixed8 conv2d_81 batch_normalization_81 activation_81 conv2d_78 conv2d_82 batch_normalization_78 batch_normalization_82 activation_78 activation_82 conv2d_79 conv2d_80 conv2d_83 conv2d_84 average_pooling2d_8 conv2d_77 batch_normalization_79 batch_normalization_80 batch_normalization_83 batch_normalization_84 conv2d_85 batch_normalization_77 activation_79 activation_80 activation_83 activation_84 batch_normalization_85 activation_77 mixed9_0 concatenate_1 activation_85 mixed9 conv2d_90 batch_normalization_90 activation_90 conv2d_87 conv2d_91 batch_normalization_87 batch_normalization_91 activation_87 activation_91 conv2d_88 conv2d_89 conv2d_92 conv2d_93 average_pooling2d_9 conv2d_86 batch_normalization_88 batch_normalization_89 batch_normalization_92 batch_normalization_93 conv2d_94 batch_normalization_86 activation_88 activation_89 activation_92 activation_93 batch_normalization_94 activation_86 mixed9_1 concatenate_2 activation_94 mixed10 311
last_layer = pre_trained_model.get_layer('mixed10')
print('last layer output shape:', last_layer.output_shape)
last_output = last_layer.output
last layer output shape: (None, 4, 6, 2048)
# Flatten the output layer to 1 dimension
x = layers.GlobalMaxPooling2D()(last_output)
# Add a fully connected layer with 512 hidden units and ReLU activation
x = layers.Dense(512, activation='relu')(x)
# Add a dropout rate of 0.7
x = layers.Dropout(0.5)(x)
# Add a final sigmoid layer for classification
x = layers.Dense(7, activation='softmax')(x)
# Configure and compile the model
model = Model(pre_trained_model.input, x)
optimizer = Adam(lr=0.0001, beta_1=0.9, beta_2=0.999, epsilon=None, decay=0.0, amsgrad=True)
model.compile(loss='categorical_crossentropy',
optimizer=optimizer,
metrics=['accuracy'])
model.summary()
__________________________________________________________________________________________________ Layer (type) Output Shape Param # Connected to ================================================================================================== input_1 (InputLayer) (None, 192, 256, 3) 0 __________________________________________________________________________________________________ conv2d_1 (Conv2D) (None, 95, 127, 32) 864 input_1[0][0] __________________________________________________________________________________________________ batch_normalization_1 (BatchNor (None, 95, 127, 32) 96 conv2d_1[0][0] __________________________________________________________________________________________________ activation_1 (Activation) (None, 95, 127, 32) 0 batch_normalization_1[0][0] __________________________________________________________________________________________________ conv2d_2 (Conv2D) (None, 93, 125, 32) 9216 activation_1[0][0] __________________________________________________________________________________________________ batch_normalization_2 (BatchNor (None, 93, 125, 32) 96 conv2d_2[0][0] __________________________________________________________________________________________________ activation_2 (Activation) (None, 93, 125, 32) 0 batch_normalization_2[0][0] __________________________________________________________________________________________________ conv2d_3 (Conv2D) (None, 93, 125, 64) 18432 activation_2[0][0] __________________________________________________________________________________________________ batch_normalization_3 (BatchNor (None, 93, 125, 64) 192 conv2d_3[0][0] __________________________________________________________________________________________________ activation_3 (Activation) (None, 93, 125, 64) 0 batch_normalization_3[0][0] __________________________________________________________________________________________________ max_pooling2d_1 (MaxPooling2D) (None, 46, 62, 64) 0 activation_3[0][0] __________________________________________________________________________________________________ conv2d_4 (Conv2D) (None, 46, 62, 80) 5120 max_pooling2d_1[0][0] __________________________________________________________________________________________________ batch_normalization_4 (BatchNor (None, 46, 62, 80) 240 conv2d_4[0][0] __________________________________________________________________________________________________ activation_4 (Activation) (None, 46, 62, 80) 0 batch_normalization_4[0][0] __________________________________________________________________________________________________ conv2d_5 (Conv2D) (None, 44, 60, 192) 138240 activation_4[0][0] __________________________________________________________________________________________________ batch_normalization_5 (BatchNor (None, 44, 60, 192) 576 conv2d_5[0][0] __________________________________________________________________________________________________ activation_5 (Activation) (None, 44, 60, 192) 0 batch_normalization_5[0][0] __________________________________________________________________________________________________ max_pooling2d_2 (MaxPooling2D) (None, 21, 29, 192) 0 activation_5[0][0] __________________________________________________________________________________________________ conv2d_9 (Conv2D) (None, 21, 29, 64) 12288 max_pooling2d_2[0][0] __________________________________________________________________________________________________ batch_normalization_9 (BatchNor (None, 21, 29, 64) 192 conv2d_9[0][0] __________________________________________________________________________________________________ activation_9 (Activation) (None, 21, 29, 64) 0 batch_normalization_9[0][0] __________________________________________________________________________________________________ conv2d_7 (Conv2D) (None, 21, 29, 48) 9216 max_pooling2d_2[0][0] __________________________________________________________________________________________________ conv2d_10 (Conv2D) (None, 21, 29, 96) 55296 activation_9[0][0] __________________________________________________________________________________________________ batch_normalization_7 (BatchNor (None, 21, 29, 48) 144 conv2d_7[0][0] __________________________________________________________________________________________________ batch_normalization_10 (BatchNo (None, 21, 29, 96) 288 conv2d_10[0][0] __________________________________________________________________________________________________ activation_7 (Activation) (None, 21, 29, 48) 0 batch_normalization_7[0][0] __________________________________________________________________________________________________ activation_10 (Activation) (None, 21, 29, 96) 0 batch_normalization_10[0][0] __________________________________________________________________________________________________ average_pooling2d_1 (AveragePoo (None, 21, 29, 192) 0 max_pooling2d_2[0][0] __________________________________________________________________________________________________ conv2d_6 (Conv2D) (None, 21, 29, 64) 12288 max_pooling2d_2[0][0] __________________________________________________________________________________________________ conv2d_8 (Conv2D) (None, 21, 29, 64) 76800 activation_7[0][0] __________________________________________________________________________________________________ conv2d_11 (Conv2D) (None, 21, 29, 96) 82944 activation_10[0][0] __________________________________________________________________________________________________ conv2d_12 (Conv2D) (None, 21, 29, 32) 6144 average_pooling2d_1[0][0] __________________________________________________________________________________________________ batch_normalization_6 (BatchNor (None, 21, 29, 64) 192 conv2d_6[0][0] __________________________________________________________________________________________________ batch_normalization_8 (BatchNor (None, 21, 29, 64) 192 conv2d_8[0][0] __________________________________________________________________________________________________ batch_normalization_11 (BatchNo (None, 21, 29, 96) 288 conv2d_11[0][0] __________________________________________________________________________________________________ batch_normalization_12 (BatchNo (None, 21, 29, 32) 96 conv2d_12[0][0] __________________________________________________________________________________________________ activation_6 (Activation) (None, 21, 29, 64) 0 batch_normalization_6[0][0] __________________________________________________________________________________________________ activation_8 (Activation) (None, 21, 29, 64) 0 batch_normalization_8[0][0] __________________________________________________________________________________________________ activation_11 (Activation) (None, 21, 29, 96) 0 batch_normalization_11[0][0] __________________________________________________________________________________________________ activation_12 (Activation) (None, 21, 29, 32) 0 batch_normalization_12[0][0] __________________________________________________________________________________________________ mixed0 (Concatenate) (None, 21, 29, 256) 0 activation_6[0][0] activation_8[0][0] activation_11[0][0] activation_12[0][0] __________________________________________________________________________________________________ conv2d_16 (Conv2D) (None, 21, 29, 64) 16384 mixed0[0][0] __________________________________________________________________________________________________ batch_normalization_16 (BatchNo (None, 21, 29, 64) 192 conv2d_16[0][0] __________________________________________________________________________________________________ activation_16 (Activation) (None, 21, 29, 64) 0 batch_normalization_16[0][0] __________________________________________________________________________________________________ conv2d_14 (Conv2D) (None, 21, 29, 48) 12288 mixed0[0][0] __________________________________________________________________________________________________ conv2d_17 (Conv2D) (None, 21, 29, 96) 55296 activation_16[0][0] __________________________________________________________________________________________________ batch_normalization_14 (BatchNo (None, 21, 29, 48) 144 conv2d_14[0][0] __________________________________________________________________________________________________ batch_normalization_17 (BatchNo (None, 21, 29, 96) 288 conv2d_17[0][0] __________________________________________________________________________________________________ activation_14 (Activation) (None, 21, 29, 48) 0 batch_normalization_14[0][0] __________________________________________________________________________________________________ activation_17 (Activation) (None, 21, 29, 96) 0 batch_normalization_17[0][0] __________________________________________________________________________________________________ average_pooling2d_2 (AveragePoo (None, 21, 29, 256) 0 mixed0[0][0] __________________________________________________________________________________________________ conv2d_13 (Conv2D) (None, 21, 29, 64) 16384 mixed0[0][0] __________________________________________________________________________________________________ conv2d_15 (Conv2D) (None, 21, 29, 64) 76800 activation_14[0][0] __________________________________________________________________________________________________ conv2d_18 (Conv2D) (None, 21, 29, 96) 82944 activation_17[0][0] __________________________________________________________________________________________________ conv2d_19 (Conv2D) (None, 21, 29, 64) 16384 average_pooling2d_2[0][0] __________________________________________________________________________________________________ batch_normalization_13 (BatchNo (None, 21, 29, 64) 192 conv2d_13[0][0] __________________________________________________________________________________________________ batch_normalization_15 (BatchNo (None, 21, 29, 64) 192 conv2d_15[0][0] __________________________________________________________________________________________________ batch_normalization_18 (BatchNo (None, 21, 29, 96) 288 conv2d_18[0][0] __________________________________________________________________________________________________ batch_normalization_19 (BatchNo (None, 21, 29, 64) 192 conv2d_19[0][0] __________________________________________________________________________________________________ activation_13 (Activation) (None, 21, 29, 64) 0 batch_normalization_13[0][0] __________________________________________________________________________________________________ activation_15 (Activation) (None, 21, 29, 64) 0 batch_normalization_15[0][0] __________________________________________________________________________________________________ activation_18 (Activation) (None, 21, 29, 96) 0 batch_normalization_18[0][0] __________________________________________________________________________________________________ activation_19 (Activation) (None, 21, 29, 64) 0 batch_normalization_19[0][0] __________________________________________________________________________________________________ mixed1 (Concatenate) (None, 21, 29, 288) 0 activation_13[0][0] activation_15[0][0] activation_18[0][0] activation_19[0][0] __________________________________________________________________________________________________ conv2d_23 (Conv2D) (None, 21, 29, 64) 18432 mixed1[0][0] __________________________________________________________________________________________________ batch_normalization_23 (BatchNo (None, 21, 29, 64) 192 conv2d_23[0][0] __________________________________________________________________________________________________ activation_23 (Activation) (None, 21, 29, 64) 0 batch_normalization_23[0][0] __________________________________________________________________________________________________ conv2d_21 (Conv2D) (None, 21, 29, 48) 13824 mixed1[0][0] __________________________________________________________________________________________________ conv2d_24 (Conv2D) (None, 21, 29, 96) 55296 activation_23[0][0] __________________________________________________________________________________________________ batch_normalization_21 (BatchNo (None, 21, 29, 48) 144 conv2d_21[0][0] __________________________________________________________________________________________________ batch_normalization_24 (BatchNo (None, 21, 29, 96) 288 conv2d_24[0][0] __________________________________________________________________________________________________ activation_21 (Activation) (None, 21, 29, 48) 0 batch_normalization_21[0][0] __________________________________________________________________________________________________ activation_24 (Activation) (None, 21, 29, 96) 0 batch_normalization_24[0][0] __________________________________________________________________________________________________ average_pooling2d_3 (AveragePoo (None, 21, 29, 288) 0 mixed1[0][0] __________________________________________________________________________________________________ conv2d_20 (Conv2D) (None, 21, 29, 64) 18432 mixed1[0][0] __________________________________________________________________________________________________ conv2d_22 (Conv2D) (None, 21, 29, 64) 76800 activation_21[0][0] __________________________________________________________________________________________________ conv2d_25 (Conv2D) (None, 21, 29, 96) 82944 activation_24[0][0] __________________________________________________________________________________________________ conv2d_26 (Conv2D) (None, 21, 29, 64) 18432 average_pooling2d_3[0][0] __________________________________________________________________________________________________ batch_normalization_20 (BatchNo (None, 21, 29, 64) 192 conv2d_20[0][0] __________________________________________________________________________________________________ batch_normalization_22 (BatchNo (None, 21, 29, 64) 192 conv2d_22[0][0] __________________________________________________________________________________________________ batch_normalization_25 (BatchNo (None, 21, 29, 96) 288 conv2d_25[0][0] __________________________________________________________________________________________________ batch_normalization_26 (BatchNo (None, 21, 29, 64) 192 conv2d_26[0][0] __________________________________________________________________________________________________ activation_20 (Activation) (None, 21, 29, 64) 0 batch_normalization_20[0][0] __________________________________________________________________________________________________ activation_22 (Activation) (None, 21, 29, 64) 0 batch_normalization_22[0][0] __________________________________________________________________________________________________ activation_25 (Activation) (None, 21, 29, 96) 0 batch_normalization_25[0][0] __________________________________________________________________________________________________ activation_26 (Activation) (None, 21, 29, 64) 0 batch_normalization_26[0][0] __________________________________________________________________________________________________ mixed2 (Concatenate) (None, 21, 29, 288) 0 activation_20[0][0] activation_22[0][0] activation_25[0][0] activation_26[0][0] __________________________________________________________________________________________________ conv2d_28 (Conv2D) (None, 21, 29, 64) 18432 mixed2[0][0] __________________________________________________________________________________________________ batch_normalization_28 (BatchNo (None, 21, 29, 64) 192 conv2d_28[0][0] __________________________________________________________________________________________________ activation_28 (Activation) (None, 21, 29, 64) 0 batch_normalization_28[0][0] __________________________________________________________________________________________________ conv2d_29 (Conv2D) (None, 21, 29, 96) 55296 activation_28[0][0] __________________________________________________________________________________________________ batch_normalization_29 (BatchNo (None, 21, 29, 96) 288 conv2d_29[0][0] __________________________________________________________________________________________________ activation_29 (Activation) (None, 21, 29, 96) 0 batch_normalization_29[0][0] __________________________________________________________________________________________________ conv2d_27 (Conv2D) (None, 10, 14, 384) 995328 mixed2[0][0] __________________________________________________________________________________________________ conv2d_30 (Conv2D) (None, 10, 14, 96) 82944 activation_29[0][0] __________________________________________________________________________________________________ batch_normalization_27 (BatchNo (None, 10, 14, 384) 1152 conv2d_27[0][0] __________________________________________________________________________________________________ batch_normalization_30 (BatchNo (None, 10, 14, 96) 288 conv2d_30[0][0] __________________________________________________________________________________________________ activation_27 (Activation) (None, 10, 14, 384) 0 batch_normalization_27[0][0] __________________________________________________________________________________________________ activation_30 (Activation) (None, 10, 14, 96) 0 batch_normalization_30[0][0] __________________________________________________________________________________________________ max_pooling2d_3 (MaxPooling2D) (None, 10, 14, 288) 0 mixed2[0][0] __________________________________________________________________________________________________ mixed3 (Concatenate) (None, 10, 14, 768) 0 activation_27[0][0] activation_30[0][0] max_pooling2d_3[0][0] __________________________________________________________________________________________________ conv2d_35 (Conv2D) (None, 10, 14, 128) 98304 mixed3[0][0] __________________________________________________________________________________________________ batch_normalization_35 (BatchNo (None, 10, 14, 128) 384 conv2d_35[0][0] __________________________________________________________________________________________________ activation_35 (Activation) (None, 10, 14, 128) 0 batch_normalization_35[0][0] __________________________________________________________________________________________________ conv2d_36 (Conv2D) (None, 10, 14, 128) 114688 activation_35[0][0] __________________________________________________________________________________________________ batch_normalization_36 (BatchNo (None, 10, 14, 128) 384 conv2d_36[0][0] __________________________________________________________________________________________________ activation_36 (Activation) (None, 10, 14, 128) 0 batch_normalization_36[0][0] __________________________________________________________________________________________________ conv2d_32 (Conv2D) (None, 10, 14, 128) 98304 mixed3[0][0] __________________________________________________________________________________________________ conv2d_37 (Conv2D) (None, 10, 14, 128) 114688 activation_36[0][0] __________________________________________________________________________________________________ batch_normalization_32 (BatchNo (None, 10, 14, 128) 384 conv2d_32[0][0] __________________________________________________________________________________________________ batch_normalization_37 (BatchNo (None, 10, 14, 128) 384 conv2d_37[0][0] __________________________________________________________________________________________________ activation_32 (Activation) (None, 10, 14, 128) 0 batch_normalization_32[0][0] __________________________________________________________________________________________________ activation_37 (Activation) (None, 10, 14, 128) 0 batch_normalization_37[0][0] __________________________________________________________________________________________________ conv2d_33 (Conv2D) (None, 10, 14, 128) 114688 activation_32[0][0] __________________________________________________________________________________________________ conv2d_38 (Conv2D) (None, 10, 14, 128) 114688 activation_37[0][0] __________________________________________________________________________________________________ batch_normalization_33 (BatchNo (None, 10, 14, 128) 384 conv2d_33[0][0] __________________________________________________________________________________________________ batch_normalization_38 (BatchNo (None, 10, 14, 128) 384 conv2d_38[0][0] __________________________________________________________________________________________________ activation_33 (Activation) (None, 10, 14, 128) 0 batch_normalization_33[0][0] __________________________________________________________________________________________________ activation_38 (Activation) (None, 10, 14, 128) 0 batch_normalization_38[0][0] __________________________________________________________________________________________________ average_pooling2d_4 (AveragePoo (None, 10, 14, 768) 0 mixed3[0][0] __________________________________________________________________________________________________ conv2d_31 (Conv2D) (None, 10, 14, 192) 147456 mixed3[0][0] __________________________________________________________________________________________________ conv2d_34 (Conv2D) (None, 10, 14, 192) 172032 activation_33[0][0] __________________________________________________________________________________________________ conv2d_39 (Conv2D) (None, 10, 14, 192) 172032 activation_38[0][0] __________________________________________________________________________________________________ conv2d_40 (Conv2D) (None, 10, 14, 192) 147456 average_pooling2d_4[0][0] __________________________________________________________________________________________________ batch_normalization_31 (BatchNo (None, 10, 14, 192) 576 conv2d_31[0][0] __________________________________________________________________________________________________ batch_normalization_34 (BatchNo (None, 10, 14, 192) 576 conv2d_34[0][0] __________________________________________________________________________________________________ batch_normalization_39 (BatchNo (None, 10, 14, 192) 576 conv2d_39[0][0] __________________________________________________________________________________________________ batch_normalization_40 (BatchNo (None, 10, 14, 192) 576 conv2d_40[0][0] __________________________________________________________________________________________________ activation_31 (Activation) (None, 10, 14, 192) 0 batch_normalization_31[0][0] __________________________________________________________________________________________________ activation_34 (Activation) (None, 10, 14, 192) 0 batch_normalization_34[0][0] __________________________________________________________________________________________________ activation_39 (Activation) (None, 10, 14, 192) 0 batch_normalization_39[0][0] __________________________________________________________________________________________________ activation_40 (Activation) (None, 10, 14, 192) 0 batch_normalization_40[0][0] __________________________________________________________________________________________________ mixed4 (Concatenate) (None, 10, 14, 768) 0 activation_31[0][0] activation_34[0][0] activation_39[0][0] activation_40[0][0] __________________________________________________________________________________________________ conv2d_45 (Conv2D) (None, 10, 14, 160) 122880 mixed4[0][0] __________________________________________________________________________________________________ batch_normalization_45 (BatchNo (None, 10, 14, 160) 480 conv2d_45[0][0] __________________________________________________________________________________________________ activation_45 (Activation) (None, 10, 14, 160) 0 batch_normalization_45[0][0] __________________________________________________________________________________________________ conv2d_46 (Conv2D) (None, 10, 14, 160) 179200 activation_45[0][0] __________________________________________________________________________________________________ batch_normalization_46 (BatchNo (None, 10, 14, 160) 480 conv2d_46[0][0] __________________________________________________________________________________________________ activation_46 (Activation) (None, 10, 14, 160) 0 batch_normalization_46[0][0] __________________________________________________________________________________________________ conv2d_42 (Conv2D) (None, 10, 14, 160) 122880 mixed4[0][0] __________________________________________________________________________________________________ conv2d_47 (Conv2D) (None, 10, 14, 160) 179200 activation_46[0][0] __________________________________________________________________________________________________ batch_normalization_42 (BatchNo (None, 10, 14, 160) 480 conv2d_42[0][0] __________________________________________________________________________________________________ batch_normalization_47 (BatchNo (None, 10, 14, 160) 480 conv2d_47[0][0] __________________________________________________________________________________________________ activation_42 (Activation) (None, 10, 14, 160) 0 batch_normalization_42[0][0] __________________________________________________________________________________________________ activation_47 (Activation) (None, 10, 14, 160) 0 batch_normalization_47[0][0] __________________________________________________________________________________________________ conv2d_43 (Conv2D) (None, 10, 14, 160) 179200 activation_42[0][0] __________________________________________________________________________________________________ conv2d_48 (Conv2D) (None, 10, 14, 160) 179200 activation_47[0][0] __________________________________________________________________________________________________ batch_normalization_43 (BatchNo (None, 10, 14, 160) 480 conv2d_43[0][0] __________________________________________________________________________________________________ batch_normalization_48 (BatchNo (None, 10, 14, 160) 480 conv2d_48[0][0] __________________________________________________________________________________________________ activation_43 (Activation) (None, 10, 14, 160) 0 batch_normalization_43[0][0] __________________________________________________________________________________________________ activation_48 (Activation) (None, 10, 14, 160) 0 batch_normalization_48[0][0] __________________________________________________________________________________________________ average_pooling2d_5 (AveragePoo (None, 10, 14, 768) 0 mixed4[0][0] __________________________________________________________________________________________________ conv2d_41 (Conv2D) (None, 10, 14, 192) 147456 mixed4[0][0] __________________________________________________________________________________________________ conv2d_44 (Conv2D) (None, 10, 14, 192) 215040 activation_43[0][0] __________________________________________________________________________________________________ conv2d_49 (Conv2D) (None, 10, 14, 192) 215040 activation_48[0][0] __________________________________________________________________________________________________ conv2d_50 (Conv2D) (None, 10, 14, 192) 147456 average_pooling2d_5[0][0] __________________________________________________________________________________________________ batch_normalization_41 (BatchNo (None, 10, 14, 192) 576 conv2d_41[0][0] __________________________________________________________________________________________________ batch_normalization_44 (BatchNo (None, 10, 14, 192) 576 conv2d_44[0][0] __________________________________________________________________________________________________ batch_normalization_49 (BatchNo (None, 10, 14, 192) 576 conv2d_49[0][0] __________________________________________________________________________________________________ batch_normalization_50 (BatchNo (None, 10, 14, 192) 576 conv2d_50[0][0] __________________________________________________________________________________________________ activation_41 (Activation) (None, 10, 14, 192) 0 batch_normalization_41[0][0] __________________________________________________________________________________________________ activation_44 (Activation) (None, 10, 14, 192) 0 batch_normalization_44[0][0] __________________________________________________________________________________________________ activation_49 (Activation) (None, 10, 14, 192) 0 batch_normalization_49[0][0] __________________________________________________________________________________________________ activation_50 (Activation) (None, 10, 14, 192) 0 batch_normalization_50[0][0] __________________________________________________________________________________________________ mixed5 (Concatenate) (None, 10, 14, 768) 0 activation_41[0][0] activation_44[0][0] activation_49[0][0] activation_50[0][0] __________________________________________________________________________________________________ conv2d_55 (Conv2D) (None, 10, 14, 160) 122880 mixed5[0][0] __________________________________________________________________________________________________ batch_normalization_55 (BatchNo (None, 10, 14, 160) 480 conv2d_55[0][0] __________________________________________________________________________________________________ activation_55 (Activation) (None, 10, 14, 160) 0 batch_normalization_55[0][0] __________________________________________________________________________________________________ conv2d_56 (Conv2D) (None, 10, 14, 160) 179200 activation_55[0][0] __________________________________________________________________________________________________ batch_normalization_56 (BatchNo (None, 10, 14, 160) 480 conv2d_56[0][0] __________________________________________________________________________________________________ activation_56 (Activation) (None, 10, 14, 160) 0 batch_normalization_56[0][0] __________________________________________________________________________________________________ conv2d_52 (Conv2D) (None, 10, 14, 160) 122880 mixed5[0][0] __________________________________________________________________________________________________ conv2d_57 (Conv2D) (None, 10, 14, 160) 179200 activation_56[0][0] __________________________________________________________________________________________________ batch_normalization_52 (BatchNo (None, 10, 14, 160) 480 conv2d_52[0][0] __________________________________________________________________________________________________ batch_normalization_57 (BatchNo (None, 10, 14, 160) 480 conv2d_57[0][0] __________________________________________________________________________________________________ activation_52 (Activation) (None, 10, 14, 160) 0 batch_normalization_52[0][0] __________________________________________________________________________________________________ activation_57 (Activation) (None, 10, 14, 160) 0 batch_normalization_57[0][0] __________________________________________________________________________________________________ conv2d_53 (Conv2D) (None, 10, 14, 160) 179200 activation_52[0][0] __________________________________________________________________________________________________ conv2d_58 (Conv2D) (None, 10, 14, 160) 179200 activation_57[0][0] __________________________________________________________________________________________________ batch_normalization_53 (BatchNo (None, 10, 14, 160) 480 conv2d_53[0][0] __________________________________________________________________________________________________ batch_normalization_58 (BatchNo (None, 10, 14, 160) 480 conv2d_58[0][0] __________________________________________________________________________________________________ activation_53 (Activation) (None, 10, 14, 160) 0 batch_normalization_53[0][0] __________________________________________________________________________________________________ activation_58 (Activation) (None, 10, 14, 160) 0 batch_normalization_58[0][0] __________________________________________________________________________________________________ average_pooling2d_6 (AveragePoo (None, 10, 14, 768) 0 mixed5[0][0] __________________________________________________________________________________________________ conv2d_51 (Conv2D) (None, 10, 14, 192) 147456 mixed5[0][0] __________________________________________________________________________________________________ conv2d_54 (Conv2D) (None, 10, 14, 192) 215040 activation_53[0][0] __________________________________________________________________________________________________ conv2d_59 (Conv2D) (None, 10, 14, 192) 215040 activation_58[0][0] __________________________________________________________________________________________________ conv2d_60 (Conv2D) (None, 10, 14, 192) 147456 average_pooling2d_6[0][0] __________________________________________________________________________________________________ batch_normalization_51 (BatchNo (None, 10, 14, 192) 576 conv2d_51[0][0] __________________________________________________________________________________________________ batch_normalization_54 (BatchNo (None, 10, 14, 192) 576 conv2d_54[0][0] __________________________________________________________________________________________________ batch_normalization_59 (BatchNo (None, 10, 14, 192) 576 conv2d_59[0][0] __________________________________________________________________________________________________ batch_normalization_60 (BatchNo (None, 10, 14, 192) 576 conv2d_60[0][0] __________________________________________________________________________________________________ activation_51 (Activation) (None, 10, 14, 192) 0 batch_normalization_51[0][0] __________________________________________________________________________________________________ activation_54 (Activation) (None, 10, 14, 192) 0 batch_normalization_54[0][0] __________________________________________________________________________________________________ activation_59 (Activation) (None, 10, 14, 192) 0 batch_normalization_59[0][0] __________________________________________________________________________________________________ activation_60 (Activation) (None, 10, 14, 192) 0 batch_normalization_60[0][0] __________________________________________________________________________________________________ mixed6 (Concatenate) (None, 10, 14, 768) 0 activation_51[0][0] activation_54[0][0] activation_59[0][0] activation_60[0][0] __________________________________________________________________________________________________ conv2d_65 (Conv2D) (None, 10, 14, 192) 147456 mixed6[0][0] __________________________________________________________________________________________________ batch_normalization_65 (BatchNo (None, 10, 14, 192) 576 conv2d_65[0][0] __________________________________________________________________________________________________ activation_65 (Activation) (None, 10, 14, 192) 0 batch_normalization_65[0][0] __________________________________________________________________________________________________ conv2d_66 (Conv2D) (None, 10, 14, 192) 258048 activation_65[0][0] __________________________________________________________________________________________________ batch_normalization_66 (BatchNo (None, 10, 14, 192) 576 conv2d_66[0][0] __________________________________________________________________________________________________ activation_66 (Activation) (None, 10, 14, 192) 0 batch_normalization_66[0][0] __________________________________________________________________________________________________ conv2d_62 (Conv2D) (None, 10, 14, 192) 147456 mixed6[0][0] __________________________________________________________________________________________________ conv2d_67 (Conv2D) (None, 10, 14, 192) 258048 activation_66[0][0] __________________________________________________________________________________________________ batch_normalization_62 (BatchNo (None, 10, 14, 192) 576 conv2d_62[0][0] __________________________________________________________________________________________________ batch_normalization_67 (BatchNo (None, 10, 14, 192) 576 conv2d_67[0][0] __________________________________________________________________________________________________ activation_62 (Activation) (None, 10, 14, 192) 0 batch_normalization_62[0][0] __________________________________________________________________________________________________ activation_67 (Activation) (None, 10, 14, 192) 0 batch_normalization_67[0][0] __________________________________________________________________________________________________ conv2d_63 (Conv2D) (None, 10, 14, 192) 258048 activation_62[0][0] __________________________________________________________________________________________________ conv2d_68 (Conv2D) (None, 10, 14, 192) 258048 activation_67[0][0] __________________________________________________________________________________________________ batch_normalization_63 (BatchNo (None, 10, 14, 192) 576 conv2d_63[0][0] __________________________________________________________________________________________________ batch_normalization_68 (BatchNo (None, 10, 14, 192) 576 conv2d_68[0][0] __________________________________________________________________________________________________ activation_63 (Activation) (None, 10, 14, 192) 0 batch_normalization_63[0][0] __________________________________________________________________________________________________ activation_68 (Activation) (None, 10, 14, 192) 0 batch_normalization_68[0][0] __________________________________________________________________________________________________ average_pooling2d_7 (AveragePoo (None, 10, 14, 768) 0 mixed6[0][0] __________________________________________________________________________________________________ conv2d_61 (Conv2D) (None, 10, 14, 192) 147456 mixed6[0][0] __________________________________________________________________________________________________ conv2d_64 (Conv2D) (None, 10, 14, 192) 258048 activation_63[0][0] __________________________________________________________________________________________________ conv2d_69 (Conv2D) (None, 10, 14, 192) 258048 activation_68[0][0] __________________________________________________________________________________________________ conv2d_70 (Conv2D) (None, 10, 14, 192) 147456 average_pooling2d_7[0][0] __________________________________________________________________________________________________ batch_normalization_61 (BatchNo (None, 10, 14, 192) 576 conv2d_61[0][0] __________________________________________________________________________________________________ batch_normalization_64 (BatchNo (None, 10, 14, 192) 576 conv2d_64[0][0] __________________________________________________________________________________________________ batch_normalization_69 (BatchNo (None, 10, 14, 192) 576 conv2d_69[0][0] __________________________________________________________________________________________________ batch_normalization_70 (BatchNo (None, 10, 14, 192) 576 conv2d_70[0][0] __________________________________________________________________________________________________ activation_61 (Activation) (None, 10, 14, 192) 0 batch_normalization_61[0][0] __________________________________________________________________________________________________ activation_64 (Activation) (None, 10, 14, 192) 0 batch_normalization_64[0][0] __________________________________________________________________________________________________ activation_69 (Activation) (None, 10, 14, 192) 0 batch_normalization_69[0][0] __________________________________________________________________________________________________ activation_70 (Activation) (None, 10, 14, 192) 0 batch_normalization_70[0][0] __________________________________________________________________________________________________ mixed7 (Concatenate) (None, 10, 14, 768) 0 activation_61[0][0] activation_64[0][0] activation_69[0][0] activation_70[0][0] __________________________________________________________________________________________________ conv2d_73 (Conv2D) (None, 10, 14, 192) 147456 mixed7[0][0] __________________________________________________________________________________________________ batch_normalization_73 (BatchNo (None, 10, 14, 192) 576 conv2d_73[0][0] __________________________________________________________________________________________________ activation_73 (Activation) (None, 10, 14, 192) 0 batch_normalization_73[0][0] __________________________________________________________________________________________________ conv2d_74 (Conv2D) (None, 10, 14, 192) 258048 activation_73[0][0] __________________________________________________________________________________________________ batch_normalization_74 (BatchNo (None, 10, 14, 192) 576 conv2d_74[0][0] __________________________________________________________________________________________________ activation_74 (Activation) (None, 10, 14, 192) 0 batch_normalization_74[0][0] __________________________________________________________________________________________________ conv2d_71 (Conv2D) (None, 10, 14, 192) 147456 mixed7[0][0] __________________________________________________________________________________________________ conv2d_75 (Conv2D) (None, 10, 14, 192) 258048 activation_74[0][0] __________________________________________________________________________________________________ batch_normalization_71 (BatchNo (None, 10, 14, 192) 576 conv2d_71[0][0] __________________________________________________________________________________________________ batch_normalization_75 (BatchNo (None, 10, 14, 192) 576 conv2d_75[0][0] __________________________________________________________________________________________________ activation_71 (Activation) (None, 10, 14, 192) 0 batch_normalization_71[0][0] __________________________________________________________________________________________________ activation_75 (Activation) (None, 10, 14, 192) 0 batch_normalization_75[0][0] __________________________________________________________________________________________________ conv2d_72 (Conv2D) (None, 4, 6, 320) 552960 activation_71[0][0] __________________________________________________________________________________________________ conv2d_76 (Conv2D) (None, 4, 6, 192) 331776 activation_75[0][0] __________________________________________________________________________________________________ batch_normalization_72 (BatchNo (None, 4, 6, 320) 960 conv2d_72[0][0] __________________________________________________________________________________________________ batch_normalization_76 (BatchNo (None, 4, 6, 192) 576 conv2d_76[0][0] __________________________________________________________________________________________________ activation_72 (Activation) (None, 4, 6, 320) 0 batch_normalization_72[0][0] __________________________________________________________________________________________________ activation_76 (Activation) (None, 4, 6, 192) 0 batch_normalization_76[0][0] __________________________________________________________________________________________________ max_pooling2d_4 (MaxPooling2D) (None, 4, 6, 768) 0 mixed7[0][0] __________________________________________________________________________________________________ mixed8 (Concatenate) (None, 4, 6, 1280) 0 activation_72[0][0] activation_76[0][0] max_pooling2d_4[0][0] __________________________________________________________________________________________________ conv2d_81 (Conv2D) (None, 4, 6, 448) 573440 mixed8[0][0] __________________________________________________________________________________________________ batch_normalization_81 (BatchNo (None, 4, 6, 448) 1344 conv2d_81[0][0] __________________________________________________________________________________________________ activation_81 (Activation) (None, 4, 6, 448) 0 batch_normalization_81[0][0] __________________________________________________________________________________________________ conv2d_78 (Conv2D) (None, 4, 6, 384) 491520 mixed8[0][0] __________________________________________________________________________________________________ conv2d_82 (Conv2D) (None, 4, 6, 384) 1548288 activation_81[0][0] __________________________________________________________________________________________________ batch_normalization_78 (BatchNo (None, 4, 6, 384) 1152 conv2d_78[0][0] __________________________________________________________________________________________________ batch_normalization_82 (BatchNo (None, 4, 6, 384) 1152 conv2d_82[0][0] __________________________________________________________________________________________________ activation_78 (Activation) (None, 4, 6, 384) 0 batch_normalization_78[0][0] __________________________________________________________________________________________________ activation_82 (Activation) (None, 4, 6, 384) 0 batch_normalization_82[0][0] __________________________________________________________________________________________________ conv2d_79 (Conv2D) (None, 4, 6, 384) 442368 activation_78[0][0] __________________________________________________________________________________________________ conv2d_80 (Conv2D) (None, 4, 6, 384) 442368 activation_78[0][0] __________________________________________________________________________________________________ conv2d_83 (Conv2D) (None, 4, 6, 384) 442368 activation_82[0][0] __________________________________________________________________________________________________ conv2d_84 (Conv2D) (None, 4, 6, 384) 442368 activation_82[0][0] __________________________________________________________________________________________________ average_pooling2d_8 (AveragePoo (None, 4, 6, 1280) 0 mixed8[0][0] __________________________________________________________________________________________________ conv2d_77 (Conv2D) (None, 4, 6, 320) 409600 mixed8[0][0] __________________________________________________________________________________________________ batch_normalization_79 (BatchNo (None, 4, 6, 384) 1152 conv2d_79[0][0] __________________________________________________________________________________________________ batch_normalization_80 (BatchNo (None, 4, 6, 384) 1152 conv2d_80[0][0] __________________________________________________________________________________________________ batch_normalization_83 (BatchNo (None, 4, 6, 384) 1152 conv2d_83[0][0] __________________________________________________________________________________________________ batch_normalization_84 (BatchNo (None, 4, 6, 384) 1152 conv2d_84[0][0] __________________________________________________________________________________________________ conv2d_85 (Conv2D) (None, 4, 6, 192) 245760 average_pooling2d_8[0][0] __________________________________________________________________________________________________ batch_normalization_77 (BatchNo (None, 4, 6, 320) 960 conv2d_77[0][0] __________________________________________________________________________________________________ activation_79 (Activation) (None, 4, 6, 384) 0 batch_normalization_79[0][0] __________________________________________________________________________________________________ activation_80 (Activation) (None, 4, 6, 384) 0 batch_normalization_80[0][0] __________________________________________________________________________________________________ activation_83 (Activation) (None, 4, 6, 384) 0 batch_normalization_83[0][0] __________________________________________________________________________________________________ activation_84 (Activation) (None, 4, 6, 384) 0 batch_normalization_84[0][0] __________________________________________________________________________________________________ batch_normalization_85 (BatchNo (None, 4, 6, 192) 576 conv2d_85[0][0] __________________________________________________________________________________________________ activation_77 (Activation) (None, 4, 6, 320) 0 batch_normalization_77[0][0] __________________________________________________________________________________________________ mixed9_0 (Concatenate) (None, 4, 6, 768) 0 activation_79[0][0] activation_80[0][0] __________________________________________________________________________________________________ concatenate_1 (Concatenate) (None, 4, 6, 768) 0 activation_83[0][0] activation_84[0][0] __________________________________________________________________________________________________ activation_85 (Activation) (None, 4, 6, 192) 0 batch_normalization_85[0][0] __________________________________________________________________________________________________ mixed9 (Concatenate) (None, 4, 6, 2048) 0 activation_77[0][0] mixed9_0[0][0] concatenate_1[0][0] activation_85[0][0] __________________________________________________________________________________________________ conv2d_90 (Conv2D) (None, 4, 6, 448) 917504 mixed9[0][0] __________________________________________________________________________________________________ batch_normalization_90 (BatchNo (None, 4, 6, 448) 1344 conv2d_90[0][0] __________________________________________________________________________________________________ activation_90 (Activation) (None, 4, 6, 448) 0 batch_normalization_90[0][0] __________________________________________________________________________________________________ conv2d_87 (Conv2D) (None, 4, 6, 384) 786432 mixed9[0][0] __________________________________________________________________________________________________ conv2d_91 (Conv2D) (None, 4, 6, 384) 1548288 activation_90[0][0] __________________________________________________________________________________________________ batch_normalization_87 (BatchNo (None, 4, 6, 384) 1152 conv2d_87[0][0] __________________________________________________________________________________________________ batch_normalization_91 (BatchNo (None, 4, 6, 384) 1152 conv2d_91[0][0] __________________________________________________________________________________________________ activation_87 (Activation) (None, 4, 6, 384) 0 batch_normalization_87[0][0] __________________________________________________________________________________________________ activation_91 (Activation) (None, 4, 6, 384) 0 batch_normalization_91[0][0] __________________________________________________________________________________________________ conv2d_88 (Conv2D) (None, 4, 6, 384) 442368 activation_87[0][0] __________________________________________________________________________________________________ conv2d_89 (Conv2D) (None, 4, 6, 384) 442368 activation_87[0][0] __________________________________________________________________________________________________ conv2d_92 (Conv2D) (None, 4, 6, 384) 442368 activation_91[0][0] __________________________________________________________________________________________________ conv2d_93 (Conv2D) (None, 4, 6, 384) 442368 activation_91[0][0] __________________________________________________________________________________________________ average_pooling2d_9 (AveragePoo (None, 4, 6, 2048) 0 mixed9[0][0] __________________________________________________________________________________________________ conv2d_86 (Conv2D) (None, 4, 6, 320) 655360 mixed9[0][0] __________________________________________________________________________________________________ batch_normalization_88 (BatchNo (None, 4, 6, 384) 1152 conv2d_88[0][0] __________________________________________________________________________________________________ batch_normalization_89 (BatchNo (None, 4, 6, 384) 1152 conv2d_89[0][0] __________________________________________________________________________________________________ batch_normalization_92 (BatchNo (None, 4, 6, 384) 1152 conv2d_92[0][0] __________________________________________________________________________________________________ batch_normalization_93 (BatchNo (None, 4, 6, 384) 1152 conv2d_93[0][0] __________________________________________________________________________________________________ conv2d_94 (Conv2D) (None, 4, 6, 192) 393216 average_pooling2d_9[0][0] __________________________________________________________________________________________________ batch_normalization_86 (BatchNo (None, 4, 6, 320) 960 conv2d_86[0][0] __________________________________________________________________________________________________ activation_88 (Activation) (None, 4, 6, 384) 0 batch_normalization_88[0][0] __________________________________________________________________________________________________ activation_89 (Activation) (None, 4, 6, 384) 0 batch_normalization_89[0][0] __________________________________________________________________________________________________ activation_92 (Activation) (None, 4, 6, 384) 0 batch_normalization_92[0][0] __________________________________________________________________________________________________ activation_93 (Activation) (None, 4, 6, 384) 0 batch_normalization_93[0][0] __________________________________________________________________________________________________ batch_normalization_94 (BatchNo (None, 4, 6, 192) 576 conv2d_94[0][0] __________________________________________________________________________________________________ activation_86 (Activation) (None, 4, 6, 320) 0 batch_normalization_86[0][0] __________________________________________________________________________________________________ mixed9_1 (Concatenate) (None, 4, 6, 768) 0 activation_88[0][0] activation_89[0][0] __________________________________________________________________________________________________ concatenate_2 (Concatenate) (None, 4, 6, 768) 0 activation_92[0][0] activation_93[0][0] __________________________________________________________________________________________________ activation_94 (Activation) (None, 4, 6, 192) 0 batch_normalization_94[0][0] __________________________________________________________________________________________________ mixed10 (Concatenate) (None, 4, 6, 2048) 0 activation_86[0][0] mixed9_1[0][0] concatenate_2[0][0] activation_94[0][0] __________________________________________________________________________________________________ global_max_pooling2d_1 (GlobalM (None, 2048) 0 mixed10[0][0] __________________________________________________________________________________________________ dense_1 (Dense) (None, 512) 1049088 global_max_pooling2d_1[0][0] __________________________________________________________________________________________________ dropout_1 (Dropout) (None, 512) 0 dense_1[0][0] __________________________________________________________________________________________________ dense_2 (Dense) (None, 7) 3591 dropout_1[0][0] ================================================================================================== Total params: 22,855,463 Trainable params: 1,052,679 Non-trainable params: 21,802,784 __________________________________________________________________________________________________
Here we retrain using the whole model instead of performing transfer learning. The reason for this is the issue with batch-normalization layer implemented in Keras. During training the network will always use the mini-batch statistics either the BN layer is frozen or not; also during inference it will use the previously learned statistics of the frozen BN layers. As a result, if we fine-tune the top layers, their weights will be adjusted to the mean/variance of the new dataset. Nevertheless, during inference they will receive data which are scaled differently because the mean/variance of the original dataset will be used. Consequently, performing transfer-learning with InceptionV3 will result in very bad validation accuracy. For solution to this issue, have a look at: https://github.com/keras-team/keras/pull/9965 and https://github.com/keras-team/keras/issues/9214. For now, let's just retrain the whole model with very small learning_rate = 0.0001 and large momentum and a learning_rate_reduction function that halves the learning whenever the validation accuracy doesn't change for a 3 consecutive epochs. We will train for only 20 epochs so that the weights of the original pretrained model won't change too much and overfit the train data.
Before we even retrain our model, it's better that we freeze all the layers in InceptionV3 and just train our top fully-connected and classification layers so that the weights for these layers won't be too random. The intuition for this is that if we didn't perform feature-extraction, then the gradient would be too large and would change the pretrained weights too much.
train_datagen = ImageDataGenerator(rotation_range=60, width_shift_range=0.2, height_shift_range=0.2,
shear_range=0.2, zoom_range=0.2, fill_mode='nearest')
train_datagen.fit(X_train)
val_datagen = ImageDataGenerator()
val_datagen.fit(X_val)
batch_size = 64
epochs = 3
history = model.fit_generator(train_datagen.flow(X_train,y_train, batch_size=batch_size),
epochs = epochs, validation_data = val_datagen.flow(X_val, y_val),
verbose = 1, steps_per_epoch=(X_train.shape[0] // batch_size),
validation_steps=(X_val.shape[0] // batch_size))
Epoch 1/3 126/126 [==============================] - 90s 712ms/step - loss: 1.5553 - acc: 0.6029 - val_loss: 1.5893 - val_acc: 0.6719 Epoch 2/3 126/126 [==============================] - 83s 662ms/step - loss: 1.0996 - acc: 0.6609 - val_loss: 1.7558 - val_acc: 0.6562 Epoch 3/3 126/126 [==============================] - 85s 673ms/step - loss: 1.0364 - acc: 0.6737 - val_loss: 1.7136 - val_acc: 0.6706
Now, we are retraining the whole models. The goal is to just tune the weights a bit for our dataset and avoid changing the pretrained weights too much!
for layer in pre_trained_model.layers:
layer.trainable = True
optimizer = Adam(lr=0.0001, beta_1=0.9, beta_2=0.999, epsilon=None, decay=0.0, amsgrad=False)
model.compile(loss='categorical_crossentropy',
optimizer=optimizer,
metrics=['acc'])
learning_rate_reduction = ReduceLROnPlateau(monitor='val_acc', patience=3, verbose=1, factor=0.5,
min_lr=0.000001, cooldown=2)
model.summary()
__________________________________________________________________________________________________ Layer (type) Output Shape Param # Connected to ================================================================================================== input_1 (InputLayer) (None, 192, 256, 3) 0 __________________________________________________________________________________________________ conv2d_1 (Conv2D) (None, 95, 127, 32) 864 input_1[0][0] __________________________________________________________________________________________________ batch_normalization_1 (BatchNor (None, 95, 127, 32) 96 conv2d_1[0][0] __________________________________________________________________________________________________ activation_1 (Activation) (None, 95, 127, 32) 0 batch_normalization_1[0][0] __________________________________________________________________________________________________ conv2d_2 (Conv2D) (None, 93, 125, 32) 9216 activation_1[0][0] __________________________________________________________________________________________________ batch_normalization_2 (BatchNor (None, 93, 125, 32) 96 conv2d_2[0][0] __________________________________________________________________________________________________ activation_2 (Activation) (None, 93, 125, 32) 0 batch_normalization_2[0][0] __________________________________________________________________________________________________ conv2d_3 (Conv2D) (None, 93, 125, 64) 18432 activation_2[0][0] __________________________________________________________________________________________________ batch_normalization_3 (BatchNor (None, 93, 125, 64) 192 conv2d_3[0][0] __________________________________________________________________________________________________ activation_3 (Activation) (None, 93, 125, 64) 0 batch_normalization_3[0][0] __________________________________________________________________________________________________ max_pooling2d_1 (MaxPooling2D) (None, 46, 62, 64) 0 activation_3[0][0] __________________________________________________________________________________________________ conv2d_4 (Conv2D) (None, 46, 62, 80) 5120 max_pooling2d_1[0][0] __________________________________________________________________________________________________ batch_normalization_4 (BatchNor (None, 46, 62, 80) 240 conv2d_4[0][0] __________________________________________________________________________________________________ activation_4 (Activation) (None, 46, 62, 80) 0 batch_normalization_4[0][0] __________________________________________________________________________________________________ conv2d_5 (Conv2D) (None, 44, 60, 192) 138240 activation_4[0][0] __________________________________________________________________________________________________ batch_normalization_5 (BatchNor (None, 44, 60, 192) 576 conv2d_5[0][0] __________________________________________________________________________________________________ activation_5 (Activation) (None, 44, 60, 192) 0 batch_normalization_5[0][0] __________________________________________________________________________________________________ max_pooling2d_2 (MaxPooling2D) (None, 21, 29, 192) 0 activation_5[0][0] __________________________________________________________________________________________________ conv2d_9 (Conv2D) (None, 21, 29, 64) 12288 max_pooling2d_2[0][0] __________________________________________________________________________________________________ batch_normalization_9 (BatchNor (None, 21, 29, 64) 192 conv2d_9[0][0] __________________________________________________________________________________________________ activation_9 (Activation) (None, 21, 29, 64) 0 batch_normalization_9[0][0] __________________________________________________________________________________________________ conv2d_7 (Conv2D) (None, 21, 29, 48) 9216 max_pooling2d_2[0][0] __________________________________________________________________________________________________ conv2d_10 (Conv2D) (None, 21, 29, 96) 55296 activation_9[0][0] __________________________________________________________________________________________________ batch_normalization_7 (BatchNor (None, 21, 29, 48) 144 conv2d_7[0][0] __________________________________________________________________________________________________ batch_normalization_10 (BatchNo (None, 21, 29, 96) 288 conv2d_10[0][0] __________________________________________________________________________________________________ activation_7 (Activation) (None, 21, 29, 48) 0 batch_normalization_7[0][0] __________________________________________________________________________________________________ activation_10 (Activation) (None, 21, 29, 96) 0 batch_normalization_10[0][0] __________________________________________________________________________________________________ average_pooling2d_1 (AveragePoo (None, 21, 29, 192) 0 max_pooling2d_2[0][0] __________________________________________________________________________________________________ conv2d_6 (Conv2D) (None, 21, 29, 64) 12288 max_pooling2d_2[0][0] __________________________________________________________________________________________________ conv2d_8 (Conv2D) (None, 21, 29, 64) 76800 activation_7[0][0] __________________________________________________________________________________________________ conv2d_11 (Conv2D) (None, 21, 29, 96) 82944 activation_10[0][0] __________________________________________________________________________________________________ conv2d_12 (Conv2D) (None, 21, 29, 32) 6144 average_pooling2d_1[0][0] __________________________________________________________________________________________________ batch_normalization_6 (BatchNor (None, 21, 29, 64) 192 conv2d_6[0][0] __________________________________________________________________________________________________ batch_normalization_8 (BatchNor (None, 21, 29, 64) 192 conv2d_8[0][0] __________________________________________________________________________________________________ batch_normalization_11 (BatchNo (None, 21, 29, 96) 288 conv2d_11[0][0] __________________________________________________________________________________________________ batch_normalization_12 (BatchNo (None, 21, 29, 32) 96 conv2d_12[0][0] __________________________________________________________________________________________________ activation_6 (Activation) (None, 21, 29, 64) 0 batch_normalization_6[0][0] __________________________________________________________________________________________________ activation_8 (Activation) (None, 21, 29, 64) 0 batch_normalization_8[0][0] __________________________________________________________________________________________________ activation_11 (Activation) (None, 21, 29, 96) 0 batch_normalization_11[0][0] __________________________________________________________________________________________________ activation_12 (Activation) (None, 21, 29, 32) 0 batch_normalization_12[0][0] __________________________________________________________________________________________________ mixed0 (Concatenate) (None, 21, 29, 256) 0 activation_6[0][0] activation_8[0][0] activation_11[0][0] activation_12[0][0] __________________________________________________________________________________________________ conv2d_16 (Conv2D) (None, 21, 29, 64) 16384 mixed0[0][0] __________________________________________________________________________________________________ batch_normalization_16 (BatchNo (None, 21, 29, 64) 192 conv2d_16[0][0] __________________________________________________________________________________________________ activation_16 (Activation) (None, 21, 29, 64) 0 batch_normalization_16[0][0] __________________________________________________________________________________________________ conv2d_14 (Conv2D) (None, 21, 29, 48) 12288 mixed0[0][0] __________________________________________________________________________________________________ conv2d_17 (Conv2D) (None, 21, 29, 96) 55296 activation_16[0][0] __________________________________________________________________________________________________ batch_normalization_14 (BatchNo (None, 21, 29, 48) 144 conv2d_14[0][0] __________________________________________________________________________________________________ batch_normalization_17 (BatchNo (None, 21, 29, 96) 288 conv2d_17[0][0] __________________________________________________________________________________________________ activation_14 (Activation) (None, 21, 29, 48) 0 batch_normalization_14[0][0] __________________________________________________________________________________________________ activation_17 (Activation) (None, 21, 29, 96) 0 batch_normalization_17[0][0] __________________________________________________________________________________________________ average_pooling2d_2 (AveragePoo (None, 21, 29, 256) 0 mixed0[0][0] __________________________________________________________________________________________________ conv2d_13 (Conv2D) (None, 21, 29, 64) 16384 mixed0[0][0] __________________________________________________________________________________________________ conv2d_15 (Conv2D) (None, 21, 29, 64) 76800 activation_14[0][0] __________________________________________________________________________________________________ conv2d_18 (Conv2D) (None, 21, 29, 96) 82944 activation_17[0][0] __________________________________________________________________________________________________ conv2d_19 (Conv2D) (None, 21, 29, 64) 16384 average_pooling2d_2[0][0] __________________________________________________________________________________________________ batch_normalization_13 (BatchNo (None, 21, 29, 64) 192 conv2d_13[0][0] __________________________________________________________________________________________________ batch_normalization_15 (BatchNo (None, 21, 29, 64) 192 conv2d_15[0][0] __________________________________________________________________________________________________ batch_normalization_18 (BatchNo (None, 21, 29, 96) 288 conv2d_18[0][0] __________________________________________________________________________________________________ batch_normalization_19 (BatchNo (None, 21, 29, 64) 192 conv2d_19[0][0] __________________________________________________________________________________________________ activation_13 (Activation) (None, 21, 29, 64) 0 batch_normalization_13[0][0] __________________________________________________________________________________________________ activation_15 (Activation) (None, 21, 29, 64) 0 batch_normalization_15[0][0] __________________________________________________________________________________________________ activation_18 (Activation) (None, 21, 29, 96) 0 batch_normalization_18[0][0] __________________________________________________________________________________________________ activation_19 (Activation) (None, 21, 29, 64) 0 batch_normalization_19[0][0] __________________________________________________________________________________________________ mixed1 (Concatenate) (None, 21, 29, 288) 0 activation_13[0][0] activation_15[0][0] activation_18[0][0] activation_19[0][0] __________________________________________________________________________________________________ conv2d_23 (Conv2D) (None, 21, 29, 64) 18432 mixed1[0][0] __________________________________________________________________________________________________ batch_normalization_23 (BatchNo (None, 21, 29, 64) 192 conv2d_23[0][0] __________________________________________________________________________________________________ activation_23 (Activation) (None, 21, 29, 64) 0 batch_normalization_23[0][0] __________________________________________________________________________________________________ conv2d_21 (Conv2D) (None, 21, 29, 48) 13824 mixed1[0][0] __________________________________________________________________________________________________ conv2d_24 (Conv2D) (None, 21, 29, 96) 55296 activation_23[0][0] __________________________________________________________________________________________________ batch_normalization_21 (BatchNo (None, 21, 29, 48) 144 conv2d_21[0][0] __________________________________________________________________________________________________ batch_normalization_24 (BatchNo (None, 21, 29, 96) 288 conv2d_24[0][0] __________________________________________________________________________________________________ activation_21 (Activation) (None, 21, 29, 48) 0 batch_normalization_21[0][0] __________________________________________________________________________________________________ activation_24 (Activation) (None, 21, 29, 96) 0 batch_normalization_24[0][0] __________________________________________________________________________________________________ average_pooling2d_3 (AveragePoo (None, 21, 29, 288) 0 mixed1[0][0] __________________________________________________________________________________________________ conv2d_20 (Conv2D) (None, 21, 29, 64) 18432 mixed1[0][0] __________________________________________________________________________________________________ conv2d_22 (Conv2D) (None, 21, 29, 64) 76800 activation_21[0][0] __________________________________________________________________________________________________ conv2d_25 (Conv2D) (None, 21, 29, 96) 82944 activation_24[0][0] __________________________________________________________________________________________________ conv2d_26 (Conv2D) (None, 21, 29, 64) 18432 average_pooling2d_3[0][0] __________________________________________________________________________________________________ batch_normalization_20 (BatchNo (None, 21, 29, 64) 192 conv2d_20[0][0] __________________________________________________________________________________________________ batch_normalization_22 (BatchNo (None, 21, 29, 64) 192 conv2d_22[0][0] __________________________________________________________________________________________________ batch_normalization_25 (BatchNo (None, 21, 29, 96) 288 conv2d_25[0][0] __________________________________________________________________________________________________ batch_normalization_26 (BatchNo (None, 21, 29, 64) 192 conv2d_26[0][0] __________________________________________________________________________________________________ activation_20 (Activation) (None, 21, 29, 64) 0 batch_normalization_20[0][0] __________________________________________________________________________________________________ activation_22 (Activation) (None, 21, 29, 64) 0 batch_normalization_22[0][0] __________________________________________________________________________________________________ activation_25 (Activation) (None, 21, 29, 96) 0 batch_normalization_25[0][0] __________________________________________________________________________________________________ activation_26 (Activation) (None, 21, 29, 64) 0 batch_normalization_26[0][0] __________________________________________________________________________________________________ mixed2 (Concatenate) (None, 21, 29, 288) 0 activation_20[0][0] activation_22[0][0] activation_25[0][0] activation_26[0][0] __________________________________________________________________________________________________ conv2d_28 (Conv2D) (None, 21, 29, 64) 18432 mixed2[0][0] __________________________________________________________________________________________________ batch_normalization_28 (BatchNo (None, 21, 29, 64) 192 conv2d_28[0][0] __________________________________________________________________________________________________ activation_28 (Activation) (None, 21, 29, 64) 0 batch_normalization_28[0][0] __________________________________________________________________________________________________ conv2d_29 (Conv2D) (None, 21, 29, 96) 55296 activation_28[0][0] __________________________________________________________________________________________________ batch_normalization_29 (BatchNo (None, 21, 29, 96) 288 conv2d_29[0][0] __________________________________________________________________________________________________ activation_29 (Activation) (None, 21, 29, 96) 0 batch_normalization_29[0][0] __________________________________________________________________________________________________ conv2d_27 (Conv2D) (None, 10, 14, 384) 995328 mixed2[0][0] __________________________________________________________________________________________________ conv2d_30 (Conv2D) (None, 10, 14, 96) 82944 activation_29[0][0] __________________________________________________________________________________________________ batch_normalization_27 (BatchNo (None, 10, 14, 384) 1152 conv2d_27[0][0] __________________________________________________________________________________________________ batch_normalization_30 (BatchNo (None, 10, 14, 96) 288 conv2d_30[0][0] __________________________________________________________________________________________________ activation_27 (Activation) (None, 10, 14, 384) 0 batch_normalization_27[0][0] __________________________________________________________________________________________________ activation_30 (Activation) (None, 10, 14, 96) 0 batch_normalization_30[0][0] __________________________________________________________________________________________________ max_pooling2d_3 (MaxPooling2D) (None, 10, 14, 288) 0 mixed2[0][0] __________________________________________________________________________________________________ mixed3 (Concatenate) (None, 10, 14, 768) 0 activation_27[0][0] activation_30[0][0] max_pooling2d_3[0][0] __________________________________________________________________________________________________ conv2d_35 (Conv2D) (None, 10, 14, 128) 98304 mixed3[0][0] __________________________________________________________________________________________________ batch_normalization_35 (BatchNo (None, 10, 14, 128) 384 conv2d_35[0][0] __________________________________________________________________________________________________ activation_35 (Activation) (None, 10, 14, 128) 0 batch_normalization_35[0][0] __________________________________________________________________________________________________ conv2d_36 (Conv2D) (None, 10, 14, 128) 114688 activation_35[0][0] __________________________________________________________________________________________________ batch_normalization_36 (BatchNo (None, 10, 14, 128) 384 conv2d_36[0][0] __________________________________________________________________________________________________ activation_36 (Activation) (None, 10, 14, 128) 0 batch_normalization_36[0][0] __________________________________________________________________________________________________ conv2d_32 (Conv2D) (None, 10, 14, 128) 98304 mixed3[0][0] __________________________________________________________________________________________________ conv2d_37 (Conv2D) (None, 10, 14, 128) 114688 activation_36[0][0] __________________________________________________________________________________________________ batch_normalization_32 (BatchNo (None, 10, 14, 128) 384 conv2d_32[0][0] __________________________________________________________________________________________________ batch_normalization_37 (BatchNo (None, 10, 14, 128) 384 conv2d_37[0][0] __________________________________________________________________________________________________ activation_32 (Activation) (None, 10, 14, 128) 0 batch_normalization_32[0][0] __________________________________________________________________________________________________ activation_37 (Activation) (None, 10, 14, 128) 0 batch_normalization_37[0][0] __________________________________________________________________________________________________ conv2d_33 (Conv2D) (None, 10, 14, 128) 114688 activation_32[0][0] __________________________________________________________________________________________________ conv2d_38 (Conv2D) (None, 10, 14, 128) 114688 activation_37[0][0] __________________________________________________________________________________________________ batch_normalization_33 (BatchNo (None, 10, 14, 128) 384 conv2d_33[0][0] __________________________________________________________________________________________________ batch_normalization_38 (BatchNo (None, 10, 14, 128) 384 conv2d_38[0][0] __________________________________________________________________________________________________ activation_33 (Activation) (None, 10, 14, 128) 0 batch_normalization_33[0][0] __________________________________________________________________________________________________ activation_38 (Activation) (None, 10, 14, 128) 0 batch_normalization_38[0][0] __________________________________________________________________________________________________ average_pooling2d_4 (AveragePoo (None, 10, 14, 768) 0 mixed3[0][0] __________________________________________________________________________________________________ conv2d_31 (Conv2D) (None, 10, 14, 192) 147456 mixed3[0][0] __________________________________________________________________________________________________ conv2d_34 (Conv2D) (None, 10, 14, 192) 172032 activation_33[0][0] __________________________________________________________________________________________________ conv2d_39 (Conv2D) (None, 10, 14, 192) 172032 activation_38[0][0] __________________________________________________________________________________________________ conv2d_40 (Conv2D) (None, 10, 14, 192) 147456 average_pooling2d_4[0][0] __________________________________________________________________________________________________ batch_normalization_31 (BatchNo (None, 10, 14, 192) 576 conv2d_31[0][0] __________________________________________________________________________________________________ batch_normalization_34 (BatchNo (None, 10, 14, 192) 576 conv2d_34[0][0] __________________________________________________________________________________________________ batch_normalization_39 (BatchNo (None, 10, 14, 192) 576 conv2d_39[0][0] __________________________________________________________________________________________________ batch_normalization_40 (BatchNo (None, 10, 14, 192) 576 conv2d_40[0][0] __________________________________________________________________________________________________ activation_31 (Activation) (None, 10, 14, 192) 0 batch_normalization_31[0][0] __________________________________________________________________________________________________ activation_34 (Activation) (None, 10, 14, 192) 0 batch_normalization_34[0][0] __________________________________________________________________________________________________ activation_39 (Activation) (None, 10, 14, 192) 0 batch_normalization_39[0][0] __________________________________________________________________________________________________ activation_40 (Activation) (None, 10, 14, 192) 0 batch_normalization_40[0][0] __________________________________________________________________________________________________ mixed4 (Concatenate) (None, 10, 14, 768) 0 activation_31[0][0] activation_34[0][0] activation_39[0][0] activation_40[0][0] __________________________________________________________________________________________________ conv2d_45 (Conv2D) (None, 10, 14, 160) 122880 mixed4[0][0] __________________________________________________________________________________________________ batch_normalization_45 (BatchNo (None, 10, 14, 160) 480 conv2d_45[0][0] __________________________________________________________________________________________________ activation_45 (Activation) (None, 10, 14, 160) 0 batch_normalization_45[0][0] __________________________________________________________________________________________________ conv2d_46 (Conv2D) (None, 10, 14, 160) 179200 activation_45[0][0] __________________________________________________________________________________________________ batch_normalization_46 (BatchNo (None, 10, 14, 160) 480 conv2d_46[0][0] __________________________________________________________________________________________________ activation_46 (Activation) (None, 10, 14, 160) 0 batch_normalization_46[0][0] __________________________________________________________________________________________________ conv2d_42 (Conv2D) (None, 10, 14, 160) 122880 mixed4[0][0] __________________________________________________________________________________________________ conv2d_47 (Conv2D) (None, 10, 14, 160) 179200 activation_46[0][0] __________________________________________________________________________________________________ batch_normalization_42 (BatchNo (None, 10, 14, 160) 480 conv2d_42[0][0] __________________________________________________________________________________________________ batch_normalization_47 (BatchNo (None, 10, 14, 160) 480 conv2d_47[0][0] __________________________________________________________________________________________________ activation_42 (Activation) (None, 10, 14, 160) 0 batch_normalization_42[0][0] __________________________________________________________________________________________________ activation_47 (Activation) (None, 10, 14, 160) 0 batch_normalization_47[0][0] __________________________________________________________________________________________________ conv2d_43 (Conv2D) (None, 10, 14, 160) 179200 activation_42[0][0] __________________________________________________________________________________________________ conv2d_48 (Conv2D) (None, 10, 14, 160) 179200 activation_47[0][0] __________________________________________________________________________________________________ batch_normalization_43 (BatchNo (None, 10, 14, 160) 480 conv2d_43[0][0] __________________________________________________________________________________________________ batch_normalization_48 (BatchNo (None, 10, 14, 160) 480 conv2d_48[0][0] __________________________________________________________________________________________________ activation_43 (Activation) (None, 10, 14, 160) 0 batch_normalization_43[0][0] __________________________________________________________________________________________________ activation_48 (Activation) (None, 10, 14, 160) 0 batch_normalization_48[0][0] __________________________________________________________________________________________________ average_pooling2d_5 (AveragePoo (None, 10, 14, 768) 0 mixed4[0][0] __________________________________________________________________________________________________ conv2d_41 (Conv2D) (None, 10, 14, 192) 147456 mixed4[0][0] __________________________________________________________________________________________________ conv2d_44 (Conv2D) (None, 10, 14, 192) 215040 activation_43[0][0] __________________________________________________________________________________________________ conv2d_49 (Conv2D) (None, 10, 14, 192) 215040 activation_48[0][0] __________________________________________________________________________________________________ conv2d_50 (Conv2D) (None, 10, 14, 192) 147456 average_pooling2d_5[0][0] __________________________________________________________________________________________________ batch_normalization_41 (BatchNo (None, 10, 14, 192) 576 conv2d_41[0][0] __________________________________________________________________________________________________ batch_normalization_44 (BatchNo (None, 10, 14, 192) 576 conv2d_44[0][0] __________________________________________________________________________________________________ batch_normalization_49 (BatchNo (None, 10, 14, 192) 576 conv2d_49[0][0] __________________________________________________________________________________________________ batch_normalization_50 (BatchNo (None, 10, 14, 192) 576 conv2d_50[0][0] __________________________________________________________________________________________________ activation_41 (Activation) (None, 10, 14, 192) 0 batch_normalization_41[0][0] __________________________________________________________________________________________________ activation_44 (Activation) (None, 10, 14, 192) 0 batch_normalization_44[0][0] __________________________________________________________________________________________________ activation_49 (Activation) (None, 10, 14, 192) 0 batch_normalization_49[0][0] __________________________________________________________________________________________________ activation_50 (Activation) (None, 10, 14, 192) 0 batch_normalization_50[0][0] __________________________________________________________________________________________________ mixed5 (Concatenate) (None, 10, 14, 768) 0 activation_41[0][0] activation_44[0][0] activation_49[0][0] activation_50[0][0] __________________________________________________________________________________________________ conv2d_55 (Conv2D) (None, 10, 14, 160) 122880 mixed5[0][0] __________________________________________________________________________________________________ batch_normalization_55 (BatchNo (None, 10, 14, 160) 480 conv2d_55[0][0] __________________________________________________________________________________________________ activation_55 (Activation) (None, 10, 14, 160) 0 batch_normalization_55[0][0] __________________________________________________________________________________________________ conv2d_56 (Conv2D) (None, 10, 14, 160) 179200 activation_55[0][0] __________________________________________________________________________________________________ batch_normalization_56 (BatchNo (None, 10, 14, 160) 480 conv2d_56[0][0] __________________________________________________________________________________________________ activation_56 (Activation) (None, 10, 14, 160) 0 batch_normalization_56[0][0] __________________________________________________________________________________________________ conv2d_52 (Conv2D) (None, 10, 14, 160) 122880 mixed5[0][0] __________________________________________________________________________________________________ conv2d_57 (Conv2D) (None, 10, 14, 160) 179200 activation_56[0][0] __________________________________________________________________________________________________ batch_normalization_52 (BatchNo (None, 10, 14, 160) 480 conv2d_52[0][0] __________________________________________________________________________________________________ batch_normalization_57 (BatchNo (None, 10, 14, 160) 480 conv2d_57[0][0] __________________________________________________________________________________________________ activation_52 (Activation) (None, 10, 14, 160) 0 batch_normalization_52[0][0] __________________________________________________________________________________________________ activation_57 (Activation) (None, 10, 14, 160) 0 batch_normalization_57[0][0] __________________________________________________________________________________________________ conv2d_53 (Conv2D) (None, 10, 14, 160) 179200 activation_52[0][0] __________________________________________________________________________________________________ conv2d_58 (Conv2D) (None, 10, 14, 160) 179200 activation_57[0][0] __________________________________________________________________________________________________ batch_normalization_53 (BatchNo (None, 10, 14, 160) 480 conv2d_53[0][0] __________________________________________________________________________________________________ batch_normalization_58 (BatchNo (None, 10, 14, 160) 480 conv2d_58[0][0] __________________________________________________________________________________________________ activation_53 (Activation) (None, 10, 14, 160) 0 batch_normalization_53[0][0] __________________________________________________________________________________________________ activation_58 (Activation) (None, 10, 14, 160) 0 batch_normalization_58[0][0] __________________________________________________________________________________________________ average_pooling2d_6 (AveragePoo (None, 10, 14, 768) 0 mixed5[0][0] __________________________________________________________________________________________________ conv2d_51 (Conv2D) (None, 10, 14, 192) 147456 mixed5[0][0] __________________________________________________________________________________________________ conv2d_54 (Conv2D) (None, 10, 14, 192) 215040 activation_53[0][0] __________________________________________________________________________________________________ conv2d_59 (Conv2D) (None, 10, 14, 192) 215040 activation_58[0][0] __________________________________________________________________________________________________ conv2d_60 (Conv2D) (None, 10, 14, 192) 147456 average_pooling2d_6[0][0] __________________________________________________________________________________________________ batch_normalization_51 (BatchNo (None, 10, 14, 192) 576 conv2d_51[0][0] __________________________________________________________________________________________________ batch_normalization_54 (BatchNo (None, 10, 14, 192) 576 conv2d_54[0][0] __________________________________________________________________________________________________ batch_normalization_59 (BatchNo (None, 10, 14, 192) 576 conv2d_59[0][0] __________________________________________________________________________________________________ batch_normalization_60 (BatchNo (None, 10, 14, 192) 576 conv2d_60[0][0] __________________________________________________________________________________________________ activation_51 (Activation) (None, 10, 14, 192) 0 batch_normalization_51[0][0] __________________________________________________________________________________________________ activation_54 (Activation) (None, 10, 14, 192) 0 batch_normalization_54[0][0] __________________________________________________________________________________________________ activation_59 (Activation) (None, 10, 14, 192) 0 batch_normalization_59[0][0] __________________________________________________________________________________________________ activation_60 (Activation) (None, 10, 14, 192) 0 batch_normalization_60[0][0] __________________________________________________________________________________________________ mixed6 (Concatenate) (None, 10, 14, 768) 0 activation_51[0][0] activation_54[0][0] activation_59[0][0] activation_60[0][0] __________________________________________________________________________________________________ conv2d_65 (Conv2D) (None, 10, 14, 192) 147456 mixed6[0][0] __________________________________________________________________________________________________ batch_normalization_65 (BatchNo (None, 10, 14, 192) 576 conv2d_65[0][0] __________________________________________________________________________________________________ activation_65 (Activation) (None, 10, 14, 192) 0 batch_normalization_65[0][0] __________________________________________________________________________________________________ conv2d_66 (Conv2D) (None, 10, 14, 192) 258048 activation_65[0][0] __________________________________________________________________________________________________ batch_normalization_66 (BatchNo (None, 10, 14, 192) 576 conv2d_66[0][0] __________________________________________________________________________________________________ activation_66 (Activation) (None, 10, 14, 192) 0 batch_normalization_66[0][0] __________________________________________________________________________________________________ conv2d_62 (Conv2D) (None, 10, 14, 192) 147456 mixed6[0][0] __________________________________________________________________________________________________ conv2d_67 (Conv2D) (None, 10, 14, 192) 258048 activation_66[0][0] __________________________________________________________________________________________________ batch_normalization_62 (BatchNo (None, 10, 14, 192) 576 conv2d_62[0][0] __________________________________________________________________________________________________ batch_normalization_67 (BatchNo (None, 10, 14, 192) 576 conv2d_67[0][0] __________________________________________________________________________________________________ activation_62 (Activation) (None, 10, 14, 192) 0 batch_normalization_62[0][0] __________________________________________________________________________________________________ activation_67 (Activation) (None, 10, 14, 192) 0 batch_normalization_67[0][0] __________________________________________________________________________________________________ conv2d_63 (Conv2D) (None, 10, 14, 192) 258048 activation_62[0][0] __________________________________________________________________________________________________ conv2d_68 (Conv2D) (None, 10, 14, 192) 258048 activation_67[0][0] __________________________________________________________________________________________________ batch_normalization_63 (BatchNo (None, 10, 14, 192) 576 conv2d_63[0][0] __________________________________________________________________________________________________ batch_normalization_68 (BatchNo (None, 10, 14, 192) 576 conv2d_68[0][0] __________________________________________________________________________________________________ activation_63 (Activation) (None, 10, 14, 192) 0 batch_normalization_63[0][0] __________________________________________________________________________________________________ activation_68 (Activation) (None, 10, 14, 192) 0 batch_normalization_68[0][0] __________________________________________________________________________________________________ average_pooling2d_7 (AveragePoo (None, 10, 14, 768) 0 mixed6[0][0] __________________________________________________________________________________________________ conv2d_61 (Conv2D) (None, 10, 14, 192) 147456 mixed6[0][0] __________________________________________________________________________________________________ conv2d_64 (Conv2D) (None, 10, 14, 192) 258048 activation_63[0][0] __________________________________________________________________________________________________ conv2d_69 (Conv2D) (None, 10, 14, 192) 258048 activation_68[0][0] __________________________________________________________________________________________________ conv2d_70 (Conv2D) (None, 10, 14, 192) 147456 average_pooling2d_7[0][0] __________________________________________________________________________________________________ batch_normalization_61 (BatchNo (None, 10, 14, 192) 576 conv2d_61[0][0] __________________________________________________________________________________________________ batch_normalization_64 (BatchNo (None, 10, 14, 192) 576 conv2d_64[0][0] __________________________________________________________________________________________________ batch_normalization_69 (BatchNo (None, 10, 14, 192) 576 conv2d_69[0][0] __________________________________________________________________________________________________ batch_normalization_70 (BatchNo (None, 10, 14, 192) 576 conv2d_70[0][0] __________________________________________________________________________________________________ activation_61 (Activation) (None, 10, 14, 192) 0 batch_normalization_61[0][0] __________________________________________________________________________________________________ activation_64 (Activation) (None, 10, 14, 192) 0 batch_normalization_64[0][0] __________________________________________________________________________________________________ activation_69 (Activation) (None, 10, 14, 192) 0 batch_normalization_69[0][0] __________________________________________________________________________________________________ activation_70 (Activation) (None, 10, 14, 192) 0 batch_normalization_70[0][0] __________________________________________________________________________________________________ mixed7 (Concatenate) (None, 10, 14, 768) 0 activation_61[0][0] activation_64[0][0] activation_69[0][0] activation_70[0][0] __________________________________________________________________________________________________ conv2d_73 (Conv2D) (None, 10, 14, 192) 147456 mixed7[0][0] __________________________________________________________________________________________________ batch_normalization_73 (BatchNo (None, 10, 14, 192) 576 conv2d_73[0][0] __________________________________________________________________________________________________ activation_73 (Activation) (None, 10, 14, 192) 0 batch_normalization_73[0][0] __________________________________________________________________________________________________ conv2d_74 (Conv2D) (None, 10, 14, 192) 258048 activation_73[0][0] __________________________________________________________________________________________________ batch_normalization_74 (BatchNo (None, 10, 14, 192) 576 conv2d_74[0][0] __________________________________________________________________________________________________ activation_74 (Activation) (None, 10, 14, 192) 0 batch_normalization_74[0][0] __________________________________________________________________________________________________ conv2d_71 (Conv2D) (None, 10, 14, 192) 147456 mixed7[0][0] __________________________________________________________________________________________________ conv2d_75 (Conv2D) (None, 10, 14, 192) 258048 activation_74[0][0] __________________________________________________________________________________________________ batch_normalization_71 (BatchNo (None, 10, 14, 192) 576 conv2d_71[0][0] __________________________________________________________________________________________________ batch_normalization_75 (BatchNo (None, 10, 14, 192) 576 conv2d_75[0][0] __________________________________________________________________________________________________ activation_71 (Activation) (None, 10, 14, 192) 0 batch_normalization_71[0][0] __________________________________________________________________________________________________ activation_75 (Activation) (None, 10, 14, 192) 0 batch_normalization_75[0][0] __________________________________________________________________________________________________ conv2d_72 (Conv2D) (None, 4, 6, 320) 552960 activation_71[0][0] __________________________________________________________________________________________________ conv2d_76 (Conv2D) (None, 4, 6, 192) 331776 activation_75[0][0] __________________________________________________________________________________________________ batch_normalization_72 (BatchNo (None, 4, 6, 320) 960 conv2d_72[0][0] __________________________________________________________________________________________________ batch_normalization_76 (BatchNo (None, 4, 6, 192) 576 conv2d_76[0][0] __________________________________________________________________________________________________ activation_72 (Activation) (None, 4, 6, 320) 0 batch_normalization_72[0][0] __________________________________________________________________________________________________ activation_76 (Activation) (None, 4, 6, 192) 0 batch_normalization_76[0][0] __________________________________________________________________________________________________ max_pooling2d_4 (MaxPooling2D) (None, 4, 6, 768) 0 mixed7[0][0] __________________________________________________________________________________________________ mixed8 (Concatenate) (None, 4, 6, 1280) 0 activation_72[0][0] activation_76[0][0] max_pooling2d_4[0][0] __________________________________________________________________________________________________ conv2d_81 (Conv2D) (None, 4, 6, 448) 573440 mixed8[0][0] __________________________________________________________________________________________________ batch_normalization_81 (BatchNo (None, 4, 6, 448) 1344 conv2d_81[0][0] __________________________________________________________________________________________________ activation_81 (Activation) (None, 4, 6, 448) 0 batch_normalization_81[0][0] __________________________________________________________________________________________________ conv2d_78 (Conv2D) (None, 4, 6, 384) 491520 mixed8[0][0] __________________________________________________________________________________________________ conv2d_82 (Conv2D) (None, 4, 6, 384) 1548288 activation_81[0][0] __________________________________________________________________________________________________ batch_normalization_78 (BatchNo (None, 4, 6, 384) 1152 conv2d_78[0][0] __________________________________________________________________________________________________ batch_normalization_82 (BatchNo (None, 4, 6, 384) 1152 conv2d_82[0][0] __________________________________________________________________________________________________ activation_78 (Activation) (None, 4, 6, 384) 0 batch_normalization_78[0][0] __________________________________________________________________________________________________ activation_82 (Activation) (None, 4, 6, 384) 0 batch_normalization_82[0][0] __________________________________________________________________________________________________ conv2d_79 (Conv2D) (None, 4, 6, 384) 442368 activation_78[0][0] __________________________________________________________________________________________________ conv2d_80 (Conv2D) (None, 4, 6, 384) 442368 activation_78[0][0] __________________________________________________________________________________________________ conv2d_83 (Conv2D) (None, 4, 6, 384) 442368 activation_82[0][0] __________________________________________________________________________________________________ conv2d_84 (Conv2D) (None, 4, 6, 384) 442368 activation_82[0][0] __________________________________________________________________________________________________ average_pooling2d_8 (AveragePoo (None, 4, 6, 1280) 0 mixed8[0][0] __________________________________________________________________________________________________ conv2d_77 (Conv2D) (None, 4, 6, 320) 409600 mixed8[0][0] __________________________________________________________________________________________________ batch_normalization_79 (BatchNo (None, 4, 6, 384) 1152 conv2d_79[0][0] __________________________________________________________________________________________________ batch_normalization_80 (BatchNo (None, 4, 6, 384) 1152 conv2d_80[0][0] __________________________________________________________________________________________________ batch_normalization_83 (BatchNo (None, 4, 6, 384) 1152 conv2d_83[0][0] __________________________________________________________________________________________________ batch_normalization_84 (BatchNo (None, 4, 6, 384) 1152 conv2d_84[0][0] __________________________________________________________________________________________________ conv2d_85 (Conv2D) (None, 4, 6, 192) 245760 average_pooling2d_8[0][0] __________________________________________________________________________________________________ batch_normalization_77 (BatchNo (None, 4, 6, 320) 960 conv2d_77[0][0] __________________________________________________________________________________________________ activation_79 (Activation) (None, 4, 6, 384) 0 batch_normalization_79[0][0] __________________________________________________________________________________________________ activation_80 (Activation) (None, 4, 6, 384) 0 batch_normalization_80[0][0] __________________________________________________________________________________________________ activation_83 (Activation) (None, 4, 6, 384) 0 batch_normalization_83[0][0] __________________________________________________________________________________________________ activation_84 (Activation) (None, 4, 6, 384) 0 batch_normalization_84[0][0] __________________________________________________________________________________________________ batch_normalization_85 (BatchNo (None, 4, 6, 192) 576 conv2d_85[0][0] __________________________________________________________________________________________________ activation_77 (Activation) (None, 4, 6, 320) 0 batch_normalization_77[0][0] __________________________________________________________________________________________________ mixed9_0 (Concatenate) (None, 4, 6, 768) 0 activation_79[0][0] activation_80[0][0] __________________________________________________________________________________________________ concatenate_1 (Concatenate) (None, 4, 6, 768) 0 activation_83[0][0] activation_84[0][0] __________________________________________________________________________________________________ activation_85 (Activation) (None, 4, 6, 192) 0 batch_normalization_85[0][0] __________________________________________________________________________________________________ mixed9 (Concatenate) (None, 4, 6, 2048) 0 activation_77[0][0] mixed9_0[0][0] concatenate_1[0][0] activation_85[0][0] __________________________________________________________________________________________________ conv2d_90 (Conv2D) (None, 4, 6, 448) 917504 mixed9[0][0] __________________________________________________________________________________________________ batch_normalization_90 (BatchNo (None, 4, 6, 448) 1344 conv2d_90[0][0] __________________________________________________________________________________________________ activation_90 (Activation) (None, 4, 6, 448) 0 batch_normalization_90[0][0] __________________________________________________________________________________________________ conv2d_87 (Conv2D) (None, 4, 6, 384) 786432 mixed9[0][0] __________________________________________________________________________________________________ conv2d_91 (Conv2D) (None, 4, 6, 384) 1548288 activation_90[0][0] __________________________________________________________________________________________________ batch_normalization_87 (BatchNo (None, 4, 6, 384) 1152 conv2d_87[0][0] __________________________________________________________________________________________________ batch_normalization_91 (BatchNo (None, 4, 6, 384) 1152 conv2d_91[0][0] __________________________________________________________________________________________________ activation_87 (Activation) (None, 4, 6, 384) 0 batch_normalization_87[0][0] __________________________________________________________________________________________________ activation_91 (Activation) (None, 4, 6, 384) 0 batch_normalization_91[0][0] __________________________________________________________________________________________________ conv2d_88 (Conv2D) (None, 4, 6, 384) 442368 activation_87[0][0] __________________________________________________________________________________________________ conv2d_89 (Conv2D) (None, 4, 6, 384) 442368 activation_87[0][0] __________________________________________________________________________________________________ conv2d_92 (Conv2D) (None, 4, 6, 384) 442368 activation_91[0][0] __________________________________________________________________________________________________ conv2d_93 (Conv2D) (None, 4, 6, 384) 442368 activation_91[0][0] __________________________________________________________________________________________________ average_pooling2d_9 (AveragePoo (None, 4, 6, 2048) 0 mixed9[0][0] __________________________________________________________________________________________________ conv2d_86 (Conv2D) (None, 4, 6, 320) 655360 mixed9[0][0] __________________________________________________________________________________________________ batch_normalization_88 (BatchNo (None, 4, 6, 384) 1152 conv2d_88[0][0] __________________________________________________________________________________________________ batch_normalization_89 (BatchNo (None, 4, 6, 384) 1152 conv2d_89[0][0] __________________________________________________________________________________________________ batch_normalization_92 (BatchNo (None, 4, 6, 384) 1152 conv2d_92[0][0] __________________________________________________________________________________________________ batch_normalization_93 (BatchNo (None, 4, 6, 384) 1152 conv2d_93[0][0] __________________________________________________________________________________________________ conv2d_94 (Conv2D) (None, 4, 6, 192) 393216 average_pooling2d_9[0][0] __________________________________________________________________________________________________ batch_normalization_86 (BatchNo (None, 4, 6, 320) 960 conv2d_86[0][0] __________________________________________________________________________________________________ activation_88 (Activation) (None, 4, 6, 384) 0 batch_normalization_88[0][0] __________________________________________________________________________________________________ activation_89 (Activation) (None, 4, 6, 384) 0 batch_normalization_89[0][0] __________________________________________________________________________________________________ activation_92 (Activation) (None, 4, 6, 384) 0 batch_normalization_92[0][0] __________________________________________________________________________________________________ activation_93 (Activation) (None, 4, 6, 384) 0 batch_normalization_93[0][0] __________________________________________________________________________________________________ batch_normalization_94 (BatchNo (None, 4, 6, 192) 576 conv2d_94[0][0] __________________________________________________________________________________________________ activation_86 (Activation) (None, 4, 6, 320) 0 batch_normalization_86[0][0] __________________________________________________________________________________________________ mixed9_1 (Concatenate) (None, 4, 6, 768) 0 activation_88[0][0] activation_89[0][0] __________________________________________________________________________________________________ concatenate_2 (Concatenate) (None, 4, 6, 768) 0 activation_92[0][0] activation_93[0][0] __________________________________________________________________________________________________ activation_94 (Activation) (None, 4, 6, 192) 0 batch_normalization_94[0][0] __________________________________________________________________________________________________ mixed10 (Concatenate) (None, 4, 6, 2048) 0 activation_86[0][0] mixed9_1[0][0] concatenate_2[0][0] activation_94[0][0] __________________________________________________________________________________________________ global_max_pooling2d_1 (GlobalM (None, 2048) 0 mixed10[0][0] __________________________________________________________________________________________________ dense_1 (Dense) (None, 512) 1049088 global_max_pooling2d_1[0][0] __________________________________________________________________________________________________ dropout_1 (Dropout) (None, 512) 0 dense_1[0][0] __________________________________________________________________________________________________ dense_2 (Dense) (None, 7) 3591 dropout_1[0][0] ================================================================================================== Total params: 22,855,463 Trainable params: 22,821,031 Non-trainable params: 34,432 __________________________________________________________________________________________________
batch_size = 64
epochs = 20
history = model.fit_generator(train_datagen.flow(X_train,y_train, batch_size=batch_size),
epochs = epochs, validation_data = val_datagen.flow(X_val, y_val),
verbose = 1, steps_per_epoch=(X_train.shape[0] // batch_size),
validation_steps=(X_val.shape[0] // batch_size),
callbacks=[learning_rate_reduction])
Epoch 1/20 126/126 [==============================] - 168s 1s/step - loss: 0.8607 - acc: 0.7015 - val_loss: 0.7481 - val_acc: 0.7165 Epoch 2/20 126/126 [==============================] - 150s 1s/step - loss: 0.6642 - acc: 0.7636 - val_loss: 0.5757 - val_acc: 0.7969 Epoch 3/20 126/126 [==============================] - 148s 1s/step - loss: 0.5690 - acc: 0.7949 - val_loss: 0.5249 - val_acc: 0.8057 Epoch 4/20 126/126 [==============================] - 148s 1s/step - loss: 0.4897 - acc: 0.8233 - val_loss: 0.6070 - val_acc: 0.7879 Epoch 5/20 126/126 [==============================] - 148s 1s/step - loss: 0.4337 - acc: 0.8484 - val_loss: 0.6431 - val_acc: 0.7844 Epoch 6/20 126/126 [==============================] - 148s 1s/step - loss: 0.3747 - acc: 0.8647 - val_loss: 0.5480 - val_acc: 0.8326 Epoch 7/20 126/126 [==============================] - 148s 1s/step - loss: 0.3477 - acc: 0.8775 - val_loss: 0.5732 - val_acc: 0.8246 Epoch 8/20 126/126 [==============================] - 148s 1s/step - loss: 0.2910 - acc: 0.8934 - val_loss: 0.5575 - val_acc: 0.8237 Epoch 9/20 126/126 [==============================] - 148s 1s/step - loss: 0.2719 - acc: 0.9013 - val_loss: 0.5548 - val_acc: 0.8152 Epoch 00009: ReduceLROnPlateau reducing learning rate to 4.999999873689376e-05. Epoch 10/20 126/126 [==============================] - 148s 1s/step - loss: 0.2089 - acc: 0.9257 - val_loss: 0.4309 - val_acc: 0.8705 Epoch 11/20 126/126 [==============================] - 148s 1s/step - loss: 0.1761 - acc: 0.9386 - val_loss: 0.5424 - val_acc: 0.8649 Epoch 12/20 126/126 [==============================] - 148s 1s/step - loss: 0.1501 - acc: 0.9480 - val_loss: 0.5050 - val_acc: 0.8460 Epoch 13/20 126/126 [==============================] - 147s 1s/step - loss: 0.1335 - acc: 0.9509 - val_loss: 0.6281 - val_acc: 0.8270 Epoch 00013: ReduceLROnPlateau reducing learning rate to 2.499999936844688e-05. Epoch 14/20 126/126 [==============================] - 147s 1s/step - loss: 0.1231 - acc: 0.9565 - val_loss: 0.4763 - val_acc: 0.8728 Epoch 15/20 126/126 [==============================] - 147s 1s/step - loss: 0.0964 - acc: 0.9666 - val_loss: 0.5849 - val_acc: 0.8578 Epoch 16/20 126/126 [==============================] - 147s 1s/step - loss: 0.0885 - acc: 0.9705 - val_loss: 0.5964 - val_acc: 0.8326 Epoch 17/20 126/126 [==============================] - 147s 1s/step - loss: 0.0818 - acc: 0.9716 - val_loss: 0.5651 - val_acc: 0.8697 Epoch 00017: ReduceLROnPlateau reducing learning rate to 1.249999968422344e-05. Epoch 18/20 126/126 [==============================] - 147s 1s/step - loss: 0.0761 - acc: 0.9743 - val_loss: 0.5558 - val_acc: 0.8661 Epoch 19/20 126/126 [==============================] - 147s 1s/step - loss: 0.0737 - acc: 0.9740 - val_loss: 0.4439 - val_acc: 0.8791 Epoch 20/20 126/126 [==============================] - 147s 1s/step - loss: 0.0607 - acc: 0.9794 - val_loss: 0.5579 - val_acc: 0.8527
loss_val, acc_val = model.evaluate(X_val, y_val, verbose=1)
print("Validation: accuracy = %f ; loss_v = %f" % (acc_val, loss_val))
902/902 [==============================] - 5s 6ms/step Validation: accuracy = 0.869180 ; loss_v = 0.517105
Even though this model overfits the training data, we also observe some significant improvement with the validation accuracy. Our final validation accuracy is 86.9%, a nearly 10% improvement from the baseline model, which justifies some more training time. We can also see that this model is extremely "sensitive", a small change in learning rate can can change the model by a whole lot. Future work on choosing learning rate as well as monitor learning rate is needed for further improvement.
Let's load in the intact test set and test our model
X_test = np.load("/floyd/input/skin_cancer_192_256/256_192_test.npy")
y_test = np.load("/floyd/input/skin_cancer_192_256/test_labels.npy")
y_test = to_categorical(y_test)
loss_test, acc_test = model.evaluate(X_test, y_test, verbose=1)
print("Test: accuracy = %f ; loss = %f" % (acc_test, loss_test))
1002/1002 [==============================] - 6s 6ms/step Test: accuracy = 0.868263 ; loss = 0.624153
Achieving test accuracy of 86.8% after 20 training epochs is a good result! This experiment proved that the architecture and the weights of Inception trained on ImageNet help learning for a complete different domain dataset.
model.save("InceptionV3.h5")
# Retrieve a list of accuracy results on training and test data
# sets for each training epoch
acc = history.history['acc']
val_acc = history.history['val_acc']
# Retrieve a list of list results on training and test data
# sets for each training epoch
loss = history.history['loss']
val_loss = history.history['val_loss']
# Get number of epochs
epochs = range(len(acc))
# Plot training and validation accuracy per epoch
plt.plot(epochs, acc, label = "training")
plt.plot(epochs, val_acc, label = "validation")
plt.legend(loc="upper left")
plt.title('Training and validation accuracy')
plt.figure()
# Plot training and validation loss per epoch
plt.plot(epochs, loss, label = "training")
plt.plot(epochs, val_loss, label = "validation")
plt.legend(loc="upper right")
plt.title('Training and validation loss')
Text(0.5,1,'Training and validation loss')