Project Description 
We’ll examine an image classification dataset to build a bias-free/ corruption-free automatic system that reports & avoids faulty situations caused by human error. Examples of human error include misclassifying the correct type of boat. The type of boat that enters the port region is as follows:
Buoy 
Cruise_ship 
Ferry_boat 
Freight_boar 
Gondola 
Inflatable_boat 
Kayak 
Paper_boat 
Sailboat 
 
I apply some Deep Learning techniques with Keras to build an automatic reporting system that recognizes the boat. We compare a custome model to a transfer learning approach of any lightweight pre-trained model to compare their training and accuracy results.
Importing Libraries 
Import the necessary packages and load the dataset
# Python built-in libraries  
import  os 
from  pathlib import  Path 
 
# Data pre-preprocessing and visualization  
import  numpy as  np 
import  pandas as  pd 
import  matplotlib.pyplot as  plt 
import  matplotlib.image as  image 
import  seaborn as  sns 
 
# Sci-kit learn functions  
from  sklearn.model_selection import  train_test_split 
from  sklearn.metrics import  confusion_matrix, classification_report 
 
# Keras functions  
import  tensorflow as  tf 
from  tensorflow.keras.preprocessing.image import  ImageDataGenerator 
 
# For model training and compilation  
from  keras import  layers, models 
from  tensorflow.keras.models import  Sequential 
from  tensorflow.keras.layers import  Conv2D, MaxPooling2D, GlobalAveragePooling2D, Dense, Dropout, BatchNormalization 
from  keras.callbacks import  ModelCheckpoint, EarlyStopping 
from  keras import  optimizers 
from  keras import  losses 
from  keras import  metrics 
from  keras.metrics import  Precision, Recall 
from  keras.models import  save_model, load_model 
 
# For MobileNetV2  
from  keras.applications import  MobileNetV2 
 
# suppress warnings output messages  
import  warnings 
 warnings.filterwarnings('ignore' ) 
2025-04-24 08:21:44.579011: I tensorflow/core/util/port.cc:153] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.
2025-04-24 08:21:44.592606: I external/local_xla/xla/tsl/cuda/cudart_stub.cc:32] Could not find cuda drivers on your machine, GPU will not be used.
2025-04-24 08:21:44.690236: I external/local_xla/xla/tsl/cuda/cudart_stub.cc:32] Could not find cuda drivers on your machine, GPU will not be used.
2025-04-24 08:21:44.751919: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:467] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
E0000 00:00:1745500904.812251    6908 cuda_dnn.cc:8579] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered
E0000 00:00:1745500904.829982    6908 cuda_blas.cc:1407] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered
W0000 00:00:1745500904.964755    6908 computation_placer.cc:177] computation placer already registered. Please check linkage and avoid linking the same target more than once.
W0000 00:00:1745500904.964778    6908 computation_placer.cc:177] computation placer already registered. Please check linkage and avoid linking the same target more than once.
W0000 00:00:1745500904.964779    6908 computation_placer.cc:177] computation placer already registered. Please check linkage and avoid linking the same target more than once.
W0000 00:00:1745500904.964780    6908 computation_placer.cc:177] computation placer already registered. Please check linkage and avoid linking the same target more than once.
2025-04-24 08:21:44.979275: I tensorflow/core/platform/cpu_feature_guard.cc:210] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.
To enable the following instructions: AVX2 AVX_VNNI FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags. 
 
 
 image_dir =  Path('datasets/Automating_Port_Operations' ) 
 
PosixPath('datasets/Automating_Port_Operations') 
 
 
 image_files =  list (image_dir.glob(r' ** / * . jpg' )) 
 
In order to collect the labels from the name of the classes, Pathlib’s parts attribute can directly extract the second-to-last part of the path, which corresponds to the class label.
 labels =  [x.parts[- 2 ] for  x in  image_files] 
 
 image_df =  pd.DataFrame({'Filepath' : image_files, 'Label' : labels}).astype(str ).sample(frac= 1.0 , random_state= 43 ).reset_index(drop= True ) 
 
 image_df 
 
0 
datasets/Automating_Port_Operations/sailboat/2... 
sailboat 
 
1 
datasets/Automating_Port_Operations/kayak/119.jpg 
kayak 
 
2 
datasets/Automating_Port_Operations/kayak/51.jpg 
kayak 
 
3 
datasets/Automating_Port_Operations/kayak/147.jpg 
kayak 
 
4 
datasets/Automating_Port_Operations/sailboat/9... 
sailboat 
 
... 
... 
... 
 
1157 
datasets/Automating_Port_Operations/sailboat/2... 
sailboat 
 
1158 
datasets/Automating_Port_Operations/sailboat/3... 
sailboat 
 
1159 
datasets/Automating_Port_Operations/sailboat/2... 
sailboat 
 
1160 
datasets/Automating_Port_Operations/sailboat/4... 
sailboat 
 
1161 
datasets/Automating_Port_Operations/sailboat/8... 
sailboat 
 
 
1162 rows × 2 columns
 
 
 
 class_names =  image_df['Label' ].value_counts() 
 
print (f' The number of classes found:  { len (class_names)} ' ) 
print (' \n ' ) 
print (class_names) 
 The number of classes found: 9
Label
sailboat           389
kayak              203
gondola            193
cruise_ship        191
ferry_boat          63
buoy                53
paper_boat          31
freight_boat        23
inflatable_boat     16
Name: count, dtype: int64 
 
 
 train_df, test_df =  train_test_split(image_df, train_size= 0.8 , shuffle= True , random_state= 43 ) 
 
 
Load the Image Data 
Let’s determine the image dimensions for the building the dataset and CNN architecture.
Our data is of shape 224×224 and the channel is 3(RGB), so for example if we are to create the first layer of a CNN, then (224,224,3) input shape. Hence, we used the input_shape to make sure that this layer accepts the data.
 train_generator =  ImageDataGenerator( 
     rescale= 1.  /  255 , 
     validation_split= 0.2  
     ) 
 
 test_generator =  ImageDataGenerator(rescale= 1.  /  255 ) 
 
 batch_size =  32  
 img_width, img_height =  (224 , 224 ) 
 
 train_images =  train_generator.flow_from_dataframe( 
     dataframe= train_df, 
     x_col= 'Filepath' , 
     y_col= 'Label' , 
     target_size= (img_width, img_height), 
     color_mode= 'rgb' , 
     class_mode= 'categorical' , 
     batch_size= batch_size, 
     shuffle= True , 
     seed= 42 , 
     subset= 'training'  
 ) 
 
 val_images =  train_generator.flow_from_dataframe( 
     dataframe= train_df, 
     x_col= 'Filepath' , 
     y_col= 'Label' , 
     target_size= (img_width, img_height), 
     color_mode= 'rgb' , 
     class_mode= 'categorical' , 
     batch_size= batch_size, 
     shuffle= True , 
     seed= 42 , 
     subset= 'validation'  
 ) 
 
 
 test_images =  test_generator.flow_from_dataframe( 
     dataframe= test_df, 
     x_col= 'Filepath' , 
     y_col= 'Label' , 
     target_size= (img_width, img_height), 
     color_mode= 'rgb' , 
     class_mode= 'categorical' , 
     batch_size= batch_size, 
     shuffle= False  
 ) 
Found 744 validated image filenames belonging to 9 classes.
Found 185 validated image filenames belonging to 9 classes.
Found 233 validated image filenames belonging to 9 classes. 
 
 
 
Visualize the Data 
Here are the first 25 images from the training dataset.
 
1028 
datasets/Automating_Port_Operations/buoy/5.jpg 
buoy 
 
1026 
datasets/Automating_Port_Operations/cruise_shi... 
cruise_ship 
 
578 
datasets/Automating_Port_Operations/sailboat/1... 
sailboat 
 
319 
datasets/Automating_Port_Operations/sailboat/3... 
sailboat 
 
525 
datasets/Automating_Port_Operations/sailboat/2... 
sailboat 
 
108 
datasets/Automating_Port_Operations/sailboat/1... 
sailboat 
 
214 
datasets/Automating_Port_Operations/cruise_shi... 
cruise_ship 
 
299 
datasets/Automating_Port_Operations/kayak/12.jpg 
kayak 
 
658 
datasets/Automating_Port_Operations/sailboat/3... 
sailboat 
 
1039 
datasets/Automating_Port_Operations/sailboat/3... 
sailboat 
 
431 
datasets/Automating_Port_Operations/paper_boat... 
paper_boat 
 
1009 
datasets/Automating_Port_Operations/sailboat/1... 
sailboat 
 
529 
datasets/Automating_Port_Operations/sailboat/1... 
sailboat 
 
220 
datasets/Automating_Port_Operations/buoy/39.jpg 
buoy 
 
305 
datasets/Automating_Port_Operations/sailboat/1... 
sailboat 
 
1102 
datasets/Automating_Port_Operations/paper_boat... 
paper_boat 
 
950 
datasets/Automating_Port_Operations/sailboat/1... 
sailboat 
 
404 
datasets/Automating_Port_Operations/cruise_shi... 
cruise_ship 
 
793 
datasets/Automating_Port_Operations/sailboat/5... 
sailboat 
 
861 
datasets/Automating_Port_Operations/sailboat/2... 
sailboat 
 
119 
datasets/Automating_Port_Operations/sailboat/3... 
sailboat 
 
353 
datasets/Automating_Port_Operations/cruise_shi... 
cruise_ship 
 
163 
datasets/Automating_Port_Operations/ferry_boat... 
ferry_boat 
 
497 
datasets/Automating_Port_Operations/sailboat/1... 
sailboat 
 
703 
datasets/Automating_Port_Operations/kayak/139.jpg 
kayak 
 
 
 
 
 
# Get the image filepaths and labels from the training data  
 train_image_filepaths =  train_df['Filepath' ].values 
 train_labels =  train_df['Label' ].values 
 
def  display_examples(num_images, image_filepaths, labels): 
     """  
    Display the specified number of images from the images array with its corresponding labels  
    """  
     figsize =  (20 , 20 ) 
     fig =  plt.figure(figsize= figsize) 
     fig.suptitle("Some examples of images of the dataset" , fontsize= 24 ) 
 
     for  i in  range (num_images): 
         plt.subplot(5 ,5 ,i+ 1 ) 
         plt.xticks([]) 
         plt.yticks([]) 
         plt.grid(False ) 
         # Load and display the image  
         img =  image.imread(image_filepaths[i]) 
         plt.title(labels[i]) 
         plt.imshow(img) 
         #plt.xlabel([labels[i]])  
     plt.show() 
 
 display_examples(25 , train_image_filepaths, train_labels) 
 
 
 
Section 1: Building the CNN in order to classify boats 
Build the Model 
 channel =  3  
 num_classes =  len (class_names) 
 
# Adding the hidden layers and the output layer to our model  
 model =  Sequential([ 
     layers.Conv2D(32 , (3 , 3 ), activation= 'relu' , input_shape= (img_width, img_height, channel)), 
     layers.MaxPooling2D((2 , 2 )), 
     layers.Conv2D(32 , (3 , 3 ), activation= 'relu' ), 
     layers.MaxPooling2D((2 , 2 )), 
     layers.GlobalAveragePooling2D(), 
     layers.Flatten(), 
     layers.Dense(128 , activation= 'relu' ), 
     layers.Dense(128 , activation= 'relu' ), 
     layers.Dense(num_classes, activation= 'softmax' ) 
 ]) 
 
# Display the summary of the model architecture and the number of parameters  
 model.summary() 
2025-04-24 08:21:52.886925: E external/local_xla/xla/stream_executor/cuda/cuda_platform.cc:51] failed call to cuInit: INTERNAL: CUDA error: Failed call to cuInit: UNKNOWN ERROR (303) 
 
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Layer (type)                     ┃ Output Shape            ┃       Param #  ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ conv2d (Conv2D )                 │ (None , 222 , 222 , 32 )   │           896  │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ max_pooling2d (MaxPooling2D )    │ (None , 111 , 111 , 32 )   │             0  │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ conv2d_1 (Conv2D )               │ (None , 109 , 109 , 32 )   │         9,248  │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ max_pooling2d_1 (MaxPooling2D )  │ (None , 54 , 54 , 32 )     │             0  │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ global_average_pooling2d        │ (None , 32 )             │             0  │
│ (GlobalAveragePooling2D )        │                        │               │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ flatten (Flatten )               │ (None , 32 )             │             0  │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense (Dense )                   │ (None , 128 )            │         4,224  │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense_1 (Dense )                 │ (None , 128 )            │        16,512  │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense_2 (Dense )                 │ (None , 9 )              │         1,161  │
└─────────────────────────────────┴────────────────────────┴───────────────┘
 
 
 Total params:  32,041  (125.16 KB)
 
 
 Trainable params:  32,041  (125.16 KB)
 
 
 Non-trainable params:  0  (0.00 B)
 
 
 
 
Compile the Model 
 model.compile ( 
     optimizer =  'adam' , 
     loss =  'categorical_crossentropy' , 
     metrics =  ['accuracy' , 
                 Precision(), 
                Recall(), 
     ] 
 ) 
 
 
Train the Model 
Train the model with 20 epochs and we’ll plot training loss and accuracy against epochs.
# Define checkpoints  
 checkpoint =  ModelCheckpoint('best_model.weights.h5' , 
                              save_best_only=  True ) 
 
 epochs= 20  
 
 history =  model.fit( 
   train_images, 
   validation_data= val_images, 
   epochs= epochs, 
   callbacks= [checkpoint] 
 ) 
Epoch 1/20
 1/24 ━━━━━━━━━━━━━━━━━━━━ 34s 2s/step - accuracy: 0.0938 - loss: 2.1988 - precision: 0.0000e+00 - recall: 0.0000e+00 2/24 ━━━━━━━━━━━━━━━━━━━━ 4s 184ms/step - accuracy: 0.1094 - loss: 2.1951 - precision: 0.0000e+00 - recall: 0.0000e+00 3/24 ━━━━━━━━━━━━━━━━━━━━ 4s 212ms/step - accuracy: 0.1042 - loss: 2.1925 - precision: 0.0000e+00 - recall: 0.0000e+00 4/24 ━━━━━━━━━━━━━━━━━━━━ 4s 216ms/step - accuracy: 0.0957 - loss: 2.1898 - precision: 0.0000e+00 - recall: 0.0000e+00 5/24 ━━━━━━━━━━━━━━━━━━━━ 4s 218ms/step - accuracy: 0.0903 - loss: 2.1874 - precision: 0.0000e+00 - recall: 0.0000e+00 6/24 ━━━━━━━━━━━━━━━━━━━━ 3s 220ms/step - accuracy: 0.0944 - loss: 2.1848 - precision: 0.0000e+00 - recall: 0.0000e+00 7/24 ━━━━━━━━━━━━━━━━━━━━ 3s 221ms/step - accuracy: 0.1000 - loss: 2.1823 - precision: 0.0000e+00 - recall: 0.0000e+00 8/24 ━━━━━━━━━━━━━━━━━━━━ 3s 220ms/step - accuracy: 0.1080 - loss: 2.1791 - precision: 0.0000e+00 - recall: 0.0000e+00 9/24 ━━━━━━━━━━━━━━━━━━━━ 3s 219ms/step - accuracy: 0.1153 - loss: 2.1758 - precision: 0.0000e+00 - recall: 0.0000e+0010/24 ━━━━━━━━━━━━━━━━━━━━ 3s 220ms/step - accuracy: 0.1231 - loss: 2.1720 - precision: 0.0000e+00 - recall: 0.0000e+0011/24 ━━━━━━━━━━━━━━━━━━━━ 2s 220ms/step - accuracy: 0.1318 - loss: 2.1674 - precision: 0.0000e+00 - recall: 0.0000e+0012/24 ━━━━━━━━━━━━━━━━━━━━ 2s 221ms/step - accuracy: 0.1397 - loss: 2.1624 - precision: 0.0000e+00 - recall: 0.0000e+0013/24 ━━━━━━━━━━━━━━━━━━━━ 2s 222ms/step - accuracy: 0.1467 - loss: 2.1571 - precision: 0.0000e+00 - recall: 0.0000e+0014/24 ━━━━━━━━━━━━━━━━━━━━ 2s 222ms/step - accuracy: 0.1527 - loss: 2.1524 - precision: 0.0000e+00 - recall: 0.0000e+0015/24 ━━━━━━━━━━━━━━━━━━━━ 1s 222ms/step - accuracy: 0.1578 - loss: 2.1476 - precision: 0.0000e+00 - recall: 0.0000e+0016/24 ━━━━━━━━━━━━━━━━━━━━ 1s 222ms/step - accuracy: 0.1626 - loss: 2.1425 - precision: 0.0000e+00 - recall: 0.0000e+0017/24 ━━━━━━━━━━━━━━━━━━━━ 1s 222ms/step - accuracy: 0.1671 - loss: 2.1370 - precision: 0.0000e+00 - recall: 0.0000e+0018/24 ━━━━━━━━━━━━━━━━━━━━ 1s 212ms/step - accuracy: 0.1709 - loss: 2.1326 - precision: 0.0000e+00 - recall: 0.0000e+0019/24 ━━━━━━━━━━━━━━━━━━━━ 1s 213ms/step - accuracy: 0.1744 - loss: 2.1280 - precision: 0.0000e+00 - recall: 0.0000e+0020/24 ━━━━━━━━━━━━━━━━━━━━ 0s 213ms/step - accuracy: 0.1779 - loss: 2.1227 - precision: 0.0000e+00 - recall: 0.0000e+0021/24 ━━━━━━━━━━━━━━━━━━━━ 0s 214ms/step - accuracy: 0.1815 - loss: 2.1171 - precision: 0.0000e+00 - recall: 0.0000e+0022/24 ━━━━━━━━━━━━━━━━━━━━ 0s 215ms/step - accuracy: 0.1850 - loss: 2.1113 - precision: 0.0000e+00 - recall: 0.0000e+0023/24 ━━━━━━━━━━━━━━━━━━━━ 0s 217ms/step - accuracy: 0.1884 - loss: 2.1058 - precision: 0.0000e+00 - recall: 0.0000e+0024/24 ━━━━━━━━━━━━━━━━━━━━ 0s 217ms/step - accuracy: 0.1917 - loss: 2.1002 - precision: 0.0000e+00 - recall: 0.0000e+00 
 
WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`.  
 
24/24 ━━━━━━━━━━━━━━━━━━━━ 8s 291ms/step - accuracy: 0.1948 - loss: 2.0950 - precision: 0.0000e+00 - recall: 0.0000e+00 - val_accuracy: 0.3892 - val_loss: 1.8238 - val_precision: 0.0000e+00 - val_recall: 0.0000e+00
Epoch 2/20
 1/24 ━━━━━━━━━━━━━━━━━━━━ 6s 267ms/step - accuracy: 0.3125 - loss: 1.8744 - precision: 0.0000e+00 - recall: 0.0000e+00 2/24 ━━━━━━━━━━━━━━━━━━━━ 4s 202ms/step - accuracy: 0.3281 - loss: 1.7925 - precision: 0.0000e+00 - recall: 0.0000e+00 3/24 ━━━━━━━━━━━━━━━━━━━━ 4s 208ms/step - accuracy: 0.3333 - loss: 1.7928 - precision: 0.0000e+00 - recall: 0.0000e+00 4/24 ━━━━━━━━━━━━━━━━━━━━ 4s 209ms/step - accuracy: 0.3340 - loss: 1.7981 - precision: 0.0000e+00 - recall: 0.0000e+00 5/24 ━━━━━━━━━━━━━━━━━━━━ 3s 208ms/step - accuracy: 0.3359 - loss: 1.7993 - precision: 0.0000e+00 - recall: 0.0000e+00 6/24 ━━━━━━━━━━━━━━━━━━━━ 3s 207ms/step - accuracy: 0.3329 - loss: 1.8050 - precision: 0.1667 - recall: 8.6806e-04     7/24 ━━━━━━━━━━━━━━━━━━━━ 3s 208ms/step - accuracy: 0.3319 - loss: 1.8046 - precision: 0.2857 - recall: 0.0014     8/24 ━━━━━━━━━━━━━━━━━━━━ 3s 206ms/step - accuracy: 0.3309 - loss: 1.8051 - precision: 0.3750 - recall: 0.0017 9/24 ━━━━━━━━━━━━━━━━━━━━ 3s 207ms/step - accuracy: 0.3300 - loss: 1.8053 - precision: 0.4444 - recall: 0.001910/24 ━━━━━━━━━━━━━━━━━━━━ 2s 206ms/step - accuracy: 0.3289 - loss: 1.8072 - precision: 0.5000 - recall: 0.002011/24 ━━━━━━━━━━━━━━━━━━━━ 2s 205ms/step - accuracy: 0.3287 - loss: 1.8076 - precision: 0.5455 - recall: 0.002112/24 ━━━━━━━━━━━━━━━━━━━━ 2s 206ms/step - accuracy: 0.3280 - loss: 1.8077 - precision: 0.5833 - recall: 0.002113/24 ━━━━━━━━━━━━━━━━━━━━ 2s 205ms/step - accuracy: 0.3274 - loss: 1.8071 - precision: 0.6154 - recall: 0.002214/24 ━━━━━━━━━━━━━━━━━━━━ 2s 205ms/step - accuracy: 0.3271 - loss: 1.8072 - precision: 0.6429 - recall: 0.002215/24 ━━━━━━━━━━━━━━━━━━━━ 1s 205ms/step - accuracy: 0.3274 - loss: 1.8067 - precision: 0.6667 - recall: 0.002216/24 ━━━━━━━━━━━━━━━━━━━━ 1s 205ms/step - accuracy: 0.3273 - loss: 1.8066 - precision: 0.6875 - recall: 0.002118/24 ━━━━━━━━━━━━━━━━━━━━ 1s 196ms/step - accuracy: 0.3272 - loss: 1.8068 - precision: 0.7222 - recall: 0.002119/24 ━━━━━━━━━━━━━━━━━━━━ 0s 196ms/step - accuracy: 0.3273 - loss: 1.8065 - precision: 0.7368 - recall: 0.002120/24 ━━━━━━━━━━━━━━━━━━━━ 0s 196ms/step - accuracy: 0.3276 - loss: 1.8061 - precision: 0.7500 - recall: 0.002121/24 ━━━━━━━━━━━━━━━━━━━━ 0s 256ms/step - accuracy: 0.3278 - loss: 1.8056 - precision: 0.7619 - recall: 0.002022/24 ━━━━━━━━━━━━━━━━━━━━ 0s 343ms/step - accuracy: 0.3277 - loss: 1.8054 - precision: 0.7727 - recall: 0.002023/24 ━━━━━━━━━━━━━━━━━━━━ 0s 336ms/step - accuracy: 0.3276 - loss: 1.8050 - precision: 0.7826 - recall: 0.002024/24 ━━━━━━━━━━━━━━━━━━━━ 0s 329ms/step - accuracy: 0.3276 - loss: 1.8047 - precision: 0.7917 - recall: 0.0020 
 
WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`.  
 
