diff --git a/Knee Osteoarthritis Prediction/Readme.md b/Knee Osteoarthritis Prediction/Readme.md
new file mode 100644
index 0000000..57cff34
--- /dev/null
+++ b/Knee Osteoarthritis Prediction/Readme.md
@@ -0,0 +1,21 @@
+# Knee Osteoarthritis Prediction Dataset π©ΈπΌ
+
+Welcome to the Knee osteoarthrits Xray Dataset! π The objective of this project is to classify xrays of Knee Xrays into 5 distinct categories based on severity of the disease.
+
+- [Knee Osteoarthritis](https://www.kaggle.com/datasets/shashwatwork/knee-osteoarthritis-dataset-with-severity/data)
+
+## Context π
+
+Knee osteoarthritis is defined by degeneration of the kneeβs articular cartilage the flexible, slippery material that normally protects bones from joint friction and impact. The condition also involves changes to the bone underneath the cartilage and can affect nearby soft tissues. Knee osteoarthritis is by far the most common type of arthritis to cause knee pain and often referred to as simply knee arthritis. Many other less common types of arthritis can also cause knee pain, including rheumatoid arthritis, pseudogout, and reactive arthritis.
+
+## Image Descriptors π
+
+The dataset consists of four subdirectories: train, test, auto test and val (test and auto_test are the same). All four contain 5 subdirectories, each representing a severity of osteoarthritis. The test and auto_test subdirectory contains 1346 images in total, while the train subdirectory contains 5778 images in total and the val subdirectory contains 826 images in total.
+
+Each subdirectory has 5 severity grades:
+
+0. **Grade 0**: Healthy knee image.
+1. **Grade 1(Doubtful)**: Doubtful joint narrowing with possible osteophytic lipping
+2. **Grade 2(Minimal)**: Definite presence of osteophytes and possible joint space narrowing
+3. **Grade 3(Moderate)**: Multiple osteophytes, definite joint space narrowing, with mild sclerosis.
+4. **Grade 4(Severe)**: Large osteophytes, significant joint narrowing, and severe sclerosis.
\ No newline at end of file
diff --git a/Knee Osteoarthritis Prediction/knee-osteoarthritis-prediction.ipynb b/Knee Osteoarthritis Prediction/knee-osteoarthritis-prediction.ipynb
new file mode 100644
index 0000000..36a95e0
--- /dev/null
+++ b/Knee Osteoarthritis Prediction/knee-osteoarthritis-prediction.ipynb
@@ -0,0 +1 @@
+{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.13","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"nvidiaTeslaT4","dataSources":[{"sourceId":2097406,"sourceType":"datasetVersion","datasetId":1257880}],"dockerImageVersionId":30733,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import numpy as np\nimport keras\nimport tensorflow as tf\n\n# Loading train, val, and test datasets\ntrain_dataset = keras.utils.image_dataset_from_directory(\n \"/kaggle/input/knee-osteoarthritis-dataset-with-severity/train\",\n image_size=(128, 128),\n batch_size=32\n)\n\nval_dataset = keras.utils.image_dataset_from_directory(\n \"/kaggle/input/knee-osteoarthritis-dataset-with-severity/val\",\n image_size=(128, 128),\n batch_size=32\n)\n\ntest_dataset = keras.utils.image_dataset_from_directory(\n \"/kaggle/input/knee-osteoarthritis-dataset-with-severity/test\",\n image_size=(128, 128),\n batch_size=32\n)\n\n# Normalizing datasets\nnormalization_layer = keras.layers.Rescaling(1./255)\ntrain_dataset = train_dataset.map(lambda x, y: (normalization_layer(x), y))\nval_dataset = val_dataset.map(lambda x, y: (normalization_layer(x), y))\ntest_dataset = test_dataset.map(lambda x, y: (normalization_layer(x), y))\n\n# Function to convert dataset to lists of negative images and labels\ndef process_dataset(dataset):\n images = []\n labels = []\n for imgs, lbls in dataset:\n for img, lbl in zip(imgs, lbls):\n img = tf.image.rgb_to_grayscale(img)\n img = img.numpy()\n negative_img = 1 - img\n images.append(negative_img)\n labels.append(lbl.numpy())\n return np.array(images), np.array(labels)\n\n# Processing the datasets\ntrain_images, train_labels = process_dataset(train_dataset)\nval_images, val_labels = process_dataset(val_dataset)\ntest_images, test_labels = process_dataset(test_dataset)\n\n# Converting labels to one-hot encoded format\ntrain_labels = keras.utils.to_categorical(train_labels, 5)\nval_labels = keras.utils.to_categorical(val_labels, 5)\ntest_labels = keras.utils.to_categorical(test_labels, 5)\n\n# Check the shapes of the datasets\nprint(f\"Train images shape: {train_images.shape}\")\nprint(f\"Train labels shape: {train_labels.shape}\")\nprint(f\"Validation images shape: {val_images.shape}\")\nprint(f\"Validation labels shape: {val_labels.shape}\")\nprint(f\"Test images shape: {test_images.shape}\")\nprint(f\"Test labels shape: {test_labels.shape}\")\n","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2024-06-16T04:26:28.800930Z","iopub.execute_input":"2024-06-16T04:26:28.801902Z","iopub.status.idle":"2024-06-16T04:27:08.204198Z","shell.execute_reply.started":"2024-06-16T04:26:28.801857Z","shell.execute_reply":"2024-06-16T04:27:08.203231Z"},"trusted":true},"execution_count":1,"outputs":[{"name":"stderr","text":"2024-06-16 04:26:30.409384: E external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:9261] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered\n2024-06-16 04:26:30.409482: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:607] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered\n2024-06-16 04:26:30.537087: E external/local_xla/xla/stream_executor/cuda/cuda_blas.cc:1515] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered\n","output_type":"stream"},{"name":"stdout","text":"Found 5778 files belonging to 5 classes.\nFound 826 files belonging to 5 classes.\nFound 1656 files belonging to 5 classes.\nTrain images shape: (5778, 128, 128, 1)\nTrain labels shape: (5778, 5)\nValidation images shape: (826, 128, 128, 1)\nValidation labels shape: (826, 5)\nTest images shape: (1656, 128, 128, 1)\nTest labels shape: (1656, 5)\n","output_type":"stream"}]},{"cell_type":"code","source":"#combining into one\n\nimages = np.concatenate((train_images, val_images, test_images), axis=0)\nlabels = np.concatenate((train_labels, val_labels, test_labels), axis=0)\n\nimages.shape","metadata":{"execution":{"iopub.status.busy":"2024-06-16T04:27:08.206168Z","iopub.execute_input":"2024-06-16T04:27:08.206494Z","iopub.status.idle":"2024-06-16T04:27:08.414967Z","shell.execute_reply.started":"2024-06-16T04:27:08.206467Z","shell.execute_reply":"2024-06-16T04:27:08.414217Z"},"trusted":true},"execution_count":2,"outputs":[{"execution_count":2,"output_type":"execute_result","data":{"text/plain":"(8260, 128, 128, 1)"},"metadata":{}}]},{"cell_type":"code","source":"from keras.models import Sequential \nfrom keras.layers import Dense, Dropout, GlobalAvgPool2D, BatchNormalization\nfrom keras.layers import Conv2D, MaxPooling2D \nfrom keras.callbacks import ModelCheckpoint \n\nmodel = Sequential()\n\n#first cnn layers followed by a relu and a max pooling layer\nmodel.add(Conv2D(64, (3,3), padding = 'same', input_shape = (128, 128, 1), activation = 'relu'))\nmodel.add(BatchNormalization())\nmodel.add(MaxPooling2D(pool_size=(2,2)))\n\n#second layer similarly\nmodel.add(Conv2D(64, (3,3), padding = 'same', activation = 'relu'))\nmodel.add(BatchNormalization())\nmodel.add(MaxPooling2D(pool_size=(2,2)))\n\n#third layer\nmodel.add(Conv2D(64, (3,3), padding = 'same', activation = 'relu'))\nmodel.add(BatchNormalization())\nmodel.add(MaxPooling2D(pool_size=(2,2)))\n\n#brings everything to a simple shape, basically (128,1)\nmodel.add(GlobalAvgPool2D())\n\nmodel.add(Dense(1024, activation='relu'))\n\n#final layer\nmodel.add(Dense(5,activation='softmax'))\n\nmodel.compile(loss = 'categorical_crossentropy', optimizer = 'adam', metrics = ['accuracy'])\n\nmodel.summary()","metadata":{"execution":{"iopub.status.busy":"2024-06-16T04:27:08.416083Z","iopub.execute_input":"2024-06-16T04:27:08.416430Z","iopub.status.idle":"2024-06-16T04:27:08.613846Z","shell.execute_reply.started":"2024-06-16T04:27:08.416393Z","shell.execute_reply":"2024-06-16T04:27:08.612937Z"},"trusted":true},"execution_count":3,"outputs":[{"name":"stderr","text":"/opt/conda/lib/python3.10/site-packages/keras/src/layers/convolutional/base_conv.py:107: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.\n super().__init__(activity_regularizer=activity_regularizer, **kwargs)\n","output_type":"stream"},{"output_type":"display_data","data":{"text/plain":"\u001b[1mModel: \"sequential\"\u001b[0m\n","text/html":"
Model: \"sequential\"\n
\n"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"βββββββββββββββββββββββββββββββββββ³βββββββββββββββββββββββββ³ββββββββββββββββ\nβ\u001b[1m \u001b[0m\u001b[1mLayer (type) \u001b[0m\u001b[1m \u001b[0mβ\u001b[1m \u001b[0m\u001b[1mOutput Shape \u001b[0m\u001b[1m \u001b[0mβ\u001b[1m \u001b[0m\u001b[1m Param #\u001b[0m\u001b[1m \u001b[0mβ\nβ‘βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ©\nβ conv2d (\u001b[38;5;33mConv2D\u001b[0m) β (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m128\u001b[0m, \u001b[38;5;34m128\u001b[0m, \u001b[38;5;34m64\u001b[0m) β \u001b[38;5;34m640\u001b[0m β\nβββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββΌββββββββββββββββ€\nβ batch_normalization β (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m128\u001b[0m, \u001b[38;5;34m128\u001b[0m, \u001b[38;5;34m64\u001b[0m) β \u001b[38;5;34m256\u001b[0m β\nβ (\u001b[38;5;33mBatchNormalization\u001b[0m) β β β\nβββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββΌββββββββββββββββ€\nβ max_pooling2d (\u001b[38;5;33mMaxPooling2D\u001b[0m) β (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m64\u001b[0m, \u001b[38;5;34m64\u001b[0m, \u001b[38;5;34m64\u001b[0m) β \u001b[38;5;34m0\u001b[0m β\nβββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββΌββββββββββββββββ€\nβ conv2d_1 (\u001b[38;5;33mConv2D\u001b[0m) β (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m64\u001b[0m, \u001b[38;5;34m64\u001b[0m, \u001b[38;5;34m64\u001b[0m) β \u001b[38;5;34m36,928\u001b[0m β\nβββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββΌββββββββββββββββ€\nβ batch_normalization_1 β (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m64\u001b[0m, \u001b[38;5;34m64\u001b[0m, \u001b[38;5;34m64\u001b[0m) β \u001b[38;5;34m256\u001b[0m β\nβ (\u001b[38;5;33mBatchNormalization\u001b[0m) β β β\nβββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββΌββββββββββββββββ€\nβ max_pooling2d_1 (\u001b[38;5;33mMaxPooling2D\u001b[0m) β (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m, \u001b[38;5;34m32\u001b[0m, \u001b[38;5;34m64\u001b[0m) β \u001b[38;5;34m0\u001b[0m β\nβββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββΌββββββββββββββββ€\nβ conv2d_2 (\u001b[38;5;33mConv2D\u001b[0m) β (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m, \u001b[38;5;34m32\u001b[0m, \u001b[38;5;34m64\u001b[0m) β \u001b[38;5;34m36,928\u001b[0m β\nβββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββΌββββββββββββββββ€\nβ batch_normalization_2 β (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m32\u001b[0m, \u001b[38;5;34m32\u001b[0m, \u001b[38;5;34m64\u001b[0m) β \u001b[38;5;34m256\u001b[0m β\nβ (\u001b[38;5;33mBatchNormalization\u001b[0m) β β β\nβββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββΌββββββββββββββββ€\nβ max_pooling2d_2 (\u001b[38;5;33mMaxPooling2D\u001b[0m) β (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m16\u001b[0m, \u001b[38;5;34m16\u001b[0m, \u001b[38;5;34m64\u001b[0m) β \u001b[38;5;34m0\u001b[0m β\nβββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββΌββββββββββββββββ€\nβ global_average_pooling2d β (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m64\u001b[0m) β \u001b[38;5;34m0\u001b[0m β\nβ (\u001b[38;5;33mGlobalAveragePooling2D\u001b[0m) β β β\nβββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββΌββββββββββββββββ€\nβ dense (\u001b[38;5;33mDense\u001b[0m) β (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m1024\u001b[0m) β \u001b[38;5;34m66,560\u001b[0m β\nβββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββΌββββββββββββββββ€\nβ dense_1 (\u001b[38;5;33mDense\u001b[0m) β (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m5\u001b[0m) β \u001b[38;5;34m5,125\u001b[0m β\nβββββββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββββ΄ββββββββββββββββ\n","text/html":"βββββββββββββββββββββββββββββββββββ³βββββββββββββββββββββββββ³ββββββββββββββββ\nβ Layer (type) β Output Shape β Param # β\nβ‘βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ©\nβ conv2d (Conv2D) β (None, 128, 128, 64) β 640 β\nβββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββΌββββββββββββββββ€\nβ batch_normalization β (None, 128, 128, 64) β 256 β\nβ (BatchNormalization) β β β\nβββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββΌββββββββββββββββ€\nβ max_pooling2d (MaxPooling2D) β (None, 64, 64, 64) β 0 β\nβββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββΌββββββββββββββββ€\nβ conv2d_1 (Conv2D) β (None, 64, 64, 64) β 36,928 β\nβββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββΌββββββββββββββββ€\nβ batch_normalization_1 β (None, 64, 64, 64) β 256 β\nβ (BatchNormalization) β β β\nβββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββΌββββββββββββββββ€\nβ max_pooling2d_1 (MaxPooling2D) β (None, 32, 32, 64) β 0 β\nβββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββΌββββββββββββββββ€\nβ conv2d_2 (Conv2D) β (None, 32, 32, 64) β 36,928 β\nβββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββΌββββββββββββββββ€\nβ batch_normalization_2 β (None, 32, 32, 64) β 256 β\nβ (BatchNormalization) β β β\nβββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββΌββββββββββββββββ€\nβ max_pooling2d_2 (MaxPooling2D) β (None, 16, 16, 64) β 0 β\nβββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββΌββββββββββββββββ€\nβ global_average_pooling2d β (None, 64) β 0 β\nβ (GlobalAveragePooling2D) β β β\nβββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββΌββββββββββββββββ€\nβ dense (Dense) β (None, 1024) β 66,560 β\nβββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββΌββββββββββββββββ€\nβ dense_1 (Dense) β (None, 5) β 5,125 β\nβββββββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββββ΄ββββββββββββββββ\n
\n"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"\u001b[1m Total params: \u001b[0m\u001b[38;5;34m146,949\u001b[0m (574.02 KB)\n","text/html":" Total params: 146,949 (574.02 KB)\n
\n"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m146,565\u001b[0m (572.52 KB)\n","text/html":" Trainable params: 146,565 (572.52 KB)\n
\n"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m384\u001b[0m (1.50 KB)\n","text/html":" Non-trainable params: 384 (1.50 KB)\n
\n"},"metadata":{}}]},{"cell_type":"code","source":"from sklearn.model_selection import train_test_split\nx_train, x_test, y_train, y_test = train_test_split(images, labels, test_size=0.1)","metadata":{"execution":{"iopub.status.busy":"2024-06-16T04:27:08.615005Z","iopub.execute_input":"2024-06-16T04:27:08.615308Z","iopub.status.idle":"2024-06-16T04:27:09.187191Z","shell.execute_reply.started":"2024-06-16T04:27:08.615283Z","shell.execute_reply":"2024-06-16T04:27:09.186387Z"},"trusted":true},"execution_count":4,"outputs":[]},{"cell_type":"code","source":"from keras.callbacks import ModelCheckpoint\n\nmodel_checkpoint = ModelCheckpoint('model.keras', monitor='val_accuracy', save_best_only=True, verbose=1, mode='max')","metadata":{"execution":{"iopub.status.busy":"2024-06-16T04:27:09.189221Z","iopub.execute_input":"2024-06-16T04:27:09.189510Z","iopub.status.idle":"2024-06-16T04:27:09.195130Z","shell.execute_reply.started":"2024-06-16T04:27:09.189486Z","shell.execute_reply":"2024-06-16T04:27:09.194242Z"},"trusted":true},"execution_count":5,"outputs":[]},{"cell_type":"code","source":"history=model.fit(x_train,y_train,epochs=75,validation_split=0.2, batch_size=40,callbacks=[model_checkpoint])","metadata":{"execution":{"iopub.status.busy":"2024-06-16T04:27:09.196127Z","iopub.execute_input":"2024-06-16T04:27:09.197406Z","iopub.status.idle":"2024-06-16T04:32:31.868546Z","shell.execute_reply.started":"2024-06-16T04:27:09.197382Z","shell.execute_reply":"2024-06-16T04:32:31.867745Z"},"trusted":true},"execution_count":6,"outputs":[{"name":"stdout","text":"Epoch 1/75\n\u001b[1m 7/149\u001b[0m \u001b[37mββββββββββββββββββββ\u001b[0m \u001b[1m3s\u001b[0m 26ms/step - accuracy: 0.2644 - loss: 1.5503","output_type":"stream"},{"name":"stderr","text":"WARNING: All log messages before absl::InitializeLog() is called are written to STDERR\nI0000 00:00:1718512039.785344 128 device_compiler.h:186] Compiled cluster using XLA! This line is logged at most once for the lifetime of the process.\nW0000 00:00:1718512039.805165 128 graph_launch.cc:671] Fallback to op-by-op mode because memset node breaks graph update\n","output_type":"stream"},{"name":"stdout","text":"\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 60ms/step - accuracy: 0.3631 - loss: 1.4462","output_type":"stream"},{"name":"stderr","text":"W0000 00:00:1718512048.629996 130 graph_launch.cc:671] Fallback to op-by-op mode because memset node breaks graph update\nW0000 00:00:1718512049.594612 128 graph_launch.cc:671] Fallback to op-by-op mode because memset node breaks graph update\n","output_type":"stream"},{"name":"stdout","text":"\nEpoch 1: val_accuracy improved from -inf to 0.25824, saving model to model.keras\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m21s\u001b[0m 75ms/step - accuracy: 0.3632 - loss: 1.4461 - val_accuracy: 0.2582 - val_loss: 1.6645\nEpoch 2/75\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.3872 - loss: 1.4107\nEpoch 2: val_accuracy did not improve from 0.25824\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.3872 - loss: 1.4106 - val_accuracy: 0.1305 - val_loss: 1.6405\nEpoch 3/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.3998 - loss: 1.3953\nEpoch 3: val_accuracy improved from 0.25824 to 0.27102, saving model to model.keras\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.3998 - loss: 1.3952 - val_accuracy: 0.2710 - val_loss: 1.7419\nEpoch 4/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.3927 - loss: 1.3856\nEpoch 4: val_accuracy did not improve from 0.27102\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.3927 - loss: 1.3855 - val_accuracy: 0.2670 - val_loss: 1.5633\nEpoch 5/75\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.4174 - loss: 1.3410\nEpoch 5: val_accuracy did not improve from 0.27102\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.4173 - loss: 1.3410 - val_accuracy: 0.1479 - val_loss: 2.5093\nEpoch 6/75\n\u001b[1m148/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.4328 - loss: 1.3063\nEpoch 6: val_accuracy improved from 0.27102 to 0.34499, saving model to model.keras\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.4329 - loss: 1.3062 - val_accuracy: 0.3450 - val_loss: 1.4576\nEpoch 7/75\n\u001b[1m148/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.4550 - loss: 1.2223\nEpoch 7: val_accuracy did not improve from 0.34499\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.4552 - loss: 1.2221 - val_accuracy: 0.3416 - val_loss: 1.3725\nEpoch 8/75\n\u001b[1m148/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.4964 - loss: 1.1741\nEpoch 8: val_accuracy did not improve from 0.34499\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.4963 - loss: 1.1741 - val_accuracy: 0.1231 - val_loss: 2.2042\nEpoch 9/75\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.5115 - loss: 1.1327\nEpoch 9: val_accuracy did not improve from 0.34499\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.5115 - loss: 1.1327 - val_accuracy: 0.1372 - val_loss: 2.9342\nEpoch 10/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.5230 - loss: 1.0828\nEpoch 10: val_accuracy improved from 0.34499 to 0.46738, saving model to model.keras\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.5232 - loss: 1.0825 - val_accuracy: 0.4674 - val_loss: 1.1848\nEpoch 11/75\n\u001b[1m148/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.5552 - loss: 1.0373\nEpoch 11: val_accuracy improved from 0.46738 to 0.50908, saving model to model.keras\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.5552 - loss: 1.0373 - val_accuracy: 0.5091 - val_loss: 1.1329\nEpoch 12/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.5605 - loss: 1.0064\nEpoch 12: val_accuracy did not improve from 0.50908\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.5606 - loss: 1.0063 - val_accuracy: 0.4956 - val_loss: 1.1555\nEpoch 13/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 26ms/step - accuracy: 0.5852 - loss: 0.9698\nEpoch 13: val_accuracy did not improve from 0.50908\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.5852 - loss: 0.9699 - val_accuracy: 0.1856 - val_loss: 2.7812\nEpoch 14/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.5885 - loss: 0.9539\nEpoch 14: val_accuracy improved from 0.50908 to 0.51379, saving model to model.keras\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.5887 - loss: 0.9537 - val_accuracy: 0.5138 - val_loss: 1.1554\nEpoch 15/75\n\u001b[1m148/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.5931 - loss: 0.9369\nEpoch 15: val_accuracy did not improve from 0.51379\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.5932 - loss: 0.9370 - val_accuracy: 0.1870 - val_loss: 2.3389\nEpoch 16/75\n\u001b[1m148/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.6153 - loss: 0.9089\nEpoch 16: val_accuracy improved from 0.51379 to 0.55481, saving model to model.keras\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.6153 - loss: 0.9089 - val_accuracy: 0.5548 - val_loss: 1.0603\nEpoch 17/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.6049 - loss: 0.9182\nEpoch 17: val_accuracy did not improve from 0.55481\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.6050 - loss: 0.9180 - val_accuracy: 0.4983 - val_loss: 1.1813\nEpoch 18/75\n\u001b[1m148/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.6302 - loss: 0.8710\nEpoch 18: val_accuracy did not improve from 0.55481\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.6301 - loss: 0.8712 - val_accuracy: 0.1950 - val_loss: 3.7831\nEpoch 19/75\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.6315 - loss: 0.8709\nEpoch 19: val_accuracy did not improve from 0.55481\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.6315 - loss: 0.8709 - val_accuracy: 0.4970 - val_loss: 1.1695\nEpoch 20/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.6362 - loss: 0.8539\nEpoch 20: val_accuracy did not improve from 0.55481\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.6362 - loss: 0.8538 - val_accuracy: 0.5010 - val_loss: 1.3112\nEpoch 21/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.6452 - loss: 0.8280\nEpoch 21: val_accuracy improved from 0.55481 to 0.55952, saving model to model.keras\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.6453 - loss: 0.8281 - val_accuracy: 0.5595 - val_loss: 1.0547\nEpoch 22/75\n\u001b[1m148/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.6482 - loss: 0.8222\nEpoch 22: val_accuracy did not improve from 0.55952\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.6483 - loss: 0.8220 - val_accuracy: 0.3631 - val_loss: 2.1385\nEpoch 23/75\n\u001b[1m148/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.6629 - loss: 0.7819\nEpoch 23: val_accuracy did not improve from 0.55952\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.6628 - loss: 0.7822 - val_accuracy: 0.2919 - val_loss: 1.9053\nEpoch 24/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.6660 - loss: 0.7872\nEpoch 24: val_accuracy did not improve from 0.55952\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.6660 - loss: 0.7873 - val_accuracy: 0.5528 - val_loss: 1.1515\nEpoch 25/75\n\u001b[1m148/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 26ms/step - accuracy: 0.6678 - loss: 0.7780\nEpoch 25: val_accuracy did not improve from 0.55952\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.6677 - loss: 0.7781 - val_accuracy: 0.2434 - val_loss: 2.5526\nEpoch 26/75\n\u001b[1m148/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.6791 - loss: 0.7644\nEpoch 26: val_accuracy did not improve from 0.55952\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.6789 - loss: 0.7646 - val_accuracy: 0.5293 - val_loss: 1.1253\nEpoch 27/75\n\u001b[1m148/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.6855 - loss: 0.7431\nEpoch 27: val_accuracy improved from 0.55952 to 0.59987, saving model to model.keras\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.6853 - loss: 0.7434 - val_accuracy: 0.5999 - val_loss: 1.0301\nEpoch 28/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 26ms/step - accuracy: 0.6887 - loss: 0.7218\nEpoch 28: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.6886 - loss: 0.7219 - val_accuracy: 0.5817 - val_loss: 1.0336\nEpoch 29/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 26ms/step - accuracy: 0.6957 - loss: 0.7090\nEpoch 29: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.6958 - loss: 0.7090 - val_accuracy: 0.5205 - val_loss: 1.3257\nEpoch 30/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.7126 - loss: 0.6794\nEpoch 30: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.7123 - loss: 0.6800 - val_accuracy: 0.5696 - val_loss: 1.1282\nEpoch 31/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 26ms/step - accuracy: 0.7136 - loss: 0.6690\nEpoch 31: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.7135 - loss: 0.6693 - val_accuracy: 0.4936 - val_loss: 1.3762\nEpoch 32/75\n\u001b[1m148/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 26ms/step - accuracy: 0.7219 - loss: 0.6512\nEpoch 32: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.7219 - loss: 0.6514 - val_accuracy: 0.5192 - val_loss: 1.2084\nEpoch 33/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 26ms/step - accuracy: 0.7212 - loss: 0.6475\nEpoch 33: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.7211 - loss: 0.6478 - val_accuracy: 0.5548 - val_loss: 1.1369\nEpoch 34/75\n\u001b[1m148/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 26ms/step - accuracy: 0.7308 - loss: 0.6205\nEpoch 34: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.7308 - loss: 0.6206 - val_accuracy: 0.5837 - val_loss: 1.0790\nEpoch 35/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 26ms/step - accuracy: 0.7495 - loss: 0.6090\nEpoch 35: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.7493 - loss: 0.6093 - val_accuracy: 0.4445 - val_loss: 1.4558\nEpoch 36/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 26ms/step - accuracy: 0.7545 - loss: 0.5843\nEpoch 36: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.7542 - loss: 0.5848 - val_accuracy: 0.5837 - val_loss: 1.3020\nEpoch 37/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 26ms/step - accuracy: 0.7594 - loss: 0.5855\nEpoch 37: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.7593 - loss: 0.5855 - val_accuracy: 0.5192 - val_loss: 1.3373\nEpoch 38/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 26ms/step - accuracy: 0.7555 - loss: 0.5754\nEpoch 38: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.7553 - loss: 0.5757 - val_accuracy: 0.5743 - val_loss: 1.2139\nEpoch 39/75\n\u001b[1m148/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.7704 - loss: 0.5642\nEpoch 39: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.7704 - loss: 0.5642 - val_accuracy: 0.5118 - val_loss: 1.5321\nEpoch 40/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 26ms/step - accuracy: 0.7894 - loss: 0.5162\nEpoch 40: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.7890 - loss: 0.5170 - val_accuracy: 0.5084 - val_loss: 1.6940\nEpoch 41/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.7732 - loss: 0.5409\nEpoch 41: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.7733 - loss: 0.5408 - val_accuracy: 0.4418 - val_loss: 1.8387\nEpoch 42/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 26ms/step - accuracy: 0.7806 - loss: 0.5054\nEpoch 42: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.7805 - loss: 0.5057 - val_accuracy: 0.5077 - val_loss: 1.5920\nEpoch 43/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 26ms/step - accuracy: 0.8035 - loss: 0.4706\nEpoch 43: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.8035 - loss: 0.4708 - val_accuracy: 0.4728 - val_loss: 1.6184\nEpoch 44/75\n\u001b[1m148/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 26ms/step - accuracy: 0.8009 - loss: 0.4862\nEpoch 44: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.8009 - loss: 0.4862 - val_accuracy: 0.5434 - val_loss: 1.5181\nEpoch 45/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.8031 - loss: 0.4821\nEpoch 45: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.8031 - loss: 0.4820 - val_accuracy: 0.5965 - val_loss: 1.3539\nEpoch 46/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 26ms/step - accuracy: 0.8259 - loss: 0.4282\nEpoch 46: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.8256 - loss: 0.4288 - val_accuracy: 0.5864 - val_loss: 1.2449\nEpoch 47/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.8145 - loss: 0.4512\nEpoch 47: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.8146 - loss: 0.4512 - val_accuracy: 0.5165 - val_loss: 1.3564\nEpoch 48/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.8460 - loss: 0.3860\nEpoch 48: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.8457 - loss: 0.3865 - val_accuracy: 0.5723 - val_loss: 1.4342\nEpoch 49/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 26ms/step - accuracy: 0.8235 - loss: 0.4180\nEpoch 49: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.8238 - loss: 0.4176 - val_accuracy: 0.4438 - val_loss: 2.5214\nEpoch 50/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 26ms/step - accuracy: 0.8465 - loss: 0.3844\nEpoch 50: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.8463 - loss: 0.3847 - val_accuracy: 0.5905 - val_loss: 1.3839\nEpoch 51/75\n\u001b[1m148/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 26ms/step - accuracy: 0.8392 - loss: 0.3784\nEpoch 51: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.8391 - loss: 0.3785 - val_accuracy: 0.4983 - val_loss: 1.8856\nEpoch 52/75\n\u001b[1m148/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.8598 - loss: 0.3584\nEpoch 52: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.8597 - loss: 0.3586 - val_accuracy: 0.5656 - val_loss: 1.4128\nEpoch 53/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.8737 - loss: 0.3193\nEpoch 53: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.8735 - loss: 0.3198 - val_accuracy: 0.5387 - val_loss: 1.7037\nEpoch 54/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.8794 - loss: 0.3036\nEpoch 54: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.8794 - loss: 0.3037 - val_accuracy: 0.5010 - val_loss: 2.2785\nEpoch 55/75\n\u001b[1m148/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.8783 - loss: 0.3137\nEpoch 55: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.8782 - loss: 0.3140 - val_accuracy: 0.4391 - val_loss: 3.6478\nEpoch 56/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.8692 - loss: 0.3228\nEpoch 56: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.8693 - loss: 0.3228 - val_accuracy: 0.4607 - val_loss: 2.8096\nEpoch 57/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.8786 - loss: 0.3067\nEpoch 57: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.8788 - loss: 0.3064 - val_accuracy: 0.5777 - val_loss: 1.8906\nEpoch 58/75\n\u001b[1m148/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.8950 - loss: 0.2734\nEpoch 58: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.8950 - loss: 0.2735 - val_accuracy: 0.5454 - val_loss: 1.9054\nEpoch 59/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 26ms/step - accuracy: 0.8888 - loss: 0.2805\nEpoch 59: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.8887 - loss: 0.2809 - val_accuracy: 0.4533 - val_loss: 2.2852\nEpoch 60/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 26ms/step - accuracy: 0.9143 - loss: 0.2416\nEpoch 60: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.9141 - loss: 0.2417 - val_accuracy: 0.5367 - val_loss: 2.0425\nEpoch 61/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.9099 - loss: 0.2284\nEpoch 61: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.9098 - loss: 0.2287 - val_accuracy: 0.5857 - val_loss: 1.9333\nEpoch 62/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 26ms/step - accuracy: 0.9116 - loss: 0.2333\nEpoch 62: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.9115 - loss: 0.2335 - val_accuracy: 0.3813 - val_loss: 3.6938\nEpoch 63/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.9173 - loss: 0.2175\nEpoch 63: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.9170 - loss: 0.2180 - val_accuracy: 0.5783 - val_loss: 2.1910\nEpoch 64/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 26ms/step - accuracy: 0.9166 - loss: 0.2192\nEpoch 64: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.9165 - loss: 0.2194 - val_accuracy: 0.5286 - val_loss: 2.5215\nEpoch 65/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 26ms/step - accuracy: 0.9231 - loss: 0.2050\nEpoch 65: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.9229 - loss: 0.2053 - val_accuracy: 0.3853 - val_loss: 4.4304\nEpoch 66/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.9188 - loss: 0.2161\nEpoch 66: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.9188 - loss: 0.2162 - val_accuracy: 0.4869 - val_loss: 2.1539\nEpoch 67/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 26ms/step - accuracy: 0.9355 - loss: 0.1746\nEpoch 67: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.9354 - loss: 0.1748 - val_accuracy: 0.4795 - val_loss: 2.9539\nEpoch 68/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 26ms/step - accuracy: 0.9357 - loss: 0.1790\nEpoch 68: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.9353 - loss: 0.1798 - val_accuracy: 0.4217 - val_loss: 2.9449\nEpoch 69/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 26ms/step - accuracy: 0.9406 - loss: 0.1720\nEpoch 69: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.9406 - loss: 0.1719 - val_accuracy: 0.5535 - val_loss: 1.9233\nEpoch 70/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 26ms/step - accuracy: 0.9380 - loss: 0.1754\nEpoch 70: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.9379 - loss: 0.1755 - val_accuracy: 0.4613 - val_loss: 2.6149\nEpoch 71/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.9403 - loss: 0.1562\nEpoch 71: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.9402 - loss: 0.1564 - val_accuracy: 0.5595 - val_loss: 1.9777\nEpoch 72/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.9463 - loss: 0.1483\nEpoch 72: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.9462 - loss: 0.1485 - val_accuracy: 0.5757 - val_loss: 2.1103\nEpoch 73/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 26ms/step - accuracy: 0.9327 - loss: 0.1758\nEpoch 73: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.9328 - loss: 0.1755 - val_accuracy: 0.5649 - val_loss: 2.0644\nEpoch 74/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.9438 - loss: 0.1502\nEpoch 74: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 27ms/step - accuracy: 0.9438 - loss: 0.1502 - val_accuracy: 0.5306 - val_loss: 2.7951\nEpoch 75/75\n\u001b[1m147/149\u001b[0m \u001b[32mβββββββββββββββββββ\u001b[0m\u001b[37mβ\u001b[0m \u001b[1m0s\u001b[0m 26ms/step - accuracy: 0.9416 - loss: 0.1568\nEpoch 75: val_accuracy did not improve from 0.59987\n\u001b[1m149/149\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 27ms/step - accuracy: 0.9415 - loss: 0.1568 - val_accuracy: 0.5266 - val_loss: 2.2239\n","output_type":"stream"}]},{"cell_type":"code","source":"model.save('model.keras')","metadata":{"execution":{"iopub.status.busy":"2024-06-16T04:32:31.869841Z","iopub.execute_input":"2024-06-16T04:32:31.870127Z","iopub.status.idle":"2024-06-16T04:32:31.922999Z","shell.execute_reply.started":"2024-06-16T04:32:31.870102Z","shell.execute_reply":"2024-06-16T04:32:31.922317Z"},"trusted":true},"execution_count":7,"outputs":[]},{"cell_type":"code","source":"from matplotlib import pyplot as plt\n\n# Assuming 'history' is the variable holding the training history object\nN = len(history.history[\"loss\"]) # Dynamically set N to match the number of epochs\n\n# Plot the training loss and accuracy\nplt.style.use(\"ggplot\")\nplt.figure()\nplt.plot(np.arange(0, N), history.history[\"loss\"], label=\"train_loss\")\nplt.plot(np.arange(0, N), history.history[\"val_loss\"], label=\"val_loss\")\nplt.plot(np.arange(0, N), history.history[\"accuracy\"], label=\"train_acc\")\nplt.plot(np.arange(0, N), history.history[\"val_accuracy\"], label=\"val_acc\")\nplt.title(\"Training Loss and Accuracy\")\nplt.xlabel(\"Epoch #\")\nplt.ylabel(\"Loss/Accuracy\")\nplt.legend(loc=\"center right\")\nplt.savefig(\"CNN_Model.png\") # Save the plot as a PNG file\nplt.show() # Display the plot\n","metadata":{"execution":{"iopub.status.busy":"2024-06-16T04:32:31.924168Z","iopub.execute_input":"2024-06-16T04:32:31.924804Z","iopub.status.idle":"2024-06-16T04:32:32.397957Z","shell.execute_reply.started":"2024-06-16T04:32:31.924772Z","shell.execute_reply":"2024-06-16T04:32:32.397042Z"},"trusted":true},"execution_count":8,"outputs":[{"output_type":"display_data","data":{"text/plain":"