{"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":"# 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","execution":{"iopub.status.busy":"2022-04-20T04:12:56.42066Z","iopub.execute_input":"2022-04-20T04:12:56.420946Z","iopub.status.idle":"2022-04-20T04:12:56.432006Z","shell.execute_reply.started":"2022-04-20T04:12:56.420918Z","shell.execute_reply":"2022-04-20T04:12:56.431165Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import numpy as np \nimport pandas as pd ","metadata":{"execution":{"iopub.status.busy":"2022-04-20T04:12:56.60717Z","iopub.execute_input":"2022-04-20T04:12:56.607905Z","iopub.status.idle":"2022-04-20T04:12:56.611705Z","shell.execute_reply.started":"2022-04-20T04:12:56.607859Z","shell.execute_reply":"2022-04-20T04:12:56.610846Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!pip install py7zr","metadata":{"execution":{"iopub.status.busy":"2022-04-20T04:12:56.788003Z","iopub.execute_input":"2022-04-20T04:12:56.788289Z","iopub.status.idle":"2022-04-20T04:13:05.68503Z","shell.execute_reply.started":"2022-04-20T04:12:56.788261Z","shell.execute_reply":"2022-04-20T04:13:05.684224Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from py7zr import unpack_7zarchive\nimport shutil\n\nshutil.register_unpack_format('7zip', ['.7z'], unpack_7zarchive)","metadata":{"execution":{"iopub.status.busy":"2022-04-20T04:13:09.402712Z","iopub.execute_input":"2022-04-20T04:13:09.403234Z","iopub.status.idle":"2022-04-20T04:13:09.408602Z","shell.execute_reply.started":"2022-04-20T04:13:09.4032Z","shell.execute_reply":"2022-04-20T04:13:09.407902Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"shutil.unpack_archive('/kaggle/input/cifar-10/train.7z', '/kaggle/temp/')","metadata":{"execution":{"iopub.status.busy":"2022-04-20T07:15:36.926858Z","iopub.execute_input":"2022-04-20T07:15:36.927910Z","iopub.status.idle":"2022-04-20T07:15:37.106629Z","shell.execute_reply.started":"2022-04-20T07:15:36.927782Z","shell.execute_reply":"2022-04-20T07:15:37.104550Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_labels=pd.read_csv(\"/kaggle/input/cifar-10/trainLabels.csv\", header='infer')\n\nclasses=train_labels['label'].unique()\n\nimport os\n\nif not os.path.exists(\"/kaggle/temp/validation/\"):\n    os.mkdir(\"/kaggle/temp/validation/\")\n\nparent_path_train=\"/kaggle/temp/train/\"\nparent_path_validation=\"/kaggle/temp/validation/\"\nparent_path_test=\"/kaggle/temp/test/\"\n\nfor class1 in classes:\n    path_train=os.path.join(parent_path_train,class1)\n    if not os.path.exists(path_train):\n        os.mkdir(path_train)\n    path_validation=os.path.join(parent_path_validation,class1)\n    if not os.path.exists(path_validation):\n        os.mkdir(path_validation)\n\nfor (int_ind,row) in train_labels.iterrows():\n    id=str(row[\"id\"])+\".png\" \n    source_path=os.path.join(parent_path_train,id)\n    \n    p=np.random.random() \n    if p <= 0.8: \n        target_path=os.path.join(parent_path_train,row[\"label\"],id)\n        os.replace(source_path, target_path) \n    else:\n        target_path=os.path.join(parent_path_validation,row[\"label\"],id)\n        os.replace(source_path, target_path)","metadata":{"execution":{"iopub.status.busy":"2022-04-20T04:13:53.609754Z","iopub.execute_input":"2022-04-20T04:13:53.610057Z","iopub.status.idle":"2022-04-20T04:13:59.280256Z","shell.execute_reply.started":"2022-04-20T04:13:53.61002Z","shell.execute_reply":"2022-04-20T04:13:59.279512Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"os.listdir('/kaggle/temp/train'),os.listdir('/kaggle/temp/validation'),len(os.listdir('/kaggle/temp/train/horse'))","metadata":{"execution":{"iopub.status.busy":"2022-04-20T04:13:59.28166Z","iopub.execute_input":"2022-04-20T04:13:59.281985Z","iopub.status.idle":"2022-04-20T04:13:59.299525Z","shell.execute_reply.started":"2022-04-20T04:13:59.281945Z","shell.execute_reply":"2022-04-20T04:13:59.297785Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import tensorflow as tf\nfrom tensorflow import keras\n\nfrom tensorflow.keras.applications.xception import Xception, preprocess_input\nfrom tensorflow.keras import Sequential\nfrom tensorflow.keras.layers import Dense, Activation, BatchNormalization, GlobalAveragePooling2D,Conv2D,Flatten\nfrom tensorflow.keras.utils import to_categorical\nfrom tensorflow.keras.callbacks import ReduceLROnPlateau\n\nfrom tensorflow.keras.preprocessing.image import ImageDataGenerator","metadata":{"execution":{"iopub.status.busy":"2022-04-20T04:13:59.303406Z","iopub.execute_input":"2022-04-20T04:13:59.303808Z","iopub.status.idle":"2022-04-20T04:14:04.044394Z","shell.execute_reply.started":"2022-04-20T04:13:59.303774Z","shell.execute_reply":"2022-04-20T04:14:04.043644Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def my_model3():\n    model=Sequential()\n    model.add( Conv2D(filters=32, kernel_size=(3,3), strides=(1,1), padding='valid', activation=None, use_bias=False, input_shape=(32,32,3)) )\n    model.add(BatchNormalization())\n    model.add(Activation('relu'))\n    \n    model.add( Conv2D(filters=48, kernel_size=(3,3), strides=(1,1), padding='valid', activation=None, use_bias=False) )\n    model.add(BatchNormalization())\n    model.add(Activation('relu'))\n    \n    model.add( Conv2D(filters=64, kernel_size=(3,3), strides=(1,1), padding='valid', activation=None, use_bias=False) )\n    model.add(BatchNormalization())\n    model.add(Activation('relu'))\n    \n    model.add( Conv2D(filters=80, kernel_size=(3,3), strides=(1,1), padding='valid', activation=None, use_bias=False) )\n    model.add(BatchNormalization())\n    model.add(Activation('relu'))\n    \n    model.add( Conv2D(filters=96, kernel_size=(3,3), strides=(1,1), padding='valid', activation=None, use_bias=False) )\n    model.add(BatchNormalization())\n    model.add(Activation('relu'))\n    \n    model.add( Conv2D(filters=112, kernel_size=(3,3), strides=(1,1), padding='valid', activation=None, use_bias=False) )\n    model.add(BatchNormalization())\n    model.add(Activation('relu'))\n    \n    model.add( Conv2D(filters=128, kernel_size=(3,3), strides=(1,1), padding='valid', activation=None, use_bias=False) )\n    model.add(BatchNormalization())\n    model.add(Activation('relu'))\n    \n    model.add( Conv2D(filters=144, kernel_size=(3,3), strides=(1,1), padding='valid', activation=None, use_bias=False) )\n    model.add(BatchNormalization())\n    model.add(Activation('relu'))\n    \n    model.add( Conv2D(filters=160, kernel_size=(3,3), strides=(1,1), padding='valid', activation=None, use_bias=False) )\n    model.add(BatchNormalization())\n    model.add(Activation('relu'))\n    \n    model.add( Conv2D(filters=176, kernel_size=(3,3), strides=(1,1), padding='valid', activation=None, use_bias=False) )\n    model.add(BatchNormalization())\n    model.add(Activation('relu'))\n    \n    model.add(Flatten())\n    \n    model.add(Dense(units=10))\n    model.add(BatchNormalization())\n    model.add(Activation('softmax'))\n    model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])\n    return model\n","metadata":{"execution":{"iopub.status.busy":"2022-04-20T04:14:04.045599Z","iopub.execute_input":"2022-04-20T04:14:04.045909Z","iopub.status.idle":"2022-04-20T04:14:04.065284Z","shell.execute_reply.started":"2022-04-20T04:14:04.04587Z","shell.execute_reply":"2022-04-20T04:14:04.064635Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model3=my_model3()","metadata":{"execution":{"iopub.status.busy":"2022-04-20T04:14:04.066883Z","iopub.execute_input":"2022-04-20T04:14:04.067413Z","iopub.status.idle":"2022-04-20T04:14:06.588053Z","shell.execute_reply.started":"2022-04-20T04:14:04.067241Z","shell.execute_reply":"2022-04-20T04:14:06.587379Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"reduceLROnPlateau = ReduceLROnPlateau(monitor='val_acc', \n                                patience=3,\n                                verbose=1, \n                                factor=0.5,\n                                min_lr=0.00001)","metadata":{"execution":{"iopub.status.busy":"2022-04-20T04:14:06.589236Z","iopub.execute_input":"2022-04-20T04:14:06.589475Z","iopub.status.idle":"2022-04-20T04:14:06.595674Z","shell.execute_reply.started":"2022-04-20T04:14:06.589442Z","shell.execute_reply":"2022-04-20T04:14:06.593304Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_datagen=ImageDataGenerator(featurewise_center=False,\n                         samplewise_center=False,\n                         featurewise_std_normalization=False,\n                         samplewise_std_normalization=False,\n                         zca_whitening=False,\n                         rotation_range=10,\n                         zoom_range=0.1,\n                         width_shift_range=0.1,\n                         height_shift_range=0.1,\n                         horizontal_flip=False,\n                         vertical_flip=False,\n                         rescale=1./255\n                        )\ntrain_gen=train_datagen.flow_from_directory(directory='/kaggle/temp/train/', target_size=(32,32), batch_size=32) \n\nvalidation_datagen=ImageDataGenerator(rescale=1./255)\n\nvalid_gen=validation_datagen.flow_from_directory(directory='/kaggle/temp/validation/', target_size=(32,32), batch_size=32)","metadata":{"execution":{"iopub.status.busy":"2022-04-20T04:14:06.596979Z","iopub.execute_input":"2022-04-20T04:14:06.59722Z","iopub.status.idle":"2022-04-20T04:14:08.407109Z","shell.execute_reply.started":"2022-04-20T04:14:06.597183Z","shell.execute_reply":"2022-04-20T04:14:08.406305Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model3.fit(train_gen, epochs=75, callbacks=[reduceLROnPlateau], validation_data=valid_gen, steps_per_epoch = train_gen.n//train_gen.batch_size,\n                    validation_steps = valid_gen.n//valid_gen.batch_size)    ","metadata":{"execution":{"iopub.status.busy":"2022-04-20T04:35:08.291432Z","iopub.execute_input":"2022-04-20T04:35:08.291904Z","iopub.status.idle":"2022-04-20T04:58:40.50139Z","shell.execute_reply.started":"2022-04-20T04:35:08.291869Z","shell.execute_reply":"2022-04-20T04:58:40.500722Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"shutil.unpack_archive('/kaggle/input/cifar-10/test.7z', '/kaggle/temp/test')","metadata":{"execution":{"iopub.status.busy":"2022-04-20T04:15:12.642131Z","iopub.execute_input":"2022-04-20T04:15:12.642388Z","iopub.status.idle":"2022-04-20T04:29:17.806532Z","shell.execute_reply.started":"2022-04-20T04:15:12.642353Z","shell.execute_reply":"2022-04-20T04:29:17.805802Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# shutil.unregister_unpack_format('7zip', ['.7z'], unpack_7zarchive)","metadata":{"execution":{"iopub.status.busy":"2022-04-20T04:29:17.808885Z","iopub.execute_input":"2022-04-20T04:29:17.809285Z","iopub.status.idle":"2022-04-20T04:29:17.814031Z","shell.execute_reply.started":"2022-04-20T04:29:17.809241Z","shell.execute_reply":"2022-04-20T04:29:17.813446Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_datagen=ImageDataGenerator(rescale=1./255)\n\ntest_gen=test_datagen.flow_from_directory(directory='/kaggle/temp/test', target_size=(32,32), batch_size=64, class_mode=None, shuffle=False)","metadata":{"execution":{"iopub.status.busy":"2022-04-20T04:29:17.815187Z","iopub.execute_input":"2022-04-20T04:29:17.815515Z","iopub.status.idle":"2022-04-20T04:29:24.811062Z","shell.execute_reply.started":"2022-04-20T04:29:17.815486Z","shell.execute_reply":"2022-04-20T04:29:24.810354Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model3.evaluate(test_gen)","metadata":{"execution":{"iopub.status.busy":"2022-04-20T05:01:23.674381Z","iopub.execute_input":"2022-04-20T05:01:23.67464Z","iopub.status.idle":"2022-04-20T05:03:45.640676Z","shell.execute_reply.started":"2022-04-20T05:01:23.674612Z","shell.execute_reply":"2022-04-20T05:03:45.639793Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_gen.reset()\nprediction_vectors3=model3.predict(test_gen)\npredictions_final=np.argmax(prediction_vectors3, axis=1)","metadata":{"execution":{"iopub.status.busy":"2022-04-20T05:03:45.642791Z","iopub.execute_input":"2022-04-20T05:03:45.643086Z","iopub.status.idle":"2022-04-20T05:05:10.065587Z","shell.execute_reply.started":"2022-04-20T05:03:45.64305Z","shell.execute_reply":"2022-04-20T05:05:10.06488Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sub=pd.read_csv('/kaggle/input/cifar-10/sampleSubmission.csv', header='infer')\n\nsub['label']=predictions_final\n\n\nsub.to_csv('/kaggle/working/submission.csv', index=False)","metadata":{"execution":{"iopub.status.busy":"2022-04-20T05:05:10.066799Z","iopub.execute_input":"2022-04-20T05:05:10.067115Z","iopub.status.idle":"2022-04-20T05:05:10.543509Z","shell.execute_reply.started":"2022-04-20T05:05:10.067077Z","shell.execute_reply":"2022-04-20T05:05:10.542658Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# pred = np.argmax(model.predict(testflow), axis = 1)\npred = list(predictions_final)\nclasses = {value:key for (key, value) in train_gen.class_indices.items()}\npredc = np.empty(300000, 'U16')\nidd = 0\nfor i in pred:\n    predc[idd] = classes[i]\n    idd += 1\n\n\n\nfiles = []\nfor file in test_gen.filenames:\n    files.append(int(file.split('/')[1].split('.')[0]) - 1)\nfiles = np.array(files)\n    \nfinal = np.empty(300000, dtype = 'U16')\nfinal[files] = predc\n\n\n\n\nsub = pd.read_csv('../input/cifar-10/sampleSubmission.csv')\nsub['label'] = final\nsub.to_csv('submission.csv', index = False)","metadata":{"execution":{"iopub.status.busy":"2022-04-20T05:05:10.545227Z","iopub.execute_input":"2022-04-20T05:05:10.545478Z","iopub.status.idle":"2022-04-20T05:05:11.643732Z","shell.execute_reply.started":"2022-04-20T05:05:10.545445Z","shell.execute_reply":"2022-04-20T05:05:11.642898Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}