24/24 ━━━━━━━━━━━━━━━━━━━━ 9s 362ms/step - accuracy: 0.3277 - loss: 1.8044 - precision: 0.8000 - recall: 0.0019 - val_accuracy: 0.3892 - val_loss: 1.7837 - val_precision: 0.0000e+00 - val_recall: 0.0000e+00
Epoch 3/20
 1/24 ━━━━━━━━━━━━━━━━━━━━ 6s 286ms/step - accuracy: 0.2812 - loss: 1.9176 - precision: 0.0000e+00 - recall: 0.0000e+00 2/24 ━━━━━━━━━━━━━━━━━━━━ 4s 196ms/step - accuracy: 0.2969 - loss: 1.8772 - precision: 0.0000e+00 - recall: 0.0000e+00 3/24 ━━━━━━━━━━━━━━━━━━━━ 4s 211ms/step - accuracy: 0.2951 - loss: 1.8651 - precision: 0.0000e+00 - recall: 0.0000e+00 4/24 ━━━━━━━━━━━━━━━━━━━━ 4s 204ms/step - accuracy: 0.3053 - loss: 1.8440 - precision: 0.0000e+00 - recall: 0.0000e+00 6/24 ━━━━━━━━━━━━━━━━━━━━ 3s 175ms/step - accuracy: 0.3182 - loss: 1.8121 - precision: 0.3333 - recall: 0.0042         7/24 ━━━━━━━━━━━━━━━━━━━━ 3s 178ms/step - accuracy: 0.3228 - loss: 1.7986 - precision: 0.4286 - recall: 0.0057 8/24 ━━━━━━━━━━━━━━━━━━━━ 2s 185ms/step - accuracy: 0.3244 - loss: 1.7949 - precision: 0.4750 - recall: 0.0072 9/24 ━━━━━━━━━━━━━━━━━━━━ 2s 187ms/step - accuracy: 0.3254 - loss: 1.7951 - precision: 0.5175 - recall: 0.008910/24 ━━━━━━━━━━━━━━━━━━━━ 2s 188ms/step - accuracy: 0.3260 - loss: 1.7974 - precision: 0.5357 - recall: 0.010411/24 ━━━━━━━━━━━━━━━━━━━━ 2s 189ms/step - accuracy: 0.3271 - loss: 1.7994 - precision: 0.5531 - recall: 0.011712/24 ━━━━━━━━━━━━━━━━━━━━ 2s 190ms/step - accuracy: 0.3283 - loss: 1.8013 - precision: 0.5676 - recall: 0.012513/24 ━━━━━━━━━━━━━━━━━━━━ 2s 193ms/step - accuracy: 0.3290 - loss: 1.8045 - precision: 0.5831 - recall: 0.013514/24 ━━━━━━━━━━━━━━━━━━━━ 1s 195ms/step - accuracy: 0.3294 - loss: 1.8069 - precision: 0.5964 - recall: 0.014315/24 ━━━━━━━━━━━━━━━━━━━━ 1s 196ms/step - accuracy: 0.3295 - loss: 1.8084 - precision: 0.6043 - recall: 0.014816/24 ━━━━━━━━━━━━━━━━━━━━ 1s 197ms/step - accuracy: 0.3297 - loss: 1.8093 - precision: 0.6112 - recall: 0.015117/24 ━━━━━━━━━━━━━━━━━━━━ 1s 198ms/step - accuracy: 0.3299 - loss: 1.8096 - precision: 0.6172 - recall: 0.015418/24 ━━━━━━━━━━━━━━━━━━━━ 1s 198ms/step - accuracy: 0.3296 - loss: 1.8097 - precision: 0.6226 - recall: 0.015519/24 ━━━━━━━━━━━━━━━━━━━━ 0s 198ms/step - accuracy: 0.3294 - loss: 1.8098 - precision: 0.6275 - recall: 0.015620/24 ━━━━━━━━━━━━━━━━━━━━ 0s 197ms/step - accuracy: 0.3292 - loss: 1.8099 - precision: 0.6318 - recall: 0.015621/24 ━━━━━━━━━━━━━━━━━━━━ 0s 198ms/step - accuracy: 0.3289 - loss: 1.8101 - precision: 0.6357 - recall: 0.015622/24 ━━━━━━━━━━━━━━━━━━━━ 0s 198ms/step - accuracy: 0.3287 - loss: 1.8102 - precision: 0.6393 - recall: 0.015623/24 ━━━━━━━━━━━━━━━━━━━━ 0s 198ms/step - accuracy: 0.3284 - loss: 1.8102 - precision: 0.6426 - recall: 0.015524/24 ━━━━━━━━━━━━━━━━━━━━ 0s 197ms/step - accuracy: 0.3282 - loss: 1.8098 - precision: 0.6455 - recall: 0.015424/24 ━━━━━━━━━━━━━━━━━━━━ 6s 229ms/step - accuracy: 0.3280 - loss: 1.8095 - precision: 0.6483 - recall: 0.0153 - val_accuracy: 0.3946 - val_loss: 1.7973 - val_precision: 0.0000e+00 - val_recall: 0.0000e+00
Epoch 4/20
 1/24 ━━━━━━━━━━━━━━━━━━━━ 6s 285ms/step - accuracy: 0.4375 - loss: 1.6553 - precision: 0.0000e+00 - recall: 0.0000e+00 2/24 ━━━━━━━━━━━━━━━━━━━━ 4s 222ms/step - accuracy: 0.4062 - loss: 1.7465 - precision: 0.0000e+00 - recall: 0.0000e+00 3/24 ━━━━━━━━━━━━━━━━━━━━ 4s 210ms/step - accuracy: 0.3889 - loss: 1.7742 - precision: 0.0000e+00 - recall: 0.0000e+00 4/24 ━━━━━━━━━━━━━━━━━━━━ 4s 203ms/step - accuracy: 0.3796 - loss: 1.7955 - precision: 0.0000e+00 - recall: 0.0000e+00 5/24 ━━━━━━━━━━━━━━━━━━━━ 3s 202ms/step - accuracy: 0.3724 - loss: 1.8086 - precision: 0.0000e+00 - recall: 0.0000e+00 6/24 ━━━━━━━━━━━━━━━━━━━━ 3s 199ms/step - accuracy: 0.3702 - loss: 1.8149 - precision: 0.0000e+00 - recall: 0.0000e+00 7/24 ━━━━━━━━━━━━━━━━━━━━ 3s 200ms/step - accuracy: 0.3696 - loss: 1.8158 - precision: 0.0714 - recall: 6.3776e-04     8/24 ━━━━━━━━━━━━━━━━━━━━ 3s 199ms/step - accuracy: 0.3688 - loss: 1.8155 - precision: 0.1250 - recall: 0.0010     9/24 ━━━━━━━━━━━━━━━━━━━━ 2s 198ms/step - accuracy: 0.3664 - loss: 1.8152 - precision: 0.1667 - recall: 0.001310/24 ━━━━━━━━━━━━━━━━━━━━ 2s 198ms/step - accuracy: 0.3629 - loss: 1.8143 - precision: 0.2000 - recall: 0.001511/24 ━━━━━━━━━━━━━━━━━━━━ 2s 197ms/step - accuracy: 0.3599 - loss: 1.8126 - precision: 0.2364 - recall: 0.002112/24 ━━━━━━━━━━━━━━━━━━━━ 2s 198ms/step - accuracy: 0.3577 - loss: 1.8106 - precision: 0.2667 - recall: 0.002613/24 ━━━━━━━━━━━━━━━━━━━━ 2s 198ms/step - accuracy: 0.3548 - loss: 1.8090 - precision: 0.2923 - recall: 0.003014/24 ━━━━━━━━━━━━━━━━━━━━ 1s 198ms/step - accuracy: 0.3525 - loss: 1.8068 - precision: 0.3143 - recall: 0.003215/24 ━━━━━━━━━━━━━━━━━━━━ 1s 197ms/step - accuracy: 0.3507 - loss: 1.8052 - precision: 0.3333 - recall: 0.003416/24 ━━━━━━━━━━━━━━━━━━━━ 1s 198ms/step - accuracy: 0.3494 - loss: 1.8040 - precision: 0.3500 - recall: 0.003617/24 ━━━━━━━━━━━━━━━━━━━━ 1s 198ms/step - accuracy: 0.3486 - loss: 1.8029 - precision: 0.3647 - recall: 0.003718/24 ━━━━━━━━━━━━━━━━━━━━ 1s 198ms/step - accuracy: 0.3479 - loss: 1.8014 - precision: 0.3778 - recall: 0.003819/24 ━━━━━━━━━━━━━━━━━━━━ 0s 198ms/step - accuracy: 0.3472 - loss: 1.7997 - precision: 0.3895 - recall: 0.003820/24 ━━━━━━━━━━━━━━━━━━━━ 0s 198ms/step - accuracy: 0.3467 - loss: 1.7977 - precision: 0.4000 - recall: 0.003922/24 ━━━━━━━━━━━━━━━━━━━━ 0s 191ms/step - accuracy: 0.3458 - loss: 1.7942 - precision: 0.4169 - recall: 0.004023/24 ━━━━━━━━━━━━━━━━━━━━ 0s 191ms/step - accuracy: 0.3456 - loss: 1.7926 - precision: 0.4241 - recall: 0.004324/24 ━━━━━━━━━━━━━━━━━━━━ 0s 191ms/step - accuracy: 0.3452 - loss: 1.7913 - precision: 0.4303 - recall: 0.0045 
 
WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`.  
 
24/24 ━━━━━━━━━━━━━━━━━━━━ 5s 225ms/step - accuracy: 0.3449 - loss: 1.7900 - precision: 0.4359 - recall: 0.0048 - val_accuracy: 0.3892 - val_loss: 1.7679 - val_precision: 0.7368 - val_recall: 0.0757
Epoch 5/20
 1/24 ━━━━━━━━━━━━━━━━━━━━ 6s 277ms/step - accuracy: 0.2812 - loss: 1.8867 - precision: 1.0000 - recall: 0.0312 2/24 ━━━━━━━━━━━━━━━━━━━━ 4s 205ms/step - accuracy: 0.2891 - loss: 1.8538 - precision: 1.0000 - recall: 0.0469 3/24 ━━━━━━━━━━━━━━━━━━━━ 4s 201ms/step - accuracy: 0.2969 - loss: 1.8315 - precision: 1.0000 - recall: 0.0486 4/24 ━━━━━━━━━━━━━━━━━━━━ 4s 203ms/step - accuracy: 0.3008 - loss: 1.8195 - precision: 0.9286 - recall: 0.0462 5/24 ━━━━━━━━━━━━━━━━━━━━ 3s 202ms/step - accuracy: 0.3069 - loss: 1.8041 - precision: 0.8679 - recall: 0.0432 6/24 ━━━━━━━━━━━━━━━━━━━━ 3s 199ms/step - accuracy: 0.3130 - loss: 1.7980 - precision: 0.8274 - recall: 0.0404 7/24 ━━━━━━━━━━━━━━━━━━━━ 3s 200ms/step - accuracy: 0.3200 - loss: 1.7936 - precision: 0.7985 - recall: 0.0378 8/24 ━━━━━━━━━━━━━━━━━━━━ 3s 198ms/step - accuracy: 0.3220 - loss: 1.7928 - precision: 0.7768 - recall: 0.0355 9/24 ━━━━━━━━━━━━━━━━━━━━ 2s 197ms/step - accuracy: 0.3244 - loss: 1.7906 - precision: 0.7599 - recall: 0.033510/24 ━━━━━━━━━━━━━━━━━━━━ 2s 196ms/step - accuracy: 0.3273 - loss: 1.7887 - precision: 0.7464 - recall: 0.031711/24 ━━━━━━━━━━━━━━━━━━━━ 2s 195ms/step - accuracy: 0.3298 - loss: 1.7873 - precision: 0.7354 - recall: 0.030112/24 ━━━━━━━━━━━━━━━━━━━━ 2s 195ms/step - accuracy: 0.3320 - loss: 1.7861 - precision: 0.7262 - recall: 0.028713/24 ━━━━━━━━━━━━━━━━━━━━ 2s 195ms/step - accuracy: 0.3335 - loss: 1.7842 - precision: 0.7184 - recall: 0.027414/24 ━━━━━━━━━━━━━━━━━━━━ 1s 194ms/step - accuracy: 0.3344 - loss: 1.7822 - precision: 0.7117 - recall: 0.026215/24 ━━━━━━━━━━━━━━━━━━━━ 1s 194ms/step - accuracy: 0.3347 - loss: 1.7811 - precision: 0.7060 - recall: 0.025216/24 ━━━━━━━━━━━━━━━━━━━━ 1s 194ms/step - accuracy: 0.3358 - loss: 1.7793 - precision: 0.7009 - recall: 0.024217/24 ━━━━━━━━━━━━━━━━━━━━ 1s 194ms/step - accuracy: 0.3364 - loss: 1.7782 - precision: 0.6964 - recall: 0.023318/24 ━━━━━━━━━━━━━━━━━━━━ 1s 194ms/step - accuracy: 0.3368 - loss: 1.7771 - precision: 0.6886 - recall: 0.022519/24 ━━━━━━━━━━━━━━━━━━━━ 0s 194ms/step - accuracy: 0.3372 - loss: 1.7760 - precision: 0.6816 - recall: 0.021820/24 ━━━━━━━━━━━━━━━━━━━━ 0s 194ms/step - accuracy: 0.3379 - loss: 1.7743 - precision: 0.6753 - recall: 0.021121/24 ━━━━━━━━━━━━━━━━━━━━ 0s 194ms/step - accuracy: 0.3386 - loss: 1.7728 - precision: 0.6696 - recall: 0.020423/24 ━━━━━━━━━━━━━━━━━━━━ 0s 187ms/step - accuracy: 0.3397 - loss: 1.7705 - precision: 0.6599 - recall: 0.019524/24 ━━━━━━━━━━━━━━━━━━━━ 0s 186ms/step - accuracy: 0.3403 - loss: 1.7692 - precision: 0.6562 - recall: 0.0191 
 
WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`.  
 
24/24 ━━━━━━━━━━━━━━━━━━━━ 5s 219ms/step - accuracy: 0.3407 - loss: 1.7679 - precision: 0.6528 - recall: 0.0188 - val_accuracy: 0.3838 - val_loss: 1.7429 - val_precision: 0.6429 - val_recall: 0.0486
Epoch 6/20
 1/24 ━━━━━━━━━━━━━━━━━━━━ 6s 270ms/step - accuracy: 0.1875 - loss: 1.9309 - precision: 1.0000 - recall: 0.0312 2/24 ━━━━━━━━━━━━━━━━━━━━ 4s 198ms/step - accuracy: 0.2500 - loss: 1.8417 - precision: 1.0000 - recall: 0.0312 4/24 ━━━━━━━━━━━━━━━━━━━━ 2s 149ms/step - accuracy: 0.2973 - loss: 1.7650 - precision: 1.0000 - recall: 0.0298 5/24 ━━━━━━━━━━━━━━━━━━━━ 2s 157ms/step - accuracy: 0.3143 - loss: 1.7447 - precision: 1.0000 - recall: 0.0326 6/24 ━━━━━━━━━━━━━━━━━━━━ 2s 163ms/step - accuracy: 0.3244 - loss: 1.7332 - precision: 0.9815 - recall: 0.0351 7/24 ━━━━━━━━━━━━━━━━━━━━ 2s 169ms/step - accuracy: 0.3288 - loss: 1.7271 - precision: 0.9698 - recall: 0.0366 8/24 ━━━━━━━━━━━━━━━━━━━━ 2s 174ms/step - accuracy: 0.3324 - loss: 1.7208 - precision: 0.9544 - recall: 0.0379 9/24 ━━━━━━━━━━━━━━━━━━━━ 2s 177ms/step - accuracy: 0.3350 - loss: 1.7144 - precision: 0.9317 - recall: 0.038710/24 ━━━━━━━━━━━━━━━━━━━━ 2s 179ms/step - accuracy: 0.3360 - loss: 1.7098 - precision: 0.9052 - recall: 0.038911/24 ━━━━━━━━━━━━━━━━━━━━ 2s 181ms/step - accuracy: 0.3379 - loss: 1.7055 - precision: 0.8849 - recall: 0.039512/24 ━━━━━━━━━━━━━━━━━━━━ 2s 182ms/step - accuracy: 0.3398 - loss: 1.7020 - precision: 0.8711 - recall: 0.040413/24 ━━━━━━━━━━━━━━━━━━━━ 2s 183ms/step - accuracy: 0.3417 - loss: 1.6995 - precision: 0.8570 - recall: 0.041614/24 ━━━━━━━━━━━━━━━━━━━━ 1s 184ms/step - accuracy: 0.3428 - loss: 1.6989 - precision: 0.8404 - recall: 0.042915/24 ━━━━━━━━━━━━━━━━━━━━ 1s 185ms/step - accuracy: 0.3432 - loss: 1.6987 - precision: 0.8244 - recall: 0.044016/24 ━━━━━━━━━━━━━━━━━━━━ 1s 186ms/step - accuracy: 0.3439 - loss: 1.6983 - precision: 0.8101 - recall: 0.044817/24 ━━━━━━━━━━━━━━━━━━━━ 1s 187ms/step - accuracy: 0.3448 - loss: 1.6975 - precision: 0.7975 - recall: 0.045318/24 ━━━━━━━━━━━━━━━━━━━━ 1s 188ms/step - accuracy: 0.3458 - loss: 1.6962 - precision: 0.7865 - recall: 0.045819/24 ━━━━━━━━━━━━━━━━━━━━ 0s 189ms/step - accuracy: 0.3468 - loss: 1.6944 - precision: 0.7769 - recall: 0.046320/24 ━━━━━━━━━━━━━━━━━━━━ 0s 189ms/step - accuracy: 0.3478 - loss: 1.6934 - precision: 0.7683 - recall: 0.046621/24 ━━━━━━━━━━━━━━━━━━━━ 0s 189ms/step - accuracy: 0.3488 - loss: 1.6927 - precision: 0.7604 - recall: 0.046722/24 ━━━━━━━━━━━━━━━━━━━━ 0s 190ms/step - accuracy: 0.3496 - loss: 1.6923 - precision: 0.7533 - recall: 0.046723/24 ━━━━━━━━━━━━━━━━━━━━ 0s 190ms/step - accuracy: 0.3502 - loss: 1.6923 - precision: 0.7468 - recall: 0.046824/24 ━━━━━━━━━━━━━━━━━━━━ 0s 190ms/step - accuracy: 0.3508 - loss: 1.6929 - precision: 0.7408 - recall: 0.046824/24 ━━━━━━━━━━━━━━━━━━━━ 5s 224ms/step - accuracy: 0.3514 - loss: 1.6934 - precision: 0.7353 - recall: 0.0469 - val_accuracy: 0.3730 - val_loss: 1.7534 - val_precision: 0.1667 - val_recall: 0.0108
