{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"# Installing py7zr for later use.\n!pip install py7zr ","metadata":{"execution":{"iopub.status.busy":"2023-04-02T06:48:11.381843Z","iopub.execute_input":"2023-04-02T06:48:11.382194Z","iopub.status.idle":"2023-04-02T06:48:26.216493Z","shell.execute_reply.started":"2023-04-02T06:48:11.382117Z","shell.execute_reply":"2023-04-02T06:48:26.215258Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# import libraries\n\nfrom __future__ import print_function\nimport tensorflow as tf\nfrom tensorflow.keras.datasets import cifar10\nfrom tensorflow.keras.models import Sequential\nfrom tensorflow.keras.layers import Dense, Dropout, Activation, Flatten\nfrom tensorflow.keras.layers import BatchNormalization\nfrom tensorflow.keras.layers import Conv2D, MaxPooling2D\nfrom keras.losses import SparseCategoricalCrossentropy, CategoricalCrossentropy\nfrom tensorflow.keras.regularizers import l2\nimport matplotlib.pyplot as plt\nimport numpy as np\nimport pandas as pd\nimport os\nimport matplotlib.pyplot as plt\nimport py7zr\nimport glob\nimport cv2\nimport random as rd\nimport copy\n%matplotlib inline","metadata":{"execution":{"iopub.status.busy":"2023-04-02T06:48:26.219067Z","iopub.execute_input":"2023-04-02T06:48:26.219807Z","iopub.status.idle":"2023-04-02T06:48:32.342116Z","shell.execute_reply.started":"2023-04-02T06:48:26.219765Z","shell.execute_reply":"2023-04-02T06:48:32.341174Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# batch, classes, epochs, Image size.\nbatch_size = 32\nnum_classes = 10\nepochs = 50\nIMG_SIZE = 48","metadata":{"execution":{"iopub.status.busy":"2023-04-02T06:48:32.343785Z","iopub.execute_input":"2023-04-02T06:48:32.344466Z","iopub.status.idle":"2023-04-02T06:48:32.349807Z","shell.execute_reply.started":"2023-04-02T06:48:32.344427Z","shell.execute_reply":"2023-04-02T06:48:32.348822Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"temp_path = '/kaggle/temp/'\nif not os.path.exists(temp_path):\n    os.mkdir(temp_path)\ntrain_file_path = '../input/cifar-10/train.7z'\narchive = py7zr.SevenZipFile(train_file_path, mode='r')\narchive.extractall(path=temp_path)\narchive.close()\n","metadata":{"execution":{"iopub.status.busy":"2023-04-02T06:48:32.352730Z","iopub.execute_input":"2023-04-02T06:48:32.353350Z","iopub.status.idle":"2023-04-02T06:49:18.364575Z","shell.execute_reply.started":"2023-04-02T06:48:32.353314Z","shell.execute_reply":"2023-04-02T06:49:18.363557Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"images = glob.glob('/kaggle/temp/train/*.png')\nlen(images)","metadata":{"execution":{"iopub.status.busy":"2023-04-02T06:49:18.366011Z","iopub.execute_input":"2023-04-02T06:49:18.366472Z","iopub.status.idle":"2023-04-02T06:49:18.552134Z","shell.execute_reply.started":"2023-04-02T06:49:18.366433Z","shell.execute_reply":"2023-04-02T06:49:18.551220Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_labels = pd.read_csv('../input/cifar-10/trainLabels.csv')\ntrain_labels","metadata":{"execution":{"iopub.status.busy":"2023-04-02T06:49:18.553770Z","iopub.execute_input":"2023-04-02T06:49:18.554175Z","iopub.status.idle":"2023-04-02T06:49:18.599884Z","shell.execute_reply.started":"2023-04-02T06:49:18.554138Z","shell.execute_reply":"2023-04-02T06:49:18.598686Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_labels.describe()","metadata":{"execution":{"iopub.status.busy":"2023-04-02T07:45:20.537856Z","iopub.execute_input":"2023-04-02T07:45:20.538311Z","iopub.status.idle":"2023-04-02T07:45:20.565444Z","shell.execute_reply.started":"2023-04-02T07:45:20.538272Z","shell.execute_reply":"2023-04-02T07:45:20.564511Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_labels.tail()","metadata":{"execution":{"iopub.status.busy":"2023-04-02T07:45:33.976583Z","iopub.execute_input":"2023-04-02T07:45:33.977416Z","iopub.status.idle":"2023-04-02T07:45:33.987705Z","shell.execute_reply.started":"2023-04-02T07:45:33.977380Z","shell.execute_reply":"2023-04-02T07:45:33.986661Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_labels.hist","metadata":{"execution":{"iopub.status.busy":"2023-04-02T07:45:40.688973Z","iopub.execute_input":"2023-04-02T07:45:40.690063Z","iopub.status.idle":"2023-04-02T07:45:40.701736Z","shell.execute_reply.started":"2023-04-02T07:45:40.690017Z","shell.execute_reply":"2023-04-02T07:45:40.700140Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_labels.info()","metadata":{"execution":{"iopub.status.busy":"2023-04-02T07:45:49.664886Z","iopub.execute_input":"2023-04-02T07:45:49.665276Z","iopub.status.idle":"2023-04-02T07:45:49.685917Z","shell.execute_reply.started":"2023-04-02T07:45:49.665244Z","shell.execute_reply":"2023-04-02T07:45:49.684561Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_labels['label'].unique()","metadata":{"execution":{"iopub.status.busy":"2023-04-02T06:49:18.601208Z","iopub.execute_input":"2023-04-02T06:49:18.602108Z","iopub.status.idle":"2023-04-02T06:49:18.617095Z","shell.execute_reply.started":"2023-04-02T06:49:18.602072Z","shell.execute_reply":"2023-04-02T06:49:18.616062Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"LABELS = ['frog', 'truck', 'deer', 'automobile', 'bird', 'horse', 'ship',\n          'cat', 'dog', 'airplane']","metadata":{"execution":{"iopub.status.busy":"2023-04-02T06:49:18.619013Z","iopub.execute_input":"2023-04-02T06:49:18.619450Z","iopub.status.idle":"2023-04-02T06:49:18.625599Z","shell.execute_reply.started":"2023-04-02T06:49:18.619416Z","shell.execute_reply":"2023-04-02T06:49:18.624684Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"temp_label = ['frog', 'truck', 'deer', 'automobile', 'bird', 'horse', 'ship',\n          'cat', 'dog', 'airplane']\nfig = plt.figure(figsize=(10, 4))\ni = 0\nfor img in images:\n    ax = fig.add_subplot(2, 5, 1 + i, xticks=[], yticks=[])\n    label = train_labels.iloc[int(img[19:-4])-1]['label']\n    if label in temp_label:\n        ax.set_title(label)\n        img1 = cv2.imread(img) \n        plt.imshow(img1)\n        temp_label.remove(label)\n        i+=1\n    if len(temp_label) is 0:\n        break\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2023-04-02T06:49:18.626816Z","iopub.execute_input":"2023-04-02T06:49:18.627368Z","iopub.status.idle":"2023-04-02T06:49:20.011159Z","shell.execute_reply.started":"2023-04-02T06:49:18.627331Z","shell.execute_reply":"2023-04-02T06:49:20.009896Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X_train = []\nY_train = []\n\nX_val = []\nY_val = []","metadata":{"execution":{"iopub.status.busy":"2023-04-02T06:49:20.017122Z","iopub.execute_input":"2023-04-02T06:49:20.017696Z","iopub.status.idle":"2023-04-02T06:49:20.052695Z","shell.execute_reply.started":"2023-04-02T06:49:20.017651Z","shell.execute_reply":"2023-04-02T06:49:20.050159Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for img in images:\n    prob = rd.random()\n    label = train_labels.iloc[int(img[19:-4])-1]['label']\n    img_arr = cv2.imread(img)\n    img_arr = cv2.resize(img_arr, (IMG_SIZE, IMG_SIZE))\n    if prob > 0.8:\n        X_val.append(list(img_arr))\n        Y_val.append(LABELS.index(label))\n    else:\n        X_train.append(list(img_arr))\n        Y_train.append(LABELS.index(label))","metadata":{"execution":{"iopub.status.busy":"2023-04-02T06:49:20.054468Z","iopub.execute_input":"2023-04-02T06:49:20.055024Z","iopub.status.idle":"2023-04-02T06:49:36.574327Z","shell.execute_reply.started":"2023-04-02T06:49:20.054976Z","shell.execute_reply":"2023-04-02T06:49:36.573243Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"x_train = np.array(X_train, dtype=np.float32) \ny_train = np.array(Y_train)\n\nx_test = np.array(X_val, dtype=np.float32)\ny_test = np.array(Y_val)\n","metadata":{"execution":{"iopub.status.busy":"2023-04-02T06:49:36.575917Z","iopub.execute_input":"2023-04-02T06:49:36.576332Z","iopub.status.idle":"2023-04-02T06:49:37.976142Z","shell.execute_reply.started":"2023-04-02T06:49:36.576291Z","shell.execute_reply":"2023-04-02T06:49:37.975077Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print('x_train shape:', x_train.shape)\nprint('x_test shape:', x_test.shape)\nprint('y_train shape:', y_train.shape)\nprint('y_test shape:', y_test.shape)","metadata":{"execution":{"iopub.status.busy":"2023-04-02T06:49:37.977482Z","iopub.execute_input":"2023-04-02T06:49:37.977972Z","iopub.status.idle":"2023-04-02T06:49:37.984968Z","shell.execute_reply.started":"2023-04-02T06:49:37.977934Z","shell.execute_reply":"2023-04-02T06:49:37.983825Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Printing labels\nprint(y_train[:10])","metadata":{"execution":{"iopub.status.busy":"2023-04-02T06:49:37.986788Z","iopub.execute_input":"2023-04-02T06:49:37.987162Z","iopub.status.idle":"2023-04-02T06:49:37.994618Z","shell.execute_reply.started":"2023-04-02T06:49:37.987126Z","shell.execute_reply":"2023-04-02T06:49:37.993408Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Convert class vectors to binary class matrices.\ny_train = tf.keras.utils.to_categorical(y_train, num_classes)\ny_test = tf.keras.utils.to_categorical(y_test, num_classes)","metadata":{"execution":{"iopub.status.busy":"2023-04-02T06:49:37.996522Z","iopub.execute_input":"2023-04-02T06:49:37.997284Z","iopub.status.idle":"2023-04-02T06:49:38.005561Z","shell.execute_reply.started":"2023-04-02T06:49:37.997225Z","shell.execute_reply":"2023-04-02T06:49:38.004447Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Printing one hot encoded labels\nprint(y_train[:10])","metadata":{"execution":{"iopub.status.busy":"2023-04-02T06:49:38.007327Z","iopub.execute_input":"2023-04-02T06:49:38.008053Z","iopub.status.idle":"2023-04-02T06:49:38.014860Z","shell.execute_reply.started":"2023-04-02T06:49:38.008019Z","shell.execute_reply":"2023-04-02T06:49:38.013646Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# convert to float, normalise the data\n\nx_train = x_train.astype('float32')\nx_test = x_test.astype('float32')\n\nx_train /= 255.0\nx_test /= 255.0","metadata":{"execution":{"iopub.status.busy":"2023-04-02T06:49:38.016511Z","iopub.execute_input":"2023-04-02T06:49:38.017290Z","iopub.status.idle":"2023-04-02T06:49:38.652409Z","shell.execute_reply.started":"2023-04-02T06:49:38.017241Z","shell.execute_reply":"2023-04-02T06:49:38.651315Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# CNN Basic model architecture \n\nbasic_model = Sequential()\nbasic_model.add(Conv2D(32, (3, 3), padding='same',\n                 input_shape=x_train.shape[1:]))\nbasic_model.add(Activation('relu'))\nbasic_model.add(Conv2D(32, (3, 3)))\nbasic_model.add(Activation('relu'))\nbasic_model.add(MaxPooling2D(pool_size=(2, 2)))\nbasic_model.add(Dropout(0.25))\n\nbasic_model.add(Conv2D(64, (3, 3), padding='same'))\nbasic_model.add(Activation('relu'))\nbasic_model.add(Conv2D(64, (3, 3)))\nbasic_model.add(Activation('relu'))\nbasic_model.add(MaxPooling2D(pool_size=(2, 2)))\nbasic_model.add(Dropout(0.25))\n\nbasic_model.add(Flatten())\nbasic_model.add(Dense(512))\nbasic_model.add(Activation('relu'))\nbasic_model.add(Dropout(0.5))\nbasic_model.add(Dense(num_classes))\nbasic_model.add(Activation('softmax'))","metadata":{"execution":{"iopub.status.busy":"2023-04-02T06:49:38.654265Z","iopub.execute_input":"2023-04-02T06:49:38.654685Z","iopub.status.idle":"2023-04-02T06:49:40.911974Z","shell.execute_reply.started":"2023-04-02T06:49:38.654646Z","shell.execute_reply":"2023-04-02T06:49:40.910948Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# summary\nbasic_model.summary()","metadata":{"execution":{"iopub.status.busy":"2023-04-02T06:49:40.913334Z","iopub.execute_input":"2023-04-02T06:49:40.913697Z","iopub.status.idle":"2023-04-02T06:49:40.951184Z","shell.execute_reply.started":"2023-04-02T06:49:40.913662Z","shell.execute_reply":"2023-04-02T06:49:40.950479Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# compile the model\nbasic_model.compile(loss='categorical_crossentropy',\n              optimizer='sgd',\n              metrics=['accuracy'])","metadata":{"execution":{"iopub.status.busy":"2023-04-02T06:49:40.952197Z","iopub.execute_input":"2023-04-02T06:49:40.952746Z","iopub.status.idle":"2023-04-02T06:49:40.978844Z","shell.execute_reply.started":"2023-04-02T06:49:40.952709Z","shell.execute_reply":"2023-04-02T06:49:40.977891Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# train \nbasic_model_history = basic_model.fit(x_train, y_train,\n              batch_size=batch_size,\n              epochs=epochs,\n              validation_data=(x_test, y_test),\n              shuffle=True)","metadata":{"execution":{"iopub.status.busy":"2023-04-02T06:49:40.980065Z","iopub.execute_input":"2023-04-02T06:49:40.980380Z","iopub.status.idle":"2023-04-02T06:57:05.711449Z","shell.execute_reply.started":"2023-04-02T06:49:40.980347Z","shell.execute_reply":"2023-04-02T06:57:05.710062Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# list all data in history\nprint(basic_model_history.history.keys())\n# summarize history for accuracy\nplt.figure(figsize = (12,4))\nplt.subplot(1,2,1)\nplt.plot(basic_model_history.history['accuracy'])\nplt.plot(basic_model_history.history['val_accuracy'])\nplt.title('model accuracy')\nplt.ylabel('accuracy')\nplt.xlabel('epoch')\nplt.legend(['train', 'validation'], loc='upper left')\n# summarize history for loss\nplt.subplot(1,2,2)\nplt.plot(basic_model_history.history['loss'])\nplt.plot(basic_model_history.history['val_loss'])\nplt.title('model loss')\nplt.ylabel('loss')\nplt.xlabel('epoch')\nplt.legend(['train', 'validation'], loc='upper left')\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2023-04-02T06:57:05.713489Z","iopub.execute_input":"2023-04-02T06:57:05.713883Z","iopub.status.idle":"2023-04-02T06:57:06.075627Z","shell.execute_reply.started":"2023-04-02T06:57:05.713846Z","shell.execute_reply":"2023-04-02T06:57:06.072793Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"batch_model = Sequential()\nbatch_model.add(Conv2D(32, (3, 3), padding='same',\n                 input_shape=x_train.shape[1:]))\nbatch_model.add(Activation('relu'))\nbatch_model.add(BatchNormalization())\nbatch_model.add(Conv2D(32, (3, 3)))\nbatch_model.add(Activation('relu'))\nbatch_model.add(BatchNormalization())\nbatch_model.add(MaxPooling2D(pool_size=(2, 2)))\n\nbatch_model.add(Conv2D(64, (3, 3), padding='same'))\nbatch_model.add(Activation('relu'))\nbatch_model.add(BatchNormalization())\nbatch_model.add(Conv2D(64, (3, 3)))\nbatch_model.add(Activation('relu'))\nbatch_model.add(BatchNormalization())\nbatch_model.add(MaxPooling2D(pool_size=(2, 2)))\n\nbatch_model.add(Flatten())\nbatch_model.add(Dense(512))\nbatch_model.add(Activation('relu'))\nbatch_model.add(Dropout(0.5))\nbatch_model.add(Dense(num_classes))\nbatch_model.add(Activation('softmax'))","metadata":{"execution":{"iopub.status.busy":"2023-04-02T06:57:06.077796Z","iopub.execute_input":"2023-04-02T06:57:06.078565Z","iopub.status.idle":"2023-04-02T06:57:06.212977Z","shell.execute_reply.started":"2023-04-02T06:57:06.078527Z","shell.execute_reply":"2023-04-02T06:57:06.211973Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# summary of the model\nprint(batch_model.summary())","metadata":{"execution":{"iopub.status.busy":"2023-04-02T06:57:06.214499Z","iopub.execute_input":"2023-04-02T06:57:06.214870Z","iopub.status.idle":"2023-04-02T06:57:06.267258Z","shell.execute_reply.started":"2023-04-02T06:57:06.214833Z","shell.execute_reply":"2023-04-02T06:57:06.266380Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# compile\nbatch_model.compile(loss='categorical_crossentropy',\n              optimizer='sgd',\n              metrics=['accuracy'])","metadata":{"execution":{"iopub.status.busy":"2023-04-02T06:57:06.268412Z","iopub.execute_input":"2023-04-02T06:57:06.268893Z","iopub.status.idle":"2023-04-02T06:57:06.295463Z","shell.execute_reply.started":"2023-04-02T06:57:06.268851Z","shell.execute_reply":"2023-04-02T06:57:06.294649Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Training the model\nbatch_model_history = batch_model.fit(x_train, y_train,\n              batch_size=batch_size,\n              epochs=epochs,\n              validation_data=(x_test, y_test),\n              shuffle=True)","metadata":{"execution":{"iopub.status.busy":"2023-04-02T06:57:06.296547Z","iopub.execute_input":"2023-04-02T06:57:06.297273Z","iopub.status.idle":"2023-04-02T07:05:06.552583Z","shell.execute_reply.started":"2023-04-02T06:57:06.297234Z","shell.execute_reply":"2023-04-02T07:05:06.551658Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# list all data in history\nprint(batch_model_history.history.keys())\n# summarize history for accuracy\nplt.figure(figsize = (12,4))\nplt.subplot(1,2,1)\nplt.plot(batch_model_history.history['accuracy'])\nplt.plot(batch_model_history.history['val_accuracy'])\nplt.title('model accuracy')\nplt.ylabel('accuracy')\nplt.xlabel('epoch')\nplt.legend(['train', 'validation'], loc='upper left')\n# summarize history for loss\nplt.subplot(1,2,2)\nplt.plot(batch_model_history.history['loss'])\nplt.plot(batch_model_history.history['val_loss'])\nplt.title('model loss')\nplt.ylabel('loss')\nplt.xlabel('epoch')\nplt.legend(['train', 'validation'], loc='upper left')\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2023-04-02T07:05:06.554691Z","iopub.execute_input":"2023-04-02T07:05:06.556803Z","iopub.status.idle":"2023-04-02T07:05:06.910742Z","shell.execute_reply.started":"2023-04-02T07:05:06.556760Z","shell.execute_reply":"2023-04-02T07:05:06.909575Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"dropout_model = Sequential()\ndropout_model.add(Conv2D(32, (3, 3), padding='same',\n                 input_shape=x_train.shape[1:]))\ndropout_model.add(Activation('relu'))\ndropout_model.add(BatchNormalization())\ndropout_model.add(Conv2D(32, (3, 3)))\ndropout_model.add(Activation('relu'))\ndropout_model.add(BatchNormalization())\ndropout_model.add(MaxPooling2D(pool_size=(2, 2)))\ndropout_model.add(Dropout(0.20))\n\ndropout_model.add(Conv2D(64, (3, 3), padding='same'))\ndropout_model.add(Activation('relu'))\ndropout_model.add(BatchNormalization())\ndropout_model.add(Conv2D(64, (3, 3)))\ndropout_model.add(Activation('relu'))\ndropout_model.add(BatchNormalization())\ndropout_model.add(MaxPooling2D(pool_size=(2, 2)))\ndropout_model.add(Dropout(0.20))\n\ndropout_model.add(Flatten())\ndropout_model.add(Dense(512, kernel_regularizer=l2(0.01)))\ndropout_model.add(Activation('relu'))\ndropout_model.add(Dropout(0.5))\ndropout_model.add(Dense(num_classes))\ndropout_model.add(Activation('softmax'))\n","metadata":{"execution":{"iopub.status.busy":"2023-04-02T07:05:06.916909Z","iopub.execute_input":"2023-04-02T07:05:06.917199Z","iopub.status.idle":"2023-04-02T07:05:07.058272Z","shell.execute_reply.started":"2023-04-02T07:05:06.917172Z","shell.execute_reply":"2023-04-02T07:05:07.057229Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(dropout_model.summary())","metadata":{"execution":{"iopub.status.busy":"2023-04-02T07:05:07.059939Z","iopub.execute_input":"2023-04-02T07:05:07.060337Z","iopub.status.idle":"2023-04-02T07:05:07.116929Z","shell.execute_reply.started":"2023-04-02T07:05:07.060300Z","shell.execute_reply":"2023-04-02T07:05:07.116136Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# compile\ndropout_model.compile(loss='categorical_crossentropy',\n              optimizer='sgd',\n              metrics=['accuracy'])","metadata":{"execution":{"iopub.status.busy":"2023-04-02T07:05:07.118024Z","iopub.execute_input":"2023-04-02T07:05:07.118401Z","iopub.status.idle":"2023-04-02T07:05:07.138767Z","shell.execute_reply.started":"2023-04-02T07:05:07.118362Z","shell.execute_reply":"2023-04-02T07:05:07.137924Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"dropout_model_history = dropout_model.fit(x_train, y_train,\n              batch_size=batch_size,\n              epochs=epochs,\n              validation_data=(x_test, y_test),\n              shuffle=True)","metadata":{"execution":{"iopub.status.busy":"2023-04-02T07:05:07.140050Z","iopub.execute_input":"2023-04-02T07:05:07.140719Z","iopub.status.idle":"2023-04-02T07:13:31.918661Z","shell.execute_reply.started":"2023-04-02T07:05:07.140683Z","shell.execute_reply":"2023-04-02T07:13:31.917536Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# list all data in history\nprint(dropout_model_history.history.keys())\n# summarize history for accuracy\nplt.figure(figsize = (12,4))\nplt.subplot(1,2,1)\nplt.plot(dropout_model_history.history['accuracy'])\nplt.plot(dropout_model_history.history['val_accuracy'])\nplt.title('model accuracy')\nplt.ylabel('accuracy')\nplt.xlabel('epoch')\nplt.legend(['train', 'validation'], loc='upper left')\n# summarize history for loss\nplt.subplot(1,2,2)\nplt.plot(dropout_model_history.history['loss'])\nplt.plot(dropout_model_history.history['val_loss'])\nplt.title('model loss')\nplt.ylabel('loss')\nplt.xlabel('epoch')\nplt.legend(['train', 'validation'], loc='upper left')\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2023-04-02T07:13:31.921104Z","iopub.execute_input":"2023-04-02T07:13:31.921712Z","iopub.status.idle":"2023-04-02T07:13:32.260665Z","shell.execute_reply.started":"2023-04-02T07:13:31.921674Z","shell.execute_reply":"2023-04-02T07:13:32.259560Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"more_layer_model = Sequential()\nmore_layer_model.add(Conv2D(32, (3, 3), padding='same',\n                 input_shape=x_train.shape[1:]))\nmore_layer_model.add(Activation('relu'))\nmore_layer_model.add(BatchNormalization())\nmore_layer_model.add(Conv2D(32, (3, 3)))\nmore_layer_model.add(Activation('relu'))\nmore_layer_model.add(BatchNormalization())\nmore_layer_model.add(MaxPooling2D(pool_size=(2, 2)))\nmore_layer_model.add(Dropout(0.20))\n\nmore_layer_model.add(Conv2D(64, (3, 3), padding='same'))\nmore_layer_model.add(Activation('relu'))\nmore_layer_model.add(BatchNormalization())\nmore_layer_model.add(Conv2D(64, (3, 3)))\nmore_layer_model.add(Activation('relu'))\nmore_layer_model.add(BatchNormalization())\nmore_layer_model.add(MaxPooling2D(pool_size=(2, 2)))\nmore_layer_model.add(Dropout(0.20))\n\nmore_layer_model.add(Conv2D(128, (3, 3), padding='same'))\nmore_layer_model.add(Activation('relu'))\nmore_layer_model.add(BatchNormalization())\nmore_layer_model.add(Conv2D(128, (3, 3)))\nmore_layer_model.add(Activation('relu'))\nmore_layer_model.add(BatchNormalization())\nmore_layer_model.add(MaxPooling2D(pool_size=(2, 2)))\nmore_layer_model.add(Dropout(0.20))\n\nmore_layer_model.add(Flatten())\nmore_layer_model.add(Dense(512,kernel_regularizer=l2(0.01)))\nmore_layer_model.add(Activation('relu'))\nmore_layer_model.add(Dropout(0.5))\nmore_layer_model.add(Dense(num_classes))\nmore_layer_model.add(Activation('softmax'))","metadata":{"execution":{"iopub.status.busy":"2023-04-02T07:13:32.262566Z","iopub.execute_input":"2023-04-02T07:13:32.263312Z","iopub.status.idle":"2023-04-02T07:13:32.462317Z","shell.execute_reply.started":"2023-04-02T07:13:32.263270Z","shell.execute_reply":"2023-04-02T07:13:32.461350Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(more_layer_model.summary())","metadata":{"execution":{"iopub.status.busy":"2023-04-02T07:13:32.463855Z","iopub.execute_input":"2023-04-02T07:13:32.464211Z","iopub.status.idle":"2023-04-02T07:13:32.531860Z","shell.execute_reply.started":"2023-04-02T07:13:32.464176Z","shell.execute_reply":"2023-04-02T07:13:32.531102Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# compile\nmore_layer_model.compile(loss='categorical_crossentropy',\n              optimizer='sgd',\n              metrics=['accuracy'])","metadata":{"execution":{"iopub.status.busy":"2023-04-02T07:13:32.532849Z","iopub.execute_input":"2023-04-02T07:13:32.533217Z","iopub.status.idle":"2023-04-02T07:13:32.555164Z","shell.execute_reply.started":"2023-04-02T07:13:32.533180Z","shell.execute_reply":"2023-04-02T07:13:32.554442Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"more_layer_model_history = more_layer_model.fit(x_train, y_train,\n              batch_size=batch_size,\n              epochs=epochs,\n              validation_data=(x_test, y_test),\n              shuffle=True)","metadata":{"execution":{"iopub.status.busy":"2023-04-02T07:13:32.556101Z","iopub.execute_input":"2023-04-02T07:13:32.556440Z","iopub.status.idle":"2023-04-02T07:22:38.763600Z","shell.execute_reply.started":"2023-04-02T07:13:32.556404Z","shell.execute_reply":"2023-04-02T07:22:38.762646Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# list all data in history\nprint(more_layer_model_history.history.keys())\n# summarize history for accuracy\nplt.figure(figsize = (12,4))\nplt.subplot(1,2,1)\nplt.plot(more_layer_model_history.history['accuracy'])\nplt.plot(more_layer_model_history.history['val_accuracy'])\nplt.title('model accuracy')\nplt.ylabel('accuracy')\nplt.xlabel('epoch')\nplt.legend(['train', 'validation'], loc='upper left')\n# summarize history for loss\nplt.subplot(1,2,2)\nplt.plot(more_layer_model_history.history['loss'])\nplt.plot(more_layer_model_history.history['val_loss'])\nplt.title('model loss')\nplt.ylabel('loss')\nplt.xlabel('epoch')\nplt.legend(['train', 'validation'], loc='upper left')\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2023-04-02T07:22:38.765496Z","iopub.execute_input":"2023-04-02T07:22:38.766173Z","iopub.status.idle":"2023-04-02T07:22:39.121568Z","shell.execute_reply.started":"2023-04-02T07:22:38.766133Z","shell.execute_reply":"2023-04-02T07:22:39.120581Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import shutil\nfrom py7zr import unpack_7zarchive\nshutil.register_unpack_format('7zip',['.7z'],unpack_7zarchive)\nshutil.unpack_archive('/kaggle/input/cifar-10/test.7z','/kaggle/temp/test')\nshutil.unregister_unpack_format('7zip')\ntest_datagen = tf.keras.preprocessing.image.ImageDataGenerator(rescale=1./255)","metadata":{"execution":{"iopub.status.busy":"2023-04-02T07:22:39.123048Z","iopub.execute_input":"2023-04-02T07:22:39.124090Z","iopub.status.idle":"2023-04-02T07:36:51.033274Z","shell.execute_reply.started":"2023-04-02T07:22:39.124053Z","shell.execute_reply":"2023-04-02T07:36:51.032136Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_gen = test_datagen.flow_from_directory(directory='/kaggle/temp/test',\\\n                                            target_size=(IMG_SIZE,IMG_SIZE),batch_size=64,class_mode=None,shuffle=False)\n","metadata":{"execution":{"iopub.status.busy":"2023-04-02T07:36:51.034991Z","iopub.execute_input":"2023-04-02T07:36:51.035374Z","iopub.status.idle":"2023-04-02T07:36:57.097647Z","shell.execute_reply.started":"2023-04-02T07:36:51.035339Z","shell.execute_reply":"2023-04-02T07:36:57.096660Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_gen.reset()\npredictions_vecs = more_layer_model.predict(test_gen)\npredictions_final = np.argmax(predictions_vecs, axis=1)\nprint(predictions_vecs)","metadata":{"execution":{"iopub.status.busy":"2023-04-02T07:36:57.099234Z","iopub.execute_input":"2023-04-02T07:36:57.099631Z","iopub.status.idle":"2023-04-02T07:39:09.807917Z","shell.execute_reply.started":"2023-04-02T07:36:57.099578Z","shell.execute_reply":"2023-04-02T07:39:09.806711Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(predictions_final)","metadata":{"execution":{"iopub.status.busy":"2023-04-02T07:39:09.809297Z","iopub.execute_input":"2023-04-02T07:39:09.809693Z","iopub.status.idle":"2023-04-02T07:39:09.817567Z","shell.execute_reply.started":"2023-04-02T07:39:09.809652Z","shell.execute_reply":"2023-04-02T07:39:09.816348Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sub = pd.read_csv('../input/cifar-10/sampleSubmission.csv',header='infer')","metadata":{"execution":{"iopub.status.busy":"2023-04-02T07:39:09.819058Z","iopub.execute_input":"2023-04-02T07:39:09.819970Z","iopub.status.idle":"2023-04-02T07:39:09.924264Z","shell.execute_reply.started":"2023-04-02T07:39:09.819910Z","shell.execute_reply":"2023-04-02T07:39:09.923260Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"predicted_classes=np.empty(shape=300000,dtype=np.dtype('U20'))\n\nind=0\nfor i in predictions_final.tolist():\n    predicted_classes[ind]=LABELS[i]\n    ind=ind+1\n    \nfilenames_wo_ext = []\nfor fname in test_gen.filenames:\n    filenames_wo_ext.append(int(fname.split(sep=\"/\")[1].split(sep=\".\")[0])-1)\n\npredicted_classes_final = np.empty(shape=300000,dtype=np.dtype('U20'))\npredicted_classes_final[filenames_wo_ext]=predicted_classes","metadata":{"execution":{"iopub.status.busy":"2023-04-02T07:39:09.925549Z","iopub.execute_input":"2023-04-02T07:39:09.925928Z","iopub.status.idle":"2023-04-02T07:39:10.312902Z","shell.execute_reply.started":"2023-04-02T07:39:09.925893Z","shell.execute_reply":"2023-04-02T07:39:10.311885Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sub['label'] = predicted_classes_final\nsub.to_csv('submission.csv',index=False)","metadata":{"execution":{"iopub.status.busy":"2023-04-02T07:39:10.314414Z","iopub.execute_input":"2023-04-02T07:39:10.314806Z","iopub.status.idle":"2023-04-02T07:39:10.645836Z","shell.execute_reply.started":"2023-04-02T07:39:10.314768Z","shell.execute_reply":"2023-04-02T07:39:10.644842Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sub.tail(10)","metadata":{"execution":{"iopub.status.busy":"2023-04-02T07:39:10.647481Z","iopub.execute_input":"2023-04-02T07:39:10.647881Z","iopub.status.idle":"2023-04-02T07:39:10.658199Z","shell.execute_reply.started":"2023-04-02T07:39:10.647845Z","shell.execute_reply":"2023-04-02T07:39:10.657175Z"},"trusted":true},"execution_count":null,"outputs":[]}]}