Updated all models October 2024
This commit is contained in:
@@ -1,37 +1,10 @@
|
||||
from itertools import filterfalse
|
||||
import sys
|
||||
import os
|
||||
|
||||
#from keras.layers.pooling import MaxPool2D
|
||||
#from numpy.lib.shape_base import expand_dims
|
||||
|
||||
#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.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 EarlyStopping
|
||||
from keras import regularizers
|
||||
from keras import optimizers
|
||||
from matplotlib import pyplot
|
||||
|
||||
@@ -1,35 +1,11 @@
|
||||
from itertools import filterfalse
|
||||
import sys
|
||||
import os
|
||||
|
||||
from keras.layers.pooling import MaxPool2D
|
||||
|
||||
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.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 EarlyStopping
|
||||
from keras.layers import MaxPool2D
|
||||
from keras import regularizers
|
||||
from keras import optimizers
|
||||
from matplotlib import pyplot
|
||||
@@ -58,3 +34,5 @@ def inception_module(x,kernel_init,bias_init,filters_1x1,filters_3x3_reduce,filt
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,45 +1,25 @@
|
||||
import sys
|
||||
import os
|
||||
|
||||
from keras.layers.pooling import MaxPool2D
|
||||
|
||||
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 tensorflow
|
||||
from keras.optimizers import SGD
|
||||
from keras.optimizers import Adam
|
||||
from tensorflow.keras.callbacks import TensorBoard
|
||||
import keras
|
||||
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.layers import AveragePooling2D
|
||||
from keras.callbacks import EarlyStopping, ModelCheckpoint
|
||||
from keras import regularizers
|
||||
from keras import optimizers
|
||||
from matplotlib import pyplot
|
||||
from keras.src.legacy.preprocessing.image import ImageDataGenerator
|
||||
from keras.callbacks import ModelCheckpoint
|
||||
from keras.callbacks import LearningRateScheduler
|
||||
from keras.preprocessing.image import load_img
|
||||
from keras.preprocessing.image import img_to_array
|
||||
from keras.preprocessing.image import array_to_img
|
||||
from keras.optimizer_v2 import gradient_descent
|
||||
from tensorflow.keras.callbacks import EarlyStopping
|
||||
from keras.layers import Flatten
|
||||
from keras.layers import Dense
|
||||
from keras.layers import MaxPool2D
|
||||
from keras.layers import Dropout
|
||||
from keras.models import Model
|
||||
from keras.layers import AveragePooling2D
|
||||
from keras.models import Sequential
|
||||
import numpy as np
|
||||
import tensorflow
|
||||
from inception_module import *
|
||||
import math
|
||||
from time import time
|
||||
|
||||
#Load some data
|
||||
#(x_train,y_train), (x_test,y_test)=cifar10.load_data()
|
||||
@@ -50,7 +30,7 @@ batch_size = 256
|
||||
learning_rate=.00001
|
||||
epochs=1000
|
||||
patience_on_early_stop=10
|
||||
model_name='lenet5.h5'
|
||||
model_name='lenet5.h5.keras'
|
||||
|
||||
train_ds = tensorflow.keras.preprocessing.image_dataset_from_directory(
|
||||
'C:\\boneyard\\DeepLearning\\data',
|
||||
@@ -73,6 +53,9 @@ val_ds = tensorflow.keras.preprocessing.image_dataset_from_directory(
|
||||
seed=1337
|
||||
)
|
||||
|
||||
# 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()))
|
||||
|
||||
model=Sequential()
|
||||
|
||||
#C1
|
||||
@@ -100,7 +83,7 @@ model.add(Dense(units=1,activation='sigmoid'))
|
||||
|
||||
model.summary()
|
||||
|
||||
optimizer=gradient_descent.SGD(learning_rate=learning_rate, momentum=0.9, nesterov=False)
|
||||
optimizer=SGD(learning_rate=learning_rate, momentum=0.9, nesterov=False)
|
||||
|
||||
checkpointer=ModelCheckpoint(filepath=model_name,monitor='accuracy',verbose=1,save_best_only=True)
|
||||
|
||||
@@ -108,7 +91,7 @@ early_stopping=EarlyStopping(monitor='val_loss',mode='min',verbose=1,patience=pa
|
||||
|
||||
model.compile(loss='binary_crossentropy',optimizer=optimizer,metrics=['accuracy'])
|
||||
|
||||
history=model.fit(train_ds, epochs=epochs, validation_data=val_ds,callbacks=[checkpointer,early_stopping])
|
||||
history=model.fit(train_ds, epochs=epochs, validation_data=val_ds,callbacks=[tensorboard,checkpointer,early_stopping])
|
||||
|
||||
# plot the learning curves
|
||||
pyplot.plot(history.history['accuracy'],label='train')
|
||||
|
||||
@@ -1,52 +1,28 @@
|
||||
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
|
||||
|
||||
from keras.optimizers import SGD
|
||||
from keras.optimizers import Adam
|
||||
from tensorflow.keras.callbacks import TensorBoard
|
||||
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.src.legacy.preprocessing.image import ImageDataGenerator
|
||||
from keras.callbacks import ModelCheckpoint
|
||||
from tensorflow.keras.callbacks import EarlyStopping
|
||||
from keras import regularizers
|
||||
from keras import optimizers
|
||||
from matplotlib import pyplot
|
||||
from keras.layers import Flatten
|
||||
from keras.layers import Dense
|
||||
from keras.layers import MaxPool2D
|
||||
from keras.layers import Dropout
|
||||
from keras.models import Model
|
||||
import numpy as np
|
||||
import tensorflow
|
||||
from inception_module import *
|
||||
import math
|
||||
|
||||
from time import time
|
||||
|
||||
# INCEPTION ARCHITECTIURE
|
||||
image_size = (128, 128)
|
||||
|
||||
#model_weights_file='inception.h5'
|
||||
model_name='inception.h5'
|
||||
model_name='inception.h5.keras'
|
||||
|
||||
train_ds = tensorflow.keras.preprocessing.image_dataset_from_directory(
|
||||
'C:\\boneyard\\DeepLearning\\data',
|
||||
@@ -86,9 +62,11 @@ def decay(epoch,steps=100):
|
||||
|
||||
lr_schedule=keras.callbacks.LearningRateScheduler(decay,verbose=1)
|
||||
|
||||
#sgd=SGD(lr=initial_lrate,momentum=0.9,nesterov=False)
|
||||
optimizer=adam_v2.Adam(learning_rate=initial_lrate)
|
||||
optimizer=gradient_descent.SGD(learning_rate=initial_lrate, momentum=0.9, nesterov=False)
|
||||
# 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()))
|
||||
|
||||
# OPTIMIZER
|
||||
optimizer=SGD(learning_rate=initial_lrate, momentum=0.9, nesterov=False)
|
||||
|
||||
#INPUT LAYER
|
||||
input_layer=keras.layers.Input(shape=input_shape)
|
||||
@@ -96,15 +74,15 @@ input_layer=keras.layers.Input(shape=input_shape)
|
||||
kernel_init=keras.initializers.glorot_uniform()
|
||||
bias_init=keras.initializers.Constant(value=.2)
|
||||
|
||||
x=Conv2D(64, (7, 7), padding='same', strides=(2, 2), activation='relu', name='conv_1_7x7/2', kernel_initializer=kernel_init, bias_initializer=bias_init)(input_layer)
|
||||
x=MaxPool2D((3, 3), padding='same', strides=(2, 2), name='max_pool_1_3x3/2')(x)
|
||||
x=Conv2D(192, (3, 3), padding='same', strides=(1, 1), activation='relu', name='conv_2b_3x3/1')(x)
|
||||
x=MaxPool2D((3, 3), padding='same', strides=(2, 2), name='max_pool_2_3x3/2')(x)
|
||||
x=Conv2D(64, (7, 7), padding='same', strides=(2, 2), activation='relu', name='conv_1_7x7_2', kernel_initializer=kernel_init, bias_initializer=bias_init)(input_layer)
|
||||
x=MaxPool2D((3, 3), padding='same', strides=(2, 2), name='max_pool_1_3x3_2')(x)
|
||||
x=Conv2D(192, (3, 3), padding='same', strides=(1, 1), activation='relu', name='conv_2b_3x3_1')(x)
|
||||
x=MaxPool2D((3, 3), padding='same', strides=(2, 2), name='max_pool_2_3x3_2')(x)
|
||||
|
||||
#BUILD THE INCEPTION MODULE AND MAX POOLING LAYERS (3a and 3b)
|
||||
x=inception_module(x,filters_1x1=64,filters_3x3_reduce=96,filters_3x3=128,filters_5x5_reduce=16,filters_5x5=32,filters_pool_proj=32,kernel_init=kernel_init,bias_init=bias_init,name='inception_3a')
|
||||
x=inception_module(x,filters_1x1=128,filters_3x3_reduce=128,filters_3x3=192,filters_5x5_reduce=32,filters_5x5=96,filters_pool_proj=64,kernel_init=kernel_init,bias_init=bias_init,name='inception_3b')
|
||||
x=MaxPool2D((3, 3), padding='same', strides=(2, 2), name='max_pool_3_3x3/2')(x)
|
||||
x=MaxPool2D((3, 3), padding='same', strides=(2, 2), name='max_pool_3_3x3_2')(x)
|
||||
|
||||
#BUILD THE INCEPTION MODULE AND MAX POOLING LAYERS (4a)
|
||||
x=inception_module(x,filters_1x1=192,filters_3x3_reduce=96,filters_3x3=208,filters_5x5_reduce=16,filters_5x5=48,filters_pool_proj=64,kernel_init=kernel_init,bias_init=bias_init,name='inception_4a')
|
||||
@@ -134,26 +112,19 @@ classifier_2 = Dense(1, activation='sigmoid', name='auxilliary_output_2')(classi
|
||||
#BUILD THE INCEPTION MODULE AND MAX POOLING LAYERS (4e))
|
||||
x=inception_module(x,filters_1x1=256,filters_3x3_reduce=160,filters_3x3=320,filters_5x5_reduce=32,filters_5x5=128,filters_pool_proj=128,kernel_init=kernel_init,bias_init=bias_init,name='inception_4e')
|
||||
|
||||
x=MaxPool2D((3,3),padding='same',strides=(2,2),name='max_pool_4_3x3/2')(x)
|
||||
x=MaxPool2D((3,3),padding='same',strides=(2,2),name='max_pool_4_3x3_2')(x)
|
||||
|
||||
#BUILD MODULES 5a and 5b
|
||||
x=inception_module(x,filters_1x1=256,filters_3x3_reduce=160,filters_3x3=320,filters_5x5_reduce=32,filters_5x5=128,filters_pool_proj=128,kernel_init=kernel_init,bias_init=bias_init,name='inception_5a')
|
||||
x=inception_module(x,filters_1x1=384,filters_3x3_reduce=192,filters_3x3=384,filters_5x5_reduce=48,filters_5x5=128,filters_pool_proj=128,kernel_init=kernel_init,bias_init=bias_init,name='inception_5b')
|
||||
|
||||
#BUILD THE CLASSIFIER
|
||||
x=keras.layers.AveragePooling2D(pool_size=(2,2), strides=1, padding='valid',name='avg_pool_5_3x3/1')(x)
|
||||
x=keras.layers.AveragePooling2D(pool_size=(2,2), strides=1, padding='valid',name='avg_pool_5_3x3_1')(x)
|
||||
x=Dropout(0.4)(x)
|
||||
x = Dense(1000, activation='relu', name='linear')(x)
|
||||
x=Flatten()(x)
|
||||
x=Dense(1,activation='sigmoid',name='output')(x)
|
||||
|
||||
#model = Model(input_layer, [x], name='googlenet')
|
||||
#model.summary()
|
||||
#checkpointer=ModelCheckpoint(filepath=model_weights_file,verbose=1,save_best_only=True)
|
||||
#model.compile(loss='binary_crossentropy',optimizer=optimizer,metrics=['accuracy'])
|
||||
#history=model.fit(train_ds, epochs=epochs, validation_data=val_ds,batch_size=batch_size,verbose=2,callbacks=[lr_schedule])
|
||||
#history=model.fit(train_ds, epochs=epochs, validation_data=val_ds,batch_size=batch_size,verbose=2,callbacks=[checkpointer])
|
||||
|
||||
# Checkpointer
|
||||
checkpointer=ModelCheckpoint(filepath=model_name,monitor=metric,verbose=1,save_best_only=True)
|
||||
|
||||
@@ -162,15 +133,15 @@ early_stopping=EarlyStopping(monitor='val_loss',mode='min',verbose=1,patience=pa
|
||||
|
||||
model = Model(input_layer, [x, classifier_1, classifier_2], name='googlenet_complete_architecture')
|
||||
model.summary()
|
||||
model.compile(loss=['binary_crossentropy', 'binary_crossentropy', 'binary_crossentropy'], loss_weights=[1, 0.3, 0.3], optimizer=optimizer, metrics=['accuracy'])
|
||||
history = model.fit(train_ds, validation_data=val_ds, epochs=epochs, batch_size=batch_size, callbacks=[lr_schedule,checkpointer,early_stopping])
|
||||
model.compile(loss=['binary_crossentropy', 'binary_crossentropy', 'binary_crossentropy'], loss_weights=[1, 0.3, 0.3], optimizer=optimizer, metrics=['accuracy','accuracy','accuracy'])
|
||||
history = model.fit(train_ds, validation_data=val_ds, epochs=epochs, batch_size=batch_size, callbacks=[tensorboard,lr_schedule,checkpointer,early_stopping])
|
||||
#model.save(model_name)
|
||||
|
||||
# plot the learning curves
|
||||
pyplot.plot(history.history['output_accuracy'],label='train')
|
||||
pyplot.plot(history.history['val_auxilliary_output_2_accuracy'],label='validation')
|
||||
pyplot.legend()
|
||||
pyplot.show()
|
||||
# pyplot.plot(history.history['output_accuracy'],label='train')
|
||||
# pyplot.plot(history.history['val_auxilliary_output_2_accuracy'],label='validation')
|
||||
# pyplot.legend()
|
||||
# pyplot.show()
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -5,29 +5,15 @@ from keras.optimizers import SGD
|
||||
from keras.optimizers import Adam
|
||||
from tensorflow.keras.callbacks import TensorBoard
|
||||
import keras
|
||||
#from keras.models import Model
|
||||
from keras.src.legacy.preprocessing.image import ImageDataGenerator
|
||||
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
|
||||
import numpy as np
|
||||
import tensorflow
|
||||
from resnet50 import *
|
||||
import math
|
||||
from time import time
|
||||
|
||||
# Notes: 10/23/2024 Achived 53.85%
|
||||
|
||||
# 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
|
||||
|
||||
# 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()))
|
||||
|
||||
|
||||
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)
|
||||
@@ -1,49 +1,32 @@
|
||||
import sys
|
||||
import os
|
||||
|
||||
from keras.layers.pooling import MaxPool2D
|
||||
|
||||
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
|
||||
|
||||
from keras.optimizers import SGD
|
||||
from keras.optimizers import Adam
|
||||
from tensorflow.keras.callbacks import TensorBoard
|
||||
import keras
|
||||
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.layers import AveragePooling2D
|
||||
from keras.src.legacy.preprocessing.image import ImageDataGenerator
|
||||
from keras.callbacks import ModelCheckpoint
|
||||
from tensorflow.keras.callbacks import EarlyStopping
|
||||
from keras import regularizers
|
||||
from keras import optimizers
|
||||
from matplotlib import pyplot
|
||||
from keras.layers import Flatten
|
||||
from keras.layers import Dense
|
||||
from keras.layers import MaxPool2D
|
||||
from keras.layers import Dropout
|
||||
from keras.models import Model
|
||||
from keras.layers import AveragePooling2D
|
||||
from keras.models import Sequential
|
||||
import numpy as np
|
||||
import tensorflow
|
||||
|
||||
from inception_module import *
|
||||
import math
|
||||
from time import time
|
||||
|
||||
# VGG 16 ARCHITECTIURE
|
||||
|
||||
image_size = (128, 128)
|
||||
|
||||
model_name='vgg16'
|
||||
model_weights_file='model_vgg16.h5'
|
||||
#model_name='vgg16'
|
||||
model_weights_file='model_vgg16.h5.keras'
|
||||
|
||||
train_ds = tensorflow.keras.preprocessing.image_dataset_from_directory(
|
||||
'C:\\boneyard\\DeepLearning\\data',
|
||||
@@ -76,6 +59,9 @@ learning_rate=.00001
|
||||
batch_size=256
|
||||
epochs=200
|
||||
|
||||
# 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()))
|
||||
|
||||
# Build the network based on AlexNet but using 6 convolutional and 1 Fully Connected
|
||||
# Inspired by VGGNet we will add a pooling layer after every two convolutional layers
|
||||
|
||||
@@ -165,11 +151,8 @@ model.add(Dropout(.50))
|
||||
#SIGMOID
|
||||
model.add(Dense(1,activation='sigmoid'))
|
||||
|
||||
|
||||
model.summary()
|
||||
|
||||
|
||||
|
||||
# File path to save the file. Only save the weights if there is an improvement.
|
||||
checkpointer=ModelCheckpoint(filepath=model_weights_file,verbose=1,save_best_only=True)
|
||||
|
||||
@@ -178,7 +161,9 @@ checkpointer=ModelCheckpoint(filepath=model_weights_file,verbose=1,save_best_onl
|
||||
# Adam optimizer with learning rate .0001
|
||||
#optimizer=adam_v2.Adam(learning_rate=10e-6)
|
||||
#optimizer=adam_v2.Adam(learning_rate=10e-6)
|
||||
optimizer=adam_v2.Adam(learning_rate=learning_rate)
|
||||
#optimizer=adam_v2.Adam(learning_rate=learning_rate)
|
||||
#Optimizer
|
||||
optimizer = keras.optimizers.Adam(learning_rate=learning_rate, beta_1=0.9, beta_2=0.999,epsilon=1e-8)
|
||||
|
||||
# Cross entropy loss function
|
||||
#model.compile(loss='categorical_crossentropy', optimizer=optimizer,metrics=['accuracy'])
|
||||
@@ -190,17 +175,17 @@ model.compile(loss='binary_crossentropy', optimizer=optimizer,metrics=['accuracy
|
||||
# The callback to checkpointer saves the model wights. Other callback can be added...like a stopping function
|
||||
# history=model.fit_generator(dataGen.flow(x_train,y_train,batch_size=batch_size),callbacks=[checkpointer],steps_per_epoch=x_train.shape[0] //
|
||||
# batch_size,epochs=epochs,verbose=2,validation_data=(x_valid,y_valid))
|
||||
history=model.fit(train_ds, epochs=epochs, validation_data=val_ds,batch_size=batch_size,verbose=2,callbacks=[checkpointer])
|
||||
history=model.fit(train_ds, epochs=epochs, validation_data=val_ds,batch_size=batch_size,verbose=2,callbacks=[tensorboard,checkpointer])
|
||||
|
||||
# Here is the evaluation part
|
||||
score=model.evaluate(x=train_ds,verbose=1)
|
||||
print('\n', 'Test Accuracy:', score[1])
|
||||
model.save(model_name)
|
||||
# score=model.evaluate(x=train_ds,verbose=1)
|
||||
# print('\n', 'Test Accuracy:', score[1])
|
||||
# model.save(model_name)
|
||||
|
||||
# This loads the best weights we saved from the fitting excercise and displays the accuracy of the model
|
||||
model.load_weights(model_weights_file)
|
||||
score=model.evaluate(train_ds,verbose=1)
|
||||
print('\n', 'Test Accuracy:', score[1])
|
||||
# model.load_weights(model_weights_file)
|
||||
# score=model.evaluate(train_ds,verbose=1)
|
||||
# print('\n', 'Test Accuracy:', score[1])
|
||||
|
||||
# scores=model.evaluate(x_test,y_test,batch_size=128,verbose=1)
|
||||
# print('\nTest result: %.3f loss: %.3f' % (scores[1]*100,scores[0]))
|
||||
@@ -211,10 +196,10 @@ print('\n', 'Test Accuracy:', score[1])
|
||||
# print(threshold_output)
|
||||
|
||||
# plot the learning curves
|
||||
pyplot.plot(history.history['accuracy'],label='train')
|
||||
pyplot.plot(history.history['val_accuracy'],label='validation')
|
||||
pyplot.legend()
|
||||
pyplot.show()
|
||||
# pyplot.plot(history.history['accuracy'],label='train')
|
||||
# pyplot.plot(history.history['val_accuracy'],label='validation')
|
||||
# pyplot.legend()
|
||||
# pyplot.show()
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user