Epoch 7/20
 1/24 ━━━━━━━━━━━━━━━━━━━━ 6s 279ms/step - accuracy: 0.2812 - loss: 1.7579 - precision: 1.0000 - recall: 0.0625 2/24 ━━━━━━━━━━━━━━━━━━━━ 4s 194ms/step - accuracy: 0.2734 - loss: 1.7602 - precision: 1.0000 - recall: 0.0547 3/24 ━━━━━━━━━━━━━━━━━━━━ 4s 201ms/step - accuracy: 0.2830 - loss: 1.7468 - precision: 1.0000 - recall: 0.0469 4/24 ━━━━━━━━━━━━━━━━━━━━ 3s 199ms/step - accuracy: 0.3001 - loss: 1.7310 - precision: 1.0000 - recall: 0.0430 5/24 ━━━━━━━━━━━━━━━━━━━━ 3s 202ms/step - accuracy: 0.3101 - loss: 1.7218 - precision: 1.0000 - recall: 0.0394 6/24 ━━━━━━━━━━━━━━━━━━━━ 3s 201ms/step - accuracy: 0.3192 - loss: 1.7150 - precision: 0.9667 - recall: 0.0363 7/24 ━━━━━━━━━━━━━━━━━━━━ 3s 202ms/step - accuracy: 0.3265 - loss: 1.7086 - precision: 0.9429 - recall: 0.0337 8/24 ━━━━━━━━━━━━━━━━━━━━ 3s 200ms/step - accuracy: 0.3336 - loss: 1.7029 - precision: 0.8964 - recall: 0.0314 9/24 ━━━━━━━━━━━━━━━━━━━━ 3s 201ms/step - accuracy: 0.3370 - loss: 1.7030 - precision: 0.8567 - recall: 0.030610/24 ━━━━━━━━━━━━━━━━━━━━ 2s 199ms/step - accuracy: 0.3392 - loss: 1.7050 - precision: 0.8248 - recall: 0.029711/24 ━━━━━━━━━━━━━━━━━━━━ 2s 199ms/step - accuracy: 0.3422 - loss: 1.7073 - precision: 0.7953 - recall: 0.028813/24 ━━━━━━━━━━━━━━━━━━━━ 2s 188ms/step - accuracy: 0.3473 - loss: 1.7106 - precision: 0.7496 - recall: 0.027714/24 ━━━━━━━━━━━━━━━━━━━━ 1s 189ms/step - accuracy: 0.3486 - loss: 1.7134 - precision: 0.7317 - recall: 0.027415/24 ━━━━━━━━━━━━━━━━━━━━ 1s 190ms/step - accuracy: 0.3493 - loss: 1.7154 - precision: 0.7163 - recall: 0.027316/24 ━━━━━━━━━━━━━━━━━━━━ 1s 190ms/step - accuracy: 0.3500 - loss: 1.7167 - precision: 0.7050 - recall: 0.027517/24 ━━━━━━━━━━━━━━━━━━━━ 1s 190ms/step - accuracy: 0.3512 - loss: 1.7172 - precision: 0.6981 - recall: 0.028218/24 ━━━━━━━━━━━━━━━━━━━━ 1s 191ms/step - accuracy: 0.3524 - loss: 1.7172 - precision: 0.6924 - recall: 0.028819/24 ━━━━━━━━━━━━━━━━━━━━ 0s 192ms/step - accuracy: 0.3536 - loss: 1.7167 - precision: 0.6888 - recall: 0.029520/24 ━━━━━━━━━━━━━━━━━━━━ 0s 192ms/step - accuracy: 0.3552 - loss: 1.7158 - precision: 0.6854 - recall: 0.030221/24 ━━━━━━━━━━━━━━━━━━━━ 0s 192ms/step - accuracy: 0.3568 - loss: 1.7148 - precision: 0.6817 - recall: 0.030822/24 ━━━━━━━━━━━━━━━━━━━━ 0s 193ms/step - accuracy: 0.3583 - loss: 1.7134 - precision: 0.6773 - recall: 0.031523/24 ━━━━━━━━━━━━━━━━━━━━ 0s 193ms/step - accuracy: 0.3597 - loss: 1.7126 - precision: 0.6725 - recall: 0.032224/24 ━━━━━━━━━━━━━━━━━━━━ 0s 192ms/step - accuracy: 0.3607 - loss: 1.7117 - precision: 0.6692 - recall: 0.033024/24 ━━━━━━━━━━━━━━━━━━━━ 5s 227ms/step - accuracy: 0.3617 - loss: 1.7109 - precision: 0.6662 - recall: 0.0337 - val_accuracy: 0.3459 - val_loss: 1.7719 - val_precision: 0.5111 - val_recall: 0.1243
Epoch 8/20
 1/24 ━━━━━━━━━━━━━━━━━━━━ 7s 338ms/step - accuracy: 0.4062 - loss: 1.6701 - precision: 0.6000 - recall: 0.0938 2/24 ━━━━━━━━━━━━━━━━━━━━ 5s 250ms/step - accuracy: 0.3906 - loss: 1.6675 - precision: 0.5500 - recall: 0.1094 3/24 ━━━━━━━━━━━━━━━━━━━━ 4s 230ms/step - accuracy: 0.3819 - loss: 1.6715 - precision: 0.5246 - recall: 0.1042 4/24 ━━━━━━━━━━━━━━━━━━━━ 4s 230ms/step - accuracy: 0.3802 - loss: 1.6781 - precision: 0.5234 - recall: 0.1035 5/24 ━━━━━━━━━━━━━━━━━━━━ 4s 226ms/step - accuracy: 0.3754 - loss: 1.6803 - precision: 0.5153 - recall: 0.1003 6/24 ━━━━━━━━━━━━━━━━━━━━ 14s 808ms/step - accuracy: 0.3771 - loss: 1.6751 - precision: 0.5176 - recall: 0.0992 7/24 ━━━━━━━━━━━━━━━━━━━━ 12s 712ms/step - accuracy: 0.3787 - loss: 1.6683 - precision: 0.5189 - recall: 0.0978 8/24 ━━━━━━━━━━━━━━━━━━━━ 10s 641ms/step - accuracy: 0.3812 - loss: 1.6639 - precision: 0.5225 - recall: 0.0968 9/24 ━━━━━━━━━━━━━━━━━━━━ 8s 589ms/step - accuracy: 0.3828 - loss: 1.6623 - precision: 0.5269 - recall: 0.0965 10/24 ━━━━━━━━━━━━━━━━━━━━ 7s 547ms/step - accuracy: 0.3851 - loss: 1.6611 - precision: 0.5311 - recall: 0.095911/24 ━━━━━━━━━━━━━━━━━━━━ 6s 515ms/step - accuracy: 0.3855 - loss: 1.6614 - precision: 0.5360 - recall: 0.095212/24 ━━━━━━━━━━━━━━━━━━━━ 5s 488ms/step - accuracy: 0.3857 - loss: 1.6611 - precision: 0.5401 - recall: 0.094013/24 ━━━━━━━━━━━━━━━━━━━━ 5s 464ms/step - accuracy: 0.3856 - loss: 1.6608 - precision: 0.5444 - recall: 0.093014/24 ━━━━━━━━━━━━━━━━━━━━ 4s 445ms/step - accuracy: 0.3857 - loss: 1.6613 - precision: 0.5467 - recall: 0.091815/24 ━━━━━━━━━━━━━━━━━━━━ 3s 431ms/step - accuracy: 0.3855 - loss: 1.6616 - precision: 0.5480 - recall: 0.090416/24 ━━━━━━━━━━━━━━━━━━━━ 3s 416ms/step - accuracy: 0.3855 - loss: 1.6620 - precision: 0.5499 - recall: 0.089317/24 ━━━━━━━━━━━━━━━━━━━━ 2s 403ms/step - accuracy: 0.3859 - loss: 1.6620 - precision: 0.5523 - recall: 0.088218/24 ━━━━━━━━━━━━━━━━━━━━ 2s 392ms/step - accuracy: 0.3864 - loss: 1.6621 - precision: 0.5545 - recall: 0.087419/24 ━━━━━━━━━━━━━━━━━━━━ 1s 383ms/step - accuracy: 0.3867 - loss: 1.6625 - precision: 0.5562 - recall: 0.086620/24 ━━━━━━━━━━━━━━━━━━━━ 1s 372ms/step - accuracy: 0.3870 - loss: 1.6629 - precision: 0.5576 - recall: 0.086021/24 ━━━━━━━━━━━━━━━━━━━━ 1s 364ms/step - accuracy: 0.3872 - loss: 1.6631 - precision: 0.5597 - recall: 0.085523/24 ━━━━━━━━━━━━━━━━━━━━ 0s 342ms/step - accuracy: 0.3873 - loss: 1.6639 - precision: 0.5637 - recall: 0.084724/24 ━━━━━━━━━━━━━━━━━━━━ 0s 335ms/step - accuracy: 0.3874 - loss: 1.6644 - precision: 0.5655 - recall: 0.0843 
 
WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`.  
 
24/24 ━━━━━━━━━━━━━━━━━━━━ 9s 371ms/step - accuracy: 0.3874 - loss: 1.6650 - precision: 0.5673 - recall: 0.0840 - val_accuracy: 0.4054 - val_loss: 1.7359 - val_precision: 0.5200 - val_recall: 0.0703
Epoch 9/20
 1/24 ━━━━━━━━━━━━━━━━━━━━ 8s 351ms/step - accuracy: 0.3438 - loss: 1.6865 - precision: 0.7500 - recall: 0.0938 2/24 ━━━━━━━━━━━━━━━━━━━━ 4s 215ms/step - accuracy: 0.3438 - loss: 1.6877 - precision: 0.7250 - recall: 0.1016 3/24 ━━━━━━━━━━━━━━━━━━━━ 4s 208ms/step - accuracy: 0.3438 - loss: 1.6758 - precision: 0.7333 - recall: 0.1094 5/24 ━━━━━━━━━━━━━━━━━━━━ 3s 169ms/step - accuracy: 0.3529 - loss: 1.6491 - precision: 0.7453 - recall: 0.1142 6/24 ━━━━━━━━━━━━━━━━━━━━ 3s 180ms/step - accuracy: 0.3546 - loss: 1.6454 - precision: 0.7499 - recall: 0.1120 7/24 ━━━━━━━━━━━━━━━━━━━━ 3s 183ms/step - accuracy: 0.3525 - loss: 1.6474 - precision: 0.7417 - recall: 0.1089 8/24 ━━━━━━━━━━━━━━━━━━━━ 2s 187ms/step - accuracy: 0.3531 - loss: 1.6464 - precision: 0.7285 - recall: 0.1066 9/24 ━━━━━━━━━━━━━━━━━━━━ 2s 188ms/step - accuracy: 0.3530 - loss: 1.6463 - precision: 0.7226 - recall: 0.106110/24 ━━━━━━━━━━━━━━━━━━━━ 2s 191ms/step - accuracy: 0.3536 - loss: 1.6474 - precision: 0.7184 - recall: 0.106311/24 ━━━━━━━━━━━━━━━━━━━━ 2s 190ms/step - accuracy: 0.3552 - loss: 1.6464 - precision: 0.7147 - recall: 0.107712/24 ━━━━━━━━━━━━━━━━━━━━ 2s 191ms/step - accuracy: 0.3564 - loss: 1.6470 - precision: 0.7120 - recall: 0.109213/24 ━━━━━━━━━━━━━━━━━━━━ 2s 191ms/step - accuracy: 0.3573 - loss: 1.6480 - precision: 0.7070 - recall: 0.109814/24 ━━━━━━━━━━━━━━━━━━━━ 1s 190ms/step - accuracy: 0.3585 - loss: 1.6488 - precision: 0.7017 - recall: 0.110415/24 ━━━━━━━━━━━━━━━━━━━━ 1s 192ms/step - accuracy: 0.3596 - loss: 1.6498 - precision: 0.6962 - recall: 0.111016/24 ━━━━━━━━━━━━━━━━━━━━ 1s 191ms/step - accuracy: 0.3606 - loss: 1.6512 - precision: 0.6894 - recall: 0.111817/24 ━━━━━━━━━━━━━━━━━━━━ 1s 192ms/step - accuracy: 0.3613 - loss: 1.6524 - precision: 0.6824 - recall: 0.112618/24 ━━━━━━━━━━━━━━━━━━━━ 1s 191ms/step - accuracy: 0.3616 - loss: 1.6552 - precision: 0.6742 - recall: 0.113319/24 ━━━━━━━━━━━━━━━━━━━━ 0s 193ms/step - accuracy: 0.3618 - loss: 1.6575 - precision: 0.6666 - recall: 0.113820/24 ━━━━━━━━━━━━━━━━━━━━ 0s 193ms/step - accuracy: 0.3623 - loss: 1.6595 - precision: 0.6597 - recall: 0.114121/24 ━━━━━━━━━━━━━━━━━━━━ 0s 193ms/step - accuracy: 0.3631 - loss: 1.6606 - precision: 0.6537 - recall: 0.114322/24 ━━━━━━━━━━━━━━━━━━━━ 0s 193ms/step - accuracy: 0.3639 - loss: 1.6615 - precision: 0.6484 - recall: 0.114523/24 ━━━━━━━━━━━━━━━━━━━━ 0s 193ms/step - accuracy: 0.3648 - loss: 1.6621 - precision: 0.6444 - recall: 0.114824/24 ━━━━━━━━━━━━━━━━━━━━ 0s 193ms/step - accuracy: 0.3657 - loss: 1.6629 - precision: 0.6405 - recall: 0.115024/24 ━━━━━━━━━━━━━━━━━━━━ 5s 223ms/step - accuracy: 0.3666 - loss: 1.6637 - precision: 0.6370 - recall: 0.1153 - val_accuracy: 0.3243 - val_loss: 1.8331 - val_precision: 0.3333 - val_recall: 0.0432
Epoch 10/20
 1/24 ━━━━━━━━━━━━━━━━━━━━ 6s 290ms/step - accuracy: 0.4688 - loss: 1.5499 - precision: 0.7500 - recall: 0.0938 2/24 ━━━━━━━━━━━━━━━━━━━━ 4s 191ms/step - accuracy: 0.4375 - loss: 1.5826 - precision: 0.6528 - recall: 0.0859 3/24 ━━━━━━━━━━━━━━━━━━━━ 4s 192ms/step - accuracy: 0.4201 - loss: 1.6032 - precision: 0.6296 - recall: 0.0816 4/24 ━━━━━━━━━━━━━━━━━━━━ 3s 190ms/step - accuracy: 0.4186 - loss: 1.6086 - precision: 0.6261 - recall: 0.0768 5/24 ━━━━━━━━━━━━━━━━━━━━ 3s 190ms/step - accuracy: 0.4211 - loss: 1.6077 - precision: 0.6151 - recall: 0.0715 6/24 ━━━━━━━━━━━━━━━━━━━━ 3s 194ms/step - accuracy: 0.4230 - loss: 1.6038 - precision: 0.6237 - recall: 0.0700 7/24 ━━━━━━━━━━━━━━━━━━━━ 3s 199ms/step - accuracy: 0.4219 - loss: 1.6059 - precision: 0.6255 - recall: 0.0689 8/24 ━━━━━━━━━━━━━━━━━━━━ 3s 199ms/step - accuracy: 0.4199 - loss: 1.6081 - precision: 0.6339 - recall: 0.0691 9/24 ━━━━━━━━━━━━━━━━━━━━ 2s 199ms/step - accuracy: 0.4192 - loss: 1.6109 - precision: 0.6375 - recall: 0.069110/24 ━━━━━━━━━━━━━━━━━━━━ 2s 200ms/step - accuracy: 0.4182 - loss: 1.6129 - precision: 0.6366 - recall: 0.069111/24 ━━━━━━━━━━━━━━━━━━━━ 2s 199ms/step - accuracy: 0.4166 - loss: 1.6144 - precision: 0.6356 - recall: 0.069312/24 ━━━━━━━━━━━━━━━━━━━━ 2s 198ms/step - accuracy: 0.4142 - loss: 1.6190 - precision: 0.6323 - recall: 0.069613/24 ━━━━━━━━━━━━━━━━━━━━ 2s 197ms/step - accuracy: 0.4118 - loss: 1.6229 - precision: 0.6270 - recall: 0.069914/24 ━━━━━━━━━━━━━━━━━━━━ 1s 198ms/step - accuracy: 0.4099 - loss: 1.6254 - precision: 0.6225 - recall: 0.070515/24 ━━━━━━━━━━━━━━━━━━━━ 1s 198ms/step - accuracy: 0.4090 - loss: 1.6265 - precision: 0.6195 - recall: 0.071516/24 ━━━━━━━━━━━━━━━━━━━━ 1s 197ms/step - accuracy: 0.4086 - loss: 1.6275 - precision: 0.6165 - recall: 0.072417/24 ━━━━━━━━━━━━━━━━━━━━ 1s 197ms/step - accuracy: 0.4082 - loss: 1.6283 - precision: 0.6125 - recall: 0.073118/24 ━━━━━━━━━━━━━━━━━━━━ 1s 197ms/step - accuracy: 0.4075 - loss: 1.6294 - precision: 0.6090 - recall: 0.073920/24 ━━━━━━━━━━━━━━━━━━━━ 0s 189ms/step - accuracy: 0.4064 - loss: 1.6315 - precision: 0.6025 - recall: 0.075221/24 ━━━━━━━━━━━━━━━━━━━━ 0s 190ms/step - accuracy: 0.4061 - loss: 1.6327 - precision: 0.6006 - recall: 0.075922/24 ━━━━━━━━━━━━━━━━━━━━ 0s 190ms/step - accuracy: 0.4060 - loss: 1.6340 - precision: 0.5989 - recall: 0.076623/24 ━━━━━━━━━━━━━━━━━━━━ 0s 190ms/step - accuracy: 0.4058 - loss: 1.6354 - precision: 0.5975 - recall: 0.077224/24 ━━━━━━━━━━━━━━━━━━━━ 0s 190ms/step - accuracy: 0.4056 - loss: 1.6364 - precision: 0.5964 - recall: 0.077824/24 ━━━━━━━━━━━━━━━━━━━━ 5s 223ms/step - accuracy: 0.4054 - loss: 1.6374 - precision: 0.5954 - recall: 0.0783 - val_accuracy: 0.3351 - val_loss: 1.7881 - val_precision: 0.3750 - val_recall: 0.0486
Epoch 11/20
 1/24 ━━━━━━━━━━━━━━━━━━━━ 2s 93ms/step - accuracy: 0.5000 - loss: 1.6504 - precision: 0.6667 - recall: 0.2500 2/24 ━━━━━━━━━━━━━━━━━━━━ 5s 236ms/step - accuracy: 0.4000 - loss: 1.7469 - precision: 0.6333 - recall: 0.1625 3/24 ━━━━━━━━━━━━━━━━━━━━ 4s 214ms/step - accuracy: 0.3731 - loss: 1.7390 - precision: 0.5889 - recall: 0.1222 4/24 ━━━━━━━━━━━━━━━━━━━━ 4s 208ms/step - accuracy: 0.3712 - loss: 1.7252 - precision: 0.5806 - recall: 0.1037 5/24 ━━━━━━━━━━━━━━━━━━━━ 3s 205ms/step - accuracy: 0.3749 - loss: 1.7067 - precision: 0.5756 - recall: 0.0903 6/24 ━━━━━━━━━━━━━━━━━━━━ 3s 204ms/step - accuracy: 0.3769 - loss: 1.6951 - precision: 0.5796 - recall: 0.0812 7/24 ━━━━━━━━━━━━━━━━━━━━ 3s 204ms/step - accuracy: 0.3816 - loss: 1.6837 - precision: 0.5877 - recall: 0.0746 8/24 ━━━━━━━━━━━━━━━━━━━━ 3s 202ms/step - accuracy: 0.3851 - loss: 1.6727 - precision: 0.6008 - recall: 0.0701 9/24 ━━━━━━━━━━━━━━━━━━━━ 3s 200ms/step - accuracy: 0.3878 - loss: 1.6632 - precision: 0.6110 - recall: 0.066110/24 ━━━━━━━━━━━━━━━━━━━━ 2s 202ms/step - accuracy: 0.3895 - loss: 1.6560 - precision: 0.6183 - recall: 0.063911/24 ━━━━━━━━━━━━━━━━━━━━ 2s 200ms/step - accuracy: 0.3921 - loss: 1.6484 - precision: 0.6275 - recall: 0.063112/24 ━━━━━━━━━━━━━━━━━━━━ 2s 200ms/step - accuracy: 0.3939 - loss: 1.6425 - precision: 0.6308 - recall: 0.062513/24 ━━━━━━━━━━━━━━━━━━━━ 2s 199ms/step - accuracy: 0.3950 - loss: 1.6386 - precision: 0.6343 - recall: 0.062614/24 ━━━━━━━━━━━━━━━━━━━━ 1s 198ms/step - accuracy: 0.3956 - loss: 1.6363 - precision: 0.6366 - recall: 0.063515/24 ━━━━━━━━━━━━━━━━━━━━ 1s 199ms/step - accuracy: 0.3963 - loss: 1.6344 - precision: 0.6368 - recall: 0.065216/24 ━━━━━━━━━━━━━━━━━━━━ 1s 198ms/step - accuracy: 0.3964 - loss: 1.6338 - precision: 0.6347 - recall: 0.066817/24 ━━━━━━━━━━━━━━━━━━━━ 1s 197ms/step - accuracy: 0.3963 - loss: 1.6340 - precision: 0.6323 - recall: 0.068618/24 ━━━━━━━━━━━━━━━━━━━━ 1s 196ms/step - accuracy: 0.3960 - loss: 1.6346 - precision: 0.6290 - recall: 0.070319/24 ━━━━━━━━━━━━━━━━━━━━ 0s 196ms/step - accuracy: 0.3953 - loss: 1.6350 - precision: 0.6265 - recall: 0.071820/24 ━━━━━━━━━━━━━━━━━━━━ 0s 196ms/step - accuracy: 0.3952 - loss: 1.6358 - precision: 0.6240 - recall: 0.073321/24 ━━━━━━━━━━━━━━━━━━━━ 0s 196ms/step - accuracy: 0.3950 - loss: 1.6371 - precision: 0.6217 - recall: 0.074722/24 ━━━━━━━━━━━━━━━━━━━━ 0s 196ms/step - accuracy: 0.3949 - loss: 1.6379 - precision: 0.6193 - recall: 0.076023/24 ━━━━━━━━━━━━━━━━━━━━ 0s 195ms/step - accuracy: 0.3944 - loss: 1.6392 - precision: 0.6166 - recall: 0.077024/24 ━━━━━━━━━━━━━━━━━━━━ 0s 195ms/step - accuracy: 0.3938 - loss: 1.6406 - precision: 0.6145 - recall: 0.0779 
 
WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`.  
 
