Updated all models October 2024
This commit is contained in:
75
Models/model_sk_resnet_v5.py
Normal file
75
Models/model_sk_resnet_v5.py
Normal file
@@ -0,0 +1,75 @@
|
||||
import sys
|
||||
import os
|
||||
|
||||
from keras.optimizers import SGD
|
||||
from keras.optimizers import Adam
|
||||
from tensorflow.keras.callbacks import TensorBoard
|
||||
import keras
|
||||
from keras.src.legacy.preprocessing.image import ImageDataGenerator
|
||||
from keras.callbacks import ModelCheckpoint
|
||||
from tensorflow.keras.callbacks import EarlyStopping
|
||||
import numpy as np
|
||||
import tensorflow
|
||||
from resnet50 import *
|
||||
import math
|
||||
from time import time
|
||||
|
||||
|
||||
# This is the new 2024 version
|
||||
# CM10-31-2015_OI_10_1_MPBW_65_USEOVTRUE_V3.xlsm
|
||||
|
||||
# Create a TensorBoard instance with the path to the logs directory. Before training, in Terminal, run tensorboard --logdir=logs/
|
||||
tensorboard = TensorBoard(log_dir='logs/{}'.format(time()))
|
||||
|
||||
# RESNET50 ARCHITECTURE
|
||||
image_size = (128, 128)
|
||||
|
||||
model_name='resnet50_20241024_270.h5.keras'
|
||||
|
||||
train_ds = tensorflow.keras.preprocessing.image_dataset_from_directory(
|
||||
'C:\\boneyard\\DeepLearning\\data',
|
||||
|
||||
label_mode="binary",
|
||||
subset="training",
|
||||
validation_split=.20,
|
||||
image_size=image_size,
|
||||
color_mode='grayscale',
|
||||
batch_size=32,
|
||||
seed=50
|
||||
)
|
||||
val_ds = tensorflow.keras.preprocessing.image_dataset_from_directory(
|
||||
'C:\\boneyard\\DeepLearning\\data',
|
||||
label_mode="binary",
|
||||
subset="validation",
|
||||
validation_split=.20,
|
||||
image_size=image_size,
|
||||
color_mode='grayscale',
|
||||
batch_size=32,
|
||||
seed=50
|
||||
)
|
||||
|
||||
input_shape=(128,128,1)
|
||||
epochs=200
|
||||
initial_lrate=0.01
|
||||
batch_size=128
|
||||
patience_on_early_stop=epochs*.25
|
||||
metric='accuracy'
|
||||
|
||||
#ReduceLROnPlateau
|
||||
reduce_lr=tensorflow.keras.callbacks.ReduceLROnPlateau(monitor='val_loss',factor=.1,patience=5,min_lr=0.5e-6)
|
||||
|
||||
#Optimizer
|
||||
optimizer = keras.optimizers.Adam(learning_rate=initial_lrate, beta_1=0.9, beta_2=0.999,epsilon=1e-8)
|
||||
|
||||
# Checkpointer
|
||||
checkpointer=ModelCheckpoint(filepath=model_name,monitor=metric,verbose=1,save_best_only=True)
|
||||
|
||||
#Early Stopping
|
||||
early_stopping=EarlyStopping(monitor='val_loss',mode='min',verbose=1,patience=patience_on_early_stop)
|
||||
|
||||
model=resnet50(input_shape,1)
|
||||
model.summary()
|
||||
model.compile(loss='binary_crossentropy',optimizer=optimizer,metrics=['accuracy'])
|
||||
history = model.fit(train_ds, validation_data=val_ds, epochs=epochs, batch_size=batch_size, callbacks=[tensorboard,reduce_lr,early_stopping,checkpointer])
|
||||
# leave the following line commented out because the early stopping is in place
|
||||
#model.save(model_name)
|
||||
Reference in New Issue
Block a user