Added MobileNetV2 model experiments

This commit is contained in:
mrt
2023-06-02 15:04:27 +02:00
parent de3fa78fbd
commit 234707133c
3 changed files with 620 additions and 0 deletions

205
mobilenetV2_train.py Normal file
View File

@@ -0,0 +1,205 @@
import datetime
import tensorflow as tf
from tensorflow.keras.layers import GlobalAvgPool2D, Dense
from tensorflow.keras.initializers import GlorotUniform
from tensorflow.keras.models import Model
import matplotlib.pyplot as plt
from data_generator import create_data_generators
"""
HYPERPARAMETERS
"""
# Distribute training
strategy = tf.distribute.MirroredStrategy()
# Input
image_size = 224
# Hyper-parameters
batch_size = 128 * strategy.num_replicas_in_sync
num_epochs = 25
learning_rate = 0.0001
num_classes = 8631
"""
DATASET
"""
train_gen, val_gen, test_gen = create_data_generators(target_size=image_size, batch_size=batch_size)
"""
MODEL
"""
with strategy.scope():
mobilenet_model = tf.keras.applications.MobileNetV2(
include_top=False,
weights="imagenet",
input_shape=(image_size, image_size, 3),
pooling=None,
)
Y = GlobalAvgPool2D()(mobilenet_model.output)
Y = Dense(units=num_classes, activation='softmax', kernel_initializer=GlorotUniform())(Y)
mobilenet_model = Model(inputs=mobilenet_model.input, outputs=Y, name='MobileNetV2')
mobilenet_model.summary(line_length=150)
"""
MODEL COMPILE
"""
with strategy.scope():
optimizer = tf.keras.optimizers.Adam(learning_rate=learning_rate)
mobilenet_model.compile(
optimizer=optimizer,
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
metrics=[
tf.keras.metrics.SparseCategoricalAccuracy(name='accuracy'),
tf.keras.metrics.SparseTopKCategoricalAccuracy(k=5, name='top-5-accuracy'),
tf.keras.metrics.SparseTopKCategoricalAccuracy(k=10, name='top-10-accuracy'),
tf.keras.metrics.SparseTopKCategoricalAccuracy(k=100, name='top-100-accuracy'),
]
)
"""
CALLBACKS
"""
# checkpoint callback
checkpoint_filepath = "./tmp/checkpoint"
checkpoint_callback = tf.keras.callbacks.ModelCheckpoint(
filepath=checkpoint_filepath,
monitor='val_accuracy',
verbose=1,
save_best_only=True,
save_weights_only=True,
mode='max',
save_freq='epoch',
)
# csv logger callback
csv_filepath = "./tmp/training_log.csv"
csv_logger = tf.keras.callbacks.CSVLogger(
csv_filepath,
separator=',',
append=True,
)
# early stopping callback
early_stopping = tf.keras.callbacks.EarlyStopping(
monitor='val_loss',
min_delta=0,
patience=7,
verbose=0,
mode='auto',
)
# tensorboard callback
tb_callback = tf.keras.callbacks.TensorBoard(
log_dir="./tmp/logs" + datetime.datetime.now().strftime("%d%m%Y-%H%M%S"),
histogram_freq=1,
write_graph=True,
update_freq='epoch',
)
"""
LOAD PRE-TRAINED MODEL WEIGHTS
"""
# Load pre-trained model weights before training
best_weights = "./saved_results/Models/MobileNet_V2/checkpoint"
mobilenet_model.load_weights(best_weights)
"""
TRAIN THE MODEL
"""
history = mobilenet_model.fit(
train_gen,
epochs=num_epochs,
validation_data=val_gen,
callbacks=[
checkpoint_callback,
csv_logger,
early_stopping,
tb_callback,
]
)
"""
EVALUATE THE MODEL
"""
# Load best weights seen during training
mobilenet_model.load_weights(checkpoint_filepath)
# Evaluate the model
loss, accuracy, top_five_accuracy, top_ten_accuracy, top_hundred_accuracy = mobilenet_model.evaluate(test_gen)
accuracy = round(accuracy * 100, 2)
top_five_accuracy = round(top_five_accuracy * 100, 2)
top_ten_accuracy = round(top_ten_accuracy * 100, 2)
top_hundred_accuracy = round(top_hundred_accuracy * 100, 2)
print(f"Accuracy on the test set: {accuracy}%.")
print(f"Top 5 Accuracy on the test set: {top_five_accuracy}%.")
print(f"Top 10 Accuracy on the test set: {top_ten_accuracy}%.")
print(f"Top 100 Accuracy on the test set: {top_hundred_accuracy}%.")
"""
HISTORY FIGURES
"""
# PLOTS
# Accuracy
plt.plot(history.history['accuracy'])
plt.plot(history.history['val_accuracy'])
plt.title('model accuracy')
plt.ylabel('accuracy')
plt.xlabel('epoch')
plt.legend(['train', 'val'], loc='upper left')
plt.savefig('./tmp/model accuracy.png')
plt.close()
# Top 5 accuracy
plt.plot(history.history['top-5-accuracy'])
plt.plot(history.history['val_top-5-accuracy'])
plt.title('model top 5 accuracy')
plt.ylabel('top 5 accuracy')
plt.xlabel('epoch')
plt.legend(['train', 'val'], loc='upper left')
plt.savefig('./tmp/model top 5 accuracy.png')
plt.close()
# Top 10 accuracy
plt.plot(history.history['top-10-accuracy'])
plt.plot(history.history['val_top-10-accuracy'])
plt.title('model top 10 accuracy')
plt.ylabel('top 10 accuracy')
plt.xlabel('epoch')
plt.legend(['train', 'val'], loc='upper left')
plt.savefig('./tmp/model top 10 accuracy.png')
plt.close()
# Top 100 accuracy
plt.plot(history.history['top-100-accuracy'])
plt.plot(history.history['val_top-100-accuracy'])
plt.title('model top 100 accuracy')
plt.ylabel('top 100 accuracy')
plt.xlabel('epoch')
plt.legend(['train', 'val'], loc='upper left')
plt.savefig('./tmp/model top 100 accuracy.png')
plt.close()
# Loss
plt.plot(history.history['loss'])
plt.plot(history.history['val_loss'])
plt.title('model loss')
plt.ylabel('loss')
plt.xlabel('epoch')
plt.legend(['train', 'val'], loc='upper left')
plt.savefig('./tmp/model loss.png')
plt.close()

