데이터 증식
import sys, platform
import tensorflow as tf
import keras
print(f'Python version: {sys.version}')
print(f'platform: {platform.platform()}')
print(f'TensorFlow version: {tf.__version__}')
print(f'keras version: {keras.__version__}')
# GPU check
try:
assert tf.config.list_physical_devices('GPU')
except:
print('No GPU detected')Python version: 3.10.14 | packaged by conda-forge | (main, Mar 20 2024, 12:45:18) [GCC 12.3.0]
platform: Linux-5.15.146.1-microsoft-standard-WSL2-x86_64-with-glibc2.36
TensorFlow version: 2.16.1
keras version: 3.3.3
def print_scores(loss, **metrics):
print(f'Loss: {loss:.3f}', end='\t')
for k, v in metrics.items():
print(f'{k}: {v:.3f}', end='\t')1Dataset¶
Kaggle Cats and Dogs
import os.path
data_dir = '../data/cats_dogs_small'
join_path = lambda *args: os.path.join(data_dir, *args)
batch_size = 32
image_size = (180, 180)
train_dataset = keras.utils.image_dataset_from_directory(
join_path('train'), batch_size=batch_size, image_size=image_size)
validation_dataset = keras.utils.image_dataset_from_directory(
join_path('validation'), batch_size=batch_size, image_size=image_size)
test_dataset = keras.utils.image_dataset_from_directory(
join_path('test'), batch_size=batch_size, image_size=image_size)
train_dataset = train_dataset.prefetch(tf.data.AUTOTUNE)
validation_dataset = validation_dataset.prefetch(tf.data.AUTOTUNE)
test_dataset = test_dataset.prefetch(tf.data.AUTOTUNE)Found 2000 files belonging to 2 classes.
Found 1000 files belonging to 2 classes.
Found 2000 files belonging to 2 classes.
2모델¶
2.1데이터 증식¶
from keras import layers
data_augmentation = keras.Sequential([
layers.RandomFlip('horizontal'),
layers.RandomRotation(0.1),
layers.RandomZoom(0.2)
])from keras import layers
def create_convnet(block_sizes):
inputs = layers.Input(shape=(180, 180, 3))
# data augmentation
x = data_augmentation(inputs)
# scaling
x = layers.Rescaling(1./255)(x)
# conv blocks
for size in block_sizes:
x = layers.Conv2D(size, 3, padding='same', activation='relu')(x)
x = layers.MaxPool2D(pool_size=2)(x)
# dense layers
x = layers.Flatten()(x)
x = layers.Dropout(0.5)(x)
outputs = layers.Dense(1)(x)
model = keras.Model(inputs, outputs, name='convnet')
return modelkeras.backend.clear_session()
model = create_convnet([32, 64, 128, 256, 256])
model.compile(
optimizer='adam',
loss=keras.losses.BinaryCrossentropy(from_logits=True),
metrics=['accuracy'])
model_name = 'convnet-augmentation'
checkpoint_filepath = f'checkpoints/{model_name}.keras'
log_dir = f'logs/{model_name}'
history = model.fit(
train_dataset, epochs=100, validation_data=validation_dataset,
callbacks=[
keras.callbacks.ModelCheckpoint(checkpoint_filepath, save_best_only=True, monitor='val_loss'),
keras.callbacks.TensorBoard(log_dir)
])Epoch 1/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 8s 42ms/step - accuracy: 0.5054 - loss: 0.6930 - val_accuracy: 0.5000 - val_loss: 0.6945
Epoch 2/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 24ms/step - accuracy: 0.4857 - loss: 0.6945 - val_accuracy: 0.5000 - val_loss: 0.6945
Epoch 3/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 24ms/step - accuracy: 0.5045 - loss: 0.6913 - val_accuracy: 0.5000 - val_loss: 0.6891
Epoch 4/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 24ms/step - accuracy: 0.4918 - loss: 0.6851 - val_accuracy: 0.5120 - val_loss: 0.6731
Epoch 5/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 24ms/step - accuracy: 0.5247 - loss: 0.6725 - val_accuracy: 0.5720 - val_loss: 0.6725
Epoch 6/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 27ms/step - accuracy: 0.5191 - loss: 0.6824 - val_accuracy: 0.5840 - val_loss: 0.6501
Epoch 7/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.5769 - loss: 0.6584 - val_accuracy: 0.6380 - val_loss: 0.6832
Epoch 8/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 24ms/step - accuracy: 0.6022 - loss: 0.6442 - val_accuracy: 0.6220 - val_loss: 0.6359
Epoch 9/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 24ms/step - accuracy: 0.6411 - loss: 0.6201 - val_accuracy: 0.6410 - val_loss: 0.6066
Epoch 10/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.6616 - loss: 0.5921 - val_accuracy: 0.6500 - val_loss: 0.6272
Epoch 11/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 24ms/step - accuracy: 0.6410 - loss: 0.6008 - val_accuracy: 0.6690 - val_loss: 0.6035
Epoch 12/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 25ms/step - accuracy: 0.6466 - loss: 0.5939 - val_accuracy: 0.6320 - val_loss: 0.5958
Epoch 13/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 26ms/step - accuracy: 0.6710 - loss: 0.5804 - val_accuracy: 0.6600 - val_loss: 0.5762
Epoch 14/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 24ms/step - accuracy: 0.6737 - loss: 0.5820 - val_accuracy: 0.6970 - val_loss: 0.5664
Epoch 15/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.7103 - loss: 0.5661 - val_accuracy: 0.7050 - val_loss: 0.5790
Epoch 16/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.6816 - loss: 0.5552 - val_accuracy: 0.7020 - val_loss: 0.5948
Epoch 17/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.7037 - loss: 0.5395 - val_accuracy: 0.7220 - val_loss: 0.5720
Epoch 18/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 24ms/step - accuracy: 0.7276 - loss: 0.5326 - val_accuracy: 0.7120 - val_loss: 0.5272
Epoch 19/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 25ms/step - accuracy: 0.7264 - loss: 0.5305 - val_accuracy: 0.7320 - val_loss: 0.5590
Epoch 20/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 24ms/step - accuracy: 0.7401 - loss: 0.5171 - val_accuracy: 0.7450 - val_loss: 0.5523
Epoch 21/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 24ms/step - accuracy: 0.7315 - loss: 0.5262 - val_accuracy: 0.7480 - val_loss: 0.4969
Epoch 22/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.7578 - loss: 0.4781 - val_accuracy: 0.7430 - val_loss: 0.5204
Epoch 23/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.7345 - loss: 0.4889 - val_accuracy: 0.7490 - val_loss: 0.5196
Epoch 24/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 24ms/step - accuracy: 0.7531 - loss: 0.4721 - val_accuracy: 0.7720 - val_loss: 0.4755
Epoch 25/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.7617 - loss: 0.4741 - val_accuracy: 0.7750 - val_loss: 0.5035
Epoch 26/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 26ms/step - accuracy: 0.7500 - loss: 0.4817 - val_accuracy: 0.7800 - val_loss: 0.4630
Epoch 27/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 24ms/step - accuracy: 0.7638 - loss: 0.4599 - val_accuracy: 0.7720 - val_loss: 0.5025
Epoch 28/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.7804 - loss: 0.4478 - val_accuracy: 0.7790 - val_loss: 0.4798
Epoch 29/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.7717 - loss: 0.4450 - val_accuracy: 0.7240 - val_loss: 0.4912
Epoch 30/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.7620 - loss: 0.4408 - val_accuracy: 0.7710 - val_loss: 0.4762
Epoch 31/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 24ms/step - accuracy: 0.7900 - loss: 0.4328 - val_accuracy: 0.7870 - val_loss: 0.4615
Epoch 32/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 24ms/step - accuracy: 0.8004 - loss: 0.3952 - val_accuracy: 0.7800 - val_loss: 0.4815
Epoch 33/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 25ms/step - accuracy: 0.7853 - loss: 0.4392 - val_accuracy: 0.7880 - val_loss: 0.4485
Epoch 34/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.8363 - loss: 0.3818 - val_accuracy: 0.7570 - val_loss: 0.4659
Epoch 35/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.8083 - loss: 0.3904 - val_accuracy: 0.7600 - val_loss: 0.5337
Epoch 36/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 24ms/step - accuracy: 0.8017 - loss: 0.4170 - val_accuracy: 0.8040 - val_loss: 0.4383
Epoch 37/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 24ms/step - accuracy: 0.8196 - loss: 0.3739 - val_accuracy: 0.7950 - val_loss: 0.4293
Epoch 38/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 24ms/step - accuracy: 0.8294 - loss: 0.3786 - val_accuracy: 0.7990 - val_loss: 0.4237
Epoch 39/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 25ms/step - accuracy: 0.8139 - loss: 0.3793 - val_accuracy: 0.8050 - val_loss: 0.4468
Epoch 40/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 24ms/step - accuracy: 0.8344 - loss: 0.3547 - val_accuracy: 0.8220 - val_loss: 0.4147
Epoch 41/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.8451 - loss: 0.3683 - val_accuracy: 0.8080 - val_loss: 0.4370
Epoch 42/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 24ms/step - accuracy: 0.8361 - loss: 0.3409 - val_accuracy: 0.8190 - val_loss: 0.4129
Epoch 43/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 24ms/step - accuracy: 0.8549 - loss: 0.3327 - val_accuracy: 0.8160 - val_loss: 0.4239
Epoch 44/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 24ms/step - accuracy: 0.8578 - loss: 0.3335 - val_accuracy: 0.7950 - val_loss: 0.4050
Epoch 45/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 24ms/step - accuracy: 0.8644 - loss: 0.3277 - val_accuracy: 0.8150 - val_loss: 0.4662
Epoch 46/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 25ms/step - accuracy: 0.8495 - loss: 0.3394 - val_accuracy: 0.8280 - val_loss: 0.4068
Epoch 47/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 24ms/step - accuracy: 0.8559 - loss: 0.3129 - val_accuracy: 0.7610 - val_loss: 0.4843
Epoch 48/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 24ms/step - accuracy: 0.8386 - loss: 0.3330 - val_accuracy: 0.8200 - val_loss: 0.4371
Epoch 49/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.8636 - loss: 0.3011 - val_accuracy: 0.8290 - val_loss: 0.4264
Epoch 50/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.8644 - loss: 0.2977 - val_accuracy: 0.8170 - val_loss: 0.4067
Epoch 51/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.8733 - loss: 0.2864 - val_accuracy: 0.8270 - val_loss: 0.4361
Epoch 52/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 25ms/step - accuracy: 0.8860 - loss: 0.2656 - val_accuracy: 0.8180 - val_loss: 0.4200
Epoch 53/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 24ms/step - accuracy: 0.8662 - loss: 0.2856 - val_accuracy: 0.8260 - val_loss: 0.4075
Epoch 54/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 24ms/step - accuracy: 0.8856 - loss: 0.2747 - val_accuracy: 0.8400 - val_loss: 0.3855
Epoch 55/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.8694 - loss: 0.2731 - val_accuracy: 0.8290 - val_loss: 0.4011
Epoch 56/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.9052 - loss: 0.2425 - val_accuracy: 0.8380 - val_loss: 0.4160
Epoch 57/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.8879 - loss: 0.2543 - val_accuracy: 0.8320 - val_loss: 0.4121
Epoch 58/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 24ms/step - accuracy: 0.8884 - loss: 0.2518 - val_accuracy: 0.8190 - val_loss: 0.3895
Epoch 59/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 25ms/step - accuracy: 0.8842 - loss: 0.2424 - val_accuracy: 0.8390 - val_loss: 0.3869
Epoch 60/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 24ms/step - accuracy: 0.9228 - loss: 0.1917 - val_accuracy: 0.8260 - val_loss: 0.4488
Epoch 61/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.9066 - loss: 0.2234 - val_accuracy: 0.8210 - val_loss: 0.4534
Epoch 62/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.9032 - loss: 0.2201 - val_accuracy: 0.8290 - val_loss: 0.4273
Epoch 63/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.9206 - loss: 0.2036 - val_accuracy: 0.8330 - val_loss: 0.4754
Epoch 64/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.9060 - loss: 0.2205 - val_accuracy: 0.8340 - val_loss: 0.4331
Epoch 65/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.9007 - loss: 0.2212 - val_accuracy: 0.8240 - val_loss: 0.4246
Epoch 66/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 25ms/step - accuracy: 0.9093 - loss: 0.2097 - val_accuracy: 0.8400 - val_loss: 0.4023
Epoch 67/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 24ms/step - accuracy: 0.9232 - loss: 0.1989 - val_accuracy: 0.8230 - val_loss: 0.4514
Epoch 68/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.9047 - loss: 0.2106 - val_accuracy: 0.8070 - val_loss: 0.4902
Epoch 69/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.9160 - loss: 0.2008 - val_accuracy: 0.8390 - val_loss: 0.4413
Epoch 70/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.9030 - loss: 0.2257 - val_accuracy: 0.8300 - val_loss: 0.4388
Epoch 71/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.9067 - loss: 0.1909 - val_accuracy: 0.8530 - val_loss: 0.4079
Epoch 72/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 24ms/step - accuracy: 0.9310 - loss: 0.1704 - val_accuracy: 0.8420 - val_loss: 0.4198
Epoch 73/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 24ms/step - accuracy: 0.8950 - loss: 0.2231 - val_accuracy: 0.8360 - val_loss: 0.4098
Epoch 74/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.9145 - loss: 0.2009 - val_accuracy: 0.8330 - val_loss: 0.4505
Epoch 75/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.9106 - loss: 0.1993 - val_accuracy: 0.8370 - val_loss: 0.4173
Epoch 76/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.9256 - loss: 0.1955 - val_accuracy: 0.8330 - val_loss: 0.4127
Epoch 77/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.9332 - loss: 0.1648 - val_accuracy: 0.7950 - val_loss: 0.5408
Epoch 78/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.9120 - loss: 0.1947 - val_accuracy: 0.8410 - val_loss: 0.4222
Epoch 79/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 25ms/step - accuracy: 0.9305 - loss: 0.1662 - val_accuracy: 0.8370 - val_loss: 0.5044
Epoch 80/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.9261 - loss: 0.1870 - val_accuracy: 0.8380 - val_loss: 0.5489
Epoch 81/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.9282 - loss: 0.1689 - val_accuracy: 0.8430 - val_loss: 0.4467
Epoch 82/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.9264 - loss: 0.1805 - val_accuracy: 0.8480 - val_loss: 0.4361
Epoch 83/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.9354 - loss: 0.1530 - val_accuracy: 0.8340 - val_loss: 0.4462
Epoch 84/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.9367 - loss: 0.1556 - val_accuracy: 0.8330 - val_loss: 0.5065
Epoch 85/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.9450 - loss: 0.1401 - val_accuracy: 0.8410 - val_loss: 0.4679
Epoch 86/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 25ms/step - accuracy: 0.9398 - loss: 0.1543 - val_accuracy: 0.8490 - val_loss: 0.4885
Epoch 87/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.9387 - loss: 0.1447 - val_accuracy: 0.8360 - val_loss: 0.4860
Epoch 88/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.9391 - loss: 0.1462 - val_accuracy: 0.8260 - val_loss: 0.5145
Epoch 89/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.9269 - loss: 0.1832 - val_accuracy: 0.8550 - val_loss: 0.4761
Epoch 90/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.9464 - loss: 0.1494 - val_accuracy: 0.8470 - val_loss: 0.4514
Epoch 91/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.9389 - loss: 0.1598 - val_accuracy: 0.8370 - val_loss: 0.4987
Epoch 92/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.9443 - loss: 0.1311 - val_accuracy: 0.8290 - val_loss: 0.4940
Epoch 93/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 25ms/step - accuracy: 0.9509 - loss: 0.1295 - val_accuracy: 0.8570 - val_loss: 0.4612
Epoch 94/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.9351 - loss: 0.1766 - val_accuracy: 0.8540 - val_loss: 0.4325
Epoch 95/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.9459 - loss: 0.1363 - val_accuracy: 0.8470 - val_loss: 0.4550
Epoch 96/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.9456 - loss: 0.1332 - val_accuracy: 0.8530 - val_loss: 0.4378
Epoch 97/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.9440 - loss: 0.1445 - val_accuracy: 0.8340 - val_loss: 0.5502
Epoch 98/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - accuracy: 0.9431 - loss: 0.1359 - val_accuracy: 0.8400 - val_loss: 0.4795
Epoch 99/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 25ms/step - accuracy: 0.9404 - loss: 0.1345 - val_accuracy: 0.8250 - val_loss: 0.4797
Epoch 100/100
63/63 ━━━━━━━━━━━━━━━━━━━━ 2s 24ms/step - accuracy: 0.9452 - loss: 0.1286 - val_accuracy: 0.8390 - val_loss: 0.5760