diff --git a/.github/workflows/runner_requirements.txt b/.github/workflows/runner_requirements.txt deleted file mode 100644 index c94136c..0000000 --- a/.github/workflows/runner_requirements.txt +++ /dev/null @@ -1,66 +0,0 @@ -absl-py==2.1.0 -astunparse==1.6.3 -certifi==2025.1.31 -charset-normalizer==3.4.1 -contourpy==1.1.1 -cycler==0.12.1 -flatbuffers==25.1.24 -fonttools==4.56.0 -gast==0.6.0 -google-pasta==0.2.0 -grpcio==1.70.0 -h5py==3.11.0 -idna==3.10 -joblib==1.4.2 -keras==2.15.0 -kiwisolver==1.4.7 -libclang==18.1.1 -Markdown==3.7 -markdown-it-py==3.0.0 -MarkupSafe==2.1.5 -matplotlib==3.10.0 -mdurl==0.1.2 -ml-dtypes==0.4.1 -namex==0.0.8 -numpy==2.0.2 -nvidia-cublas-cu12==12.5.3.2 -nvidia-cuda-cupti-cu12==12.5.82 -nvidia-cuda-nvcc-cu12==12.5.82 -nvidia-cuda-nvrtc-cu12==12.5.82 -nvidia-cuda-runtime-cu12==12.5.82 -nvidia-cudnn-cu12==9.3.0.75 -nvidia-cufft-cu12==11.2.3.61 -nvidia-curand-cu12==10.3.6.82 -nvidia-cusolver-cu12==11.6.3.83 -nvidia-cusparse-cu12==12.5.1.3 -nvidia-nccl-cu12==2.21.5 -nvidia-nvjitlink-cu12==12.5.82 -opencv-python==4.11.0.86 -opt_einsum==3.4.0 -optree==0.14.0 -packaging==24.2 -pandas==2.2.3 -pillow==11.1.0 -protobuf==5.29.3 -Pygments==2.19.1 -pyparsing==3.2.1 -python-dateutil==2.9.0.post0 -pytz==2025.1 -requests==2.32.3 -rich==13.9.4 -scikit-learn==1.6.1 -scipy==1.15.1 -seaborn==0.13.2 -setuptools==75.8.0 -six==1.17.0 -tensorboard==2.18.0 -tensorboard-data-server==0.7.2 -tensorflow==2.18.0 -termcolor==2.5.0 -threadpoolctl==3.5.0 -typing_extensions==4.12.2 -tzdata==2025.1 -urllib3==2.3.0 -Werkzeug==3.1.3 -wheel==0.45.1 -wrapt==1.17.2 diff --git a/RealtimeClassification.py b/RealtimeClassification.py index bf228f4..5c5d1e9 100644 --- a/RealtimeClassification.py +++ b/RealtimeClassification.py @@ -3,7 +3,7 @@ import tensorflow as tf import time -from tensorflow.keras.models import load_model +from tensorflow.keras.models import load_model # type: ignore from include.Logger import Logger class LiveCameraClassifier: @@ -56,6 +56,6 @@ def run(self): # Example Usage if __name__ == "__main__": class_names = ["airplane", "automobile", "bird", "cat", "deer", "dog", "frog", "horse", "ship", "truck"] - model = load_model("models/batch_norm_model.h5") + model = load_model("models/batch_norm_model_rmsprop.keras") classifier = LiveCameraClassifier(model, class_names) classifier.run() \ No newline at end of file diff --git a/Train.py b/Train.py index 7fa7243..700d0a8 100644 --- a/Train.py +++ b/Train.py @@ -6,7 +6,7 @@ from include.TensorModel import TensorModel from include.ModelProfiler import ModelProfiler -NUM_EPOCHS = 5 +NUM_EPOCHS = 10 BATCH_FITTING = 128 BATCH_PROFILING = [32, 64, 128] @@ -14,9 +14,11 @@ USE_EXISTING_MODELS = True SAVE_MODELS = True -SAVE_MODELS_AS_H5 = True +SAVE_MODELS_AS_H5 = False SAVE_MODELS_AS_KERAS = True -SAVE_MODELS_AS_SavedModel = True +SAVE_MODELS_AS_SavedModel = False + +PROFILE_MODELS = True def create_predicition_matrix(model_handler: TensorModel, visualiser: Visualiser, model, x_test, y_test, str_model): conf_matrix = model_handler.compute_confusion_matrix(model, x_test, y_test) @@ -28,9 +30,9 @@ def create_predicition_matrix(model_handler: TensorModel, visualiser: Visualiser def train_model(model_name:str, model_handler: TensorModel, visualiser: Visualiser, logger: Logger, x_train, y_train, x_test, y_test, batch_size) -> tuple: # Check if model exists - if USE_EXISTING_MODELS and os.path.exists(f"models/{model_name}.h5"): - model = model = tf.keras.models.load_model(f"models/{model_name}.h5") - model.compile(optimizer="adam", loss="categorical_crossentropy", metrics=["accuracy"]) + if USE_EXISTING_MODELS and os.path.exists(f"models/{model_name}.keras"): + model = model = tf.keras.models.load_model(f"models/{model_name}.keras") + model.compile(optimizer="sgd", loss="categorical_crossentropy", metrics=["accuracy"]) model.build() model.summary() else: @@ -39,8 +41,8 @@ def train_model(model_name:str, model_handler: TensorModel, visualiser: Visualis else: model = model_handler.create_cnn(batch_normalisation=True) - history = model.fit(x_train, y_train, epochs=NUM_EPOCHS, batch_size=batch_size, validation_data=(x_test, y_test)) - test_loss, test_acc = model.evaluate(x_test, y_test) + history = model.fit(x_train, y_train, steps_per_epoch=x_train.shape[0], epochs=NUM_EPOCHS, batch_size=batch_size, validation_data=(x_test, y_test)) + test_loss, test_acc = model.evaluate(x_test, y_test, batch_size=batch_size) if SAVE_MODELS: if SAVE_MODELS_AS_H5: @@ -52,7 +54,7 @@ def train_model(model_name:str, model_handler: TensorModel, visualiser: Visualis if SAVE_MODELS_AS_SavedModel: model.export(f"models/{model_name}_saved_model") - logger.info(f"Model accuracy: {test_acc * 100:.2f}%") + logger.info(f"{model_name} Model accuracy: {test_acc * 100:.2f}%") visualiser.plot_training_history(history, model_name) return (model, model_name), (test_acc) @@ -72,7 +74,7 @@ def profile_models(model_acc_results:dict, visualiser: Visualiser, logger: Logge # Load models for model_name, accuracy in model_acc_results.items(): # Load the model and data - model = model_handler.load_model(f"models/{model_name}.h5") + model = model_handler.load_model(f"models/{model_name}.keras") (_, _), (x_test, _) = model_handler.load_data() (batch_time, throughput_time), (single_image_time) = profiler.measure_average_inference_time(batch_size, model, x_test, show_single_image_inference=True) @@ -108,6 +110,8 @@ def profile_models(model_acc_results:dict, visualiser: Visualiser, logger: Logge # Train and profile models model_acc_results = train_models(model_handler, visualiser, logger, x_train, y_train, x_test, y_test, model_acc_results) - profile_models(model_acc_results, visualiser, logger) + + if PROFILE_MODELS: + profile_models(model_acc_results, visualiser, logger) logger.info("Done!") \ No newline at end of file diff --git a/images/Inference/base_model/base_model_128_inference_timings.png b/images/Inference/base_model/base_model_128_inference_timings.png index 5a7cdbe..551b87d 100644 Binary files a/images/Inference/base_model/base_model_128_inference_timings.png and b/images/Inference/base_model/base_model_128_inference_timings.png differ diff --git a/images/Inference/base_model/base_model_32_inference_timings.png b/images/Inference/base_model/base_model_32_inference_timings.png index bbbba00..d7a34a3 100644 Binary files a/images/Inference/base_model/base_model_32_inference_timings.png and b/images/Inference/base_model/base_model_32_inference_timings.png differ diff --git a/images/Inference/base_model/base_model_64_inference_timings.png b/images/Inference/base_model/base_model_64_inference_timings.png index d576546..bf9a3b8 100644 Binary files a/images/Inference/base_model/base_model_64_inference_timings.png and b/images/Inference/base_model/base_model_64_inference_timings.png differ diff --git a/images/Inference/batch_norm_model/batch_norm_model_128_inference_timings.png b/images/Inference/batch_norm_model/batch_norm_model_128_inference_timings.png index cd52106..e98eb04 100644 Binary files a/images/Inference/batch_norm_model/batch_norm_model_128_inference_timings.png and b/images/Inference/batch_norm_model/batch_norm_model_128_inference_timings.png differ diff --git a/images/Inference/batch_norm_model/batch_norm_model_32_inference_timings.png b/images/Inference/batch_norm_model/batch_norm_model_32_inference_timings.png index 7bf0f11..3802deb 100644 Binary files a/images/Inference/batch_norm_model/batch_norm_model_32_inference_timings.png and b/images/Inference/batch_norm_model/batch_norm_model_32_inference_timings.png differ diff --git a/images/Inference/batch_norm_model/batch_norm_model_64_inference_timings.png b/images/Inference/batch_norm_model/batch_norm_model_64_inference_timings.png index 5bfff4e..d22d183 100644 Binary files a/images/Inference/batch_norm_model/batch_norm_model_64_inference_timings.png and b/images/Inference/batch_norm_model/batch_norm_model_64_inference_timings.png differ diff --git a/images/Inference/batch_norm_model_rmsprop/batch_norm_model_rmsprop_128_inference_timings.png b/images/Inference/batch_norm_model_rmsprop/batch_norm_model_rmsprop_128_inference_timings.png index aaeeeb3..bc60d14 100644 Binary files a/images/Inference/batch_norm_model_rmsprop/batch_norm_model_rmsprop_128_inference_timings.png and b/images/Inference/batch_norm_model_rmsprop/batch_norm_model_rmsprop_128_inference_timings.png differ diff --git a/images/Inference/batch_norm_model_rmsprop/batch_norm_model_rmsprop_32_inference_timings.png b/images/Inference/batch_norm_model_rmsprop/batch_norm_model_rmsprop_32_inference_timings.png index a921a8f..3cf7984 100644 Binary files a/images/Inference/batch_norm_model_rmsprop/batch_norm_model_rmsprop_32_inference_timings.png and b/images/Inference/batch_norm_model_rmsprop/batch_norm_model_rmsprop_32_inference_timings.png differ diff --git a/images/Inference/batch_norm_model_rmsprop/batch_norm_model_rmsprop_64_inference_timings.png b/images/Inference/batch_norm_model_rmsprop/batch_norm_model_rmsprop_64_inference_timings.png index a768093..c391f76 100644 Binary files a/images/Inference/batch_norm_model_rmsprop/batch_norm_model_rmsprop_64_inference_timings.png and b/images/Inference/batch_norm_model_rmsprop/batch_norm_model_rmsprop_64_inference_timings.png differ diff --git a/images/Inference/batch_norm_model_sgd/batch_norm_model_sgd_128_inference_timings.png b/images/Inference/batch_norm_model_sgd/batch_norm_model_sgd_128_inference_timings.png index 08ad5a4..b1b3a30 100644 Binary files a/images/Inference/batch_norm_model_sgd/batch_norm_model_sgd_128_inference_timings.png and b/images/Inference/batch_norm_model_sgd/batch_norm_model_sgd_128_inference_timings.png differ diff --git a/images/Inference/batch_norm_model_sgd/batch_norm_model_sgd_32_inference_timings.png b/images/Inference/batch_norm_model_sgd/batch_norm_model_sgd_32_inference_timings.png index e91b12e..ca01196 100644 Binary files a/images/Inference/batch_norm_model_sgd/batch_norm_model_sgd_32_inference_timings.png and b/images/Inference/batch_norm_model_sgd/batch_norm_model_sgd_32_inference_timings.png differ diff --git a/images/Inference/batch_norm_model_sgd/batch_norm_model_sgd_64_inference_timings.png b/images/Inference/batch_norm_model_sgd/batch_norm_model_sgd_64_inference_timings.png index 4db2449..f32a12e 100644 Binary files a/images/Inference/batch_norm_model_sgd/batch_norm_model_sgd_64_inference_timings.png and b/images/Inference/batch_norm_model_sgd/batch_norm_model_sgd_64_inference_timings.png differ diff --git a/images/Training/base_model/base_model_training_confusion_matrix.png b/images/Training/base_model/base_model_training_confusion_matrix.png index 0a33d86..f9da637 100644 Binary files a/images/Training/base_model/base_model_training_confusion_matrix.png and b/images/Training/base_model/base_model_training_confusion_matrix.png differ diff --git a/images/Training/base_model/base_model_training_diagonal_confusion_matrix.png b/images/Training/base_model/base_model_training_diagonal_confusion_matrix.png index 0b0c716..90eea3d 100644 Binary files a/images/Training/base_model/base_model_training_diagonal_confusion_matrix.png and b/images/Training/base_model/base_model_training_diagonal_confusion_matrix.png differ diff --git a/images/Training/base_model/base_model_training_history.png b/images/Training/base_model/base_model_training_history.png index ede9c1f..a3dc778 100644 Binary files a/images/Training/base_model/base_model_training_history.png and b/images/Training/base_model/base_model_training_history.png differ diff --git a/images/Training/batch_norm_model/batch_norm_model_training_confusion_matrix.png b/images/Training/batch_norm_model/batch_norm_model_training_confusion_matrix.png index 8ce9333..d8a0724 100644 Binary files a/images/Training/batch_norm_model/batch_norm_model_training_confusion_matrix.png and b/images/Training/batch_norm_model/batch_norm_model_training_confusion_matrix.png differ diff --git a/images/Training/batch_norm_model/batch_norm_model_training_diagonal_confusion_matrix.png b/images/Training/batch_norm_model/batch_norm_model_training_diagonal_confusion_matrix.png index 72c1346..e16b478 100644 Binary files a/images/Training/batch_norm_model/batch_norm_model_training_diagonal_confusion_matrix.png and b/images/Training/batch_norm_model/batch_norm_model_training_diagonal_confusion_matrix.png differ diff --git a/images/Training/batch_norm_model/batch_norm_model_training_history.png b/images/Training/batch_norm_model/batch_norm_model_training_history.png index 7ab7aaa..8b8d277 100644 Binary files a/images/Training/batch_norm_model/batch_norm_model_training_history.png and b/images/Training/batch_norm_model/batch_norm_model_training_history.png differ diff --git a/images/Training/batch_norm_model_rmsprop/batch_norm_model_rmsprop_training_confusion_matrix.png b/images/Training/batch_norm_model_rmsprop/batch_norm_model_rmsprop_training_confusion_matrix.png index b128fa1..e4501d6 100644 Binary files a/images/Training/batch_norm_model_rmsprop/batch_norm_model_rmsprop_training_confusion_matrix.png and b/images/Training/batch_norm_model_rmsprop/batch_norm_model_rmsprop_training_confusion_matrix.png differ diff --git a/images/Training/batch_norm_model_rmsprop/batch_norm_model_rmsprop_training_diagonal_confusion_matrix.png b/images/Training/batch_norm_model_rmsprop/batch_norm_model_rmsprop_training_diagonal_confusion_matrix.png index b296099..1749f0e 100644 Binary files a/images/Training/batch_norm_model_rmsprop/batch_norm_model_rmsprop_training_diagonal_confusion_matrix.png and b/images/Training/batch_norm_model_rmsprop/batch_norm_model_rmsprop_training_diagonal_confusion_matrix.png differ diff --git a/images/Training/batch_norm_model_rmsprop/batch_norm_model_rmsprop_training_history.png b/images/Training/batch_norm_model_rmsprop/batch_norm_model_rmsprop_training_history.png index 46bf52c..7920bb6 100644 Binary files a/images/Training/batch_norm_model_rmsprop/batch_norm_model_rmsprop_training_history.png and b/images/Training/batch_norm_model_rmsprop/batch_norm_model_rmsprop_training_history.png differ diff --git a/images/Training/batch_norm_model_sgd/batch_norm_model_sgd_training_confusion_matrix.png b/images/Training/batch_norm_model_sgd/batch_norm_model_sgd_training_confusion_matrix.png index a0c13ea..6f9ac54 100644 Binary files a/images/Training/batch_norm_model_sgd/batch_norm_model_sgd_training_confusion_matrix.png and b/images/Training/batch_norm_model_sgd/batch_norm_model_sgd_training_confusion_matrix.png differ diff --git a/images/Training/batch_norm_model_sgd/batch_norm_model_sgd_training_diagonal_confusion_matrix.png b/images/Training/batch_norm_model_sgd/batch_norm_model_sgd_training_diagonal_confusion_matrix.png index 4ad1c0c..863139e 100644 Binary files a/images/Training/batch_norm_model_sgd/batch_norm_model_sgd_training_diagonal_confusion_matrix.png and b/images/Training/batch_norm_model_sgd/batch_norm_model_sgd_training_diagonal_confusion_matrix.png differ diff --git a/images/Training/batch_norm_model_sgd/batch_norm_model_sgd_training_history.png b/images/Training/batch_norm_model_sgd/batch_norm_model_sgd_training_history.png index 627bb41..f69acea 100644 Binary files a/images/Training/batch_norm_model_sgd/batch_norm_model_sgd_training_history.png and b/images/Training/batch_norm_model_sgd/batch_norm_model_sgd_training_history.png differ diff --git a/images/augmented_sample_image.png b/images/augmented_sample_image.png index a1a795c..358b6c1 100644 Binary files a/images/augmented_sample_image.png and b/images/augmented_sample_image.png differ diff --git a/include/CNNBuilder.py b/include/CNNBuilder.py index fdde1da..266cc32 100644 --- a/include/CNNBuilder.py +++ b/include/CNNBuilder.py @@ -1,5 +1,34 @@ -from tensorflow.keras import layers, models, optimizers, callbacks # type: ignore from include.Logger import Logger +from tensorflow.keras import layers, models, optimizers, callbacks, regularizers # type: ignore + +class CustomEarlyStopping(callbacks.Callback): + def __init__(self, target_accuracy=0.95, patience=5, restore_best_weights=True): + super(CustomEarlyStopping, self).__init__() + self.target_accuracy = target_accuracy + self.patience = patience + self.restore_best_weights = restore_best_weights + self.best_accuracy = 0 + self.wait = 0 + self.logger = Logger(__name__) + + def on_epoch_end(self, epoch, logs=None): + current_accuracy = logs["val_accuracy"] + + # Check the current accuracy against the best accuracy + if current_accuracy > self.best_accuracy: + self.best_accuracy = current_accuracy + self.wait = 0 + else: + self.wait += 1 + self.logger.debug(f"Accuracy: {current_accuracy}, Best Accuracy: {self.best_accuracy}, Wait: {self.wait}") + + if self.wait >= self.patience: + self.model.stop_training = True + self.logger.info(f"Early stopping triggered at epoch {epoch}") + + if self.restore_best_weights: + self.model.set_weights(self.best_weights) + self.logger.info("Restored best weights") class CNNBuilder: def __init__(self, input_shape): @@ -7,8 +36,9 @@ def __init__(self, input_shape): self.model.add(layers.InputLayer(input_shape=input_shape)) self.logger = Logger(__name__) - def add_conv_layer(self, filters, kernel_size, activation="relu", padding="same", kernel_reguliser=None): - self.model.add(layers.Conv2D(filters, kernel_size, padding=padding, kernel_regularizer=kernel_reguliser, kernel_initializer="he_normal")) + def add_conv_layer(self, filters, kernel_size, activation="relu", padding="same", kernel_reguliser=None, weight_decay=1e-4): + kernel_reguliser = kernel_reguliser if kernel_reguliser else None + self.model.add(layers.Conv2D(filters, kernel_size, strides=1, padding=padding, kernel_regularizer=regularizers.l2(weight_decay))) self.model.add(layers.BatchNormalization()) # BatchNorm before activation self.model.add(layers.Activation(activation)) # Separate activation return self @@ -68,15 +98,18 @@ def compile_model(self, optimiser="adam", learning_rate=0.001, decay_factor=0.95 self.lr_warmup = None if use_lr_warmup: def lr_schedule(epoch, lr): - if epoch < 5: # Warm-up for first 5 epochs - return lr * (epoch + 1) / 5 - return lr + if epoch < 10: + return 0.001 + elif epoch < 30: + return 0.0005 + else: + return 0.0002 self.lr_warmup = callbacks.LearningRateScheduler(lr_schedule) # Early Stopping self.early_stopping = None if use_early_stopping: - self.early_stopping = callbacks.EarlyStopping(monitor="val_loss", patience=5, restore_best_weights=True) + self.early_stopping = CustomEarlyStopping(target_accuracy=0.95, patience=5, restore_best_weights=True) # Get all callbacks self.callbacks_list = self.get_callbacks() diff --git a/include/TensorModel.py b/include/TensorModel.py index f302b3e..7198cec 100644 --- a/include/TensorModel.py +++ b/include/TensorModel.py @@ -50,10 +50,7 @@ def get_augmentation(self) -> tf.keras.Sequential: tf.keras.layers.RandomFlip("horizontal"), # Randomly flip images horizontally tf.keras.layers.RandomRotation(0.1), # Randomly rotate image up to 10% tf.keras.layers.RandomZoom(0.1), # Randomly zoom image up to 10% - tf.keras.layers.RandomContrast(0.1), # Randomly adjust contrast up to 10% - tf.keras.layers.Lambda(lambda x: tf.image.random_brightness(x, max_delta=0.2)), # Randomly adjust brightness - tf.keras.layers.Lambda(lambda x: tf.image.random_crop(x, size=[tf.shape(x)[0], tf.shape(x)[1] - 8, tf.shape(x)[2] - 8, tf.shape(x)[3]])), # Cutout augmentation - tf.keras.layers.Lambda(lambda x: 0.5 * x + 0.5 * tf.roll(x, shift=1, axis=0)) # MixUp augmentation (approximate) + tf.keras.layers.RandomContrast(0.1) # Randomly adjust contrast up to 10% ]) return data_augmentation @@ -68,13 +65,19 @@ def create_cnn(self, optimiser="adam", batch_normalisation=False, learning_rate= if batch_normalisation: model = (builder .add_data_augmentation(data_augmentation) - .add_conv_layer(32, (3,3)) - .add_pooling_layer() + .add_conv_layer(64, (3,3)) .add_conv_layer(64, (3, 3)) - .add_pooling_layer() + .add_pooling_layer(strides=(2, 2)) + .add_conv_layer(64, (3, 3)) + .add_conv_layer(128, (3, 3)) + .add_pooling_layer(strides=(2, 2)) + .add_conv_layer(64, (3, 3)) + .add_conv_layer(64, (3, 3)) + .add_pooling_layer(strides=(2, 2)) + .add_dropout(0.3) .add_flaten_layer() - .add_dense_layer(128, activation="relu") - .add_dropout(0.5) + .add_dense_layer(256, activation="relu") + .add_dropout(0.3) .add_dense_layer(10, activation="softmax") .compile_model(optimiser=optimiser, learning_rate=learning_rate, decay_factor=decay_factor, use_lr_warmup=True, use_early_stopping=True) .build() diff --git a/models/base_model.h5 b/models/base_model.h5 deleted file mode 100644 index 7fb26da..0000000 Binary files a/models/base_model.h5 and /dev/null differ diff --git a/models/base_model.keras b/models/base_model.keras index bcf927f..4429af2 100644 Binary files a/models/base_model.keras and b/models/base_model.keras differ diff --git a/models/base_model_saved_model/fingerprint.pb b/models/base_model_saved_model/fingerprint.pb deleted file mode 100644 index f9331d4..0000000 --- a/models/base_model_saved_model/fingerprint.pb +++ /dev/null @@ -1 +0,0 @@ -ݙٝx (2 \ No newline at end of file diff --git a/models/base_model_saved_model/saved_model.pb b/models/base_model_saved_model/saved_model.pb deleted file mode 100644 index bc79688..0000000 Binary files a/models/base_model_saved_model/saved_model.pb and /dev/null differ diff --git a/models/base_model_saved_model/variables/variables.data-00000-of-00001 b/models/base_model_saved_model/variables/variables.data-00000-of-00001 deleted file mode 100644 index 01076dc..0000000 Binary files a/models/base_model_saved_model/variables/variables.data-00000-of-00001 and /dev/null differ diff --git a/models/base_model_saved_model/variables/variables.index b/models/base_model_saved_model/variables/variables.index deleted file mode 100644 index 61b9f9c..0000000 Binary files a/models/base_model_saved_model/variables/variables.index and /dev/null differ diff --git a/models/batch_norm_model.h5 b/models/batch_norm_model.h5 deleted file mode 100644 index b673c91..0000000 Binary files a/models/batch_norm_model.h5 and /dev/null differ diff --git a/models/batch_norm_model.keras b/models/batch_norm_model.keras index 3c3a2ea..7fabc1b 100644 Binary files a/models/batch_norm_model.keras and b/models/batch_norm_model.keras differ diff --git a/models/batch_norm_model_rmsprop.h5 b/models/batch_norm_model_rmsprop.h5 deleted file mode 100644 index 6f615b2..0000000 Binary files a/models/batch_norm_model_rmsprop.h5 and /dev/null differ diff --git a/models/batch_norm_model_rmsprop.keras b/models/batch_norm_model_rmsprop.keras index 4a28d2a..a0e1285 100644 Binary files a/models/batch_norm_model_rmsprop.keras and b/models/batch_norm_model_rmsprop.keras differ diff --git a/models/batch_norm_model_rmsprop_saved_model/fingerprint.pb b/models/batch_norm_model_rmsprop_saved_model/fingerprint.pb deleted file mode 100644 index 09a7d67..0000000 --- a/models/batch_norm_model_rmsprop_saved_model/fingerprint.pb +++ /dev/null @@ -1 +0,0 @@ -қuﳆЭ8 گւ(Ȅ=2 \ No newline at end of file diff --git a/models/batch_norm_model_rmsprop_saved_model/saved_model.pb b/models/batch_norm_model_rmsprop_saved_model/saved_model.pb deleted file mode 100644 index f81ea64..0000000 Binary files a/models/batch_norm_model_rmsprop_saved_model/saved_model.pb and /dev/null differ diff --git a/models/batch_norm_model_rmsprop_saved_model/variables/variables.data-00000-of-00001 b/models/batch_norm_model_rmsprop_saved_model/variables/variables.data-00000-of-00001 deleted file mode 100644 index 2adb480..0000000 Binary files a/models/batch_norm_model_rmsprop_saved_model/variables/variables.data-00000-of-00001 and /dev/null differ diff --git a/models/batch_norm_model_rmsprop_saved_model/variables/variables.index b/models/batch_norm_model_rmsprop_saved_model/variables/variables.index deleted file mode 100644 index 2a8304e..0000000 Binary files a/models/batch_norm_model_rmsprop_saved_model/variables/variables.index and /dev/null differ diff --git a/models/batch_norm_model_saved_model/fingerprint.pb b/models/batch_norm_model_saved_model/fingerprint.pb deleted file mode 100644 index 6e1f99a..0000000 --- a/models/batch_norm_model_saved_model/fingerprint.pb +++ /dev/null @@ -1 +0,0 @@ -̸ҕξ$\ 왉ŏܐ(֓ɻ[2 \ No newline at end of file diff --git a/models/batch_norm_model_saved_model/saved_model.pb b/models/batch_norm_model_saved_model/saved_model.pb deleted file mode 100644 index 1bcbc0b..0000000 Binary files a/models/batch_norm_model_saved_model/saved_model.pb and /dev/null differ diff --git a/models/batch_norm_model_saved_model/variables/variables.data-00000-of-00001 b/models/batch_norm_model_saved_model/variables/variables.data-00000-of-00001 deleted file mode 100644 index 38c504d..0000000 Binary files a/models/batch_norm_model_saved_model/variables/variables.data-00000-of-00001 and /dev/null differ diff --git a/models/batch_norm_model_saved_model/variables/variables.index b/models/batch_norm_model_saved_model/variables/variables.index deleted file mode 100644 index 14c8c47..0000000 Binary files a/models/batch_norm_model_saved_model/variables/variables.index and /dev/null differ diff --git a/models/batch_norm_model_sgd.h5 b/models/batch_norm_model_sgd.h5 deleted file mode 100644 index 50bae93..0000000 Binary files a/models/batch_norm_model_sgd.h5 and /dev/null differ diff --git a/models/batch_norm_model_sgd.keras b/models/batch_norm_model_sgd.keras index db1978b..924b116 100644 Binary files a/models/batch_norm_model_sgd.keras and b/models/batch_norm_model_sgd.keras differ diff --git a/models/batch_norm_model_sgd_saved_model/fingerprint.pb b/models/batch_norm_model_sgd_saved_model/fingerprint.pb deleted file mode 100644 index e0a498b..0000000 --- a/models/batch_norm_model_sgd_saved_model/fingerprint.pb +++ /dev/null @@ -1 +0,0 @@ -ЂՎp͝ H(ˌ󄴓2 \ No newline at end of file diff --git a/models/batch_norm_model_sgd_saved_model/saved_model.pb b/models/batch_norm_model_sgd_saved_model/saved_model.pb deleted file mode 100644 index 0af99c3..0000000 Binary files a/models/batch_norm_model_sgd_saved_model/saved_model.pb and /dev/null differ diff --git a/models/batch_norm_model_sgd_saved_model/variables/variables.data-00000-of-00001 b/models/batch_norm_model_sgd_saved_model/variables/variables.data-00000-of-00001 deleted file mode 100644 index dbca7ef..0000000 Binary files a/models/batch_norm_model_sgd_saved_model/variables/variables.data-00000-of-00001 and /dev/null differ diff --git a/models/batch_norm_model_sgd_saved_model/variables/variables.index b/models/batch_norm_model_sgd_saved_model/variables/variables.index deleted file mode 100644 index 2dd3669..0000000 Binary files a/models/batch_norm_model_sgd_saved_model/variables/variables.index and /dev/null differ