{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.7.12","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":30299,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import numpy as np\nimport matplotlib.pyplot as plt\nimport tensorflow as tf\nfrom tensorflow import keras\nfrom tensorflow.keras.models import Sequential\nfrom tensorflow.keras.layers import Conv2D, Dense, Flatten, Dropout\nfrom tensorflow.keras.layers import MaxPooling2D\nfrom tensorflow.keras.layers import BatchNormalization\nfrom tensorflow.keras.callbacks import EarlyStopping \nfrom tensorflow.keras.utils import to_categorical\nfrom sklearn.metrics import accuracy_score\nfrom sklearn.metrics import ConfusionMatrixDisplay\nfrom sklearn.metrics import classification_report, confusion_matrix","metadata":{"_kg_hide-output":true,"execution":{"iopub.status.busy":"2025-01-12T15:00:26.871516Z","iopub.execute_input":"2025-01-12T15:00:26.872373Z","iopub.status.idle":"2025-01-12T15:00:26.878077Z","shell.execute_reply.started":"2025-01-12T15:00:26.872339Z","shell.execute_reply":"2025-01-12T15:00:26.877154Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Importing the CIFAR-10 dataset from Keras \nfrom tensorflow.keras.datasets import cifar10\n(X_train, Y_train), (X_test, Y_test) = cifar10.load_data()","metadata":{"execution":{"iopub.status.busy":"2025-01-12T15:00:26.879663Z","iopub.execute_input":"2025-01-12T15:00:26.880261Z","iopub.status.idle":"2025-01-12T15:00:27.718574Z","shell.execute_reply.started":"2025-01-12T15:00:26.880225Z","shell.execute_reply":"2025-01-12T15:00:27.717874Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"print('X_train Shape: {}'.format(X_train.shape))\nprint('X_test Shape: {}'.format(X_test.shape))\nprint('Y_train Shape: {}'.format(Y_train.shape))\nprint('Y_test Shape: {}'.format(Y_test.shape))","metadata":{"execution":{"iopub.status.busy":"2025-01-12T15:00:27.719973Z","iopub.execute_input":"2025-01-12T15:00:27.720247Z","iopub.status.idle":"2025-01-12T15:00:27.724994Z","shell.execute_reply.started":"2025-01-12T15:00:27.720223Z","shell.execute_reply":"2025-01-12T15:00:27.724127Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"plt.figure()\nplt.imshow(X_train[17])\nplt.colorbar()","metadata":{"execution":{"iopub.status.busy":"2025-01-12T15:00:27.725927Z","iopub.execute_input":"2025-01-12T15:00:27.726247Z","iopub.status.idle":"2025-01-12T15:00:27.986157Z","shell.execute_reply.started":"2025-01-12T15:00:27.726223Z","shell.execute_reply":"2025-01-12T15:00:27.985235Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Normalizing\nX_train = X_train/255\nX_test = X_test/255\n\n# One-Hot-Encoding\nY_train_en = to_categorical(Y_train,10)\nY_test_en = to_categorical(Y_test,10)","metadata":{"execution":{"iopub.status.busy":"2025-01-12T15:00:27.987769Z","iopub.execute_input":"2025-01-12T15:00:27.988054Z","iopub.status.idle":"2025-01-12T15:00:28.465358Z","shell.execute_reply.started":"2025-01-12T15:00:27.988031Z","shell.execute_reply":"2025-01-12T15:00:28.464630Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def showImages(num_row,num_col,X,Y):\n    import matplotlib.pyplot as plt\n    %matplotlib inline\n\n    from sklearn.utils import shuffle\n    (X_rand, Y_rand) = shuffle(X, Y)\n    \n    fig, axes = plt.subplots(num_row,num_col,figsize = (12,12))\n    axes = axes.ravel()\n    for i in range(0, num_row*num_col):\n        axes[i].imshow(X_rand[i])\n        axes[i].set_title(\"{}\".format(labels[Y_rand.item(i)]))\n        axes[i].axis('off')\n        plt.subplots_adjust(wspace =1)\n        \n    return","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T15:00:28.466891Z","iopub.execute_input":"2025-01-12T15:00:28.467236Z","iopub.status.idle":"2025-01-12T15:00:28.477153Z","shell.execute_reply.started":"2025-01-12T15:00:28.467201Z","shell.execute_reply":"2025-01-12T15:00:28.475860Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"labels = ['Airplane', 'Automobile', 'Bird', 'Cat', 'Deer', 'Dog', 'Frog', 'Horse', 'Ship', 'Truck']\nnum_row = 10\nnum_col = 10\nshowImages(num_row,num_col,X =X_train,Y = Y_train)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T15:00:28.478709Z","iopub.execute_input":"2025-01-12T15:00:28.479637Z","iopub.status.idle":"2025-01-12T15:00:32.515945Z","shell.execute_reply.started":"2025-01-12T15:00:28.479601Z","shell.execute_reply":"2025-01-12T15:00:32.515127Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Model  with Batch Normalization\nmodel  = Sequential()\nmodel.add(Conv2D(64,(4,4),input_shape=(32,32,3),activation='relu',padding='same'))\nmodel.add(BatchNormalization())\nmodel.add(Conv2D(64,(4,4),input_shape=(32,32,3),activation='relu',padding='same'))\nmodel.add(BatchNormalization())\nmodel.add(MaxPooling2D(pool_size=(2,2)))\nmodel.add(Dropout(0.2))\nmodel.add(Conv2D(128,(4,4),input_shape=(32,32,3),activation='relu',padding='same'))\nmodel.add(BatchNormalization())\nmodel.add(Conv2D(128,(4,4),input_shape=(32,32,3),activation='relu',padding='same'))\nmodel.add(BatchNormalization())\nmodel.add(MaxPooling2D(pool_size=(2,2)))\nmodel.add(Dropout(0.25))\nmodel.add(Conv2D(128,(4,4),input_shape=(32,32,3),activation='relu',padding='same'))\nmodel.add(BatchNormalization())\nmodel.add(Conv2D(128,(4,4),input_shape=(32,32,3),activation='relu',padding='same'))\nmodel.add(BatchNormalization())\nmodel.add(MaxPooling2D(pool_size=(2,2)))\nmodel.add(Dropout(0.35))\nmodel.add(Flatten())\nmodel.add(Dense(256, activation='relu'))\nmodel.add(BatchNormalization())\nmodel.add(Dropout(0.5))\nmodel.add(Dense(10, activation='softmax'))\nmodel.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])","metadata":{"execution":{"iopub.status.busy":"2025-01-12T15:00:32.517149Z","iopub.execute_input":"2025-01-12T15:00:32.517476Z","iopub.status.idle":"2025-01-12T15:00:32.666723Z","shell.execute_reply.started":"2025-01-12T15:00:32.517445Z","shell.execute_reply":"2025-01-12T15:00:32.665845Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"model.summary()\nhistory= model.fit(X_train, Y_train_en, epochs = 512, verbose = 1,batch_size = 64 ,validation_data = (X_test, Y_test_en))","metadata":{"_kg_hide-output":true,"execution":{"iopub.status.busy":"2025-01-12T15:00:32.667952Z","iopub.execute_input":"2025-01-12T15:00:32.668642Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"evaluation = model.evaluate(X_test, Y_test_en)\nprint('Test Accuracy of Model_3 (with Batch Normalization): {}'.format(evaluation[1]))","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def plotloss(history):\n    plt.plot(history.history['loss'])\n    plt.plot(history.history['val_loss'])\n    plt.plot(history.history['accuracy'])\n    plt.xlabel('Epochs')\n    plt.ylabel('Loss')\n    plt.legend(['Train', 'Validation', 'Accuracy'])\n    plt.show()    \nplotloss(history)","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"model.evaluate(X_test, Y_test_en)\nprint(f'Test Accuracy : {evaluation[1] * 100:.2f}%')\ny_pred = model.predict(X_test)\ny_pred = np.argmax(y_pred, axis=1)\nY_test_en = np.argmax(Y_test_en, axis=1)\n\ncm = confusion_matrix(Y_test_en, y_pred)\n\n\ndisp = ConfusionMatrixDisplay(confusion_matrix=cm,\n                              display_labels=labels)\n\n\n# NOTE: Fill all variables here with default values of the plot_confusion_matrix\nfig, ax = plt.subplots(figsize=(10, 10))\ndisp = disp.plot(xticks_rotation='vertical', ax=ax,cmap='summer')\n\nplt.show()","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"print(classification_report(Y_test_en, y_pred))","metadata":{"trusted":true},"outputs":[],"execution_count":null}]}