{"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":"markdown","source":"**MEET VORA**\n\n**19BCE299**\n\n**PRACTICAL 3 CIFAR**","metadata":{}},{"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":{"execution":{"iopub.status.busy":"2022-03-25T00:08:54.299561Z","iopub.execute_input":"2022-03-25T00:08:54.300201Z","iopub.status.idle":"2022-03-25T00:08:54.327681Z","shell.execute_reply.started":"2022-03-25T00:08:54.300083Z","shell.execute_reply":"2022-03-25T00:08:54.326963Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import matplotlib.pyplot as plt\nfrom sklearn.model_selection import train_test_split\nimport tensorflow as tf\nfrom tensorflow.keras.models import Sequential\nfrom tensorflow.keras.utils import to_categorical\nfrom tensorflow.keras.layers import BatchNormalization\nfrom tensorflow.keras.regularizers import l2\nfrom tensorflow.keras.layers import Dense, Dropout, Activation,Flatten,Conv2D,MaxPooling2D\nfrom tensorflow.keras.preprocessing.image import ImageDataGenerator\nfrom tensorflow.keras.datasets import cifar10 \nimport warnings\nwarnings.filterwarnings('ignore')\n\ntf.__version__","metadata":{"execution":{"iopub.status.busy":"2022-03-24T22:55:32.97332Z","iopub.execute_input":"2022-03-24T22:55:32.974039Z","iopub.status.idle":"2022-03-24T22:55:32.981562Z","shell.execute_reply.started":"2022-03-24T22:55:32.973999Z","shell.execute_reply":"2022-03-24T22:55:32.98087Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"(x_train, y_train), (x_test, y_test) = cifar10.load_data()\nx_train = x_train.astype('float32')\nx_test = x_test.astype('float32')\n\nprint(\"x_train shape \",x_train.shape)\nprint(\"x_test shape \",x_test.shape)","metadata":{"execution":{"iopub.status.busy":"2022-03-24T22:55:48.143014Z","iopub.execute_input":"2022-03-24T22:55:48.143779Z","iopub.status.idle":"2022-03-24T22:55:52.446563Z","shell.execute_reply.started":"2022-03-24T22:55:48.143738Z","shell.execute_reply":"2022-03-24T22:55:52.445771Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"mean = np.mean(x_train,axis=(0,1,2,3)) #mean of all pixels\nstd = np.std(x_train,axis=(0,1,2,3))   #standard deviation of all pixels\nx_train = (x_train-mean)/(std+1e-7)\nx_test = (x_test-mean)/(std+1e-7)\n","metadata":{"execution":{"iopub.status.busy":"2022-03-24T22:56:08.920987Z","iopub.execute_input":"2022-03-24T22:56:08.921253Z","iopub.status.idle":"2022-03-24T22:56:09.604996Z","shell.execute_reply.started":"2022-03-24T22:56:08.921223Z","shell.execute_reply":"2022-03-24T22:56:09.60426Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"num_classes = 10\ny_train = to_categorical(y_train,num_classes)\ny_test = to_categorical(y_test,num_classes)","metadata":{"execution":{"iopub.status.busy":"2022-03-24T22:56:10.880988Z","iopub.execute_input":"2022-03-24T22:56:10.881518Z","iopub.status.idle":"2022-03-24T22:56:10.888401Z","shell.execute_reply.started":"2022-03-24T22:56:10.881479Z","shell.execute_reply":"2022-03-24T22:56:10.887474Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_datagen = ImageDataGenerator(rotation_range=15,\n                                   width_shift_range=0.1,\n                                   height_shift_range=0.1,\n                                    horizontal_flip=True)\n\ntrain_generator = train_datagen.flow(x_train, y_train,\n                                     batch_size=64,\n                                     shuffle=True)\n                            \nval_datagen = ImageDataGenerator()\nval_generator = val_datagen.flow(x_test, y_test,\n                                 batch_size=64,\n                                 shuffle=True)","metadata":{"execution":{"iopub.status.busy":"2022-03-24T22:56:19.821619Z","iopub.execute_input":"2022-03-24T22:56:19.821875Z","iopub.status.idle":"2022-03-24T22:56:19.828228Z","shell.execute_reply.started":"2022-03-24T22:56:19.821847Z","shell.execute_reply":"2022-03-24T22:56:19.827219Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"weight_decay = 1e-4\nmodel = Sequential()\nmodel.add(Conv2D(32, (3,3), padding='same', kernel_regularizer=l2(weight_decay), input_shape=x_train.shape[1:]))\nmodel.add(Activation('elu'))\nmodel.add(BatchNormalization())\nmodel.add(Conv2D(32, (3,3), padding='same', kernel_regularizer=l2(weight_decay)))\nmodel.add(Activation('elu'))\nmodel.add(BatchNormalization())\nmodel.add(MaxPooling2D(pool_size=(2,2)))\nmodel.add(Dropout(0.2))\n\nmodel.add(Conv2D(64, (3,3), padding='same', kernel_regularizer=l2(weight_decay)))\nmodel.add(Activation('elu'))\nmodel.add(BatchNormalization())\nmodel.add(Conv2D(64, (3,3), padding='same', kernel_regularizer=l2(weight_decay)))\nmodel.add(Activation('elu'))\nmodel.add(BatchNormalization())\nmodel.add(MaxPooling2D(pool_size=(2,2)))\nmodel.add(Dropout(0.3))\n\nmodel.add(Conv2D(128, (3,3), padding='same', kernel_regularizer=l2(weight_decay)))\nmodel.add(Activation('elu'))\nmodel.add(BatchNormalization())\nmodel.add(Conv2D(128, (3,3), padding='same', kernel_regularizer=l2(weight_decay)))\nmodel.add(Activation('elu'))\nmodel.add(BatchNormalization())\nmodel.add(MaxPooling2D(pool_size=(2,2)))\nmodel.add(Dropout(0.4))\n\nmodel.add(Flatten())\nmodel.add(Dense(num_classes, activation='softmax'))","metadata":{"execution":{"iopub.status.busy":"2022-03-24T22:56:24.728334Z","iopub.execute_input":"2022-03-24T22:56:24.729073Z","iopub.status.idle":"2022-03-24T22:56:27.506098Z","shell.execute_reply.started":"2022-03-24T22:56:24.729035Z","shell.execute_reply":"2022-03-24T22:56:27.50104Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.summary()","metadata":{"execution":{"iopub.status.busy":"2022-03-24T22:56:27.51125Z","iopub.execute_input":"2022-03-24T22:56:27.511673Z","iopub.status.idle":"2022-03-24T22:56:27.54062Z","shell.execute_reply.started":"2022-03-24T22:56:27.511634Z","shell.execute_reply":"2022-03-24T22:56:27.537819Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"my_callbacks = tf.keras.callbacks.ReduceLROnPlateau(monitor='val_acc', factor=0.5, patience=3, verbose = 1,min_lr=0.001)","metadata":{"execution":{"iopub.status.busy":"2022-03-24T22:58:25.08273Z","iopub.execute_input":"2022-03-24T22:58:25.082999Z","iopub.status.idle":"2022-03-24T22:58:25.087828Z","shell.execute_reply.started":"2022-03-24T22:58:25.082971Z","shell.execute_reply":"2022-03-24T22:58:25.087105Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"opt_rms = tf.keras.optimizers.RMSprop(lr=0.001,decay=1e-6)\nmodel.compile(loss='categorical_crossentropy', optimizer=opt_rms, metrics=['accuracy'])","metadata":{"execution":{"iopub.status.busy":"2022-03-24T22:58:33.320864Z","iopub.execute_input":"2022-03-24T22:58:33.32113Z","iopub.status.idle":"2022-03-24T22:58:33.336403Z","shell.execute_reply.started":"2022-03-24T22:58:33.3211Z","shell.execute_reply":"2022-03-24T22:58:33.335543Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.fit(train_generator, epochs=125, callbacks=[my_callbacks], validation_data=val_generator)","metadata":{"execution":{"iopub.status.busy":"2022-03-24T22:59:33.027779Z","iopub.execute_input":"2022-03-24T22:59:33.028147Z","iopub.status.idle":"2022-03-24T23:55:04.617509Z","shell.execute_reply.started":"2022-03-24T22:59:33.028013Z","shell.execute_reply":"2022-03-24T23:55:04.616793Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.evaluate(x_test,y_test)","metadata":{"execution":{"iopub.status.busy":"2022-03-25T00:01:16.263625Z","iopub.execute_input":"2022-03-25T00:01:16.264401Z","iopub.status.idle":"2022-03-25T00:01:18.202951Z","shell.execute_reply.started":"2022-03-25T00:01:16.264339Z","shell.execute_reply":"2022-03-25T00:01:18.202228Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}