24/24 ━━━━━━━━━━━━━━━━━━━━ 5s 230ms/step - accuracy: 0.3933 - loss: 1.6418 - precision: 0.6125 - recall: 0.0788 - val_accuracy: 0.4000 - val_loss: 1.6950 - val_precision: 0.6250 - val_recall: 0.0541
Epoch 12/20
 1/24 ━━━━━━━━━━━━━━━━━━━━ 6s 286ms/step - accuracy: 0.5312 - loss: 1.6065 - precision: 1.0000 - recall: 0.0625 2/24 ━━━━━━━━━━━━━━━━━━━━ 4s 191ms/step - accuracy: 0.5156 - loss: 1.6083 - precision: 1.0000 - recall: 0.0469 3/24 ━━━━━━━━━━━━━━━━━━━━ 3s 186ms/step - accuracy: 0.5000 - loss: 1.6329 - precision: 0.8333 - recall: 0.0382 4/24 ━━━━━━━━━━━━━━━━━━━━ 3s 185ms/step - accuracy: 0.4844 - loss: 1.6432 - precision: 0.8036 - recall: 0.0384 5/24 ━━━━━━━━━━━━━━━━━━━━ 3s 191ms/step - accuracy: 0.4737 - loss: 1.6536 - precision: 0.7762 - recall: 0.0382 6/24 ━━━━━━━━━━━━━━━━━━━━ 3s 192ms/step - accuracy: 0.4651 - loss: 1.6577 - precision: 0.7468 - recall: 0.0371 7/24 ━━━━━━━━━━━━━━━━━━━━ 3s 192ms/step - accuracy: 0.4580 - loss: 1.6581 - precision: 0.7354 - recall: 0.0369 8/24 ━━━━━━━━━━━━━━━━━━━━ 3s 193ms/step - accuracy: 0.4520 - loss: 1.6583 - precision: 0.7351 - recall: 0.0376 9/24 ━━━━━━━━━━━━━━━━━━━━ 2s 193ms/step - accuracy: 0.4465 - loss: 1.6571 - precision: 0.7337 - recall: 0.038510/24 ━━━━━━━━━━━━━━━━━━━━ 2s 195ms/step - accuracy: 0.4422 - loss: 1.6556 - precision: 0.7299 - recall: 0.039611/24 ━━━━━━━━━━━━━━━━━━━━ 2s 195ms/step - accuracy: 0.4387 - loss: 1.6543 - precision: 0.7217 - recall: 0.040212/24 ━━━━━━━━━━━━━━━━━━━━ 2s 196ms/step - accuracy: 0.4355 - loss: 1.6523 - precision: 0.7153 - recall: 0.041113/24 ━━━━━━━━━━━━━━━━━━━━ 2s 196ms/step - accuracy: 0.4331 - loss: 1.6498 - precision: 0.7095 - recall: 0.042214/24 ━━━━━━━━━━━━━━━━━━━━ 1s 197ms/step - accuracy: 0.4309 - loss: 1.6481 - precision: 0.7064 - recall: 0.044015/24 ━━━━━━━━━━━━━━━━━━━━ 1s 198ms/step - accuracy: 0.4285 - loss: 1.6476 - precision: 0.6981 - recall: 0.045517/24 ━━━━━━━━━━━━━━━━━━━━ 1s 189ms/step - accuracy: 0.4246 - loss: 1.6465 - precision: 0.6853 - recall: 0.048518/24 ━━━━━━━━━━━━━━━━━━━━ 1s 190ms/step - accuracy: 0.4232 - loss: 1.6453 - precision: 0.6786 - recall: 0.050319/24 ━━━━━━━━━━━━━━━━━━━━ 0s 191ms/step - accuracy: 0.4219 - loss: 1.6445 - precision: 0.6720 - recall: 0.051920/24 ━━━━━━━━━━━━━━━━━━━━ 0s 192ms/step - accuracy: 0.4208 - loss: 1.6441 - precision: 0.6668 - recall: 0.053721/24 ━━━━━━━━━━━━━━━━━━━━ 0s 193ms/step - accuracy: 0.4197 - loss: 1.6441 - precision: 0.6610 - recall: 0.055422/24 ━━━━━━━━━━━━━━━━━━━━ 0s 193ms/step - accuracy: 0.4187 - loss: 1.6440 - precision: 0.6558 - recall: 0.057323/24 ━━━━━━━━━━━━━━━━━━━━ 0s 193ms/step - accuracy: 0.4175 - loss: 1.6439 - precision: 0.6506 - recall: 0.058924/24 ━━━━━━━━━━━━━━━━━━━━ 0s 193ms/step - accuracy: 0.4165 - loss: 1.6442 - precision: 0.6457 - recall: 0.060224/24 ━━━━━━━━━━━━━━━━━━━━ 5s 224ms/step - accuracy: 0.4155 - loss: 1.6446 - precision: 0.6411 - recall: 0.0614 - val_accuracy: 0.3784 - val_loss: 1.7170 - val_precision: 0.4815 - val_recall: 0.0703
Epoch 13/20
 1/24 ━━━━━━━━━━━━━━━━━━━━ 6s 280ms/step - accuracy: 0.5000 - loss: 1.5144 - precision: 0.8000 - recall: 0.1250 2/24 ━━━━━━━━━━━━━━━━━━━━ 4s 190ms/step - accuracy: 0.4531 - loss: 1.5807 - precision: 0.7571 - recall: 0.1016 3/24 ━━━━━━━━━━━━━━━━━━━━ 4s 192ms/step - accuracy: 0.4479 - loss: 1.5857 - precision: 0.7429 - recall: 0.0851 4/24 ━━━━━━━━━━━━━━━━━━━━ 3s 191ms/step - accuracy: 0.4375 - loss: 1.5920 - precision: 0.7446 - recall: 0.0755 5/24 ━━━━━━━━━━━━━━━━━━━━ 3s 204ms/step - accuracy: 0.4300 - loss: 1.5935 - precision: 0.7496 - recall: 0.0729 6/24 ━━━━━━━━━━━━━━━━━━━━ 3s 202ms/step - accuracy: 0.4226 - loss: 1.5963 - precision: 0.7357 - recall: 0.0694 7/24 ━━━━━━━━━━━━━━━━━━━━ 3s 199ms/step - accuracy: 0.4190 - loss: 1.5961 - precision: 0.7259 - recall: 0.0659 8/24 ━━━━━━━━━━━━━━━━━━━━ 3s 199ms/step - accuracy: 0.4169 - loss: 1.5980 - precision: 0.7147 - recall: 0.0645 9/24 ━━━━━━━━━━━━━━━━━━━━ 3s 200ms/step - accuracy: 0.4157 - loss: 1.5995 - precision: 0.7064 - recall: 0.063510/24 ━━━━━━━━━━━━━━━━━━━━ 2s 202ms/step - accuracy: 0.4129 - loss: 1.6026 - precision: 0.6997 - recall: 0.062211/24 ━━━━━━━━━━━━━━━━━━━━ 2s 203ms/step - accuracy: 0.4115 - loss: 1.6047 - precision: 0.6967 - recall: 0.061212/24 ━━━━━━━━━━━━━━━━━━━━ 2s 203ms/step - accuracy: 0.4109 - loss: 1.6069 - precision: 0.6934 - recall: 0.060613/24 ━━━━━━━━━━━━━━━━━━━━ 2s 202ms/step - accuracy: 0.4105 - loss: 1.6082 - precision: 0.6921 - recall: 0.060214/24 ━━━━━━━━━━━━━━━━━━━━ 2s 204ms/step - accuracy: 0.4100 - loss: 1.6087 - precision: 0.6922 - recall: 0.059915/24 ━━━━━━━━━━━━━━━━━━━━ 1s 204ms/step - accuracy: 0.4099 - loss: 1.6096 - precision: 0.6937 - recall: 0.060116/24 ━━━━━━━━━━━━━━━━━━━━ 1s 204ms/step - accuracy: 0.4096 - loss: 1.6099 - precision: 0.6946 - recall: 0.060517/24 ━━━━━━━━━━━━━━━━━━━━ 1s 204ms/step - accuracy: 0.4093 - loss: 1.6102 - precision: 0.6959 - recall: 0.061018/24 ━━━━━━━━━━━━━━━━━━━━ 2s 392ms/step - accuracy: 0.4093 - loss: 1.6104 - precision: 0.6971 - recall: 0.061819/24 ━━━━━━━━━━━━━━━━━━━━ 1s 382ms/step - accuracy: 0.4098 - loss: 1.6104 - precision: 0.6983 - recall: 0.062820/24 ━━━━━━━━━━━━━━━━━━━━ 1s 374ms/step - accuracy: 0.4102 - loss: 1.6104 - precision: 0.6995 - recall: 0.064122/24 ━━━━━━━━━━━━━━━━━━━━ 0s 352ms/step - accuracy: 0.4108 - loss: 1.6102 - precision: 0.7011 - recall: 0.066923/24 ━━━━━━━━━━━━━━━━━━━━ 0s 348ms/step - accuracy: 0.4109 - loss: 1.6104 - precision: 0.7005 - recall: 0.068424/24 ━━━━━━━━━━━━━━━━━━━━ 0s 344ms/step - accuracy: 0.4107 - loss: 1.6107 - precision: 0.6980 - recall: 0.069924/24 ━━━━━━━━━━━━━━━━━━━━ 9s 378ms/step - accuracy: 0.4106 - loss: 1.6110 - precision: 0.6956 - recall: 0.0713 - val_accuracy: 0.3838 - val_loss: 1.7631 - val_precision: 0.5789 - val_recall: 0.2378
Epoch 14/20
 1/24 ━━━━━━━━━━━━━━━━━━━━ 6s 277ms/step - accuracy: 0.3750 - loss: 1.5465 - precision: 0.7273 - recall: 0.2500 2/24 ━━━━━━━━━━━━━━━━━━━━ 4s 211ms/step - accuracy: 0.4062 - loss: 1.5341 - precision: 0.6761 - recall: 0.2422 3/24 ━━━━━━━━━━━━━━━━━━━━ 4s 217ms/step - accuracy: 0.4201 - loss: 1.5289 - precision: 0.6664 - recall: 0.2378 4/24 ━━━━━━━━━━━━━━━━━━━━ 4s 213ms/step - accuracy: 0.4186 - loss: 1.5283 - precision: 0.6609 - recall: 0.2350 5/24 ━━━━━━━━━━━━━━━━━━━━ 4s 219ms/step - accuracy: 0.4174 - loss: 1.5325 - precision: 0.6608 - recall: 0.2293 6/24 ━━━━━━━━━━━━━━━━━━━━ 3s 218ms/step - accuracy: 0.4147 - loss: 1.5379 - precision: 0.6578 - recall: 0.2223 7/24 ━━━━━━━━━━━━━━━━━━━━ 3s 216ms/step - accuracy: 0.4147 - loss: 1.5395 - precision: 0.6531 - recall: 0.2161 8/24 ━━━━━━━━━━━━━━━━━━━━ 3s 216ms/step - accuracy: 0.4127 - loss: 1.5434 - precision: 0.6487 - recall: 0.2096 9/24 ━━━━━━━━━━━━━━━━━━━━ 3s 215ms/step - accuracy: 0.4097 - loss: 1.5510 - precision: 0.6457 - recall: 0.204010/24 ━━━━━━━━━━━━━━━━━━━━ 2s 213ms/step - accuracy: 0.4071 - loss: 1.5569 - precision: 0.6444 - recall: 0.199211/24 ━━━━━━━━━━━━━━━━━━━━ 2s 211ms/step - accuracy: 0.4050 - loss: 1.5631 - precision: 0.6435 - recall: 0.194612/24 ━━━━━━━━━━━━━━━━━━━━ 2s 212ms/step - accuracy: 0.4036 - loss: 1.5681 - precision: 0.6423 - recall: 0.190513/24 ━━━━━━━━━━━━━━━━━━━━ 2s 210ms/step - accuracy: 0.4027 - loss: 1.5723 - precision: 0.6408 - recall: 0.186614/24 ━━━━━━━━━━━━━━━━━━━━ 2s 209ms/step - accuracy: 0.4018 - loss: 1.5757 - precision: 0.6398 - recall: 0.183115/24 ━━━━━━━━━━━━━━━━━━━━ 1s 209ms/step - accuracy: 0.4014 - loss: 1.5778 - precision: 0.6394 - recall: 0.180116/24 ━━━━━━━━━━━━━━━━━━━━ 1s 209ms/step - accuracy: 0.4011 - loss: 1.5791 - precision: 0.6394 - recall: 0.177017/24 ━━━━━━━━━━━━━━━━━━━━ 1s 211ms/step - accuracy: 0.4012 - loss: 1.5801 - precision: 0.6394 - recall: 0.174318/24 ━━━━━━━━━━━━━━━━━━━━ 1s 212ms/step - accuracy: 0.4013 - loss: 1.5811 - precision: 0.6393 - recall: 0.171919/24 ━━━━━━━━━━━━━━━━━━━━ 1s 213ms/step - accuracy: 0.4010 - loss: 1.5822 - precision: 0.6392 - recall: 0.169520/24 ━━━━━━━━━━━━━━━━━━━━ 0s 214ms/step - accuracy: 0.4005 - loss: 1.5838 - precision: 0.6385 - recall: 0.167321/24 ━━━━━━━━━━━━━━━━━━━━ 0s 215ms/step - accuracy: 0.4006 - loss: 1.5847 - precision: 0.6383 - recall: 0.165422/24 ━━━━━━━━━━━━━━━━━━━━ 0s 215ms/step - accuracy: 0.4007 - loss: 1.5856 - precision: 0.6380 - recall: 0.163623/24 ━━━━━━━━━━━━━━━━━━━━ 0s 214ms/step - accuracy: 0.4006 - loss: 1.5866 - precision: 0.6376 - recall: 0.1620 
 
WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`.  
 
24/24 ━━━━━━━━━━━━━━━━━━━━ 6s 241ms/step - accuracy: 0.4007 - loss: 1.5882 - precision: 0.6368 - recall: 0.1594 - val_accuracy: 0.4216 - val_loss: 1.6771 - val_precision: 0.6290 - val_recall: 0.2108
Epoch 15/20
 1/24 ━━━━━━━━━━━━━━━━━━━━ 7s 325ms/step - accuracy: 0.4062 - loss: 1.4933 - precision: 0.7000 - recall: 0.2188 2/24 ━━━━━━━━━━━━━━━━━━━━ 5s 234ms/step - accuracy: 0.3750 - loss: 1.6112 - precision: 0.6227 - recall: 0.2031 3/24 ━━━━━━━━━━━━━━━━━━━━ 4s 227ms/step - accuracy: 0.3854 - loss: 1.6194 - precision: 0.6056 - recall: 0.2049 4/24 ━━━━━━━━━━━━━━━━━━━━ 4s 218ms/step - accuracy: 0.3887 - loss: 1.6325 - precision: 0.5987 - recall: 0.2044 5/24 ━━━━━━━━━━━━━━━━━━━━ 4s 211ms/step - accuracy: 0.3959 - loss: 1.6308 - precision: 0.5932 - recall: 0.2035 6/24 ━━━━━━━━━━━━━━━━━━━━ 3s 213ms/step - accuracy: 0.3994 - loss: 1.6314 - precision: 0.5889 - recall: 0.2026 7/24 ━━━━━━━━━━━━━━━━━━━━ 3s 187ms/step - accuracy: 0.4009 - loss: 1.6323 - precision: 0.5834 - recall: 0.2008 8/24 ━━━━━━━━━━━━━━━━━━━━ 3s 191ms/step - accuracy: 0.4025 - loss: 1.6292 - precision: 0.5803 - recall: 0.1989 9/24 ━━━━━━━━━━━━━━━━━━━━ 2s 192ms/step - accuracy: 0.4049 - loss: 1.6250 - precision: 0.5781 - recall: 0.198210/24 ━━━━━━━━━━━━━━━━━━━━ 2s 193ms/step - accuracy: 0.4077 - loss: 1.6201 - precision: 0.5791 - recall: 0.198711/24 ━━━━━━━━━━━━━━━━━━━━ 2s 196ms/step - accuracy: 0.4089 - loss: 1.6168 - precision: 0.5798 - recall: 0.198412/24 ━━━━━━━━━━━━━━━━━━━━ 2s 195ms/step - accuracy: 0.4086 - loss: 1.6157 - precision: 0.5797 - recall: 0.197313/24 ━━━━━━━━━━━━━━━━━━━━ 2s 195ms/step - accuracy: 0.4084 - loss: 1.6156 - precision: 0.5798 - recall: 0.196114/24 ━━━━━━━━━━━━━━━━━━━━ 1s 194ms/step - accuracy: 0.4075 - loss: 1.6157 - precision: 0.5806 - recall: 0.194715/24 ━━━━━━━━━━━━━━━━━━━━ 1s 195ms/step - accuracy: 0.4077 - loss: 1.6147 - precision: 0.5825 - recall: 0.193616/24 ━━━━━━━━━━━━━━━━━━━━ 1s 196ms/step - accuracy: 0.4079 - loss: 1.6132 - precision: 0.5845 - recall: 0.192117/24 ━━━━━━━━━━━━━━━━━━━━ 1s 196ms/step - accuracy: 0.4079 - loss: 1.6119 - precision: 0.5867 - recall: 0.190718/24 ━━━━━━━━━━━━━━━━━━━━ 1s 196ms/step - accuracy: 0.4078 - loss: 1.6111 - precision: 0.5888 - recall: 0.188919/24 ━━━━━━━━━━━━━━━━━━━━ 0s 196ms/step - accuracy: 0.4078 - loss: 1.6101 - precision: 0.5907 - recall: 0.187320/24 ━━━━━━━━━━━━━━━━━━━━ 0s 196ms/step - accuracy: 0.4081 - loss: 1.6093 - precision: 0.5926 - recall: 0.185721/24 ━━━━━━━━━━━━━━━━━━━━ 0s 196ms/step - accuracy: 0.4085 - loss: 1.6088 - precision: 0.5935 - recall: 0.184122/24 ━━━━━━━━━━━━━━━━━━━━ 0s 196ms/step - accuracy: 0.4090 - loss: 1.6083 - precision: 0.5941 - recall: 0.182423/24 ━━━━━━━━━━━━━━━━━━━━ 0s 196ms/step - accuracy: 0.4094 - loss: 1.6078 - precision: 0.5948 - recall: 0.180824/24 ━━━━━━━━━━━━━━━━━━━━ 0s 196ms/step - accuracy: 0.4099 - loss: 1.6074 - precision: 0.5954 - recall: 0.179224/24 ━━━━━━━━━━━━━━━━━━━━ 6s 227ms/step - accuracy: 0.4103 - loss: 1.6071 - precision: 0.5960 - recall: 0.1777 - val_accuracy: 0.4000 - val_loss: 1.7387 - val_precision: 0.4242 - val_recall: 0.0757
Epoch 16/20
 1/24 ━━━━━━━━━━━━━━━━━━━━ 7s 305ms/step - accuracy: 0.3125 - loss: 1.7572 - precision: 0.6000 - recall: 0.0938 2/24 ━━━━━━━━━━━━━━━━━━━━ 4s 195ms/step - accuracy: 0.3750 - loss: 1.6721 - precision: 0.6750 - recall: 0.0938 3/24 ━━━━━━━━━━━━━━━━━━━━ 4s 192ms/step - accuracy: 0.3993 - loss: 1.6273 - precision: 0.7000 - recall: 0.0938 5/24 ━━━━━━━━━━━━━━━━━━━━ 3s 162ms/step - accuracy: 0.4046 - loss: 1.5914 - precision: 0.7200 - recall: 0.0956 6/24 ━━━━━━━━━━━━━━━━━━━━ 3s 172ms/step - accuracy: 0.4086 - loss: 1.5832 - precision: 0.7250 - recall: 0.1005 7/24 ━━━━━━━━━━━━━━━━━━━━ 3s 177ms/step - accuracy: 0.4088 - loss: 1.5754 - precision: 0.7235 - recall: 0.1040 8/24 ━━━━━━━━━━━━━━━━━━━━ 2s 180ms/step - accuracy: 0.4116 - loss: 1.5669 - precision: 0.7260 - recall: 0.1066 9/24 ━━━━━━━━━━━━━━━━━━━━ 2s 184ms/step - accuracy: 0.4138 - loss: 1.5618 - precision: 0.7280 - recall: 0.108310/24 ━━━━━━━━━━━━━━━━━━━━ 2s 185ms/step - accuracy: 0.4184 - loss: 1.5544 - precision: 0.7307 - recall: 0.109911/24 ━━━━━━━━━━━━━━━━━━━━ 2s 187ms/step - accuracy: 0.4230 - loss: 1.5471 - precision: 0.7347 - recall: 0.113212/24 ━━━━━━━━━━━━━━━━━━━━ 2s 189ms/step - accuracy: 0.4271 - loss: 1.5404 - precision: 0.7388 - recall: 0.117213/24 ━━━━━━━━━━━━━━━━━━━━ 2s 190ms/step - accuracy: 0.4310 - loss: 1.5348 - precision: 0.7408 - recall: 0.121014/24 ━━━━━━━━━━━━━━━━━━━━ 1s 191ms/step - accuracy: 0.4329 - loss: 1.5323 - precision: 0.7391 - recall: 0.123415/24 ━━━━━━━━━━━━━━━━━━━━ 1s 192ms/step - accuracy: 0.4340 - loss: 1.5316 - precision: 0.7358 - recall: 0.125616/24 ━━━━━━━━━━━━━━━━━━━━ 1s 192ms/step - accuracy: 0.4347 - loss: 1.5320 - precision: 0.7320 - recall: 0.128117/24 ━━━━━━━━━━━━━━━━━━━━ 1s 193ms/step - accuracy: 0.4347 - loss: 1.5332 - precision: 0.7277 - recall: 0.130418/24 ━━━━━━━━━━━━━━━━━━━━ 1s 193ms/step - accuracy: 0.4345 - loss: 1.5355 - precision: 0.7223 - recall: 0.132419/24 ━━━━━━━━━━━━━━━━━━━━ 0s 196ms/step - accuracy: 0.4344 - loss: 1.5377 - precision: 0.7174 - recall: 0.134420/24 ━━━━━━━━━━━━━━━━━━━━ 0s 197ms/step - accuracy: 0.4342 - loss: 1.5394 - precision: 0.7133 - recall: 0.136121/24 ━━━━━━━━━━━━━━━━━━━━ 0s 198ms/step - accuracy: 0.4339 - loss: 1.5415 - precision: 0.7092 - recall: 0.137422/24 ━━━━━━━━━━━━━━━━━━━━ 0s 198ms/step - accuracy: 0.4335 - loss: 1.5437 - precision: 0.7053 - recall: 0.138423/24 ━━━━━━━━━━━━━━━━━━━━ 0s 198ms/step - accuracy: 0.4332 - loss: 1.5456 - precision: 0.7018 - recall: 0.139224/24 ━━━━━━━━━━━━━━━━━━━━ 0s 198ms/step - accuracy: 0.4331 - loss: 1.5473 - precision: 0.6988 - recall: 0.139924/24 ━━━━━━━━━━━━━━━━━━━━ 6s 232ms/step - accuracy: 0.4329 - loss: 1.5488 - precision: 0.6961 - recall: 0.1405 - val_accuracy: 0.3568 - val_loss: 1.7556 - val_precision: 0.3750 - val_recall: 0.0486
Epoch 17/20
 1/24 ━━━━━━━━━━━━━━━━━━━━ 8s 372ms/step - accuracy: 0.3750 - loss: 1.8425 - precision: 0.6000 - recall: 0.0938 2/24 ━━━━━━━━━━━━━━━━━━━━ 6s 292ms/step - accuracy: 0.3594 - loss: 1.7887 - precision: 0.6125 - recall: 0.0859 3/24 ━━━━━━━━━━━━━━━━━━━━ 5s 273ms/step - accuracy: 0.3854 - loss: 1.7340 - precision: 0.6391 - recall: 0.0885 4/24 ━━━━━━━━━━━━━━━━━━━━ 6s 305ms/step - accuracy: 0.4023 - loss: 1.6997 - precision: 0.6512 - recall: 0.0879 5/24 ━━━━━━━━━━━━━━━━━━━━ 5s 304ms/step - accuracy: 0.4094 - loss: 1.6780 - precision: 0.6610 - recall: 0.0878 6/24 ━━━━━━━━━━━━━━━━━━━━ 5s 299ms/step - accuracy: 0.4123 - loss: 1.6688 - precision: 0.6740 - recall: 0.0879 7/24 ━━━━━━━━━━━━━━━━━━━━ 5s 303ms/step - accuracy: 0.4159 - loss: 1.6610 - precision: 0.6748 - recall: 0.0862 8/24 ━━━━━━━━━━━━━━━━━━━━ 4s 293ms/step - accuracy: 0.4186 - loss: 1.6542 - precision: 0.6785 - recall: 0.0847 9/24 ━━━━━━━━━━━━━━━━━━━━ 4s 289ms/step - accuracy: 0.4211 - loss: 1.6460 - precision: 0.6819 - recall: 0.083810/24 ━━━━━━━━━━━━━━━━━━━━ 4s 294ms/step - accuracy: 0.4227 - loss: 1.6390 - precision: 0.6860 - recall: 0.083511/24 ━━━━━━━━━━━━━━━━━━━━ 3s 289ms/step - accuracy: 0.4228 - loss: 1.6345 - precision: 0.6901 - recall: 0.083712/24 ━━━━━━━━━━━━━━━━━━━━ 3s 285ms/step - accuracy: 0.4238 - loss: 1.6314 - precision: 0.6956 - recall: 0.084114/24 ━━━━━━━━━━━━━━━━━━━━ 2s 262ms/step - accuracy: 0.4251 - loss: 1.6261 - precision: 0.7010 - recall: 0.085415/24 ━━━━━━━━━━━━━━━━━━━━ 2s 258ms/step - accuracy: 0.4248 - loss: 1.6246 - precision: 0.6991 - recall: 0.086316/24 ━━━━━━━━━━━━━━━━━━━━ 2s 254ms/step - accuracy: 0.4240 - loss: 1.6240 - precision: 0.6952 - recall: 0.087417/24 ━━━━━━━━━━━━━━━━━━━━ 1s 251ms/step - accuracy: 0.4236 - loss: 1.6226 - precision: 0.6919 - recall: 0.089318/24 ━━━━━━━━━━━━━━━━━━━━ 1s 248ms/step - accuracy: 0.4236 - loss: 1.6208 - precision: 0.6882 - recall: 0.090819/24 ━━━━━━━━━━━━━━━━━━━━ 1s 246ms/step - accuracy: 0.4238 - loss: 1.6187 - precision: 0.6850 - recall: 0.092720/24 ━━━━━━━━━━━━━━━━━━━━ 0s 245ms/step - accuracy: 0.4243 - loss: 1.6159 - precision: 0.6827 - recall: 0.095021/24 ━━━━━━━━━━━━━━━━━━━━ 0s 244ms/step - accuracy: 0.4248 - loss: 1.6133 - precision: 0.6813 - recall: 0.097522/24 ━━━━━━━━━━━━━━━━━━━━ 0s 242ms/step - accuracy: 0.4249 - loss: 1.6117 - precision: 0.6800 - recall: 0.099923/24 ━━━━━━━━━━━━━━━━━━━━ 0s 242ms/step - accuracy: 0.4249 - loss: 1.6100 - precision: 0.6788 - recall: 0.102024/24 ━━━━━━━━━━━━━━━━━━━━ 0s 241ms/step - accuracy: 0.4252 - loss: 1.6084 - precision: 0.6777 - recall: 0.104224/24 ━━━━━━━━━━━━━━━━━━━━ 7s 276ms/step - accuracy: 0.4255 - loss: 1.6069 - precision: 0.6767 - recall: 0.1062 - val_accuracy: 0.3784 - val_loss: 1.7572 - val_precision: 0.4048 - val_recall: 0.0919
Epoch 18/20
 1/24 ━━━━━━━━━━━━━━━━━━━━ 7s 317ms/step - accuracy: 0.4062 - loss: 1.4917 - precision: 0.6667 - recall: 0.0625 2/24 ━━━━━━━━━━━━━━━━━━━━ 5s 235ms/step - accuracy: 0.4297 - loss: 1.5140 - precision: 0.6667 - recall: 0.0781 3/24 ━━━━━━━━━━━━━━━━━━━━ 4s 225ms/step - accuracy: 0.4392 - loss: 1.5319 - precision: 0.6508 - recall: 0.0972 4/24 ━━━━━━━━━━━━━━━━━━━━ 4s 220ms/step - accuracy: 0.4466 - loss: 1.5412 - precision: 0.6381 - recall: 0.1081 5/24 ━━━━━━━━━━━━━━━━━━━━ 4s 219ms/step - accuracy: 0.4485 - loss: 1.5401 - precision: 0.6399 - recall: 0.1140 6/24 ━━━━━━━━━━━━━━━━━━━━ 3s 219ms/step - accuracy: 0.4484 - loss: 1.5447 - precision: 0.6416 - recall: 0.1175 7/24 ━━━━━━━━━━━━━━━━━━━━ 3s 216ms/step - accuracy: 0.4482 - loss: 1.5471 - precision: 0.6431 - recall: 0.1199 8/24 ━━━━━━━━━━━━━━━━━━━━ 3s 213ms/step - accuracy: 0.4473 - loss: 1.5491 - precision: 0.6476 - recall: 0.1225 9/24 ━━━━━━━━━━━━━━━━━━━━ 3s 213ms/step - accuracy: 0.4454 - loss: 1.5495 - precision: 0.6468 - recall: 0.124710/24 ━━━━━━━━━━━━━━━━━━━━ 2s 213ms/step - accuracy: 0.4437 - loss: 1.5477 - precision: 0.6479 - recall: 0.126611/24 ━━━━━━━━━━━━━━━━━━━━ 2s 215ms/step - accuracy: 0.4431 - loss: 1.5454 - precision: 0.6488 - recall: 0.128512/24 ━━━━━━━━━━━━━━━━━━━━ 2s 214ms/step - accuracy: 0.4435 - loss: 1.5436 - precision: 0.6493 - recall: 0.130213/24 ━━━━━━━━━━━━━━━━━━━━ 2s 213ms/step - accuracy: 0.4438 - loss: 1.5422 - precision: 0.6515 - recall: 0.132214/24 ━━━━━━━━━━━━━━━━━━━━ 2s 212ms/step - accuracy: 0.4437 - loss: 1.5409 - precision: 0.6528 - recall: 0.133715/24 ━━━━━━━━━━━━━━━━━━━━ 1s 213ms/step - accuracy: 0.4434 - loss: 1.5404 - precision: 0.6549 - recall: 0.135116/24 ━━━━━━━━━━━━━━━━━━━━ 1s 203ms/step - accuracy: 0.4432 - loss: 1.5407 - precision: 0.6564 - recall: 0.136117/24 ━━━━━━━━━━━━━━━━━━━━ 1s 203ms/step - accuracy: 0.4426 - loss: 1.5415 - precision: 0.6564 - recall: 0.136918/24 ━━━━━━━━━━━━━━━━━━━━ 1s 203ms/step - accuracy: 0.4424 - loss: 1.5421 - precision: 0.6567 - recall: 0.137819/24 ━━━━━━━━━━━━━━━━━━━━ 1s 203ms/step - accuracy: 0.4423 - loss: 1.5421 - precision: 0.6567 - recall: 0.138520/24 ━━━━━━━━━━━━━━━━━━━━ 1s 361ms/step - accuracy: 0.4421 - loss: 1.5426 - precision: 0.6566 - recall: 0.139121/24 ━━━━━━━━━━━━━━━━━━━━ 1s 353ms/step - accuracy: 0.4417 - loss: 1.5431 - precision: 0.6566 - recall: 0.139522/24 ━━━━━━━━━━━━━━━━━━━━ 0s 346ms/step - accuracy: 0.4414 - loss: 1.5436 - precision: 0.6566 - recall: 0.139823/24 ━━━━━━━━━━━━━━━━━━━━ 0s 339ms/step - accuracy: 0.4410 - loss: 1.5442 - precision: 0.6567 - recall: 0.140024/24 ━━━━━━━━━━━━━━━━━━━━ 0s 333ms/step - accuracy: 0.4404 - loss: 1.5448 - precision: 0.6570 - recall: 0.140124/24 ━━━━━━━━━━━━━━━━━━━━ 9s 370ms/step - accuracy: 0.4398 - loss: 1.5454 - precision: 0.6572 - recall: 0.1402 - val_accuracy: 0.4000 - val_loss: 1.6811 - val_precision: 0.5312 - val_recall: 0.0919
Epoch 19/20
 1/24 ━━━━━━━━━━━━━━━━━━━━ 2s 104ms/step - accuracy: 0.3750 - loss: 1.3887 - precision: 1.0000 - recall: 0.1250 2/24 ━━━━━━━━━━━━━━━━━━━━ 6s 288ms/step - accuracy: 0.4125 - loss: 1.3765 - precision: 0.9000 - recall: 0.1125 3/24 ━━━━━━━━━━━━━━━━━━━━ 5s 256ms/step - accuracy: 0.4185 - loss: 1.4361 - precision: 0.8667 - recall: 0.1120 4/24 ━━━━━━━━━━━━━━━━━━━━ 4s 240ms/step - accuracy: 0.4365 - loss: 1.4591 - precision: 0.8583 - recall: 0.1081 5/24 ━━━━━━━━━━━━━━━━━━━━ 4s 233ms/step - accuracy: 0.4433 - loss: 1.4707 - precision: 0.8412 - recall: 0.1115 6/24 ━━━━━━━━━━━━━━━━━━━━ 4s 236ms/step - accuracy: 0.4458 - loss: 1.4816 - precision: 0.8274 - recall: 0.1147 7/24 ━━━━━━━━━━━━━━━━━━━━ 3s 233ms/step - accuracy: 0.4471 - loss: 1.4875 - precision: 0.8107 - recall: 0.1176 8/24 ━━━━━━━━━━━━━━━━━━━━ 3s 230ms/step - accuracy: 0.4462 - loss: 1.4930 - precision: 0.7945 - recall: 0.1201 9/24 ━━━━━━━━━━━━━━━━━━━━ 3s 227ms/step - accuracy: 0.4463 - loss: 1.4964 - precision: 0.7840 - recall: 0.121510/24 ━━━━━━━━━━━━━━━━━━━━ 3s 230ms/step - accuracy: 0.4456 - loss: 1.5014 - precision: 0.7741 - recall: 0.121911/24 ━━━━━━━━━━━━━━━━━━━━ 3s 231ms/step - accuracy: 0.4439 - loss: 1.5090 - precision: 0.7644 - recall: 0.121912/24 ━━━━━━━━━━━━━━━━━━━━ 2s 229ms/step - accuracy: 0.4439 - loss: 1.5128 - precision: 0.7579 - recall: 0.122413/24 ━━━━━━━━━━━━━━━━━━━━ 2s 227ms/step - accuracy: 0.4429 - loss: 1.5166 - precision: 0.7529 - recall: 0.123214/24 ━━━━━━━━━━━━━━━━━━━━ 2s 229ms/step - accuracy: 0.4423 - loss: 1.5192 - precision: 0.7488 - recall: 0.124015/24 ━━━━━━━━━━━━━━━━━━━━ 2s 228ms/step - accuracy: 0.4416 - loss: 1.5218 - precision: 0.7445 - recall: 0.124916/24 ━━━━━━━━━━━━━━━━━━━━ 1s 227ms/step - accuracy: 0.4413 - loss: 1.5235 - precision: 0.7410 - recall: 0.125617/24 ━━━━━━━━━━━━━━━━━━━━ 1s 226ms/step - accuracy: 0.4408 - loss: 1.5247 - precision: 0.7385 - recall: 0.126318/24 ━━━━━━━━━━━━━━━━━━━━ 1s 227ms/step - accuracy: 0.4409 - loss: 1.5249 - precision: 0.7358 - recall: 0.126919/24 ━━━━━━━━━━━━━━━━━━━━ 1s 229ms/step - accuracy: 0.4414 - loss: 1.5249 - precision: 0.7334 - recall: 0.127820/24 ━━━━━━━━━━━━━━━━━━━━ 0s 229ms/step - accuracy: 0.4418 - loss: 1.5245 - precision: 0.7316 - recall: 0.129021/24 ━━━━━━━━━━━━━━━━━━━━ 0s 228ms/step - accuracy: 0.4420 - loss: 1.5249 - precision: 0.7297 - recall: 0.130122/24 ━━━━━━━━━━━━━━━━━━━━ 0s 229ms/step - accuracy: 0.4421 - loss: 1.5252 - precision: 0.7279 - recall: 0.131323/24 ━━━━━━━━━━━━━━━━━━━━ 0s 227ms/step - accuracy: 0.4420 - loss: 1.5260 - precision: 0.7260 - recall: 0.132524/24 ━━━━━━━━━━━━━━━━━━━━ 0s 226ms/step - accuracy: 0.4420 - loss: 1.5266 - precision: 0.7239 - recall: 0.1335 
 
WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`.  
 
24/24 ━━━━━━━━━━━━━━━━━━━━ 6s 268ms/step - accuracy: 0.4420 - loss: 1.5273 - precision: 0.7220 - recall: 0.1345 - val_accuracy: 0.4216 - val_loss: 1.6487 - val_precision: 0.6667 - val_recall: 0.1946
Epoch 20/20
 1/24 ━━━━━━━━━━━━━━━━━━━━ 10s 443ms/step - accuracy: 0.5000 - loss: 1.3198 - precision: 0.7273 - recall: 0.2500 2/24 ━━━━━━━━━━━━━━━━━━━━ 7s 332ms/step - accuracy: 0.5156 - loss: 1.3002 - precision: 0.7684 - recall: 0.2578  3/24 ━━━━━━━━━━━━━━━━━━━━ 6s 298ms/step - accuracy: 0.5104 - loss: 1.3060 - precision: 0.7766 - recall: 0.2517 4/24 ━━━━━━━━━━━━━━━━━━━━ 6s 305ms/step - accuracy: 0.5039 - loss: 1.3223 - precision: 0.7719 - recall: 0.2376 5/24 ━━━━━━━━━━━━━━━━━━━━ 5s 294ms/step - accuracy: 0.4994 - loss: 1.3367 - precision: 0.7675 - recall: 0.2314 6/24 ━━━━━━━━━━━━━━━━━━━━ 5s 281ms/step - accuracy: 0.4908 - loss: 1.3596 - precision: 0.7618 - recall: 0.2214 7/24 ━━━━━━━━━━━━━━━━━━━━ 4s 272ms/step - accuracy: 0.4838 - loss: 1.3746 - precision: 0.7569 - recall: 0.2153 8/24 ━━━━━━━━━━━━━━━━━━━━ 4s 264ms/step - accuracy: 0.4795 - loss: 1.3856 - precision: 0.7526 - recall: 0.2114 9/24 ━━━━━━━━━━━━━━━━━━━━ 3s 256ms/step - accuracy: 0.4768 - loss: 1.3944 - precision: 0.7502 - recall: 0.209910/24 ━━━━━━━━━━━━━━━━━━━━ 3s 250ms/step - accuracy: 0.4747 - loss: 1.4038 - precision: 0.7496 - recall: 0.208911/24 ━━━━━━━━━━━━━━━━━━━━ 3s 246ms/step - accuracy: 0.4747 - loss: 1.4100 - precision: 0.7499 - recall: 0.209512/24 ━━━━━━━━━━━━━━━━━━━━ 2s 242ms/step - accuracy: 0.4738 - loss: 1.4149 - precision: 0.7486 - recall: 0.210113/24 ━━━━━━━━━━━━━━━━━━━━ 2s 239ms/step - accuracy: 0.4728 - loss: 1.4192 - precision: 0.7460 - recall: 0.210214/24 ━━━━━━━━━━━━━━━━━━━━ 2s 236ms/step - accuracy: 0.4720 - loss: 1.4231 - precision: 0.7445 - recall: 0.209815/24 ━━━━━━━━━━━━━━━━━━━━ 2s 232ms/step - accuracy: 0.4714 - loss: 1.4267 - precision: 0.7432 - recall: 0.209716/24 ━━━━━━━━━━━━━━━━━━━━ 1s 231ms/step - accuracy: 0.4706 - loss: 1.4304 - precision: 0.7417 - recall: 0.209417/24 ━━━━━━━━━━━━━━━━━━━━ 1s 228ms/step - accuracy: 0.4700 - loss: 1.4340 - precision: 0.7393 - recall: 0.208818/24 ━━━━━━━━━━━━━━━━━━━━ 1s 226ms/step - accuracy: 0.4694 - loss: 1.4374 - precision: 0.7369 - recall: 0.208019/24 ━━━━━━━━━━━━━━━━━━━━ 1s 224ms/step - accuracy: 0.4688 - loss: 1.4407 - precision: 0.7343 - recall: 0.207020/24 ━━━━━━━━━━━━━━━━━━━━ 0s 223ms/step - accuracy: 0.4680 - loss: 1.4439 - precision: 0.7322 - recall: 0.206121/24 ━━━━━━━━━━━━━━━━━━━━ 0s 223ms/step - accuracy: 0.4670 - loss: 1.4474 - precision: 0.7305 - recall: 0.205122/24 ━━━━━━━━━━━━━━━━━━━━ 0s 221ms/step - accuracy: 0.4658 - loss: 1.4510 - precision: 0.7286 - recall: 0.203924/24 ━━━━━━━━━━━━━━━━━━━━ 0s 213ms/step - accuracy: 0.4640 - loss: 1.4567 - precision: 0.7254 - recall: 0.201724/24 ━━━━━━━━━━━━━━━━━━━━ 6s 247ms/step - accuracy: 0.4634 - loss: 1.4588 - precision: 0.7241 - recall: 0.2008 - val_accuracy: 0.3568 - val_loss: 1.7337 - val_precision: 0.5094 - val_recall: 0.1459 
 
 
def  plot_accuracy_loss(history): 
     """  
    Plot the accuracy and the loss during the training of the CNN.  
    """  
     fig =  plt.figure(figsize= (10 ,5 )) 
 
     # Plot accuracy  
     plt.subplot(221 ) 
     plt.plot(history.history['accuracy' ], 'bo--' , label =  "acc" ) 
     plt.plot(history.history['val_accuracy' ], 'ro--' , label =  "val_acc" ) 
     plt.title("train_acc vs val_acc" ) 
     plt.ylabel("accuracy" ) 
     plt.xlabel("epochs" ) 
     plt.legend() 
 
     # Plot loss function  
     plt.subplot(222 ) 
     plt.plot(history.history['loss' ],'bo--' , label =  "loss" ) 
     plt.plot(history.history['val_loss' ], 'ro--' , label =  "val_loss" ) 
     plt.title("train_loss vs val_loss" ) 
     plt.ylabel("loss" ) 
     plt.xlabel("epochs" ) 
 
     plt.legend() 
     plt.show() 
 
 plot_accuracy_loss(history) 
 
 