View File

@@ -0,0 +1,389 @@
[INFO] Num images for train: 2827701 -> train_ds: 2827701
[INFO] Num images for validation: 157094 -> val_ds: 157094
[INFO] Num images for test: 157094 -> test_ds: 157095
Model: "MobileNetV2"
______________________________________________________________________________________________________________________________________________________
Layer (type) Output Shape Param # Connected to
======================================================================================================================================================
input_1 (InputLayer) [(None, 224, 224, 3)] 0 []
Conv1 (Conv2D) (None, 112, 112, 32) 864 ['input_1[0][0]']
bn_Conv1 (BatchNormalization) (None, 112, 112, 32) 128 ['Conv1[0][0]']
Conv1_relu (ReLU) (None, 112, 112, 32) 0 ['bn_Conv1[0][0]']
expanded_conv_depthwise (DepthwiseConv2D) (None, 112, 112, 32) 288 ['Conv1_relu[0][0]']
expanded_conv_depthwise_BN (BatchNormalization) (None, 112, 112, 32) 128 ['expanded_conv_depthwise[0][0]']
expanded_conv_depthwise_relu (ReLU) (None, 112, 112, 32) 0 ['expanded_conv_depthwise_BN[0][0]']
expanded_conv_project (Conv2D) (None, 112, 112, 16) 512 ['expanded_conv_depthwise_relu[0][0]']
expanded_conv_project_BN (BatchNormalization) (None, 112, 112, 16) 64 ['expanded_conv_project[0][0]']
block_1_expand (Conv2D) (None, 112, 112, 96) 1536 ['expanded_conv_project_BN[0][0]']
block_1_expand_BN (BatchNormalization) (None, 112, 112, 96) 384 ['block_1_expand[0][0]']
block_1_expand_relu (ReLU) (None, 112, 112, 96) 0 ['block_1_expand_BN[0][0]']
block_1_pad (ZeroPadding2D) (None, 113, 113, 96) 0 ['block_1_expand_relu[0][0]']
block_1_depthwise (DepthwiseConv2D) (None, 56, 56, 96) 864 ['block_1_pad[0][0]']
block_1_depthwise_BN (BatchNormalization) (None, 56, 56, 96) 384 ['block_1_depthwise[0][0]']
block_1_depthwise_relu (ReLU) (None, 56, 56, 96) 0 ['block_1_depthwise_BN[0][0]']
block_1_project (Conv2D) (None, 56, 56, 24) 2304 ['block_1_depthwise_relu[0][0]']
block_1_project_BN (BatchNormalization) (None, 56, 56, 24) 96 ['block_1_project[0][0]']
block_2_expand (Conv2D) (None, 56, 56, 144) 3456 ['block_1_project_BN[0][0]']
block_2_expand_BN (BatchNormalization) (None, 56, 56, 144) 576 ['block_2_expand[0][0]']
block_2_expand_relu (ReLU) (None, 56, 56, 144) 0 ['block_2_expand_BN[0][0]']
block_2_depthwise (DepthwiseConv2D) (None, 56, 56, 144) 1296 ['block_2_expand_relu[0][0]']
block_2_depthwise_BN (BatchNormalization) (None, 56, 56, 144) 576 ['block_2_depthwise[0][0]']
block_2_depthwise_relu (ReLU) (None, 56, 56, 144) 0 ['block_2_depthwise_BN[0][0]']
block_2_project (Conv2D) (None, 56, 56, 24) 3456 ['block_2_depthwise_relu[0][0]']
block_2_project_BN (BatchNormalization) (None, 56, 56, 24) 96 ['block_2_project[0][0]']
block_2_add (Add) (None, 56, 56, 24) 0 ['block_1_project_BN[0][0]',
'block_2_project_BN[0][0]']
block_3_expand (Conv2D) (None, 56, 56, 144) 3456 ['block_2_add[0][0]']
block_3_expand_BN (BatchNormalization) (None, 56, 56, 144) 576 ['block_3_expand[0][0]']
block_3_expand_relu (ReLU) (None, 56, 56, 144) 0 ['block_3_expand_BN[0][0]']
block_3_pad (ZeroPadding2D) (None, 57, 57, 144) 0 ['block_3_expand_relu[0][0]']
block_3_depthwise (DepthwiseConv2D) (None, 28, 28, 144) 1296 ['block_3_pad[0][0]']
block_3_depthwise_BN (BatchNormalization) (None, 28, 28, 144) 576 ['block_3_depthwise[0][0]']
block_3_depthwise_relu (ReLU) (None, 28, 28, 144) 0 ['block_3_depthwise_BN[0][0]']
block_3_project (Conv2D) (None, 28, 28, 32) 4608 ['block_3_depthwise_relu[0][0]']
block_3_project_BN (BatchNormalization) (None, 28, 28, 32) 128 ['block_3_project[0][0]']
block_4_expand (Conv2D) (None, 28, 28, 192) 6144 ['block_3_project_BN[0][0]']
block_4_expand_BN (BatchNormalization) (None, 28, 28, 192) 768 ['block_4_expand[0][0]']
block_4_expand_relu (ReLU) (None, 28, 28, 192) 0 ['block_4_expand_BN[0][0]']
block_4_depthwise (DepthwiseConv2D) (None, 28, 28, 192) 1728 ['block_4_expand_relu[0][0]']
block_4_depthwise_BN (BatchNormalization) (None, 28, 28, 192) 768 ['block_4_depthwise[0][0]']
block_4_depthwise_relu (ReLU) (None, 28, 28, 192) 0 ['block_4_depthwise_BN[0][0]']
block_4_project (Conv2D) (None, 28, 28, 32) 6144 ['block_4_depthwise_relu[0][0]']
block_4_project_BN (BatchNormalization) (None, 28, 28, 32) 128 ['block_4_project[0][0]']
block_4_add (Add) (None, 28, 28, 32) 0 ['block_3_project_BN[0][0]',
'block_4_project_BN[0][0]']
block_5_expand (Conv2D) (None, 28, 28, 192) 6144 ['block_4_add[0][0]']
block_5_expand_BN (BatchNormalization) (None, 28, 28, 192) 768 ['block_5_expand[0][0]']
block_5_expand_relu (ReLU) (None, 28, 28, 192) 0 ['block_5_expand_BN[0][0]']
block_5_depthwise (DepthwiseConv2D) (None, 28, 28, 192) 1728 ['block_5_expand_relu[0][0]']
block_5_depthwise_BN (BatchNormalization) (None, 28, 28, 192) 768 ['block_5_depthwise[0][0]']
block_5_depthwise_relu (ReLU) (None, 28, 28, 192) 0 ['block_5_depthwise_BN[0][0]']
block_5_project (Conv2D) (None, 28, 28, 32) 6144 ['block_5_depthwise_relu[0][0]']
block_5_project_BN (BatchNormalization) (None, 28, 28, 32) 128 ['block_5_project[0][0]']
block_5_add (Add) (None, 28, 28, 32) 0 ['block_4_add[0][0]',
'block_5_project_BN[0][0]']
block_6_expand (Conv2D) (None, 28, 28, 192) 6144 ['block_5_add[0][0]']
block_6_expand_BN (BatchNormalization) (None, 28, 28, 192) 768 ['block_6_expand[0][0]']
block_6_expand_relu (ReLU) (None, 28, 28, 192) 0 ['block_6_expand_BN[0][0]']
block_6_pad (ZeroPadding2D) (None, 29, 29, 192) 0 ['block_6_expand_relu[0][0]']
block_6_depthwise (DepthwiseConv2D) (None, 14, 14, 192) 1728 ['block_6_pad[0][0]']
block_6_depthwise_BN (BatchNormalization) (None, 14, 14, 192) 768 ['block_6_depthwise[0][0]']
block_6_depthwise_relu (ReLU) (None, 14, 14, 192) 0 ['block_6_depthwise_BN[0][0]']
block_6_project (Conv2D) (None, 14, 14, 64) 12288 ['block_6_depthwise_relu[0][0]']
block_6_project_BN (BatchNormalization) (None, 14, 14, 64) 256 ['block_6_project[0][0]']
block_7_expand (Conv2D) (None, 14, 14, 384) 24576 ['block_6_project_BN[0][0]']
block_7_expand_BN (BatchNormalization) (None, 14, 14, 384) 1536 ['block_7_expand[0][0]']
block_7_expand_relu (ReLU) (None, 14, 14, 384) 0 ['block_7_expand_BN[0][0]']
block_7_depthwise (DepthwiseConv2D) (None, 14, 14, 384) 3456 ['block_7_expand_relu[0][0]']
block_7_depthwise_BN (BatchNormalization) (None, 14, 14, 384) 1536 ['block_7_depthwise[0][0]']
block_7_depthwise_relu (ReLU) (None, 14, 14, 384) 0 ['block_7_depthwise_BN[0][0]']
block_7_project (Conv2D) (None, 14, 14, 64) 24576 ['block_7_depthwise_relu[0][0]']
block_7_project_BN (BatchNormalization) (None, 14, 14, 64) 256 ['block_7_project[0][0]']
block_7_add (Add) (None, 14, 14, 64) 0 ['block_6_project_BN[0][0]',
'block_7_project_BN[0][0]']
block_8_expand (Conv2D) (None, 14, 14, 384) 24576 ['block_7_add[0][0]']
block_8_expand_BN (BatchNormalization) (None, 14, 14, 384) 1536 ['block_8_expand[0][0]']
block_8_expand_relu (ReLU) (None, 14, 14, 384) 0 ['block_8_expand_BN[0][0]']
block_8_depthwise (DepthwiseConv2D) (None, 14, 14, 384) 3456 ['block_8_expand_relu[0][0]']
block_8_depthwise_BN (BatchNormalization) (None, 14, 14, 384) 1536 ['block_8_depthwise[0][0]']
block_8_depthwise_relu (ReLU) (None, 14, 14, 384) 0 ['block_8_depthwise_BN[0][0]']
block_8_project (Conv2D) (None, 14, 14, 64) 24576 ['block_8_depthwise_relu[0][0]']
block_8_project_BN (BatchNormalization) (None, 14, 14, 64) 256 ['block_8_project[0][0]']
block_8_add (Add) (None, 14, 14, 64) 0 ['block_7_add[0][0]',
'block_8_project_BN[0][0]']
block_9_expand (Conv2D) (None, 14, 14, 384) 24576 ['block_8_add[0][0]']
block_9_expand_BN (BatchNormalization) (None, 14, 14, 384) 1536 ['block_9_expand[0][0]']
block_9_expand_relu (ReLU) (None, 14, 14, 384) 0 ['block_9_expand_BN[0][0]']
block_9_depthwise (DepthwiseConv2D) (None, 14, 14, 384) 3456 ['block_9_expand_relu[0][0]']
block_9_depthwise_BN (BatchNormalization) (None, 14, 14, 384) 1536 ['block_9_depthwise[0][0]']
block_9_depthwise_relu (ReLU) (None, 14, 14, 384) 0 ['block_9_depthwise_BN[0][0]']
block_9_project (Conv2D) (None, 14, 14, 64) 24576 ['block_9_depthwise_relu[0][0]']
block_9_project_BN (BatchNormalization) (None, 14, 14, 64) 256 ['block_9_project[0][0]']
block_9_add (Add) (None, 14, 14, 64) 0 ['block_8_add[0][0]',
'block_9_project_BN[0][0]']
block_10_expand (Conv2D) (None, 14, 14, 384) 24576 ['block_9_add[0][0]']
block_10_expand_BN (BatchNormalization) (None, 14, 14, 384) 1536 ['block_10_expand[0][0]']
block_10_expand_relu (ReLU) (None, 14, 14, 384) 0 ['block_10_expand_BN[0][0]']
block_10_depthwise (DepthwiseConv2D) (None, 14, 14, 384) 3456 ['block_10_expand_relu[0][0]']
block_10_depthwise_BN (BatchNormalization) (None, 14, 14, 384) 1536 ['block_10_depthwise[0][0]']
block_10_depthwise_relu (ReLU) (None, 14, 14, 384) 0 ['block_10_depthwise_BN[0][0]']
block_10_project (Conv2D) (None, 14, 14, 96) 36864 ['block_10_depthwise_relu[0][0]']
block_10_project_BN (BatchNormalization) (None, 14, 14, 96) 384 ['block_10_project[0][0]']
block_11_expand (Conv2D) (None, 14, 14, 576) 55296 ['block_10_project_BN[0][0]']
block_11_expand_BN (BatchNormalization) (None, 14, 14, 576) 2304 ['block_11_expand[0][0]']
block_11_expand_relu (ReLU) (None, 14, 14, 576) 0 ['block_11_expand_BN[0][0]']
block_11_depthwise (DepthwiseConv2D) (None, 14, 14, 576) 5184 ['block_11_expand_relu[0][0]']
block_11_depthwise_BN (BatchNormalization) (None, 14, 14, 576) 2304 ['block_11_depthwise[0][0]']
block_11_depthwise_relu (ReLU) (None, 14, 14, 576) 0 ['block_11_depthwise_BN[0][0]']
block_11_project (Conv2D) (None, 14, 14, 96) 55296 ['block_11_depthwise_relu[0][0]']
block_11_project_BN (BatchNormalization) (None, 14, 14, 96) 384 ['block_11_project[0][0]']
block_11_add (Add) (None, 14, 14, 96) 0 ['block_10_project_BN[0][0]',
'block_11_project_BN[0][0]']
block_12_expand (Conv2D) (None, 14, 14, 576) 55296 ['block_11_add[0][0]']
block_12_expand_BN (BatchNormalization) (None, 14, 14, 576) 2304 ['block_12_expand[0][0]']
block_12_expand_relu (ReLU) (None, 14, 14, 576) 0 ['block_12_expand_BN[0][0]']
block_12_depthwise (DepthwiseConv2D) (None, 14, 14, 576) 5184 ['block_12_expand_relu[0][0]']
block_12_depthwise_BN (BatchNormalization) (None, 14, 14, 576) 2304 ['block_12_depthwise[0][0]']
block_12_depthwise_relu (ReLU) (None, 14, 14, 576) 0 ['block_12_depthwise_BN[0][0]']
block_12_project (Conv2D) (None, 14, 14, 96) 55296 ['block_12_depthwise_relu[0][0]']
block_12_project_BN (BatchNormalization) (None, 14, 14, 96) 384 ['block_12_project[0][0]']
block_12_add (Add) (None, 14, 14, 96) 0 ['block_11_add[0][0]',
'block_12_project_BN[0][0]']
block_13_expand (Conv2D) (None, 14, 14, 576) 55296 ['block_12_add[0][0]']
block_13_expand_BN (BatchNormalization) (None, 14, 14, 576) 2304 ['block_13_expand[0][0]']
block_13_expand_relu (ReLU) (None, 14, 14, 576) 0 ['block_13_expand_BN[0][0]']
block_13_pad (ZeroPadding2D) (None, 15, 15, 576) 0 ['block_13_expand_relu[0][0]']
block_13_depthwise (DepthwiseConv2D) (None, 7, 7, 576) 5184 ['block_13_pad[0][0]']
block_13_depthwise_BN (BatchNormalization) (None, 7, 7, 576) 2304 ['block_13_depthwise[0][0]']
block_13_depthwise_relu (ReLU) (None, 7, 7, 576) 0 ['block_13_depthwise_BN[0][0]']
block_13_project (Conv2D) (None, 7, 7, 160) 92160 ['block_13_depthwise_relu[0][0]']
block_13_project_BN (BatchNormalization) (None, 7, 7, 160) 640 ['block_13_project[0][0]']
block_14_expand (Conv2D) (None, 7, 7, 960) 153600 ['block_13_project_BN[0][0]']
block_14_expand_BN (BatchNormalization) (None, 7, 7, 960) 3840 ['block_14_expand[0][0]']
block_14_expand_relu (ReLU) (None, 7, 7, 960) 0 ['block_14_expand_BN[0][0]']
block_14_depthwise (DepthwiseConv2D) (None, 7, 7, 960) 8640 ['block_14_expand_relu[0][0]']
block_14_depthwise_BN (BatchNormalization) (None, 7, 7, 960) 3840 ['block_14_depthwise[0][0]']
block_14_depthwise_relu (ReLU) (None, 7, 7, 960) 0 ['block_14_depthwise_BN[0][0]']
block_14_project (Conv2D) (None, 7, 7, 160) 153600 ['block_14_depthwise_relu[0][0]']
block_14_project_BN (BatchNormalization) (None, 7, 7, 160) 640 ['block_14_project[0][0]']
block_14_add (Add) (None, 7, 7, 160) 0 ['block_13_project_BN[0][0]',
'block_14_project_BN[0][0]']
block_15_expand (Conv2D) (None, 7, 7, 960) 153600 ['block_14_add[0][0]']
block_15_expand_BN (BatchNormalization) (None, 7, 7, 960) 3840 ['block_15_expand[0][0]']
block_15_expand_relu (ReLU) (None, 7, 7, 960) 0 ['block_15_expand_BN[0][0]']
block_15_depthwise (DepthwiseConv2D) (None, 7, 7, 960) 8640 ['block_15_expand_relu[0][0]']
block_15_depthwise_BN (BatchNormalization) (None, 7, 7, 960) 3840 ['block_15_depthwise[0][0]']
block_15_depthwise_relu (ReLU) (None, 7, 7, 960) 0 ['block_15_depthwise_BN[0][0]']
block_15_project (Conv2D) (None, 7, 7, 160) 153600 ['block_15_depthwise_relu[0][0]']
block_15_project_BN (BatchNormalization) (None, 7, 7, 160) 640 ['block_15_project[0][0]']
block_15_add (Add) (None, 7, 7, 160) 0 ['block_14_add[0][0]',
'block_15_project_BN[0][0]']
block_16_expand (Conv2D) (None, 7, 7, 960) 153600 ['block_15_add[0][0]']
block_16_expand_BN (BatchNormalization) (None, 7, 7, 960) 3840 ['block_16_expand[0][0]']
block_16_expand_relu (ReLU) (None, 7, 7, 960) 0 ['block_16_expand_BN[0][0]']
block_16_depthwise (DepthwiseConv2D) (None, 7, 7, 960) 8640 ['block_16_expand_relu[0][0]']
block_16_depthwise_BN (BatchNormalization) (None, 7, 7, 960) 3840 ['block_16_depthwise[0][0]']
block_16_depthwise_relu (ReLU) (None, 7, 7, 960) 0 ['block_16_depthwise_BN[0][0]']
block_16_project (Conv2D) (None, 7, 7, 320) 307200 ['block_16_depthwise_relu[0][0]']
block_16_project_BN (BatchNormalization) (None, 7, 7, 320) 1280 ['block_16_project[0][0]']
Conv_1 (Conv2D) (None, 7, 7, 1280) 409600 ['block_16_project_BN[0][0]']
Conv_1_bn (BatchNormalization) (None, 7, 7, 1280) 5120 ['Conv_1[0][0]']
out_relu (ReLU) (None, 7, 7, 1280) 0 ['Conv_1_bn[0][0]']
global_average_pooling2d (GlobalAveragePooling2 (None, 1280) 0 ['out_relu[0][0]']
D)
dense (Dense) (None, 8631) 11056311 ['global_average_pooling2d[0][0]']
======================================================================================================================================================
Total params: 13,314,295
Trainable params: 13,280,183
Non-trainable params: 34,112
______________________________________________________________________________________________________________________________________________________
Epoch 1/25
Epoch 00001: val_accuracy improved from -inf to 0.70027, saving model to ./tmp/checkpoint
11046/11046 [==============================] - 3446s 311ms/step - loss: 2.9497 - accuracy: 0.4908 - top-5-accuracy: 0.6538 - top-10-accuracy: 0.7119 - top-100-accuracy: 0.8687 - val_loss: 1.4240 - val_accuracy: 0.7003 - val_top-5-accuracy: 0.8539 - val_top-10-accuracy: 0.8953 - val_top-100-accuracy: 0.9759
Epoch 2/25
Epoch 00002: val_accuracy improved from 0.70027 to 0.83601, saving model to ./tmp/checkpoint
11046/11046 [==============================] - 3451s 312ms/step - loss: 0.9672 - accuracy: 0.7959 - top-5-accuracy: 0.9071 - top-10-accuracy: 0.9348 - top-100-accuracy: 0.9855 - val_loss: 0.7466 - val_accuracy: 0.8360 - val_top-5-accuracy: 0.9333 - val_top-10-accuracy: 0.9547 - val_top-100-accuracy: 0.9909
Epoch 3/25
Epoch 00003: val_accuracy improved from 0.83601 to 0.87064, saving model to ./tmp/checkpoint
11046/11046 [==============================] - 3461s 313ms/step - loss: 0.6250 - accuracy: 0.8633 - top-5-accuracy: 0.9446 - top-10-accuracy: 0.9626 - top-100-accuracy: 0.9925 - val_loss: 0.5745 - val_accuracy: 0.8706 - val_top-5-accuracy: 0.9524 - val_top-10-accuracy: 0.9691 - val_top-100-accuracy: 0.9943
Epoch 4/25
Epoch 00004: val_accuracy improved from 0.87064 to 0.90236, saving model to ./tmp/checkpoint
11046/11046 [==============================] - 3451s 312ms/step - loss: 0.4612 - accuracy: 0.8969 - top-5-accuracy: 0.9619 - top-10-accuracy: 0.9749 - top-100-accuracy: 0.9952 - val_loss: 0.4232 - val_accuracy: 0.9024 - val_top-5-accuracy: 0.9674 - val_top-10-accuracy: 0.9791 - val_top-100-accuracy: 0.9964
Epoch 5/25
Epoch 00005: val_accuracy improved from 0.90236 to 0.92468, saving model to ./tmp/checkpoint
11046/11046 [==============================] - 3468s 314ms/step - loss: 0.3604 - accuracy: 0.9181 - top-5-accuracy: 0.9721 - top-10-accuracy: 0.9819 - top-100-accuracy: 0.9968 - val_loss: 0.3239 - val_accuracy: 0.9247 - val_top-5-accuracy: 0.9771 - val_top-10-accuracy: 0.9855 - val_top-100-accuracy: 0.9976
Epoch 6/25
Epoch 00006: val_accuracy improved from 0.92468 to 0.93362, saving model to ./tmp/checkpoint
11046/11046 [==============================] - 3455s 313ms/step - loss: 0.2913 - accuracy: 0.9328 - top-5-accuracy: 0.9787 - top-10-accuracy: 0.9866 - top-100-accuracy: 0.9978 - val_loss: 0.2783 - val_accuracy: 0.9336 - val_top-5-accuracy: 0.9816 - val_top-10-accuracy: 0.9886 - val_top-100-accuracy: 0.9984
Epoch 7/25
Epoch 00007: val_accuracy did not improve from 0.93362
11046/11046 [==============================] - 3436s 311ms/step - loss: 0.2407 - accuracy: 0.9436 - top-5-accuracy: 0.9835 - top-10-accuracy: 0.9898 - top-100-accuracy: 0.9984 - val_loss: 0.2714 - val_accuracy: 0.9319 - val_top-5-accuracy: 0.9826 - val_top-10-accuracy: 0.9900 - val_top-100-accuracy: 0.9986
Epoch 8/25
Epoch 00008: val_accuracy improved from 0.93362 to 0.95498, saving model to ./tmp/checkpoint
11046/11046 [==============================] - 3440s 311ms/step - loss: 0.2013 - accuracy: 0.9522 - top-5-accuracy: 0.9872 - top-10-accuracy: 0.9922 - top-100-accuracy: 0.9989 - val_loss: 0.1851 - val_accuracy: 0.9550 - val_top-5-accuracy: 0.9900 - val_top-10-accuracy: 0.9942 - val_top-100-accuracy: 0.9993
Epoch 9/25
Epoch 00009: val_accuracy did not improve from 0.95498
11046/11046 [==============================] - 3459s 313ms/step - loss: 0.1699 - accuracy: 0.9590 - top-5-accuracy: 0.9899 - top-10-accuracy: 0.9940 - top-100-accuracy: 0.9992 - val_loss: 0.1860 - val_accuracy: 0.9511 - val_top-5-accuracy: 0.9903 - val_top-10-accuracy: 0.9950 - val_top-100-accuracy: 0.9994
Epoch 10/25
Epoch 00010: val_accuracy improved from 0.95498 to 0.95772, saving model to ./tmp/checkpoint
11046/11046 [==============================] - 3447s 312ms/step - loss: 0.1451 - accuracy: 0.9644 - top-5-accuracy: 0.9920 - top-10-accuracy: 0.9954 - top-100-accuracy: 0.9994 - val_loss: 0.1597 - val_accuracy: 0.9577 - val_top-5-accuracy: 0.9926 - val_top-10-accuracy: 0.9961 - val_top-100-accuracy: 0.9995
Epoch 11/25
Epoch 00011: val_accuracy did not improve from 0.95772
11046/11046 [==============================] - 3459s 313ms/step - loss: 0.1248 - accuracy: 0.9689 - top-5-accuracy: 0.9936 - top-10-accuracy: 0.9964 - top-100-accuracy: 0.9996 - val_loss: 0.1626 - val_accuracy: 0.9551 - val_top-5-accuracy: 0.9927 - val_top-10-accuracy: 0.9966 - val_top-100-accuracy: 0.9997
Epoch 12/25
Epoch 00012: val_accuracy improved from 0.95772 to 0.97526, saving model to ./tmp/checkpoint
11046/11046 [==============================] - 3472s 314ms/step - loss: 0.1077 - accuracy: 0.9728 - top-5-accuracy: 0.9950 - top-10-accuracy: 0.9973 - top-100-accuracy: 0.9997 - val_loss: 0.0944 - val_accuracy: 0.9753 - val_top-5-accuracy: 0.9967 - val_top-10-accuracy: 0.9983 - val_top-100-accuracy: 0.9999
Epoch 13/25
Epoch 00013: val_accuracy did not improve from 0.97526
11046/11046 [==============================] - 3464s 314ms/step - loss: 0.0937 - accuracy: 0.9759 - top-5-accuracy: 0.9961 - top-10-accuracy: 0.9979 - top-100-accuracy: 0.9998 - val_loss: 0.0970 - val_accuracy: 0.9736 - val_top-5-accuracy: 0.9967 - val_top-10-accuracy: 0.9984 - val_top-100-accuracy: 0.9999
Epoch 14/25
Epoch 00014: val_accuracy improved from 0.97526 to 0.97551, saving model to ./tmp/checkpoint
11046/11046 [==============================] - 3473s 314ms/step - loss: 0.0820 - accuracy: 0.9786 - top-5-accuracy: 0.9969 - top-10-accuracy: 0.9984 - top-100-accuracy: 0.9999 - val_loss: 0.0881 - val_accuracy: 0.9755 - val_top-5-accuracy: 0.9971 - val_top-10-accuracy: 0.9987 - val_top-100-accuracy: 0.9999
Epoch 15/25
Epoch 00015: val_accuracy improved from 0.97551 to 0.97630, saving model to ./tmp/checkpoint
11046/11046 [==============================] - 3458s 313ms/step - loss: 0.0726 - accuracy: 0.9809 - top-5-accuracy: 0.9975 - top-10-accuracy: 0.9988 - top-100-accuracy: 0.9999 - val_loss: 0.0846 - val_accuracy: 0.9763 - val_top-5-accuracy: 0.9976 - val_top-10-accuracy: 0.9990 - val_top-100-accuracy: 1.0000
Epoch 16/25
Epoch 00016: val_accuracy improved from 0.97630 to 0.97727, saving model to ./tmp/checkpoint
11046/11046 [==============================] - 3463s 313ms/step - loss: 0.0643 - accuracy: 0.9829 - top-5-accuracy: 0.9981 - top-10-accuracy: 0.9991 - top-100-accuracy: 0.9999 - val_loss: 0.0778 - val_accuracy: 0.9773 - val_top-5-accuracy: 0.9981 - val_top-10-accuracy: 0.9993 - val_top-100-accuracy: 1.0000
Epoch 17/25
Epoch 00017: val_accuracy improved from 0.97727 to 0.97786, saving model to ./tmp/checkpoint
11046/11046 [==============================] - 3451s 312ms/step - loss: 0.0572 - accuracy: 0.9846 - top-5-accuracy: 0.9985 - top-10-accuracy: 0.9993 - top-100-accuracy: 1.0000 - val_loss: 0.0758 - val_accuracy: 0.9779 - val_top-5-accuracy: 0.9982 - val_top-10-accuracy: 0.9993 - val_top-100-accuracy: 1.0000
Epoch 18/25
Epoch 00018: val_accuracy improved from 0.97786 to 0.97878, saving model to ./tmp/checkpoint
11046/11046 [==============================] - 3426s 310ms/step - loss: 0.0517 - accuracy: 0.9860 - top-5-accuracy: 0.9988 - top-10-accuracy: 0.9995 - top-100-accuracy: 1.0000 - val_loss: 0.0705 - val_accuracy: 0.9788 - val_top-5-accuracy: 0.9986 - val_top-10-accuracy: 0.9995 - val_top-100-accuracy: 1.0000

