{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.14","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"gpu","dataSources":[{"sourceId":3649,"databundleVersionId":46718,"sourceType":"competition"}],"dockerImageVersionId":30787,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"execution":{"iopub.status.busy":"2024-11-07T14:18:08.911321Z","iopub.execute_input":"2024-11-07T14:18:08.911743Z","iopub.status.idle":"2024-11-07T14:18:09.284303Z","shell.execute_reply.started":"2024-11-07T14:18:08.911702Z","shell.execute_reply":"2024-11-07T14:18:09.283431Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_labels = pd.read_csv('/kaggle/input/cifar-10/trainLabels.csv')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T14:18:10.994669Z","iopub.execute_input":"2024-11-07T14:18:10.995180Z","iopub.status.idle":"2024-11-07T14:18:11.035629Z","shell.execute_reply.started":"2024-11-07T14:18:10.995138Z","shell.execute_reply":"2024-11-07T14:18:11.034648Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_labels.info()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T14:18:12.472790Z","iopub.execute_input":"2024-11-07T14:18:12.473188Z","iopub.status.idle":"2024-11-07T14:18:12.506541Z","shell.execute_reply.started":"2024-11-07T14:18:12.473150Z","shell.execute_reply":"2024-11-07T14:18:12.505442Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"unique_labels = train_labels['label'].unique()\nprint(\"Unique labels:\", unique_labels)\nunique_labels = list(unique_labels)\n\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T14:18:15.329738Z","iopub.execute_input":"2024-11-07T14:18:15.330851Z","iopub.status.idle":"2024-11-07T14:18:15.343277Z","shell.execute_reply.started":"2024-11-07T14:18:15.330787Z","shell.execute_reply":"2024-11-07T14:18:15.342078Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"!pip install py7zr;","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T14:18:41.300343Z","iopub.execute_input":"2024-11-07T14:18:41.301238Z","iopub.status.idle":"2024-11-07T14:18:56.991076Z","shell.execute_reply.started":"2024-11-07T14:18:41.301196Z","shell.execute_reply":"2024-11-07T14:18:56.989967Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import glob\nimport cv2\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\n\n\nimport tensorflow as tf\nfrom tensorflow import keras\nfrom tensorflow.keras import layers, models\nfrom tensorflow.keras.preprocessing.image import ImageDataGenerator","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T14:18:56.993804Z","iopub.execute_input":"2024-11-07T14:18:56.994777Z","iopub.status.idle":"2024-11-07T14:18:57.000705Z","shell.execute_reply.started":"2024-11-07T14:18:56.994724Z","shell.execute_reply":"2024-11-07T14:18:56.999712Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import py7zr","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T14:18:57.001994Z","iopub.execute_input":"2024-11-07T14:18:57.002306Z","iopub.status.idle":"2024-11-07T14:18:57.149758Z","shell.execute_reply.started":"2024-11-07T14:18:57.002273Z","shell.execute_reply":"2024-11-07T14:18:57.148914Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"if not len(glob.glob('/kaggle/working/train/*.png')):\n    with py7zr.SevenZipFile('/kaggle/input/cifar-10/train.7z', mode='r') as z:\n        z.extractall()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T14:18:57.152083Z","iopub.execute_input":"2024-11-07T14:18:57.152812Z","iopub.status.idle":"2024-11-07T14:19:24.115651Z","shell.execute_reply.started":"2024-11-07T14:18:57.152765Z","shell.execute_reply":"2024-11-07T14:19:24.114776Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def filename_to_id(filename):\n    return int(filename.split('/')[-1].split('.')[0])\n\n# Load all of the images into an array, also return the image IDs\ndef load_imgs_and_ids(img_directory_path):\n    image_filenames = glob.glob(img_directory_path + '/*.png')\n    list_of_images = []\n    image_ids = []\n    for f in image_filenames:\n        image_id = filename_to_id(f) # E.G. '/kaggle/working/train/44240.png' -> 44240\n        image_ids.append(image_id)\n        data_array = cv2.imread(f)\n        list_of_images.append(data_array)\n\n    X = np.array(list_of_images)\n    \n    return X, image_ids\n    \nX_train, train_img_ids = load_imgs_and_ids('/kaggle/working/train')\n\n# Read the labels from the CSV files and convert the array of IDs into a 0-9 code\ntrain_labels_df = pd.read_csv('/kaggle/input/cifar-10/trainLabels.csv')\nimg_codes = [unique_labels.index(train_labels_df.loc[img_id-1]['label']) for img_id in train_img_ids]\ny_train = np.array(img_codes)\n\nX_train.shape, y_train.shape","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T15:03:37.629028Z","iopub.execute_input":"2024-11-07T15:03:37.629954Z","iopub.status.idle":"2024-11-07T15:03:44.876796Z","shell.execute_reply.started":"2024-11-07T15:03:37.629909Z","shell.execute_reply":"2024-11-07T15:03:44.875854Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"plt.figure()\nplt.imshow(X_train[69])\nplt.colorbar()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T15:03:57.107757Z","iopub.execute_input":"2024-11-07T15:03:57.108688Z","iopub.status.idle":"2024-11-07T15:03:57.483292Z","shell.execute_reply.started":"2024-11-07T15:03:57.108645Z","shell.execute_reply":"2024-11-07T15:03:57.482229Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Normalize image data\nX_train = X_train / 255.0\n\n# One-hot encode labels if needed\nfrom tensorflow.keras.utils import to_categorical\ny_train = to_categorical(y_train, num_classes=len(unique_labels))\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T15:04:01.487361Z","iopub.execute_input":"2024-11-07T15:04:01.488206Z","iopub.status.idle":"2024-11-07T15:04:01.879541Z","shell.execute_reply.started":"2024-11-07T15:04:01.488166Z","shell.execute_reply":"2024-11-07T15:04:01.878654Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"print(\"y_train shape:\", y_train.shape)\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T14:20:26.297615Z","iopub.execute_input":"2024-11-07T14:20:26.298120Z","iopub.status.idle":"2024-11-07T14:20:26.303792Z","shell.execute_reply.started":"2024-11-07T14:20:26.298079Z","shell.execute_reply":"2024-11-07T14:20:26.302788Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from sklearn.model_selection import train_test_split\n\nX_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=0.2, random_state=42)\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T15:04:27.990776Z","iopub.execute_input":"2024-11-07T15:04:27.991602Z","iopub.status.idle":"2024-11-07T15:04:28.366402Z","shell.execute_reply.started":"2024-11-07T15:04:27.991560Z","shell.execute_reply":"2024-11-07T15:04:28.365541Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from tensorflow.keras.models import Sequential\nfrom tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout\n\nmodel = Sequential([\n    Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)),\n    MaxPooling2D((2, 2)),\n    Conv2D(64, (3, 3), activation='relu'),\n    MaxPooling2D((2, 2)),\n    Conv2D(64, (3, 3), activation='relu'),\n    Flatten(),\n    Dense(64, activation='relu'),\n    Dropout(0.5),\n    Dense(10, activation='softmax')\n])\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T14:20:31.924324Z","iopub.execute_input":"2024-11-07T14:20:31.925060Z","iopub.status.idle":"2024-11-07T14:20:32.688214Z","shell.execute_reply.started":"2024-11-07T14:20:31.925021Z","shell.execute_reply":"2024-11-07T14:20:32.687444Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"model.compile(optimizer='adam',\n              loss='categorical_crossentropy',\n              metrics=['accuracy'])\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T14:20:36.320696Z","iopub.execute_input":"2024-11-07T14:20:36.321090Z","iopub.status.idle":"2024-11-07T14:20:36.337411Z","shell.execute_reply.started":"2024-11-07T14:20:36.321052Z","shell.execute_reply":"2024-11-07T14:20:36.336227Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"history = model.fit(X_train, y_train, epochs=20, batch_size=64, validation_data=(X_val, y_val))\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T14:20:38.345140Z","iopub.execute_input":"2024-11-07T14:20:38.345790Z","iopub.status.idle":"2024-11-07T14:21:26.612422Z","shell.execute_reply.started":"2024-11-07T14:20:38.345746Z","shell.execute_reply":"2024-11-07T14:21:26.611545Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"val_loss, val_acc = model.evaluate(X_val, y_val)\nprint(f\"Validation Accuracy: {val_acc * 100:.2f}%\")\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T14:21:38.183336Z","iopub.execute_input":"2024-11-07T14:21:38.183796Z","iopub.status.idle":"2024-11-07T14:21:39.558285Z","shell.execute_reply.started":"2024-11-07T14:21:38.183748Z","shell.execute_reply":"2024-11-07T14:21:39.557093Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import matplotlib.pyplot as plt\n\nplt.plot(history.history['accuracy'], label='train_accuracy')\nplt.plot(history.history['val_accuracy'], label='val_accuracy')\nplt.xlabel('Epoch')\nplt.ylabel('Accuracy')\nplt.legend()\nplt.show()\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T14:21:45.360378Z","iopub.execute_input":"2024-11-07T14:21:45.360789Z","iopub.status.idle":"2024-11-07T14:21:45.689696Z","shell.execute_reply.started":"2024-11-07T14:21:45.360749Z","shell.execute_reply":"2024-11-07T14:21:45.688787Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# Model2","metadata":{}},{"cell_type":"code","source":"from tensorflow.keras.preprocessing.image import ImageDataGenerator\n\n# Define the data augmentation parameters\ndatagen = ImageDataGenerator(\n    rotation_range=20,\n    width_shift_range=0.2,\n    height_shift_range=0.2,\n    horizontal_flip=True,\n    zoom_range=0.2,\n)\n\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T14:47:30.687071Z","iopub.execute_input":"2024-11-07T14:47:30.687493Z","iopub.status.idle":"2024-11-07T14:47:30.692660Z","shell.execute_reply.started":"2024-11-07T14:47:30.687454Z","shell.execute_reply":"2024-11-07T14:47:30.691691Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T15:02:53.751378Z","iopub.execute_input":"2024-11-07T15:02:53.751857Z","iopub.status.idle":"2024-11-07T15:02:53.759024Z","shell.execute_reply.started":"2024-11-07T15:02:53.751818Z","shell.execute_reply":"2024-11-07T15:02:53.757826Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from tensorflow.keras import layers, models, initializers\n\n# Define the model\nmodel_2 = models.Sequential()\n\n# Data Augmentation Layer (optional)\nmodel_2.add(layers.RandomFlip(\"horizontal\"))\nmodel_2.add(layers.RandomRotation(0.1))\n\n# Weight initializer\ninitializer = initializers.he_normal()\n\n# Convolutional Block 1 (with input shape defined)\nmodel_2.add(layers.Conv2D(32, (3, 3), activation='relu', kernel_initializer=initializer, input_shape=(32, 32, 3)))\nmodel_2.add(layers.BatchNormalization())\nmodel_2.add(layers.Conv2D(32, (3, 3), activation='relu', kernel_initializer=initializer))\nmodel_2.add(layers.BatchNormalization())\n# model_2.add(layers.MaxPooling2D((2, 2)))\nmodel_2.add(layers.Dropout(0.25))\n\n# Convolutional Block 2\nmodel_2.add(layers.Conv2D(64, (3, 3), activation='relu', kernel_initializer=initializer))\nmodel_2.add(layers.BatchNormalization())\nmodel_2.add(layers.Conv2D(64, (3, 3), activation='relu', kernel_initializer=initializer))\nmodel_2.add(layers.BatchNormalization())\n# model_2.add(layers.MaxPooling2D((2, 2)))\nmodel_2.add(layers.Dropout(0.25))\n\n# Convolutional Block 3\nmodel_2.add(layers.Conv2D(128, (3, 3), activation='relu', kernel_initializer=initializer))\nmodel_2.add(layers.BatchNormalization())\nmodel_2.add(layers.Conv2D(128, (3, 3), activation='relu', kernel_initializer=initializer))\nmodel_2.add(layers.BatchNormalization())\n# Removing the last MaxPooling2D layer to avoid shrinking spatial dimensions further\nmodel_2.add(layers.Dropout(0.4))\n\n# Flattening and Fully Connected Layers\nmodel_2.add(layers.Flatten())\nmodel_2.add(layers.Dense(256, activation='relu', kernel_initializer=initializer))\nmodel_2.add(layers.BatchNormalization())\nmodel_2.add(layers.Dropout(0.5))\n\nmodel_2.add(layers.Dense(128, activation='relu', kernel_initializer=initializer))\nmodel_2.add(layers.BatchNormalization())\nmodel_2.add(layers.Dropout(0.5))\n\n# Output Layer\nmodel_2.add(layers.Dense(10, activation='softmax', kernel_initializer=initializer))\n\n# Compile the model\nmodel_2.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])\n\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T15:11:04.429361Z","iopub.execute_input":"2024-11-07T15:11:04.429852Z","iopub.status.idle":"2024-11-07T15:11:04.492642Z","shell.execute_reply.started":"2024-11-07T15:11:04.429811Z","shell.execute_reply":"2024-11-07T15:11:04.491671Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"\nmodel_2.fit(datagen.flow(X_train, y_train, batch_size=32), epochs=50, validation_data=(X_val, y_val))\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T15:05:33.792529Z","iopub.execute_input":"2024-11-07T15:05:33.793286Z","iopub.status.idle":"2024-11-07T15:05:35.275766Z","shell.execute_reply.started":"2024-11-07T15:05:33.793248Z","shell.execute_reply":"2024-11-07T15:05:35.274445Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# Model 3\n","metadata":{}},{"cell_type":"code","source":"from tensorflow import keras\nfrom tensorflow.keras.models import Sequential\nfrom tensorflow.keras.layers import Input, Conv2D, Dense, Flatten, Dropout\nfrom tensorflow.keras.layers import GlobalMaxPooling2D, MaxPooling2D\nfrom tensorflow.keras.layers import BatchNormalization\nfrom tensorflow.keras.models import Model\nfrom tensorflow.keras import regularizers, optimizers\nfrom tensorflow.keras.utils import to_categorical\nfrom sklearn.metrics import accuracy_score","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T14:24:25.198935Z","iopub.execute_input":"2024-11-07T14:24:25.199327Z","iopub.status.idle":"2024-11-07T14:24:25.205586Z","shell.execute_reply.started":"2024-11-07T14:24:25.199293Z","shell.execute_reply":"2024-11-07T14:24:25.204638Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"model_3 = Sequential()\nmodel_3.add(Conv2D(64,(4,4),input_shape=(32,32,3),activation='relu',padding='same'))\nmodel_3.add(BatchNormalization())\nmodel_3.add(Conv2D(64,(4,4),input_shape=(32,32,3),activation='relu',padding='same'))\nmodel_3.add(BatchNormalization())\nmodel_3.add(MaxPooling2D(pool_size=(2,2)))\nmodel_3.add(Dropout(0.2))\nmodel_3.add(Conv2D(128,(4,4),input_shape=(32,32,3),activation='relu',padding='same'))\nmodel_3.add(BatchNormalization())\nmodel_3.add(Conv2D(128,(4,4),input_shape=(32,32,3),activation='relu',padding='same'))\nmodel_3.add(BatchNormalization())\nmodel_3.add(MaxPooling2D(pool_size=(2,2)))\nmodel_3.add(Dropout(0.25))\nmodel_3.add(Conv2D(128,(4,4),input_shape=(32,32,3),activation='relu',padding='same'))\nmodel_3.add(BatchNormalization())\nmodel_3.add(Conv2D(128,(4,4),input_shape=(32,32,3),activation='relu',padding='same'))\nmodel_3.add(BatchNormalization())\nmodel_3.add(MaxPooling2D(pool_size=(2,2)))\nmodel_3.add(Dropout(0.35))\nmodel_3.add(Flatten())\nmodel_3.add(Dense(256, activation='relu'))\nmodel_3.add(BatchNormalization())\nmodel_3.add(Dropout(0.5))\nmodel_3.add(Dense(10, activation='softmax'))\nmodel_3.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T14:34:52.024775Z","iopub.execute_input":"2024-11-07T14:34:52.025790Z","iopub.status.idle":"2024-11-07T14:34:52.356238Z","shell.execute_reply.started":"2024-11-07T14:34:52.025744Z","shell.execute_reply":"2024-11-07T14:34:52.355439Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"model_3.summary()\nhistory_3 = model_3.fit(X_train, y_train, epochs = 30, verbose = 1, validation_data = (X_val, y_val))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T14:34:54.908454Z","iopub.execute_input":"2024-11-07T14:34:54.908873Z","iopub.status.idle":"2024-11-07T14:42:51.684284Z","shell.execute_reply.started":"2024-11-07T14:34:54.908825Z","shell.execute_reply":"2024-11-07T14:42:51.683297Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from tensorflow.keras.utils import plot_model\nplot_model(model_3, to_file='cnn_plot.png', show_shapes=True, show_layer_names=True)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T14:42:51.686127Z","iopub.execute_input":"2024-11-07T14:42:51.686469Z","iopub.status.idle":"2024-11-07T14:42:52.852338Z","shell.execute_reply.started":"2024-11-07T14:42:51.686433Z","shell.execute_reply":"2024-11-07T14:42:52.851328Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"pip install visualkeras","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T14:46:00.746449Z","iopub.execute_input":"2024-11-07T14:46:00.747260Z","iopub.status.idle":"2024-11-07T14:46:13.585256Z","shell.execute_reply.started":"2024-11-07T14:46:00.747215Z","shell.execute_reply":"2024-11-07T14:46:13.583892Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import visualkeras","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T14:46:13.587443Z","iopub.execute_input":"2024-11-07T14:46:13.587835Z","iopub.status.idle":"2024-11-07T14:46:13.608096Z","shell.execute_reply.started":"2024-11-07T14:46:13.587797Z","shell.execute_reply":"2024-11-07T14:46:13.607226Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"visualkeras.layered_view(model_3, legend=True)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T14:46:22.640405Z","iopub.execute_input":"2024-11-07T14:46:22.641135Z","iopub.status.idle":"2024-11-07T14:46:22.670149Z","shell.execute_reply.started":"2024-11-07T14:46:22.641092Z","shell.execute_reply":"2024-11-07T14:46:22.669116Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"val_loss, val_acc = model_3.evaluate(X_val, y_val)\nprint(f\"Validation Accuracy: {val_acc * 100:.2f}%\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T14:44:28.415559Z","iopub.execute_input":"2024-11-07T14:44:28.416409Z","iopub.status.idle":"2024-11-07T14:44:30.208543Z","shell.execute_reply.started":"2024-11-07T14:44:28.416354Z","shell.execute_reply":"2024-11-07T14:44:30.207417Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def plotloss(history_3):\n    plt.plot(history_3.history['loss'])\n    plt.plot(history_3.history['val_loss'])\n    plt.plot(history_3.history['accuracy'])\n    plt.xlabel('Epochs')\n    plt.ylabel('Loss')\n    plt.legend(['Train', 'Validation', 'Accuracy'])\n    plt.show()    \nplotloss(history_3)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T14:46:52.990092Z","iopub.execute_input":"2024-11-07T14:46:52.990937Z","iopub.status.idle":"2024-11-07T14:46:53.306614Z","shell.execute_reply.started":"2024-11-07T14:46:52.990893Z","shell.execute_reply":"2024-11-07T14:46:53.305616Z"}},"outputs":[],"execution_count":null}]}