Evaluate the Model 
 best_model =  save_model(model, "best_model.keras" ) 
 
# Load the model, including both architecture and weights  
 saved_model =  load_model('best_model.keras' ) 
 
 results =  saved_model.evaluate(test_images) 
print (f"Test Loss:  { results[0 ]:.4f} " ) 
print (f"Test Accuracy:  { results[1 ]* 100 :.2f}  %" ) 
print (f"Test Precision:  { results[2 ]* 100 :.2f}  %" ) 
1/8 ━━━━━━━━━━━━━━━━━━━━ 3s 553ms/step - accuracy: 0.5000 - loss: 1.4016 - precision: 1.0000 - recall: 0.18752/8 ━━━━━━━━━━━━━━━━━━━━ 0s 120ms/step - accuracy: 0.4844 - loss: 1.4480 - precision: 0.9118 - recall: 0.20313/8 ━━━━━━━━━━━━━━━━━━━━ 0s 133ms/step - accuracy: 0.4757 - loss: 1.4687 - precision: 0.8345 - recall: 0.19444/8 ━━━━━━━━━━━━━━━━━━━━ 0s 136ms/step - accuracy: 0.4720 - loss: 1.4834 - precision: 0.7545 - recall: 0.18105/8 ━━━━━━━━━━━━━━━━━━━━ 0s 144ms/step - accuracy: 0.4676 - loss: 1.4973 - precision: 0.7102 - recall: 0.17486/8 ━━━━━━━━━━━━━━━━━━━━ 0s 144ms/step - accuracy: 0.4635 - loss: 1.5156 - precision: 0.6768 - recall: 0.16917/8 ━━━━━━━━━━━━━━━━━━━━ 0s 151ms/step - accuracy: 0.4604 - loss: 1.5258 - precision: 0.6563 - recall: 0.16538/8 ━━━━━━━━━━━━━━━━━━━━ 2s 137ms/step - accuracy: 0.4554 - loss: 1.5386 - precision: 0.6287 - recall: 0.1601
Test Loss: 1.5836
Test Accuracy: 43.78 %
Test Precision: 53.23 % 
 
 
 
Plot Heatmap of the Confusion Matrix and Print Classification Report 
 predictions =  np.argmax(model.predict(test_images), axis= 1 ) 
 
 cm =  confusion_matrix(test_images.labels, predictions) 
 report =  classification_report(test_images.labels, predictions, target_names= list (train_images.class_indices.keys())) 
 
 plt.figure(figsize= (12 , 12 )) 
 sns.heatmap(cm, annot= True , fmt= 'g' , vmin= 0 , cmap= 'Greens' , cbar= False ) 
 plt.xticks(ticks= np.arange(9 ) +  0.5 , labels= list (train_images.class_indices.keys())) 
 plt.yticks(ticks= np.arange(9 ) +  0.5 , labels= list (train_images.class_indices.keys())) 
 plt.xlabel("Predicted" ) 
 plt.ylabel("Actual" ) 
 plt.title("Confusion Matrix" ) 
 plt.show() 
print (" \n " ) 
print ("Classification Report: \n ---------------------- \n " , report) 
1/8 ━━━━━━━━━━━━━━━━━━━━ 1s 236ms/step2/8 ━━━━━━━━━━━━━━━━━━━━ 0s 110ms/step3/8 ━━━━━━━━━━━━━━━━━━━━ 0s 115ms/step4/8 ━━━━━━━━━━━━━━━━━━━━ 0s 115ms/step5/8 ━━━━━━━━━━━━━━━━━━━━ 0s 120ms/step6/8 ━━━━━━━━━━━━━━━━━━━━ 0s 123ms/step7/8 ━━━━━━━━━━━━━━━━━━━━ 0s 122ms/step8/8 ━━━━━━━━━━━━━━━━━━━━ 0s 114ms/step8/8 ━━━━━━━━━━━━━━━━━━━━ 1s 115ms/step 
 
Classification Report:
----------------------
                  precision    recall  f1-score   support
           buoy       0.00      0.00      0.00        12
    cruise_ship       0.36      0.10      0.16        39
     ferry_boat       0.00      0.00      0.00        12
   freight_boat       0.00      0.00      0.00         4
        gondola       0.51      0.78      0.62        45
inflatable_boat       0.00      0.00      0.00         4
          kayak       0.43      0.39      0.41        38
     paper_boat       0.00      0.00      0.00         6
       sailboat       0.40      0.66      0.50        73
       accuracy                           0.44       233
      macro avg       0.19      0.21      0.19       233
   weighted avg       0.36      0.44      0.37       233
 
 
 
 
 
Section 2: Transfer Learning via MobileNetV2 
Create a new dataset to use with the MobileNetV2 pre-trained model 
 mn_train_df, mn_test_df =  train_test_split(image_df, train_size= 0.7 , shuffle= True , random_state= 1 ) 
 
 
Load the Image Data 
 mn_train_generator =  ImageDataGenerator( 
     rescale= 1.  /  255 , 
     validation_split= 0.2  
     ) 
 
 mn_test_generator =  ImageDataGenerator(rescale= 1.  /  255 ) 
 
 batch_size =  32  
 img_width, img_height =  (224 , 224 ) 
 
 mn_train_images =  train_generator.flow_from_dataframe( 
     dataframe= mn_train_df, 
     x_col= 'Filepath' , 
     y_col= 'Label' , 
     target_size= (img_width, img_height), 
     color_mode= 'rgb' , 
     class_mode= 'categorical' , 
     batch_size= batch_size, 
     shuffle= True , 
     seed= 1 , 
     subset= 'training'  
 ) 
 
 mn_val_images =  train_generator.flow_from_dataframe( 
     dataframe= mn_train_df, 
     x_col= 'Filepath' , 
     y_col= 'Label' , 
     target_size= (img_width, img_height), 
     color_mode= 'rgb' , 
     class_mode= 'categorical' , 
     batch_size= batch_size, 
     shuffle= True , 
     seed= 1 , 
     subset= 'validation'  
 ) 
 
 
 mn_test_images =  test_generator.flow_from_dataframe( 
     dataframe= mn_test_df, 
     x_col= 'Filepath' , 
     y_col= 'Label' , 
     target_size= (img_width, img_height), 
     color_mode= 'rgb' , 
     class_mode= 'categorical' , 
     batch_size= batch_size, 
     shuffle= False  
 ) 
Found 651 validated image filenames belonging to 9 classes.
Found 162 validated image filenames belonging to 9 classes.
Found 349 validated image filenames belonging to 9 classes. 
 
 
 
Build the Model 
 channel =  3  
 num_classes =  len (class_names) 
 
# Load MobileNetV2 - Light Model  
 mn_v2_light =  MobileNetV2(include_top= False , weights= 'imagenet' , input_shape= (img_width, img_height, channel)) 
 
# Create a Sequential model  
 mn_model =  Sequential() 
 
# Add MobileNetV2 as the first layer  
 mn_model.add(mn_v2_light) 
 
# Add other layers  
 mn_model.add(GlobalAveragePooling2D()) 
 mn_model.add(Dropout(0.2 )) 
 mn_model.add(Dense(256 , activation= 'relu' )) 
 mn_model.add(BatchNormalization()) 
 mn_model.add(Dropout(0.1 )) 
 mn_model.add(Dense(128 , activation= 'relu' )) 
 mn_model.add(BatchNormalization()) 
 mn_model.add(Dropout(0.1 )) 
 mn_model.add(Dense(128 , activation= 'relu' )) 
 mn_model.add(Dense(128 , activation= 'relu' )) 
 mn_model.add(Dense(num_classes, activation= 'softmax' )) 
 
# Display the summary of the model architecture and the number of parameters  
 mn_model.summary() 
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Layer (type)                     ┃ Output Shape            ┃       Param #  ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ mobilenetv2_1.00_224            │ (None , 7 , 7 , 1280 )     │     2,257,984  │
│ (Functional )                    │                        │               │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ global_average_pooling2d_1      │ (None , 1280 )           │             0  │
│ (GlobalAveragePooling2D )        │                        │               │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dropout (Dropout )               │ (None , 1280 )           │             0  │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense_3 (Dense )                 │ (None , 256 )            │       327,936  │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ batch_normalization             │ (None , 256 )            │         1,024  │
│ (BatchNormalization )            │                        │               │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dropout_1 (Dropout )             │ (None , 256 )            │             0  │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense_4 (Dense )                 │ (None , 128 )            │        32,896  │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ batch_normalization_1           │ (None , 128 )            │           512  │
│ (BatchNormalization )            │                        │               │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dropout_2 (Dropout )             │ (None , 128 )            │             0  │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense_5 (Dense )                 │ (None , 128 )            │        16,512  │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense_6 (Dense )                 │ (None , 128 )            │        16,512  │
├─────────────────────────────────┼────────────────────────┼───────────────┤
│ dense_7 (Dense )                 │ (None , 9 )              │         1,161  │
└─────────────────────────────────┴────────────────────────┴───────────────┘
 
 
 Total params:  2,654,537  (10.13 MB)
 
 
 Trainable params:  2,619,657  (9.99 MB)
 
 
 Non-trainable params:  34,880  (136.25 KB)
 
 
 
 
Compile the Model 
 mn_model.compile ( 
     optimizer =  'adam' , 
     loss =  'categorical_crossentropy' , 
     metrics =  ['accuracy' , 
                 Precision(), 
                Recall(), 
     ] 
 ) 
 
 
Train the Model 
Train the model with 50 epochs and we’ll plot training loss and accuracy against epochs. We want to monitor the validation loss at each epoch and after the validation loss has not improved after two epochs, training is interrupted.
# Define the early stopping callback  
 early_stopping =  EarlyStopping(monitor= 'val_loss' , 
                                patience= 10 , 
                                restore_best_weights= True ) 
 
# Define checkpoints  
 checkpoint =  ModelCheckpoint('best_mn_model.weights.h5' , 
                              save_best_only=  True , 
                              save_weights_only= True , 
                              monitor= 'val_loss' , 
                              mode= 'min' , 
                              verbose= 1 ) 
 
 epochs= 50  
 
# Train the model with early stopping and model checkpointing  
 history =  mn_model.fit( 
     mn_train_images, 
     epochs= epochs, 
     validation_data= mn_val_images, 
     callbacks= [early_stopping, checkpoint] 
 ) 
Epoch 1/50
 1/21 ━━━━━━━━━━━━━━━━━━━━ 7:31 23s/step - accuracy: 0.3125 - loss: 2.1215 - precision_1: 0.2500 - recall_1: 0.0312 2/21 ━━━━━━━━━━━━━━━━━━━━ 27s 1s/step - accuracy: 0.2969 - loss: 2.1332 - precision_1: 0.2917 - recall_1: 0.0391   3/21 ━━━━━━━━━━━━━━━━━━━━ 25s 1s/step - accuracy: 0.2882 - loss: 2.1302 - precision_1: 0.3317 - recall_1: 0.0503 4/21 ━━━━━━━━━━━━━━━━━━━━ 18s 1s/step - accuracy: 0.2839 - loss: 2.1252 - precision_1: 0.3460 - recall_1: 0.0541 5/21 ━━━━━━━━━━━━━━━━━━━━ 18s 1s/step - accuracy: 0.2904 - loss: 2.0994 - precision_1: 0.3768 - recall_1: 0.0591 6/21 ━━━━━━━━━━━━━━━━━━━━ 17s 1s/step - accuracy: 0.3005 - loss: 2.0645 - precision_1: 0.4174 - recall_1: 0.0668 7/21 ━━━━━━━━━━━━━━━━━━━━ 17s 1s/step - accuracy: 0.3118 - loss: 2.0336 - precision_1: 0.4517 - recall_1: 0.0735 8/21 ━━━━━━━━━━━━━━━━━━━━ 16s 1s/step - accuracy: 0.3228 - loss: 2.0034 - precision_1: 0.4827 - recall_1: 0.0792 9/21 ━━━━━━━━━━━━━━━━━━━━ 14s 1s/step - accuracy: 0.3348 - loss: 1.9717 - precision_1: 0.5097 - recall_1: 0.085810/21 ━━━━━━━━━━━━━━━━━━━━ 13s 1s/step - accuracy: 0.3451 - loss: 1.9436 - precision_1: 0.5333 - recall_1: 0.092911/21 ━━━━━━━━━━━━━━━━━━━━ 12s 1s/step - accuracy: 0.3552 - loss: 1.9172 - precision_1: 0.5542 - recall_1: 0.101212/21 ━━━━━━━━━━━━━━━━━━━━ 10s 1s/step - accuracy: 0.3649 - loss: 1.8935 - precision_1: 0.5722 - recall_1: 0.109813/21 ━━━━━━━━━━━━━━━━━━━━ 9s 1s/step - accuracy: 0.3744 - loss: 1.8698 - precision_1: 0.5879 - recall_1: 0.1189 14/21 ━━━━━━━━━━━━━━━━━━━━ 8s 1s/step - accuracy: 0.3831 - loss: 1.8476 - precision_1: 0.6013 - recall_1: 0.127815/21 ━━━━━━━━━━━━━━━━━━━━ 7s 1s/step - accuracy: 0.3908 - loss: 1.8280 - precision_1: 0.6120 - recall_1: 0.135916/21 ━━━━━━━━━━━━━━━━━━━━ 6s 1s/step - accuracy: 0.3990 - loss: 1.8072 - precision_1: 0.6233 - recall_1: 0.144917/21 ━━━━━━━━━━━━━━━━━━━━ 4s 1s/step - accuracy: 0.4068 - loss: 1.7870 - precision_1: 0.6337 - recall_1: 0.154018/21 ━━━━━━━━━━━━━━━━━━━━ 3s 1s/step - accuracy: 0.4148 - loss: 1.7672 - precision_1: 0.6437 - recall_1: 0.163319/21 ━━━━━━━━━━━━━━━━━━━━ 2s 1s/step - accuracy: 0.4224 - loss: 1.7482 - precision_1: 0.6526 - recall_1: 0.172620/21 ━━━━━━━━━━━━━━━━━━━━ 1s 1s/step - accuracy: 0.4292 - loss: 1.7308 - precision_1: 0.6604 - recall_1: 0.181421/21 ━━━━━━━━━━━━━━━━━━━━ 0s 1s/step - accuracy: 0.4360 - loss: 1.7136 - precision_1: 0.6679 - recall_1: 0.1901
Epoch 1: val_loss improved from inf to 1.45730, saving model to best_mn_model.weights.h5
21/21 ━━━━━━━━━━━━━━━━━━━━ 53s 2s/step - accuracy: 0.4422 - loss: 1.6979 - precision_1: 0.6747 - recall_1: 0.1981 - val_accuracy: 0.5617 - val_loss: 1.4573 - val_precision_1: 0.5938 - val_recall_1: 0.4691
Epoch 2/50
 1/21 ━━━━━━━━━━━━━━━━━━━━ 28s 1s/step - accuracy: 0.8125 - loss: 0.7959 - precision_1: 0.8519 - recall_1: 0.7188 2/21 ━━━━━━━━━━━━━━━━━━━━ 23s 1s/step - accuracy: 0.7891 - loss: 0.8307 - precision_1: 0.8490 - recall_1: 0.7031 3/21 ━━━━━━━━━━━━━━━━━━━━ 22s 1s/step - accuracy: 0.7830 - loss: 0.8194 - precision_1: 0.8566 - recall_1: 0.7049 4/21 ━━━━━━━━━━━━━━━━━━━━ 20s 1s/step - accuracy: 0.7826 - loss: 0.8044 - precision_1: 0.8600 - recall_1: 0.7122 5/21 ━━━━━━━━━━━━━━━━━━━━ 16s 1s/step - accuracy: 0.7800 - loss: 0.8032 - precision_1: 0.8604 - recall_1: 0.7137 6/21 ━━━━━━━━━━━━━━━━━━━━ 16s 1s/step - accuracy: 0.7767 - loss: 0.8035 - precision_1: 0.8623 - recall_1: 0.7136 7/21 ━━━━━━━━━━━━━━━━━━━━ 15s 1s/step - accuracy: 0.7741 - loss: 0.8024 - precision_1: 0.8631 - recall_1: 0.7137 8/21 ━━━━━━━━━━━━━━━━━━━━ 14s 1s/step - accuracy: 0.7710 - loss: 0.8053 - precision_1: 0.8621 - recall_1: 0.7123 9/21 ━━━━━━━━━━━━━━━━━━━━ 13s 1s/step - accuracy: 0.7681 - loss: 0.8092 - precision_1: 0.8607 - recall_1: 0.710510/21 ━━━━━━━━━━━━━━━━━━━━ 12s 1s/step - accuracy: 0.7646 - loss: 0.8141 - precision_1: 0.8600 - recall_1: 0.708011/21 ━━━━━━━━━━━━━━━━━━━━ 11s 1s/step - accuracy: 0.7607 - loss: 0.8218 - precision_1: 0.8581 - recall_1: 0.704912/21 ━━━━━━━━━━━━━━━━━━━━ 10s 1s/step - accuracy: 0.7574 - loss: 0.8288 - precision_1: 0.8563 - recall_1: 0.701713/21 ━━━━━━━━━━━━━━━━━━━━ 9s 1s/step - accuracy: 0.7551 - loss: 0.8332 - precision_1: 0.8553 - recall_1: 0.6992 14/21 ━━━━━━━━━━━━━━━━━━━━ 8s 1s/step - accuracy: 0.7538 - loss: 0.8355 - precision_1: 0.8551 - recall_1: 0.697215/21 ━━━━━━━━━━━━━━━━━━━━ 6s 1s/step - accuracy: 0.7517 - loss: 0.8412 - precision_1: 0.8547 - recall_1: 0.694016/21 ━━━━━━━━━━━━━━━━━━━━ 5s 1s/step - accuracy: 0.7500 - loss: 0.8455 - precision_1: 0.8545 - recall_1: 0.691517/21 ━━━━━━━━━━━━━━━━━━━━ 4s 1s/step - accuracy: 0.7487 - loss: 0.8486 - precision_1: 0.8546 - recall_1: 0.689318/21 ━━━━━━━━━━━━━━━━━━━━ 3s 1s/step - accuracy: 0.7477 - loss: 0.8511 - precision_1: 0.8550 - recall_1: 0.687319/21 ━━━━━━━━━━━━━━━━━━━━ 2s 1s/step - accuracy: 0.7470 - loss: 0.8530 - precision_1: 0.8556 - recall_1: 0.685320/21 ━━━━━━━━━━━━━━━━━━━━ 1s 1s/step - accuracy: 0.7464 - loss: 0.8546 - precision_1: 0.8561 - recall_1: 0.683521/21 ━━━━━━━━━━━━━━━━━━━━ 0s 1s/step - accuracy: 0.7458 - loss: 0.8569 - precision_1: 0.8564 - recall_1: 0.6817
Epoch 2: val_loss did not improve from 1.45730
21/21 ━━━━━━━━━━━━━━━━━━━━ 29s 1s/step - accuracy: 0.7452 - loss: 0.8591 - precision_1: 0.8567 - recall_1: 0.6801 - val_accuracy: 0.6049 - val_loss: 1.5676 - val_precision_1: 0.6338 - val_recall_1: 0.5556
Epoch 3/50
 1/21 ━━━━━━━━━━━━━━━━━━━━ 26s 1s/step - accuracy: 0.7500 - loss: 0.8723 - precision_1: 0.9200 - recall_1: 0.7188 2/21 ━━━━━━━━━━━━━━━━━━━━ 22s 1s/step - accuracy: 0.7500 - loss: 0.8378 - precision_1: 0.9100 - recall_1: 0.7109 3/21 ━━━━━━━━━━━━━━━━━━━━ 21s 1s/step - accuracy: 0.7674 - loss: 0.7779 - precision_1: 0.9175 - recall_1: 0.7135 4/21 ━━━━━━━━━━━━━━━━━━━━ 20s 1s/step - accuracy: 0.7767 - loss: 0.7433 - precision_1: 0.9226 - recall_1: 0.7129 5/21 ━━━━━━━━━━━━━━━━━━━━ 16s 1s/step - accuracy: 0.7811 - loss: 0.7257 - precision_1: 0.9247 - recall_1: 0.7099 6/21 ━━━━━━━━━━━━━━━━━━━━ 15s 1s/step - accuracy: 0.7825 - loss: 0.7165 - precision_1: 0.9231 - recall_1: 0.7076 7/21 ━━━━━━━━━━━━━━━━━━━━ 14s 1s/step - accuracy: 0.7847 - loss: 0.7089 - precision_1: 0.9223 - recall_1: 0.7078 8/21 ━━━━━━━━━━━━━━━━━━━━ 13s 1s/step - accuracy: 0.7850 - loss: 0.7087 - precision_1: 0.9196 - recall_1: 0.7060 9/21 ━━━━━━━━━━━━━━━━━━━━ 13s 1s/step - accuracy: 0.7868 - loss: 0.7058 - precision_1: 0.9187 - recall_1: 0.705410/21 ━━━━━━━━━━━━━━━━━━━━ 12s 1s/step - accuracy: 0.7891 - loss: 0.7013 - precision_1: 0.9179 - recall_1: 0.706111/21 ━━━━━━━━━━━━━━━━━━━━ 11s 1s/step - accuracy: 0.7896 - loss: 0.6992 - precision_1: 0.9169 - recall_1: 0.705912/21 ━━━━━━━━━━━━━━━━━━━━ 9s 1s/step - accuracy: 0.7901 - loss: 0.6967 - precision_1: 0.9161 - recall_1: 0.7061 13/21 ━━━━━━━━━━━━━━━━━━━━ 8s 1s/step - accuracy: 0.7909 - loss: 0.6936 - precision_1: 0.9158 - recall_1: 0.706514/21 ━━━━━━━━━━━━━━━━━━━━ 7s 1s/step - accuracy: 0.7919 - loss: 0.6898 - precision_1: 0.9161 - recall_1: 0.707515/21 ━━━━━━━━━━━━━━━━━━━━ 6s 1s/step - accuracy: 0.7925 - loss: 0.6869 - precision_1: 0.9159 - recall_1: 0.708216/21 ━━━━━━━━━━━━━━━━━━━━ 5s 1s/step - accuracy: 0.7931 - loss: 0.6843 - precision_1: 0.9160 - recall_1: 0.708517/21 ━━━━━━━━━━━━━━━━━━━━ 4s 1s/step - accuracy: 0.7937 - loss: 0.6814 - precision_1: 0.9159 - recall_1: 0.708818/21 ━━━━━━━━━━━━━━━━━━━━ 3s 1s/step - accuracy: 0.7936 - loss: 0.6796 - precision_1: 0.9157 - recall_1: 0.708919/21 ━━━━━━━━━━━━━━━━━━━━ 2s 1s/step - accuracy: 0.7936 - loss: 0.6776 - precision_1: 0.9154 - recall_1: 0.709220/21 ━━━━━━━━━━━━━━━━━━━━ 1s 1s/step - accuracy: 0.7938 - loss: 0.6758 - precision_1: 0.9151 - recall_1: 0.709521/21 ━━━━━━━━━━━━━━━━━━━━ 0s 1s/step - accuracy: 0.7939 - loss: 0.6741 - precision_1: 0.9147 - recall_1: 0.7099
