{"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 numpy as np\nimport seaborn as sns\nimport pandas as pd\nimport matplotlib.pyplot as plt\n\nfrom tensorflow.keras.datasets import cifar10\n\nfrom tensorflow import device\nfrom tensorflow.keras import regularizers\nfrom tensorflow.keras import Model\nfrom tensorflow.keras.optimizers import Adam,Adadelta\nfrom tensorflow.keras.layers import Dense,Conv2D,Activation,BatchNormalization,MaxPooling2D,Dropout,Flatten,Input,concatenate,GlobalAveragePooling2D,GlobalMaxPooling2D                                                                                                                                                                                               \n\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.metrics import accuracy_score\nfrom tensorflow.keras.utils import to_categorical\nfrom tensorflow.keras import backend as K","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-02-03T12:43:33.831130Z","iopub.execute_input":"2022-02-03T12:43:33.831390Z","iopub.status.idle":"2022-02-03T12:43:39.914022Z","shell.execute_reply.started":"2022-02-03T12:43:33.831364Z","shell.execute_reply":"2022-02-03T12:43:39.913233Z"},"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\")/255)-0.5\nX_test = (X_test.astype(\"float32\")/255)-0.5\nY_train = to_categorical(Y_train,10)\n# Y_test = to_categorical(Y_test,10)\nx_train,x_val,y_train,y_val = train_test_split(X_train,Y_train,test_size =0.2, random_state = 10)","metadata":{"execution":{"iopub.status.busy":"2022-02-03T12:43:55.601912Z","iopub.execute_input":"2022-02-03T12:43:55.602609Z","iopub.status.idle":"2022-02-03T12:44:02.442081Z","shell.execute_reply.started":"2022-02-03T12:43:55.602571Z","shell.execute_reply":"2022-02-03T12:44:02.441317Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(\"train size:\",len(x_train))\nprint(\"validation size:\",len(x_val))\nprint(\"test size:\",len(X_test))\nprint(\"X shape:\",X_train.shape[1:])","metadata":{"execution":{"iopub.status.busy":"2022-02-03T12:44:02.444095Z","iopub.execute_input":"2022-02-03T12:44:02.444604Z","iopub.status.idle":"2022-02-03T12:44:02.452579Z","shell.execute_reply.started":"2022-02-03T12:44:02.444567Z","shell.execute_reply":"2022-02-03T12:44:02.451858Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from tensorflow.keras.preprocessing.image import ImageDataGenerator\ndatagen = ImageDataGenerator(\n    rotation_range=15,\n    horizontal_flip=True,\n    width_shift_range=0.1,\n    height_shift_range=0.1,\n    zoom_range=0.15\n    )\ndatagen.fit(X_train)","metadata":{"execution":{"iopub.status.busy":"2022-02-03T12:44:02.453602Z","iopub.execute_input":"2022-02-03T12:44:02.453794Z","iopub.status.idle":"2022-02-03T12:44:02.678973Z","shell.execute_reply.started":"2022-02-03T12:44:02.453772Z","shell.execute_reply":"2022-02-03T12:44:02.678244Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"inp_shape = x_train.shape[1:]\nreg  = None\nreg_l1 = regularizers.l1()\nreg_l2 = regularizers.l2()\nks = 64\ndrop_size = 0.1\nact = \"relu\"\nfrom keras.callbacks import LearningRateScheduler\ndef lr_schedule(epoch):\n    lrate = 0.001\n    if epoch > 20:\n        lrate = 0.0005\n    if epoch > 40:\n        lrate = 0.00025\n    if epoch > 50:\n        lrate = 0.0001\n    return lrate","metadata":{"execution":{"iopub.status.busy":"2022-02-03T12:44:02.681499Z","iopub.execute_input":"2022-02-03T12:44:02.681771Z","iopub.status.idle":"2022-02-03T12:44:02.688649Z","shell.execute_reply.started":"2022-02-03T12:44:02.681735Z","shell.execute_reply":"2022-02-03T12:44:02.687473Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"i = Input(inp_shape)\n\n#32----------------------------------------------------------------------------------\nt11 = Conv2D(ks,(2,2),kernel_regularizer = reg,padding = \"same\",activation = act)(i)\nt11 = BatchNormalization()(t11)\nt1i  = concatenate((i,t11))\n\nt12 = Conv2D(ks*2,(2,2),kernel_regularizer = reg,padding = \"same\",activation = act)(t1i)\nt12 = BatchNormalization()(t12)\nt2i = concatenate((i,t11,t12))\n\nt13 = Conv2D(ks*4,(2,2),kernel_regularizer = reg,padding = \"same\",activation = act)(t2i)\nt13 = BatchNormalization()(t13)\nt13 = MaxPooling2D(2,2)(t13)\nt13 = Dropout(drop_size*2)(t13)\n#16----------------------------------------------------------------------------------\nt21 = Conv2D(ks*2,(3,3),kernel_regularizer = reg,padding = \"same\",activation = act)(t13)\nt21 = BatchNormalization()(t21)\nt2i2  = concatenate((t13,t21))\nt22 = Conv2D(ks*4,(3,3),kernel_regularizer = reg,padding = \"same\",activation = act)(t2i2)\nt22 = BatchNormalization()(t22)\nt2i3 = concatenate((t13,t21,t22))\nt23 = Conv2D(ks*8,(3,3),kernel_regularizer = reg,padding = \"same\",activation = act)(t2i3)\nt23 = BatchNormalization()(t23)\nt23 = MaxPooling2D(2,2)(t23)\nt23 = Dropout(drop_size*2)(t23)\n#8--------------------------------------------------------------------------------------\nt31 = Conv2D(ks*2,(3,3),kernel_regularizer = reg,padding = \"same\",activation = act)(t23)\nt31 = BatchNormalization()(t31)\nt3i2  = concatenate((t23,t31))\nt32 = Conv2D(ks*4,(3,3),kernel_regularizer = reg,padding = \"same\",activation = act)(t3i2)\nt32 = BatchNormalization()(t32)\nt3i3 = concatenate((t23,t31,t32))\nt33 = Conv2D(ks*8,(3,3),kernel_regularizer = reg,padding = \"same\",activation = act)(t3i3)\nt33 = BatchNormalization()(t33)\nt33 = MaxPooling2D(2,2)(t33)\nt33 = Dropout(drop_size*2)(t33)\n#4------------------------------------------------------------------------------------\n# output = concatenate((t12,t))\n# output = BatchNormalization()(output)\n# output = GlobalAveragePooling2D()(t6)\n# output = GlobalMaxPooling2D()(t6)\noutput = Flatten()(t33)\n# output = Dropout(drop_size*4)\noutput = Dense(16*ks,kernel_regularizer = reg,activation = act)(output)\noutput = BatchNormalization()(output)\noutput = Dropout(2*drop_size)(output)\noutput = Dense(16*ks,kernel_regularizer = reg,activation = act)(output)\noutput = BatchNormalization()(output)\noutput = Dropout(2*drop_size)(output)\noutput = Dense(16*ks,kernel_regularizer = reg,activation = act)(output)\noutput = BatchNormalization()(output)\noutput = Dropout(2*drop_size)(output)\n\noutput = Dense(10,activation='softmax')(output)\nmodel = Model(i,output)\n\nmodel.compile(optimizer =\"adam\",\n                     loss = \"categorical_crossentropy\",\n                      metrics = [\"accuracy\"])","metadata":{"execution":{"iopub.status.busy":"2022-02-03T12:44:02.690348Z","iopub.execute_input":"2022-02-03T12:44:02.690683Z","iopub.status.idle":"2022-02-03T12:44:05.231358Z","shell.execute_reply.started":"2022-02-03T12:44:02.690647Z","shell.execute_reply":"2022-02-03T12:44:05.230642Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.summary()","metadata":{"execution":{"iopub.status.busy":"2022-02-03T12:44:05.232554Z","iopub.execute_input":"2022-02-03T12:44:05.232801Z","iopub.status.idle":"2022-02-03T12:44:05.261445Z","shell.execute_reply.started":"2022-02-03T12:44:05.232767Z","shell.execute_reply":"2022-02-03T12:44:05.260784Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# history = model.fit_generator(datagen.flow(x_train,y_train),validation_data =(x_val,y_val),epochs = 80, callbacks=[LearningRateScheduler(lr_schedule)])                             ","metadata":{"execution":{"iopub.status.busy":"2022-02-03T12:44:05.263205Z","iopub.execute_input":"2022-02-03T12:44:05.263453Z","iopub.status.idle":"2022-02-03T12:44:05.511501Z","shell.execute_reply.started":"2022-02-03T12:44:05.263419Z","shell.execute_reply":"2022-02-03T12:44:05.510649Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# plt.plot(history.history['accuracy'])\n# plt.plot(history.history['val_accuracy'])\n# plt.title('model accuracy')\n# plt.ylabel('accuracy')\n# plt.xlabel('epoch')\n# plt.legend(['train', 'test'], loc='upper left')\n# plt.show()","metadata":{"execution":{"iopub.status.busy":"2022-02-03T12:44:05.513104Z","iopub.execute_input":"2022-02-03T12:44:05.513469Z","iopub.status.idle":"2022-02-03T12:44:05.520547Z","shell.execute_reply.started":"2022-02-03T12:44:05.513426Z","shell.execute_reply":"2022-02-03T12:44:05.519708Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"","metadata":{}},{"cell_type":"code","source":"# plt.plot(history.history['loss'])\n# plt.plot(history.history['val_loss'])\n# plt.title('model loss')\n# plt.ylabel('loss')\n# plt.xlabel('epoch')\n# plt.legend(['train', 'test'], loc='upper left')\n# plt.show()","metadata":{"execution":{"iopub.status.busy":"2022-02-03T12:44:05.522348Z","iopub.execute_input":"2022-02-03T12:44:05.522848Z","iopub.status.idle":"2022-02-03T12:44:05.527570Z","shell.execute_reply.started":"2022-02-03T12:44:05.522807Z","shell.execute_reply":"2022-02-03T12:44:05.526790Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.fit(datagen.flow(X_train,Y_train),epochs =65,callbacks=[LearningRateScheduler(lr_schedule)])","metadata":{"execution":{"iopub.status.busy":"2022-02-03T12:44:05.530622Z","iopub.execute_input":"2022-02-03T12:44:05.530971Z","iopub.status.idle":"2022-02-03T13:47:56.926441Z","shell.execute_reply.started":"2022-02-03T12:44:05.530940Z","shell.execute_reply":"2022-02-03T13:47:56.925758Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_pred = np.argmax(model.predict(X_test),axis = 1)\nprint(accuracy_score(y_pred,Y_test))","metadata":{"execution":{"iopub.status.busy":"2022-02-03T13:47:56.927753Z","iopub.execute_input":"2022-02-03T13:47:56.927991Z","iopub.status.idle":"2022-02-03T13:48:00.334911Z","shell.execute_reply.started":"2022-02-03T13:47:56.927958Z","shell.execute_reply":"2022-02-03T13:48:00.334169Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}