import sys import os from keras.layers.pooling import MaxPool2D from keras.optimizer_v2 import gradient_descent sys.path.append('c:/git/keras') sys.path.append('c:/git/absl') # installed # py -mpip install numpy # py -mpip show numpy # py -mpip install tensorflow # py -mpip show tensorflow # py -mpip install matplotlib # c:\users\skess\appdata\local\programs\python\python39\lib\site-packages import keras from keras.models import Model #from keras.optimizers import * #from keras.optimizers import adam_v2 from tensorflow.keras.optimizers import Adam from keras.datasets import cifar10 from keras.preprocessing.image import ImageDataGenerator from keras.models import Sequential from keras.utils import np_utils from keras.layers import Dense from keras.layers import Activation from keras.layers import Flatten from keras.layers import Dropout from keras.layers import BatchNormalization from keras.layers import Conv2D from keras.layers import MaxPooling2D from keras.callbacks import ModelCheckpoint from tensorflow.keras.callbacks import ReduceLROnPlateau from tensorflow.keras.callbacks import EarlyStopping from keras import regularizers from keras import optimizers from matplotlib import pyplot import numpy as np import tensorflow # from inception_module import * from resnet50 import * import math # RESNET50 ARCHITECTIURE image_size = (128, 128) #model_weights_file='model_resnet50.hdf5' model_name='resnet50.h5' 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 initial_lrate=0.01 batch_size=128 #patience_on_early_stop=15 patience_on_early_stop=epochs*.10 #metric='val_mse' #metric='val_loss' #reduce_factor=.25 #reduce_factor=np.sqrt(0.1) reduce_factor=9.9e-4 metric='val_loss' mode='min' #ReduceLROnPlateau #reduce_lr=tensorflow.keras.callbacks.ReduceLROnPlateau(monitor=metric,factor=np.sqrt(0.1),patience=5,min_lr=0.5e-6,verbose=True) #reduce_lr=tensorflow.keras.callbacks.ReduceLROnPlateau(monitor='val_mse',factor=reduce_factor,min_lr=0.5e-6,patience=5,verbose=True) reduce_lr=tensorflow.keras.callbacks.ReduceLROnPlateau(monitor=metric,factor=reduce_factor,min_lr=0.1e-3,patience=5,verbose=True) #Optimizer optimizer=gradient_descent.SGD(learning_rate=initial_lrate, momentum=0.9, nesterov=False) #optimizer=adam_v2.Adam(learning_rate=initial_lrate) # Checkpointer checkpointer=ModelCheckpoint(filepath=model_name,mode=mode,monitor=metric,verbose=1,save_best_only=True) #Early Stopping early_stopping=EarlyStopping(monitor=metric,mode=mode,verbose=1,patience=patience_on_early_stop) # def resnet50(input_shape,classes) model=resnet50(input_shape,1) model.summary() #model.compile(loss='binary_crossentropy',optimizer=optimizer,metrics=['accuracy','mse']) 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=[reduce_lr,early_stopping,checkpointer]) history = model.fit(train_ds, validation_data=val_ds, epochs=epochs, batch_size=batch_size, callbacks=[early_stopping,checkpointer]) #model.save(model_name) # plot the learning curves pyplot.plot(history.history['accuracy'],label='train') pyplot.plot(history.history['val_accuracy'],label='validation') #pyplot.plot(history.history['mse'],label='mse') #pyplot.plot(history.history['mse'],label='mse') pyplot.plot(history.history[metric],label=metric) pyplot.legend() pyplot.show()