Epoch 3: val_loss did not improve from 1.45730
21/21 ━━━━━━━━━━━━━━━━━━━━ 26s 1s/step - accuracy: 0.7939 - loss: 0.6725 - precision_1: 0.9144 - recall_1: 0.7102 - val_accuracy: 0.4938 - val_loss: 1.6468 - val_precision_1: 0.5825 - val_recall_1: 0.3704
Epoch 4/50
 1/21 ━━━━━━━━━━━━━━━━━━━━ 26s 1s/step - accuracy: 0.8750 - loss: 0.3259 - precision_1: 0.9310 - recall_1: 0.8438 2/21 ━━━━━━━━━━━━━━━━━━━━ 1:23 4s/step - accuracy: 0.8750 - loss: 0.3657 - precision_1: 0.9298 - recall_1: 0.8281 3/21 ━━━━━━━━━━━━━━━━━━━━ 52s 3s/step - accuracy: 0.8785 - loss: 0.3685 - precision_1: 0.9369 - recall_1: 0.8229  4/21 ━━━━━━━━━━━━━━━━━━━━ 40s 2s/step - accuracy: 0.8717 - loss: 0.3815 - precision_1: 0.9364 - recall_1: 0.8125 5/21 ━━━━━━━━━━━━━━━━━━━━ 30s 2s/step - accuracy: 0.8686 - loss: 0.3901 - precision_1: 0.9354 - recall_1: 0.8068 6/21 ━━━━━━━━━━━━━━━━━━━━ 26s 2s/step - accuracy: 0.8700 - loss: 0.3895 - precision_1: 0.9360 - recall_1: 0.8069 7/21 ━━━━━━━━━━━━━━━━━━━━ 23s 2s/step - accuracy: 0.8696 - loss: 0.3930 - precision_1: 0.9361 - recall_1: 0.8063 8/21 ━━━━━━━━━━━━━━━━━━━━ 21s 2s/step - accuracy: 0.8700 - loss: 0.3946 - precision_1: 0.9360 - recall_1: 0.8055 9/21 ━━━━━━━━━━━━━━━━━━━━ 18s 2s/step - accuracy: 0.8694 - loss: 0.3977 - precision_1: 0.9348 - recall_1: 0.803810/21 ━━━━━━━━━━━━━━━━━━━━ 17s 2s/step - accuracy: 0.8691 - loss: 0.3995 - precision_1: 0.9339 - recall_1: 0.802411/21 ━━━━━━━━━━━━━━━━━━━━ 15s 2s/step - accuracy: 0.8673 - loss: 0.4042 - precision_1: 0.9318 - recall_1: 0.799712/21 ━━━━━━━━━━━━━━━━━━━━ 13s 2s/step - accuracy: 0.8655 - loss: 0.4092 - precision_1: 0.9296 - recall_1: 0.796913/21 ━━━━━━━━━━━━━━━━━━━━ 12s 2s/step - accuracy: 0.8639 - loss: 0.4135 - precision_1: 0.9277 - recall_1: 0.795014/21 ━━━━━━━━━━━━━━━━━━━━ 10s 1s/step - accuracy: 0.8621 - loss: 0.4190 - precision_1: 0.9258 - recall_1: 0.792915/21 ━━━━━━━━━━━━━━━━━━━━ 8s 1s/step - accuracy: 0.8607 - loss: 0.4233 - precision_1: 0.9243 - recall_1: 0.7915 16/21 ━━━━━━━━━━━━━━━━━━━━ 7s 1s/step - accuracy: 0.8591 - loss: 0.4291 - precision_1: 0.9227 - recall_1: 0.789717/21 ━━━━━━━━━━━━━━━━━━━━ 5s 1s/step - accuracy: 0.8576 - loss: 0.4345 - precision_1: 0.9212 - recall_1: 0.788218/21 ━━━━━━━━━━━━━━━━━━━━ 4s 1s/step - accuracy: 0.8562 - loss: 0.4395 - precision_1: 0.9197 - recall_1: 0.786719/21 ━━━━━━━━━━━━━━━━━━━━ 2s 1s/step - accuracy: 0.8547 - loss: 0.4444 - precision_1: 0.9183 - recall_1: 0.785320/21 ━━━━━━━━━━━━━━━━━━━━ 1s 1s/step - accuracy: 0.8536 - loss: 0.4485 - precision_1: 0.9173 - recall_1: 0.784221/21 ━━━━━━━━━━━━━━━━━━━━ 0s 1s/step - accuracy: 0.8527 - loss: 0.4522 - precision_1: 0.9165 - recall_1: 0.7832
Epoch 4: val_loss did not improve from 1.45730
21/21 ━━━━━━━━━━━━━━━━━━━━ 31s 1s/step - accuracy: 0.8518 - loss: 0.4556 - precision_1: 0.9157 - recall_1: 0.7823 - val_accuracy: 0.3457 - val_loss: 2.5689 - val_precision_1: 0.3967 - val_recall_1: 0.2963
Epoch 5/50
 1/21 ━━━━━━━━━━━━━━━━━━━━ 27s 1s/step - accuracy: 0.8750 - loss: 0.3048 - precision_1: 0.9643 - recall_1: 0.8438 2/21 ━━━━━━━━━━━━━━━━━━━━ 23s 1s/step - accuracy: 0.8906 - loss: 0.2974 - precision_1: 0.9731 - recall_1: 0.8438 3/21 ━━━━━━━━━━━━━━━━━━━━ 22s 1s/step - accuracy: 0.8958 - loss: 0.2959 - precision_1: 0.9739 - recall_1: 0.8403 4/21 ━━━━━━━━━━━━━━━━━━━━ 37s 2s/step - accuracy: 0.9023 - loss: 0.2894 - precision_1: 0.9760 - recall_1: 0.8451 5/21 ━━━━━━━━━━━━━━━━━━━━ 31s 2s/step - accuracy: 0.9019 - loss: 0.2987 - precision_1: 0.9750 - recall_1: 0.8435 6/21 ━━━━━━━━━━━━━━━━━━━━ 27s 2s/step - accuracy: 0.9000 - loss: 0.3099 - precision_1: 0.9711 - recall_1: 0.8401 7/21 ━━━━━━━━━━━━━━━━━━━━ 24s 2s/step - accuracy: 0.8983 - loss: 0.3181 - precision_1: 0.9672 - recall_1: 0.8381 8/21 ━━━━━━━━━━━━━━━━━━━━ 22s 2s/step - accuracy: 0.8944 - loss: 0.3263 - precision_1: 0.9634 - recall_1: 0.8349 9/21 ━━━━━━━━━━━━━━━━━━━━ 20s 2s/step - accuracy: 0.8911 - loss: 0.3322 - precision_1: 0.9613 - recall_1: 0.832810/21 ━━━━━━━━━━━━━━━━━━━━ 18s 2s/step - accuracy: 0.8889 - loss: 0.3358 - precision_1: 0.9598 - recall_1: 0.832011/21 ━━━━━━━━━━━━━━━━━━━━ 16s 2s/step - accuracy: 0.8874 - loss: 0.3387 - precision_1: 0.9587 - recall_1: 0.831312/21 ━━━━━━━━━━━━━━━━━━━━ 14s 2s/step - accuracy: 0.8866 - loss: 0.3402 - precision_1: 0.9579 - recall_1: 0.831413/21 ━━━━━━━━━━━━━━━━━━━━ 12s 2s/step - accuracy: 0.8857 - loss: 0.3426 - precision_1: 0.9565 - recall_1: 0.831514/21 ━━━━━━━━━━━━━━━━━━━━ 11s 2s/step - accuracy: 0.8846 - loss: 0.3467 - precision_1: 0.9548 - recall_1: 0.831415/21 ━━━━━━━━━━━━━━━━━━━━ 9s 2s/step - accuracy: 0.8839 - loss: 0.3496 - precision_1: 0.9533 - recall_1: 0.8316 16/21 ━━━━━━━━━━━━━━━━━━━━ 7s 2s/step - accuracy: 0.8838 - loss: 0.3513 - precision_1: 0.9523 - recall_1: 0.832417/21 ━━━━━━━━━━━━━━━━━━━━ 6s 2s/step - accuracy: 0.8837 - loss: 0.3525 - precision_1: 0.9515 - recall_1: 0.833118/21 ━━━━━━━━━━━━━━━━━━━━ 4s 1s/step - accuracy: 0.8833 - loss: 0.3551 - precision_1: 0.9506 - recall_1: 0.833319/21 ━━━━━━━━━━━━━━━━━━━━ 2s 1s/step - accuracy: 0.8828 - loss: 0.3576 - precision_1: 0.9496 - recall_1: 0.833420/21 ━━━━━━━━━━━━━━━━━━━━ 1s 1s/step - accuracy: 0.8824 - loss: 0.3598 - precision_1: 0.9486 - recall_1: 0.833621/21 ━━━━━━━━━━━━━━━━━━━━ 0s 1s/step - accuracy: 0.8817 - loss: 0.3627 - precision_1: 0.9473 - recall_1: 0.8334
Epoch 5: val_loss did not improve from 1.45730
21/21 ━━━━━━━━━━━━━━━━━━━━ 31s 1s/step - accuracy: 0.8811 - loss: 0.3654 - precision_1: 0.9462 - recall_1: 0.8332 - val_accuracy: 0.2284 - val_loss: 3.4780 - val_precision_1: 0.2602 - val_recall_1: 0.1975
Epoch 6/50
 1/21 ━━━━━━━━━━━━━━━━━━━━ 30s 2s/step - accuracy: 0.8125 - loss: 0.5277 - precision_1: 0.8276 - recall_1: 0.7500 2/21 ━━━━━━━━━━━━━━━━━━━━ 24s 1s/step - accuracy: 0.8516 - loss: 0.4349 - precision_1: 0.8646 - recall_1: 0.8047 3/21 ━━━━━━━━━━━━━━━━━━━━ 23s 1s/step - accuracy: 0.8733 - loss: 0.3934 - precision_1: 0.8838 - recall_1: 0.8247 4/21 ━━━━━━━━━━━━━━━━━━━━ 22s 1s/step - accuracy: 0.8815 - loss: 0.3744 - precision_1: 0.8940 - recall_1: 0.8333 5/21 ━━━━━━━━━━━━━━━━━━━━ 32s 2s/step - accuracy: 0.8902 - loss: 0.3569 - precision_1: 0.9031 - recall_1: 0.8417 6/21 ━━━━━━━━━━━━━━━━━━━━ 28s 2s/step - accuracy: 0.8911 - loss: 0.3621 - precision_1: 0.9051 - recall_1: 0.8420 7/21 ━━━━━━━━━━━━━━━━━━━━ 25s 2s/step - accuracy: 0.8914 - loss: 0.3660 - precision_1: 0.9069 - recall_1: 0.8423 8/21 ━━━━━━━━━━━━━━━━━━━━ 22s 2s/step - accuracy: 0.8923 - loss: 0.3661 - precision_1: 0.9090 - recall_1: 0.8434 9/21 ━━━━━━━━━━━━━━━━━━━━ 20s 2s/step - accuracy: 0.8919 - loss: 0.3678 - precision_1: 0.9099 - recall_1: 0.843510/21 ━━━━━━━━━━━━━━━━━━━━ 18s 2s/step - accuracy: 0.8915 - loss: 0.3683 - precision_1: 0.9104 - recall_1: 0.843511/21 ━━━━━━━━━━━━━━━━━━━━ 16s 2s/step - accuracy: 0.8913 - loss: 0.3676 - precision_1: 0.9113 - recall_1: 0.844012/21 ━━━━━━━━━━━━━━━━━━━━ 14s 2s/step - accuracy: 0.8914 - loss: 0.3663 - precision_1: 0.9125 - recall_1: 0.844713/21 ━━━━━━━━━━━━━━━━━━━━ 12s 2s/step - accuracy: 0.8911 - loss: 0.3660 - precision_1: 0.9134 - recall_1: 0.844614/21 ━━━━━━━━━━━━━━━━━━━━ 11s 2s/step - accuracy: 0.8912 - loss: 0.3645 - precision_1: 0.9144 - recall_1: 0.845215/21 ━━━━━━━━━━━━━━━━━━━━ 9s 2s/step - accuracy: 0.8909 - loss: 0.3645 - precision_1: 0.9147 - recall_1: 0.8453 16/21 ━━━━━━━━━━━━━━━━━━━━ 7s 1s/step - accuracy: 0.8907 - loss: 0.3643 - precision_1: 0.9152 - recall_1: 0.845717/21 ━━━━━━━━━━━━━━━━━━━━ 5s 1s/step - accuracy: 0.8907 - loss: 0.3634 - precision_1: 0.9158 - recall_1: 0.846318/21 ━━━━━━━━━━━━━━━━━━━━ 4s 1s/step - accuracy: 0.8908 - loss: 0.3627 - precision_1: 0.9164 - recall_1: 0.847019/21 ━━━━━━━━━━━━━━━━━━━━ 2s 1s/step - accuracy: 0.8910 - loss: 0.3621 - precision_1: 0.9169 - recall_1: 0.847620/21 ━━━━━━━━━━━━━━━━━━━━ 1s 1s/step - accuracy: 0.8909 - loss: 0.3620 - precision_1: 0.9174 - recall_1: 0.847921/21 ━━━━━━━━━━━━━━━━━━━━ 0s 1s/step - accuracy: 0.8907 - loss: 0.3623 - precision_1: 0.9178 - recall_1: 0.8479
Epoch 6: val_loss did not improve from 1.45730
21/21 ━━━━━━━━━━━━━━━━━━━━ 32s 2s/step - accuracy: 0.8906 - loss: 0.3626 - precision_1: 0.9181 - recall_1: 0.8479 - val_accuracy: 0.1790 - val_loss: 4.7349 - val_precision_1: 0.1970 - val_recall_1: 0.1605
Epoch 7/50
 1/21 ━━━━━━━━━━━━━━━━━━━━ 29s 1s/step - accuracy: 0.9375 - loss: 0.2062 - precision_1: 0.9677 - recall_1: 0.9375 2/21 ━━━━━━━━━━━━━━━━━━━━ 23s 1s/step - accuracy: 0.9375 - loss: 0.2021 - precision_1: 0.9757 - recall_1: 0.9375 3/21 ━━━━━━━━━━━━━━━━━━━━ 22s 1s/step - accuracy: 0.9306 - loss: 0.2501 - precision_1: 0.9690 - recall_1: 0.9236 4/21 ━━━━━━━━━━━━━━━━━━━━ 20s 1s/step - accuracy: 0.9225 - loss: 0.2899 - precision_1: 0.9601 - recall_1: 0.9115 5/21 ━━━━━━━━━━━━━━━━━━━━ 19s 1s/step - accuracy: 0.9180 - loss: 0.3079 - precision_1: 0.9536 - recall_1: 0.9054 6/21 ━━━━━━━━━━━━━━━━━━━━ 26s 2s/step - accuracy: 0.9161 - loss: 0.3154 - precision_1: 0.9511 - recall_1: 0.9012 7/21 ━━━━━━━━━━━━━━━━━━━━ 23s 2s/step - accuracy: 0.9134 - loss: 0.3214 - precision_1: 0.9498 - recall_1: 0.8962 8/21 ━━━━━━━━━━━━━━━━━━━━ 21s 2s/step - accuracy: 0.9120 - loss: 0.3238 - precision_1: 0.9497 - recall_1: 0.8931 9/21 ━━━━━━━━━━━━━━━━━━━━ 18s 2s/step - accuracy: 0.9094 - loss: 0.3332 - precision_1: 0.9481 - recall_1: 0.889510/21 ━━━━━━━━━━━━━━━━━━━━ 15s 1s/step - accuracy: 0.9071 - loss: 0.3432 - precision_1: 0.9468 - recall_1: 0.886511/21 ━━━━━━━━━━━━━━━━━━━━ 14s 1s/step - accuracy: 0.9054 - loss: 0.3503 - precision_1: 0.9457 - recall_1: 0.884212/21 ━━━━━━━━━━━━━━━━━━━━ 12s 1s/step - accuracy: 0.9041 - loss: 0.3547 - precision_1: 0.9449 - recall_1: 0.882413/21 ━━━━━━━━━━━━━━━━━━━━ 11s 1s/step - accuracy: 0.9027 - loss: 0.3598 - precision_1: 0.9437 - recall_1: 0.880714/21 ━━━━━━━━━━━━━━━━━━━━ 9s 1s/step - accuracy: 0.9018 - loss: 0.3631 - precision_1: 0.9429 - recall_1: 0.8795 15/21 ━━━━━━━━━━━━━━━━━━━━ 8s 1s/step - accuracy: 0.9005 - loss: 0.3666 - precision_1: 0.9416 - recall_1: 0.877816/21 ━━━━━━━━━━━━━━━━━━━━ 6s 1s/step - accuracy: 0.8996 - loss: 0.3685 - precision_1: 0.9409 - recall_1: 0.876717/21 ━━━━━━━━━━━━━━━━━━━━ 5s 1s/step - accuracy: 0.8989 - loss: 0.3698 - precision_1: 0.9403 - recall_1: 0.875718/21 ━━━━━━━━━━━━━━━━━━━━ 3s 1s/step - accuracy: 0.8985 - loss: 0.3700 - precision_1: 0.9400 - recall_1: 0.875219/21 ━━━━━━━━━━━━━━━━━━━━ 2s 1s/step - accuracy: 0.8979 - loss: 0.3710 - precision_1: 0.9396 - recall_1: 0.874420/21 ━━━━━━━━━━━━━━━━━━━━ 1s 1s/step - accuracy: 0.8974 - loss: 0.3720 - precision_1: 0.9391 - recall_1: 0.873821/21 ━━━━━━━━━━━━━━━━━━━━ 0s 1s/step - accuracy: 0.8968 - loss: 0.3731 - precision_1: 0.9386 - recall_1: 0.8730