View File

@@ -0,0 +1,26 @@
epoch,accuracy,loss,top-10-accuracy,top-100-accuracy,top-5-accuracy,val_accuracy,val_loss,val_top-10-accuracy,val_top-100-accuracy,val_top-5-accuracy
0,0.4907640516757965,2.949651002883911,0.7118712067604065,0.868656575679779,0.6537961363792419,0.7002686262130737,1.4239873886108398,0.8952919840812683,0.9758934378623962,0.853851854801178
1,0.795885443687439,0.9672361016273499,0.9348357319831848,0.9854981303215027,0.9071050882339478,0.8360090255737305,0.7465912103652954,0.9546831846237183,0.9909353852272034,0.9332756400108337
2,0.8633260726928711,0.6249759793281555,0.9625975489616394,0.9924740791320801,0.9446355700492859,0.8706443309783936,0.5745269060134888,0.9690758585929871,0.994270920753479,0.952448844909668
3,0.8968734741210938,0.46120527386665344,0.9748672246932983,0.9952197670936584,0.9618654847145081,0.902364194393158,0.4231894016265869,0.9791271686553955,0.9963652491569519,0.9674080610275269
4,0.9181494116783142,0.36037951707839966,0.9819280505180359,0.9967595338821411,0.9721487760543823,0.9246756434440613,0.32385993003845215,0.985480010509491,0.9976319670677185,0.9770964980125427
5,0.9327888488769531,0.2913418114185333,0.9865629076957703,0.997750461101532,0.9787262082099915,0.9336193799972534,0.27826163172721863,0.9886055588722229,0.998383104801178,0.9815842509269714
6,0.9436453580856323,0.24069969356060028,0.989750325679779,0.9983972907066345,0.9834964871406555,0.931856095790863,0.2713744342327118,0.9899677634239197,0.9985804557800293,0.9825645685195923
7,0.9521682262420654,0.20128048956394196,0.9921678304672241,0.9988619685173035,0.9871729612350464,0.9549760222434998,0.18512850999832153,0.9941691160202026,0.9992679357528687,0.9899550676345825
8,0.9589677453041077,0.1698894202709198,0.9939650893211365,0.9991915822029114,0.9898921251296997,0.9510611295700073,0.1860179901123047,0.9949711561203003,0.9993952512741089,0.9903051853179932
9,0.9644138216972351,0.14514721930027008,0.9954121708869934,0.9994133114814758,0.9920172095298767,0.9577195644378662,0.1596861630678177,0.9961488246917725,0.9995161890983582,0.9926095008850098
10,0.9689231514930725,0.12475422024726868,0.9964313507080078,0.9996000528335571,0.993649959564209,0.955058753490448,0.1626364290714264,0.9965816736221313,0.9996753334999084,0.9926795363426208
11,0.9727602005004883,0.10766829550266266,0.9972864985466003,0.9997209906578064,0.9950493574142456,0.9752568602561951,0.09437419474124908,0.9983195066452026,0.9998599290847778,0.9966517090797424
12,0.9758743643760681,0.09373524785041809,0.9979273080825806,0.9997881650924683,0.996117353439331,0.973614513874054,0.09697101265192032,0.9983958601951599,0.9999045133590698,0.9966962337493896
13,0.9786292910575867,0.08203183114528656,0.9984199404716492,0.9998556971549988,0.996892511844635,0.9755051136016846,0.08805303275585175,0.9986759424209595,0.9999172687530518,0.9971482157707214
14,0.9808819890022278,0.07264290004968643,0.9987650513648987,0.9999023675918579,0.9975138902664185,0.976300835609436,0.08455612510442734,0.998968780040741,0.9999745488166809,0.9976256489753723
15,0.9828794002532959,0.06430379301309586,0.9990943074226379,0.9999317526817322,0.9980705380439758,0.977268397808075,0.07780636847019196,0.9992552399635315,0.9999809265136719,0.9981221556663513
16,0.9845736622810364,0.05719618871808052,0.9993026256561279,0.9999561309814453,0.998477578163147,0.9778603911399841,0.0757608637213707,0.9992616176605225,0.9999809265136719,0.9982303380966187
17,0.9859727025032043,0.051699280738830566,0.9994804859161377,0.9999752640724182,0.9987739324569702,0.9787770509719849,0.07049136608839035,0.9994907379150391,0.9999809265136719,0.9985740780830383
18,0.9872153997421265,0.04683251306414604,0.9995855093002319,0.9999851584434509,0.9990158081054688,0.9792226552963257,0.06943082809448242,0.9995735287666321,0.9999872446060181,0.9986441135406494
19,0.9882335662841797,0.04242420196533203,0.9997022151947021,0.9999908208847046,0.9992198348045349,0.9825581908226013,0.05836047977209091,0.9996626377105713,0.999993622303009,0.9990515112876892
20,0.9891318082809448,0.039091356098651886,0.9997729659080505,0.9999939799308777,0.9993308782577515,0.9775166511535645,0.07386624068021774,0.9995289444923401,0.999993622303009,0.9984404444694519
21,0.9898553490638733,0.03624232858419418,0.999825656414032,0.9999982118606567,0.999459981918335,0.9878098368644714,0.04147448390722275,0.9998790621757507,1.0,0.99949711561203
22,0.9906644821166992,0.03344619646668434,0.999862790107727,0.9999974966049194,0.9995526671409607,0.9770392179489136,0.07516016811132431,0.9995862245559692,1.0,0.9984785914421082
23,0.991235613822937,0.03114890120923519,0.9999006390571594,0.9999978542327881,0.9996435046195984,0.9889938235282898,0.03747271001338959,0.9998981356620789,1.0,0.9996180534362793
24,0.9917523264884949,0.029260696843266487,0.9999108910560608,0.9999985694885254,0.9996809959411621,0.9876443147659302,0.041266944259405136,0.9999045133590698,1.0,0.9995671510696411
1 epoch accuracy loss top-10-accuracy top-100-accuracy top-5-accuracy val_accuracy val_loss val_top-10-accuracy val_top-100-accuracy val_top-5-accuracy
2 0 0.4907640516757965 2.949651002883911 0.7118712067604065 0.868656575679779 0.6537961363792419 0.7002686262130737 1.4239873886108398 0.8952919840812683 0.9758934378623962 0.853851854801178
3 1 0.795885443687439 0.9672361016273499 0.9348357319831848 0.9854981303215027 0.9071050882339478 0.8360090255737305 0.7465912103652954 0.9546831846237183 0.9909353852272034 0.9332756400108337
4 2 0.8633260726928711 0.6249759793281555 0.9625975489616394 0.9924740791320801 0.9446355700492859 0.8706443309783936 0.5745269060134888 0.9690758585929871 0.994270920753479 0.952448844909668
5 3 0.8968734741210938 0.46120527386665344 0.9748672246932983 0.9952197670936584 0.9618654847145081 0.902364194393158 0.4231894016265869 0.9791271686553955 0.9963652491569519 0.9674080610275269
6 4 0.9181494116783142 0.36037951707839966 0.9819280505180359 0.9967595338821411 0.9721487760543823 0.9246756434440613 0.32385993003845215 0.985480010509491 0.9976319670677185 0.9770964980125427
7 5 0.9327888488769531 0.2913418114185333 0.9865629076957703 0.997750461101532 0.9787262082099915 0.9336193799972534 0.27826163172721863 0.9886055588722229 0.998383104801178 0.9815842509269714
8 6 0.9436453580856323 0.24069969356060028 0.989750325679779 0.9983972907066345 0.9834964871406555 0.931856095790863 0.2713744342327118 0.9899677634239197 0.9985804557800293 0.9825645685195923
9 7 0.9521682262420654 0.20128048956394196 0.9921678304672241 0.9988619685173035 0.9871729612350464 0.9549760222434998 0.18512850999832153 0.9941691160202026 0.9992679357528687 0.9899550676345825
10 8 0.9589677453041077 0.1698894202709198 0.9939650893211365 0.9991915822029114 0.9898921251296997 0.9510611295700073 0.1860179901123047 0.9949711561203003 0.9993952512741089 0.9903051853179932
11 9 0.9644138216972351 0.14514721930027008 0.9954121708869934 0.9994133114814758 0.9920172095298767 0.9577195644378662 0.1596861630678177 0.9961488246917725 0.9995161890983582 0.9926095008850098
12 10 0.9689231514930725 0.12475422024726868 0.9964313507080078 0.9996000528335571 0.993649959564209 0.955058753490448 0.1626364290714264 0.9965816736221313 0.9996753334999084 0.9926795363426208
13 11 0.9727602005004883 0.10766829550266266 0.9972864985466003 0.9997209906578064 0.9950493574142456 0.9752568602561951 0.09437419474124908 0.9983195066452026 0.9998599290847778 0.9966517090797424
14 12 0.9758743643760681 0.09373524785041809 0.9979273080825806 0.9997881650924683 0.996117353439331 0.973614513874054 0.09697101265192032 0.9983958601951599 0.9999045133590698 0.9966962337493896
15 13 0.9786292910575867 0.08203183114528656 0.9984199404716492 0.9998556971549988 0.996892511844635 0.9755051136016846 0.08805303275585175 0.9986759424209595 0.9999172687530518 0.9971482157707214
16 14 0.9808819890022278 0.07264290004968643 0.9987650513648987 0.9999023675918579 0.9975138902664185 0.976300835609436 0.08455612510442734 0.998968780040741 0.9999745488166809 0.9976256489753723
17 15 0.9828794002532959 0.06430379301309586 0.9990943074226379 0.9999317526817322 0.9980705380439758 0.977268397808075 0.07780636847019196 0.9992552399635315 0.9999809265136719 0.9981221556663513
18 16 0.9845736622810364 0.05719618871808052 0.9993026256561279 0.9999561309814453 0.998477578163147 0.9778603911399841 0.0757608637213707 0.9992616176605225 0.9999809265136719 0.9982303380966187
19 17 0.9859727025032043 0.051699280738830566 0.9994804859161377 0.9999752640724182 0.9987739324569702 0.9787770509719849 0.07049136608839035 0.9994907379150391 0.9999809265136719 0.9985740780830383
20 18 0.9872153997421265 0.04683251306414604 0.9995855093002319 0.9999851584434509 0.9990158081054688 0.9792226552963257 0.06943082809448242 0.9995735287666321 0.9999872446060181 0.9986441135406494
21 19 0.9882335662841797 0.04242420196533203 0.9997022151947021 0.9999908208847046 0.9992198348045349 0.9825581908226013 0.05836047977209091 0.9996626377105713 0.999993622303009 0.9990515112876892
22 20 0.9891318082809448 0.039091356098651886 0.9997729659080505 0.9999939799308777 0.9993308782577515 0.9775166511535645 0.07386624068021774 0.9995289444923401 0.999993622303009 0.9984404444694519
23 21 0.9898553490638733 0.03624232858419418 0.999825656414032 0.9999982118606567 0.999459981918335 0.9878098368644714 0.04147448390722275 0.9998790621757507 1.0 0.99949711561203
24 22 0.9906644821166992 0.03344619646668434 0.999862790107727 0.9999974966049194 0.9995526671409607 0.9770392179489136 0.07516016811132431 0.9995862245559692 1.0 0.9984785914421082
25 23 0.991235613822937 0.03114890120923519 0.9999006390571594 0.9999978542327881 0.9996435046195984 0.9889938235282898 0.03747271001338959 0.9998981356620789 1.0 0.9996180534362793
26 24 0.9917523264884949 0.029260696843266487 0.9999108910560608 0.9999985694885254 0.9996809959411621 0.9876443147659302 0.041266944259405136 0.9999045133590698 1.0 0.9995671510696411