{"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":"import os \nimport pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport zipfile\nimport tensorflow as tf\nfrom tensorflow.keras.optimizers import RMSprop\nfrom tensorflow.keras.preprocessing.image import ImageDataGenerator\nfrom tensorflow.keras import datasets,layers,models,Model","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-08-03T11:42:04.662412Z","iopub.execute_input":"2021-08-03T11:42:04.662734Z","iopub.status.idle":"2021-08-03T11:42:09.103426Z","shell.execute_reply.started":"2021-08-03T11:42:04.662659Z","shell.execute_reply":"2021-08-03T11:42:09.102428Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# loading data set\n\n(X_train,Y_train),(X_test,Y_test)=datasets.cifar10.load_data()","metadata":{"execution":{"iopub.status.busy":"2021-08-03T11:19:30.545697Z","iopub.execute_input":"2021-08-03T11:19:30.546132Z","iopub.status.idle":"2021-08-03T11:19:44.56489Z","shell.execute_reply.started":"2021-08-03T11:19:30.546078Z","shell.execute_reply":"2021-08-03T11:19:44.564029Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X_train.shape","metadata":{"execution":{"iopub.status.busy":"2021-08-03T11:19:44.566898Z","iopub.execute_input":"2021-08-03T11:19:44.567424Z","iopub.status.idle":"2021-08-03T11:19:44.575785Z","shell.execute_reply.started":"2021-08-03T11:19:44.567383Z","shell.execute_reply":"2021-08-03T11:19:44.574847Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"Y_train.shape","metadata":{"execution":{"iopub.status.busy":"2021-08-03T11:19:44.577432Z","iopub.execute_input":"2021-08-03T11:19:44.577856Z","iopub.status.idle":"2021-08-03T11:19:44.589581Z","shell.execute_reply.started":"2021-08-03T11:19:44.577814Z","shell.execute_reply":"2021-08-03T11:19:44.588681Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X_test.shape","metadata":{"execution":{"iopub.status.busy":"2021-08-03T11:19:44.591001Z","iopub.execute_input":"2021-08-03T11:19:44.591427Z","iopub.status.idle":"2021-08-03T11:19:44.598685Z","shell.execute_reply.started":"2021-08-03T11:19:44.591384Z","shell.execute_reply":"2021-08-03T11:19:44.597611Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# reshape  2 d to 1 d \nY_train = Y_train.reshape(-1,)\nY_test = Y_test.reshape(-1,)","metadata":{"execution":{"iopub.status.busy":"2021-08-03T11:19:44.600473Z","iopub.execute_input":"2021-08-03T11:19:44.601361Z","iopub.status.idle":"2021-08-03T11:19:44.606466Z","shell.execute_reply.started":"2021-08-03T11:19:44.601317Z","shell.execute_reply":"2021-08-03T11:19:44.60536Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"classes = [\"airplane\",\"automobile\",\"bird\",\"cat\",\"deer\",\"dog\",\"frog\",\"horse\",\"ship\",\"truck\"]","metadata":{"execution":{"iopub.status.busy":"2021-08-03T11:19:44.609182Z","iopub.execute_input":"2021-08-03T11:19:44.609774Z","iopub.status.idle":"2021-08-03T11:19:44.615695Z","shell.execute_reply.started":"2021-08-03T11:19:44.609731Z","shell.execute_reply":"2021-08-03T11:19:44.614702Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def plot_sample(X, Y, index):\n    plt.figure(figsize = (15,2))\n    plt.imshow(X[index])\n    plt.xlabel(classes[Y[index]])","metadata":{"execution":{"iopub.status.busy":"2021-08-03T11:19:44.617421Z","iopub.execute_input":"2021-08-03T11:19:44.619118Z","iopub.status.idle":"2021-08-03T11:19:44.626225Z","shell.execute_reply.started":"2021-08-03T11:19:44.619073Z","shell.execute_reply":"2021-08-03T11:19:44.625191Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plot_sample(X_train, Y_train, 6)","metadata":{"execution":{"iopub.status.busy":"2021-08-03T11:19:44.628281Z","iopub.execute_input":"2021-08-03T11:19:44.62854Z","iopub.status.idle":"2021-08-03T11:19:44.765466Z","shell.execute_reply.started":"2021-08-03T11:19:44.628515Z","shell.execute_reply":"2021-08-03T11:19:44.764672Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for i in range(10):\n  plot_sample(X_train, Y_train, i)","metadata":{"execution":{"iopub.status.busy":"2021-08-03T11:19:44.766906Z","iopub.execute_input":"2021-08-03T11:19:44.767483Z","iopub.status.idle":"2021-08-03T11:19:45.976151Z","shell.execute_reply.started":"2021-08-03T11:19:44.767443Z","shell.execute_reply":"2021-08-03T11:19:45.975127Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# normalization\nX_train=X_train/255\nX_test=X_test/255","metadata":{"execution":{"iopub.status.busy":"2021-08-03T11:19:45.978065Z","iopub.execute_input":"2021-08-03T11:19:45.978666Z","iopub.status.idle":"2021-08-03T11:19:46.484695Z","shell.execute_reply.started":"2021-08-03T11:19:45.978617Z","shell.execute_reply":"2021-08-03T11:19:46.483824Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Simple ANN","metadata":{}},{"cell_type":"markdown","source":"categorical_crossentropy= when y is one hot encoded 0000100\nsparse_categorical_crossentropy = when y is a define value y=9","metadata":{}},{"cell_type":"code","source":"model_ann = models.Sequential([\n        layers.Flatten(input_shape=(32,32,3)),\n        layers.Dense(3000, activation='relu'),\n        layers.Dense(2000, activation='relu'),\n        layers.Dense(1000, activation='relu'),\n        layers.Dense(10, activation='softmax')    \n    ])\n\nmodel_ann.compile(optimizer='SGD',\n              loss='sparse_categorical_crossentropy',\n              metrics=['accuracy'])\n\nMODEL_1=model_ann.fit(\n    X_train, Y_train, epochs=10\n)","metadata":{"execution":{"iopub.status.busy":"2021-08-03T08:04:30.063393Z","iopub.execute_input":"2021-08-03T08:04:30.063719Z","iopub.status.idle":"2021-08-03T08:05:14.91805Z","shell.execute_reply.started":"2021-08-03T08:04:30.06369Z","shell.execute_reply":"2021-08-03T08:05:14.917276Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"ANN=**accuracy: 0.5764**","metadata":{}},{"cell_type":"markdown","source":"**CNN**","metadata":{}},{"cell_type":"code","source":"model_cnn = models.Sequential([\n        layers.Conv2D(filters=32,kernel_size=(3,3),activation='relu',input_shape=(32,32,3)),\n        layers.MaxPooling2D((2,2)),\n        \n        layers.Conv2D(filters=64,kernel_size=(3,3),activation='relu'),\n        layers.MaxPooling2D((2,2)),\n        layers.Dropout(0.5),\n    \n        layers.Conv2D(filters=128,kernel_size=(3,3),activation='relu'),\n        layers.MaxPooling2D((2,2)),\n        layers.Dropout(0.5),\n        \n        layers.Flatten(),\n        layers.Dense(512, activation='relu'),\n        layers.Dense(10, activation='softmax')    \n    ])","metadata":{"execution":{"iopub.status.busy":"2021-08-03T08:54:27.644364Z","iopub.execute_input":"2021-08-03T08:54:27.644673Z","iopub.status.idle":"2021-08-03T08:54:27.710407Z","shell.execute_reply.started":"2021-08-03T08:54:27.644646Z","shell.execute_reply":"2021-08-03T08:54:27.709578Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model_cnn.compile(\n                loss = 'sparse_categorical_crossentropy',\n               optimizer = RMSprop(learning_rate=1e-4),\n               metrics = ['accuracy'])\n\n\nMODEL_2=model_cnn.fit(X_train,Y_train,\n                        epochs=20,\n                      verbose=1)","metadata":{"execution":{"iopub.status.busy":"2021-08-03T08:54:29.430724Z","iopub.execute_input":"2021-08-03T08:54:29.431044Z","iopub.status.idle":"2021-08-03T08:56:29.248508Z","shell.execute_reply.started":"2021-08-03T08:54:29.431014Z","shell.execute_reply":"2021-08-03T08:56:29.247738Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model_cnn.evaluate(X_test,Y_test)","metadata":{"execution":{"iopub.status.busy":"2021-08-03T08:56:29.250153Z","iopub.execute_input":"2021-08-03T08:56:29.250511Z","iopub.status.idle":"2021-08-03T08:56:30.538995Z","shell.execute_reply.started":"2021-08-03T08:56:29.250475Z","shell.execute_reply":"2021-08-03T08:56:30.538206Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"CNN_RMSprop=\n* **accuracy on train: 0.6262**\n* **accuracy on test: 0.6644**","metadata":{}},{"cell_type":"code","source":"model_cnn_2 = models.Sequential([\n        layers.Conv2D(filters=32,kernel_size=(3,3),activation='relu',input_shape=(32,32,3)),\n        layers.MaxPooling2D((2,2)),\n        \n        layers.Conv2D(filters=64,kernel_size=(3,3),activation='relu'),\n        layers.MaxPooling2D((2,2)),\n        layers.Dropout(0.5),\n    \n        layers.Conv2D(filters=128,kernel_size=(3,3),activation='relu'),\n        layers.MaxPooling2D((2,2)),\n        layers.Dropout(0.5),\n        \n        layers.Flatten(),\n        layers.Dense(512, activation='relu'),\n        layers.Dense(10, activation='softmax')    \n    ])\n\nmodel_cnn_2.compile(\n                loss = 'sparse_categorical_crossentropy',\n               optimizer = \"adam\",\n               metrics = ['accuracy'])\n\n\nMODEL_3=model_cnn_2.fit(X_train,Y_train,\n                        epochs=20,\n                      verbose=1)","metadata":{"execution":{"iopub.status.busy":"2021-08-03T11:19:53.521432Z","iopub.execute_input":"2021-08-03T11:19:53.521761Z","iopub.status.idle":"2021-08-03T11:21:44.987462Z","shell.execute_reply.started":"2021-08-03T11:19:53.521725Z","shell.execute_reply":"2021-08-03T11:21:44.986536Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model_cnn_2.evaluate(X_test,Y_test)","metadata":{"execution":{"iopub.status.busy":"2021-08-03T11:21:44.989325Z","iopub.execute_input":"2021-08-03T11:21:44.989616Z","iopub.status.idle":"2021-08-03T11:21:46.075775Z","shell.execute_reply.started":"2021-08-03T11:21:44.989587Z","shell.execute_reply":"2021-08-03T11:21:46.075008Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"CNN_adam=\n* **accuracy on train: 0.6880**\n* **accuracy on test: 0.7342**","metadata":{}},{"cell_type":"code","source":"y_pred = model_cnn_2.predict(X_test)\n\ny_classes = [np.argmax(element) for element in y_pred]\ny_classes[:5]","metadata":{"execution":{"iopub.status.busy":"2021-08-03T10:35:44.78541Z","iopub.execute_input":"2021-08-03T10:35:44.785749Z","iopub.status.idle":"2021-08-03T10:35:45.53265Z","shell.execute_reply.started":"2021-08-03T10:35:44.785716Z","shell.execute_reply":"2021-08-03T10:35:45.531713Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"Y_test[:5]","metadata":{"execution":{"iopub.status.busy":"2021-08-03T10:35:50.733813Z","iopub.execute_input":"2021-08-03T10:35:50.734137Z","iopub.status.idle":"2021-08-03T10:35:50.739869Z","shell.execute_reply.started":"2021-08-03T10:35:50.73411Z","shell.execute_reply":"2021-08-03T10:35:50.738802Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plot_sample(X_test, Y_test,1)","metadata":{"execution":{"iopub.status.busy":"2021-08-03T10:35:51.59567Z","iopub.execute_input":"2021-08-03T10:35:51.596036Z","iopub.status.idle":"2021-08-03T10:35:51.698103Z","shell.execute_reply.started":"2021-08-03T10:35:51.596007Z","shell.execute_reply":"2021-08-03T10:35:51.697139Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"preds=[]\nfor element in y_classes:\n    try:\n        preds.append(classes[element])\n    except:\n        preds.append('\\0')\nids=[ele+1 for ele in range(len(preds))]","metadata":{"execution":{"iopub.status.busy":"2021-08-03T10:49:43.285082Z","iopub.execute_input":"2021-08-03T10:49:43.285426Z","iopub.status.idle":"2021-08-03T10:49:43.29349Z","shell.execute_reply.started":"2021-08-03T10:49:43.285397Z","shell.execute_reply":"2021-08-03T10:49:43.292387Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission = pd.DataFrame({'label':preds},index=ids)\nsubmission.to_csv('submission_cifar_10.csv') ","metadata":{"execution":{"iopub.status.busy":"2021-08-03T11:02:57.368038Z","iopub.execute_input":"2021-08-03T11:02:57.368358Z","iopub.status.idle":"2021-08-03T11:02:57.402598Z","shell.execute_reply.started":"2021-08-03T11:02:57.368329Z","shell.execute_reply":"2021-08-03T11:02:57.401659Z"},"trusted":true},"execution_count":null,"outputs":[]}]}