Epoch 7: val_loss did not improve from 1.45730
21/21 ━━━━━━━━━━━━━━━━━━━━ 29s 1s/step - accuracy: 0.8964 - loss: 0.3741 - precision_1: 0.9381 - recall_1: 0.8724 - val_accuracy: 0.3333 - val_loss: 4.7201 - val_precision_1: 0.3312 - val_recall_1: 0.3148
Epoch 8/50
 1/21 ━━━━━━━━━━━━━━━━━━━━ 10s 511ms/step - accuracy: 1.0000 - loss: 0.1541 - precision_1: 1.0000 - recall_1: 0.9091 2/21 ━━━━━━━━━━━━━━━━━━━━ 23s 1s/step - accuracy: 0.9535 - loss: 0.2159 - precision_1: 0.9625 - recall_1: 0.8848    3/21 ━━━━━━━━━━━━━━━━━━━━ 22s 1s/step - accuracy: 0.9423 - loss: 0.2339 - precision_1: 0.9519 - recall_1: 0.8876 4/21 ━━━━━━━━━━━━━━━━━━━━ 20s 1s/step - accuracy: 0.9310 - loss: 0.2577 - precision_1: 0.9464 - recall_1: 0.8830 5/21 ━━━━━━━━━━━━━━━━━━━━ 19s 1s/step - accuracy: 0.9247 - loss: 0.2681 - precision_1: 0.9418 - recall_1: 0.8805 6/21 ━━━━━━━━━━━━━━━━━━━━ 18s 1s/step - accuracy: 0.9197 - loss: 0.2740 - precision_1: 0.9400 - recall_1: 0.8780 7/21 ━━━━━━━━━━━━━━━━━━━━ 17s 1s/step - accuracy: 0.9150 - loss: 0.2816 - precision_1: 0.9379 - recall_1: 0.8743 8/21 ━━━━━━━━━━━━━━━━━━━━ 15s 1s/step - accuracy: 0.9112 - loss: 0.2879 - precision_1: 0.9364 - recall_1: 0.8719 9/21 ━━━━━━━━━━━━━━━━━━━━ 14s 1s/step - accuracy: 0.9078 - loss: 0.2954 - precision_1: 0.9345 - recall_1: 0.869510/21 ━━━━━━━━━━━━━━━━━━━━ 17s 2s/step - accuracy: 0.9046 - loss: 0.3040 - precision_1: 0.9324 - recall_1: 0.866911/21 ━━━━━━━━━━━━━━━━━━━━ 15s 2s/step - accuracy: 0.9020 - loss: 0.3119 - precision_1: 0.9302 - recall_1: 0.864712/21 ━━━━━━━━━━━━━━━━━━━━ 13s 2s/step - accuracy: 0.9003 - loss: 0.3174 - precision_1: 0.9287 - recall_1: 0.863613/21 ━━━━━━━━━━━━━━━━━━━━ 12s 2s/step - accuracy: 0.8990 - loss: 0.3224 - precision_1: 0.9273 - recall_1: 0.863014/21 ━━━━━━━━━━━━━━━━━━━━ 10s 1s/step - accuracy: 0.8974 - loss: 0.3274 - precision_1: 0.9260 - recall_1: 0.861915/21 ━━━━━━━━━━━━━━━━━━━━ 8s 1s/step - accuracy: 0.8964 - loss: 0.3305 - precision_1: 0.9252 - recall_1: 0.8613 16/21 ━━━━━━━━━━━━━━━━━━━━ 7s 1s/step - accuracy: 0.8957 - loss: 0.3323 - precision_1: 0.9247 - recall_1: 0.861117/21 ━━━━━━━━━━━━━━━━━━━━ 5s 1s/step - accuracy: 0.8949 - loss: 0.3358 - precision_1: 0.9242 - recall_1: 0.860518/21 ━━━━━━━━━━━━━━━━━━━━ 4s 1s/step - accuracy: 0.8943 - loss: 0.3388 - precision_1: 0.9239 - recall_1: 0.860019/21 ━━━━━━━━━━━━━━━━━━━━ 2s 1s/step - accuracy: 0.8936 - loss: 0.3415 - precision_1: 0.9234 - recall_1: 0.859420/21 ━━━━━━━━━━━━━━━━━━━━ 1s 1s/step - accuracy: 0.8928 - loss: 0.3443 - precision_1: 0.9229 - recall_1: 0.858821/21 ━━━━━━━━━━━━━━━━━━━━ 0s 1s/step - accuracy: 0.8922 - loss: 0.3465 - precision_1: 0.9225 - recall_1: 0.8583
Epoch 8: val_loss did not improve from 1.45730
21/21 ━━━━━━━━━━━━━━━━━━━━ 31s 2s/step - accuracy: 0.8916 - loss: 0.3484 - precision_1: 0.9222 - recall_1: 0.8579 - val_accuracy: 0.1296 - val_loss: 11.7399 - val_precision_1: 0.1296 - val_recall_1: 0.1296
Epoch 9/50
 1/21 ━━━━━━━━━━━━━━━━━━━━ 33s 2s/step - accuracy: 0.9688 - loss: 0.1850 - precision_1: 0.9688 - recall_1: 0.9688 2/21 ━━━━━━━━━━━━━━━━━━━━ 27s 1s/step - accuracy: 0.9531 - loss: 0.2107 - precision_1: 0.9682 - recall_1: 0.9531 3/21 ━━━━━━━━━━━━━━━━━━━━ 26s 1s/step - accuracy: 0.9479 - loss: 0.2246 - precision_1: 0.9643 - recall_1: 0.9410 4/21 ━━━━━━━━━━━━━━━━━━━━ 25s 2s/step - accuracy: 0.9434 - loss: 0.2334 - precision_1: 0.9609 - recall_1: 0.9303 5/21 ━━━━━━━━━━━━━━━━━━━━ 24s 2s/step - accuracy: 0.9409 - loss: 0.2370 - precision_1: 0.9594 - recall_1: 0.9243 6/21 ━━━━━━━━━━━━━━━━━━━━ 22s 2s/step - accuracy: 0.9343 - loss: 0.2514 - precision_1: 0.9534 - recall_1: 0.9161 7/21 ━━━━━━━━━━━━━━━━━━━━ 21s 2s/step - accuracy: 0.9309 - loss: 0.2586 - precision_1: 0.9500 - recall_1: 0.9115 8/21 ━━━━━━━━━━━━━━━━━━━━ 19s 2s/step - accuracy: 0.9283 - loss: 0.2622 - precision_1: 0.9480 - recall_1: 0.9084 9/21 ━━━━━━━━━━━━━━━━━━━━ 22s 2s/step - accuracy: 0.9266 - loss: 0.2630 - precision_1: 0.9473 - recall_1: 0.906610/21 ━━━━━━━━━━━━━━━━━━━━ 20s 2s/step - accuracy: 0.9255 - loss: 0.2627 - precision_1: 0.9466 - recall_1: 0.905611/21 ━━━━━━━━━━━━━━━━━━━━ 18s 2s/step - accuracy: 0.9251 - loss: 0.2614 - precision_1: 0.9464 - recall_1: 0.905412/21 ━━━━━━━━━━━━━━━━━━━━ 16s 2s/step - accuracy: 0.9239 - loss: 0.2614 - precision_1: 0.9456 - recall_1: 0.904413/21 ━━━━━━━━━━━━━━━━━━━━ 13s 2s/step - accuracy: 0.9226 - loss: 0.2635 - precision_1: 0.9445 - recall_1: 0.903214/21 ━━━━━━━━━━━━━━━━━━━━ 11s 2s/step - accuracy: 0.9208 - loss: 0.2677 - precision_1: 0.9428 - recall_1: 0.901415/21 ━━━━━━━━━━━━━━━━━━━━ 9s 2s/step - accuracy: 0.9188 - loss: 0.2723 - precision_1: 0.9411 - recall_1: 0.8993 16/21 ━━━━━━━━━━━━━━━━━━━━ 8s 2s/step - accuracy: 0.9169 - loss: 0.2769 - precision_1: 0.9397 - recall_1: 0.897217/21 ━━━━━━━━━━━━━━━━━━━━ 6s 2s/step - accuracy: 0.9151 - loss: 0.2820 - precision_1: 0.9383 - recall_1: 0.895118/21 ━━━━━━━━━━━━━━━━━━━━ 4s 2s/step - accuracy: 0.9137 - loss: 0.2862 - precision_1: 0.9373 - recall_1: 0.893119/21 ━━━━━━━━━━━━━━━━━━━━ 3s 2s/step - accuracy: 0.9126 - loss: 0.2895 - precision_1: 0.9365 - recall_1: 0.891620/21 ━━━━━━━━━━━━━━━━━━━━ 1s 2s/step - accuracy: 0.9117 - loss: 0.2923 - precision_1: 0.9360 - recall_1: 0.890321/21 ━━━━━━━━━━━━━━━━━━━━ 0s 2s/step - accuracy: 0.9110 - loss: 0.2944 - precision_1: 0.9357 - recall_1: 0.8893
Epoch 9: val_loss did not improve from 1.45730
21/21 ━━━━━━━━━━━━━━━━━━━━ 34s 2s/step - accuracy: 0.9104 - loss: 0.2964 - precision_1: 0.9354 - recall_1: 0.8884 - val_accuracy: 0.3642 - val_loss: 4.3274 - val_precision_1: 0.3694 - val_recall_1: 0.3580
Epoch 10/50
 1/21 ━━━━━━━━━━━━━━━━━━━━ 26s 1s/step - accuracy: 0.9375 - loss: 0.2248 - precision_1: 0.9667 - recall_1: 0.9062 2/21 ━━━━━━━━━━━━━━━━━━━━ 24s 1s/step - accuracy: 0.9531 - loss: 0.1942 - precision_1: 0.9751 - recall_1: 0.9219 3/21 ━━━━━━━━━━━━━━━━━━━━ 25s 1s/step - accuracy: 0.9583 - loss: 0.1790 - precision_1: 0.9762 - recall_1: 0.9271 4/21 ━━━━━━━━━━━━━━━━━━━━ 24s 1s/step - accuracy: 0.9551 - loss: 0.1807 - precision_1: 0.9738 - recall_1: 0.9219 5/21 ━━━━━━━━━━━━━━━━━━━━ 22s 1s/step - accuracy: 0.9491 - loss: 0.1966 - precision_1: 0.9672 - recall_1: 0.9162 6/21 ━━━━━━━━━━━━━━━━━━━━ 21s 1s/step - accuracy: 0.9437 - loss: 0.2131 - precision_1: 0.9608 - recall_1: 0.9111 7/21 ━━━━━━━━━━━━━━━━━━━━ 19s 1s/step - accuracy: 0.9396 - loss: 0.2254 - precision_1: 0.9557 - recall_1: 0.9066 8/21 ━━━━━━━━━━━━━━━━━━━━ 18s 1s/step - accuracy: 0.9369 - loss: 0.2340 - precision_1: 0.9525 - recall_1: 0.9036 9/21 ━━━━━━━━━━━━━━━━━━━━ 21s 2s/step - accuracy: 0.9346 - loss: 0.2415 - precision_1: 0.9497 - recall_1: 0.901210/21 ━━━━━━━━━━━━━━━━━━━━ 18s 2s/step - accuracy: 0.9331 - loss: 0.2467 - precision_1: 0.9478 - recall_1: 0.899811/21 ━━━━━━━━━━━━━━━━━━━━ 16s 2s/step - accuracy: 0.9319 - loss: 0.2502 - precision_1: 0.9466 - recall_1: 0.898612/21 ━━━━━━━━━━━━━━━━━━━━ 14s 2s/step - accuracy: 0.9306 - loss: 0.2535 - precision_1: 0.9455 - recall_1: 0.897513/21 ━━━━━━━━━━━━━━━━━━━━ 12s 2s/step - accuracy: 0.9295 - loss: 0.2565 - precision_1: 0.9446 - recall_1: 0.896514/21 ━━━━━━━━━━━━━━━━━━━━ 11s 2s/step - accuracy: 0.9283 - loss: 0.2602 - precision_1: 0.9435 - recall_1: 0.895515/21 ━━━━━━━━━━━━━━━━━━━━ 9s 2s/step - accuracy: 0.9275 - loss: 0.2629 - precision_1: 0.9428 - recall_1: 0.8948 16/21 ━━━━━━━━━━━━━━━━━━━━ 7s 2s/step - accuracy: 0.9269 - loss: 0.2647 - precision_1: 0.9422 - recall_1: 0.894417/21 ━━━━━━━━━━━━━━━━━━━━ 6s 2s/step - accuracy: 0.9266 - loss: 0.2660 - precision_1: 0.9419 - recall_1: 0.894118/21 ━━━━━━━━━━━━━━━━━━━━ 4s 2s/step - accuracy: 0.9262 - loss: 0.2669 - precision_1: 0.9417 - recall_1: 0.893819/21 ━━━━━━━━━━━━━━━━━━━━ 2s 1s/step - accuracy: 0.9260 - loss: 0.2677 - precision_1: 0.9415 - recall_1: 0.893720/21 ━━━━━━━━━━━━━━━━━━━━ 1s 1s/step - accuracy: 0.9257 - loss: 0.2683 - precision_1: 0.9413 - recall_1: 0.893621/21 ━━━━━━━━━━━━━━━━━━━━ 0s 1s/step - accuracy: 0.9252 - loss: 0.2692 - precision_1: 0.9409 - recall_1: 0.8932
Epoch 10: val_loss did not improve from 1.45730
21/21 ━━━━━━━━━━━━━━━━━━━━ 31s 1s/step - accuracy: 0.9248 - loss: 0.2700 - precision_1: 0.9406 - recall_1: 0.8929 - val_accuracy: 0.4444 - val_loss: 4.8501 - val_precision_1: 0.4472 - val_recall_1: 0.4444
Epoch 11/50
 1/21 ━━━━━━━━━━━━━━━━━━━━ 25s 1s/step - accuracy: 0.9688 - loss: 0.0983 - precision_1: 0.9688 - recall_1: 0.9688 2/21 ━━━━━━━━━━━━━━━━━━━━ 21s 1s/step - accuracy: 0.9688 - loss: 0.0990 - precision_1: 0.9764 - recall_1: 0.9688 3/21 ━━━━━━━━━━━━━━━━━━━━ 21s 1s/step - accuracy: 0.9618 - loss: 0.1312 - precision_1: 0.9703 - recall_1: 0.9618 4/21 ━━━━━━━━━━━━━━━━━━━━ 19s 1s/step - accuracy: 0.9557 - loss: 0.1568 - precision_1: 0.9638 - recall_1: 0.9538 5/21 ━━━━━━━━━━━━━━━━━━━━ 18s 1s/step - accuracy: 0.9533 - loss: 0.1695 - precision_1: 0.9609 - recall_1: 0.9505 6/21 ━━━━━━━━━━━━━━━━━━━━ 17s 1s/step - accuracy: 0.9516 - loss: 0.1760 - precision_1: 0.9603 - recall_1: 0.9484 7/21 ━━━━━━━━━━━━━━━━━━━━ 16s 1s/step - accuracy: 0.9508 - loss: 0.1787 - precision_1: 0.9602 - recall_1: 0.9474 8/21 ━━━━━━━━━━━━━━━━━━━━ 15s 1s/step - accuracy: 0.9497 - loss: 0.1808 - precision_1: 0.9601 - recall_1: 0.9452 9/21 ━━━━━━━━━━━━━━━━━━━━ 13s 1s/step - accuracy: 0.9468 - loss: 0.1940 - precision_1: 0.9577 - recall_1: 0.940510/21 ━━━━━━━━━━━━━━━━━━━━ 11s 1s/step - accuracy: 0.9444 - loss: 0.2042 - precision_1: 0.9560 - recall_1: 0.936811/21 ━━━━━━━━━━━━━━━━━━━━ 10s 1s/step - accuracy: 0.9431 - loss: 0.2106 - precision_1: 0.9552 - recall_1: 0.934512/21 ━━━━━━━━━━━━━━━━━━━━ 12s 1s/step - accuracy: 0.9419 - loss: 0.2158 - precision_1: 0.9544 - recall_1: 0.932613/21 ━━━━━━━━━━━━━━━━━━━━ 10s 1s/step - accuracy: 0.9407 - loss: 0.2208 - precision_1: 0.9535 - recall_1: 0.930814/21 ━━━━━━━━━━━━━━━━━━━━ 9s 1s/step - accuracy: 0.9394 - loss: 0.2258 - precision_1: 0.9523 - recall_1: 0.9291 15/21 ━━━━━━━━━━━━━━━━━━━━ 7s 1s/step - accuracy: 0.9382 - loss: 0.2304 - precision_1: 0.9511 - recall_1: 0.927416/21 ━━━━━━━━━━━━━━━━━━━━ 6s 1s/step - accuracy: 0.9366 - loss: 0.2355 - precision_1: 0.9497 - recall_1: 0.925317/21 ━━━━━━━━━━━━━━━━━━━━ 5s 1s/step - accuracy: 0.9353 - loss: 0.2396 - precision_1: 0.9484 - recall_1: 0.923618/21 ━━━━━━━━━━━━━━━━━━━━ 3s 1s/step - accuracy: 0.9342 - loss: 0.2430 - precision_1: 0.9475 - recall_1: 0.922319/21 ━━━━━━━━━━━━━━━━━━━━ 2s 1s/step - accuracy: 0.9332 - loss: 0.2461 - precision_1: 0.9465 - recall_1: 0.921120/21 ━━━━━━━━━━━━━━━━━━━━ 1s 1s/step - accuracy: 0.9322 - loss: 0.2488 - precision_1: 0.9456 - recall_1: 0.920021/21 ━━━━━━━━━━━━━━━━━━━━ 0s 1s/step - accuracy: 0.9312 - loss: 0.2518 - precision_1: 0.9447 - recall_1: 0.9189
Epoch 11: val_loss did not improve from 1.45730
21/21 ━━━━━━━━━━━━━━━━━━━━ 28s 1s/step - accuracy: 0.9303 - loss: 0.2546 - precision_1: 0.9438 - recall_1: 0.9179 - val_accuracy: 0.3148 - val_loss: 4.6065 - val_precision_1: 0.3056 - val_recall_1: 0.2716 
 
 
def  plot_accuracy_loss(history): 
     """  
    Plot the accuracy and the loss during the training of the CNN.  
    """  
     fig =  plt.figure(figsize= (10 ,5 )) 
 
     # Plot accuracy  
     plt.subplot(221 ) 
     plt.plot(history.history['accuracy' ], 'bo--' , label =  "acc" ) 
     plt.plot(history.history['val_accuracy' ], 'ro--' , label =  "val_acc" ) 
     plt.title("train_acc vs val_acc" ) 
     plt.ylabel("accuracy" ) 
     plt.xlabel("epochs" ) 
     plt.legend() 
 
     # Plot loss function  
     plt.subplot(222 ) 
     plt.plot(history.history['loss' ],'bo--' , label =  "loss" ) 
     plt.plot(history.history['val_loss' ], 'ro--' , label =  "val_loss" ) 
     plt.title("train_loss vs val_loss" ) 
     plt.ylabel("loss" ) 
     plt.xlabel("epochs" ) 
 
     plt.legend() 
     plt.show() 
 
 plot_accuracy_loss(history) 
 
 
Evaluate the Model 
 best_model =  save_model(mn_model, "best_mn_model.weights.h5" ) 
WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`.  
 
 
# Load the model, including both architecture and weights  
 saved_model =  load_model('best_mn_model.weights.h5' ) 
 
 results =  saved_model.evaluate(mn_test_images) 
print (f"Test Loss:  { results[0 ]:.4f} " ) 
print (f"Test Accuracy:  { results[1 ]* 100 :.2f}  %" ) 
print (f"Test Precision:  { results[2 ]* 100 :.2f}  %" ) 
WARNING:absl:Compiled the loaded model, but the compiled metrics have yet to be built. `model.compile_metrics` will be empty until you train or evaluate the model. 
 
 1/11 ━━━━━━━━━━━━━━━━━━━━ 18s 2s/step - accuracy: 0.4375 - loss: 1.7898 - precision_1: 0.4483 - recall_1: 0.4062 2/11 ━━━━━━━━━━━━━━━━━━━━ 2s 231ms/step - accuracy: 0.4609 - loss: 1.6893 - precision_1: 0.4927 - recall_1: 0.4297 3/11 ━━━━━━━━━━━━━━━━━━━━ 1s 245ms/step - accuracy: 0.4670 - loss: 1.6439 - precision_1: 0.5118 - recall_1: 0.4392 4/11 ━━━━━━━━━━━━━━━━━━━━ 1s 240ms/step - accuracy: 0.4694 - loss: 1.6255 - precision_1: 0.5193 - recall_1: 0.4427 5/11 ━━━━━━━━━━━━━━━━━━━━ 1s 241ms/step - accuracy: 0.4680 - loss: 1.6287 - precision_1: 0.5200 - recall_1: 0.4404 6/11 ━━━━━━━━━━━━━━━━━━━━ 1s 240ms/step - accuracy: 0.4664 - loss: 1.6397 - precision_1: 0.5194 - recall_1: 0.4365 7/11 ━━━━━━━━━━━━━━━━━━━━ 0s 239ms/step - accuracy: 0.4642 - loss: 1.6485 - precision_1: 0.5182 - recall_1: 0.4328 8/11 ━━━━━━━━━━━━━━━━━━━━ 0s 238ms/step - accuracy: 0.4604 - loss: 1.6587 - precision_1: 0.5147 - recall_1: 0.4280 9/11 ━━━━━━━━━━━━━━━━━━━━ 0s 238ms/step - accuracy: 0.4578 - loss: 1.6656 - precision_1: 0.5121 - recall_1: 0.424410/11 ━━━━━━━━━━━━━━━━━━━━ 0s 240ms/step - accuracy: 0.4561 - loss: 1.6709 - precision_1: 0.5107 - recall_1: 0.422011/11 ━━━━━━━━━━━━━━━━━━━━ 0s 238ms/step - accuracy: 0.4553 - loss: 1.6747 - precision_1: 0.5094 - recall_1: 0.419011/11 ━━━━━━━━━━━━━━━━━━━━ 4s 239ms/step - accuracy: 0.4546 - loss: 1.6778 - precision_1: 0.5083 - recall_1: 0.4166
Test Loss: 1.7124
Test Accuracy: 44.70 %
Test Precision: 49.64 % 
 
 
 
 
Section 3: Conclusion 
In this project, we explored two approaches for boat classification: a custom Convolutional Neural Network (CNN) and Transfer Learning with MobileNetV2. Here are the key takeaways:
Model Comparison :
The custom CNN (Model 1) was built from scratch for boat classification. 
Transfer Learning with MobileNetV2 (Model 2) used a pre-trained model for feature extraction. 
  
Model Performance :
Both models did not achieve accuracy above 80% when evaluating the test images. 
Notably, Model 2 (MobileNetV2 with transfer learning) exhibited a significant gap between its training and test accuracy, indicating a potential issue with overfitting. 
  
Challenges for Accuracy :
The inability to surpass the 80% accuracy threshold may be attributed to:
Class Imbalance: Variations in the number of examples across boat types. 
Limited Data: A relatively small dataset, which may lead to overfitting. 
Complex Task: Boat classification requires capturing nuanced features. 
  
  
Recommendations :
Address class imbalance with techniques like data augmentation, oversampling, or class weights. 
Consider collecting more labeled data, especially for minority classes. 
Fine-tune model architectures and hyperparameters to reduce overfitting. 
  
 
In conclusion, while both models fell short of achieving accuracy above 80%, the more significant disparity in training and test accuracy observed in Model 2 indicates a potential overfitting issue. This project lays the groundwork for further refinement and optimization of boat classification models.