{"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 pandas as pd\nimport matplotlib.pyplot as plt\nimport numpy as np\nimport tensorflow as tf\nfrom tensorflow.keras import models, layers, regularizers","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2023-02-09T07:43:58.531996Z","iopub.execute_input":"2023-02-09T07:43:58.532579Z","iopub.status.idle":"2023-02-09T07:43:58.544295Z","shell.execute_reply.started":"2023-02-09T07:43:58.532533Z","shell.execute_reply":"2023-02-09T07:43:58.540294Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_data = pd.read_csv('/kaggle/input/digit-recognizer/train.csv')\ntest_data = pd.read_csv('/kaggle/input/digit-recognizer/test.csv')","metadata":{"execution":{"iopub.status.busy":"2023-02-09T07:43:58.549056Z","iopub.execute_input":"2023-02-09T07:43:58.550042Z","iopub.status.idle":"2023-02-09T07:44:02.275111Z","shell.execute_reply.started":"2023-02-09T07:43:58.550004Z","shell.execute_reply":"2023-02-09T07:44:02.273944Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_input = np.array(train_data.iloc[:,1:]).reshape(-1,28,28,1)/255\ntrain_label =  np.array(train_data.iloc[:,0]).reshape(-1,1)\nfrom sklearn.preprocessing import OneHotEncoder\nonehot = OneHotEncoder()\ntrain_label = OneHotEncoder().fit_transform(train_label).toarray()\ntest_input = np.array(test_data.iloc[:,:]).reshape(-1,28,28,1)/255","metadata":{"execution":{"iopub.status.busy":"2023-02-09T08:44:50.940444Z","iopub.execute_input":"2023-02-09T08:44:50.940804Z","iopub.status.idle":"2023-02-09T08:44:51.287465Z","shell.execute_reply.started":"2023-02-09T08:44:50.940774Z","shell.execute_reply":"2023-02-09T08:44:51.286169Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from  sklearn.model_selection import train_test_split\nX_train,X_test, y_train, y_test = train_test_split(train_input,train_label, test_size=0.3, random_state=42)","metadata":{"execution":{"iopub.status.busy":"2023-02-09T07:44:02.459498Z","iopub.execute_input":"2023-02-09T07:44:02.460089Z","iopub.status.idle":"2023-02-09T07:44:02.898071Z","shell.execute_reply.started":"2023-02-09T07:44:02.460049Z","shell.execute_reply":"2023-02-09T07:44:02.897041Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.imshow(train_input[1])","metadata":{"execution":{"iopub.status.busy":"2023-02-09T07:44:02.901023Z","iopub.execute_input":"2023-02-09T07:44:02.901447Z","iopub.status.idle":"2023-02-09T07:44:03.122070Z","shell.execute_reply.started":"2023-02-09T07:44:02.901409Z","shell.execute_reply":"2023-02-09T07:44:03.121122Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"input_shape =(28,28,1)\nnum_classes =10\nactivate = tf.keras.layers.LeakyReLU(0.1)\ninitializer = tf.keras.initializers.HeNormal()","metadata":{"execution":{"iopub.status.busy":"2023-02-09T08:56:16.452907Z","iopub.execute_input":"2023-02-09T08:56:16.453287Z","iopub.status.idle":"2023-02-09T08:56:16.460299Z","shell.execute_reply.started":"2023-02-09T08:56:16.453234Z","shell.execute_reply":"2023-02-09T08:56:16.459301Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# # Build Model\nmodel = models.Sequential()\nmodel.add(layers.Conv2D(64, kernel_size=(3, 3), activation=activate, input_shape=input_shape, data_format='channels_last'))\nmodel.add(layers.BatchNormalization())\nmodel.add(layers.Conv2D(64, kernel_size=(3, 3), activation=activate, padding='same',kernel_initializer=initializer))\nmodel.add(layers.BatchNormalization())\nmodel.add(layers.MaxPooling2D(pool_size=(2, 2), strides=(2, 2)))\nmodel.add(layers.Dropout(0.25))\n\nmodel.add(layers.Conv2D(128, kernel_size=(3, 3), activation=activate, padding='same',kernel_initializer=initializer))\nmodel.add(layers.BatchNormalization())\nmodel.add(layers.Conv2D(128, kernel_size=(3, 3), activation=activate, padding='same',kernel_initializer=initializer))\nmodel.add(layers.BatchNormalization())\nmodel.add(layers.MaxPooling2D(pool_size=(2, 2), strides=(2, 2)))\nmodel.add(layers.Dropout(0.25))\n\n\nmodel.add(layers.Conv2D(256, kernel_size=(3, 3), activation='relu', padding='same',kernel_initializer=initializer))\nmodel.add(layers.BatchNormalization())\nmodel.add(layers.Conv2D(256, kernel_size=(3, 3), activation='relu', padding='same',kernel_initializer=initializer))\nmodel.add(layers.BatchNormalization())\nmodel.add(layers.MaxPooling2D(pool_size=(2, 2), strides=(2, 2)))\nmodel.add(layers.Dropout(0.25))\n\nmodel.add(layers.Conv2D(512, kernel_size=(3, 3), activation='relu', padding='same',kernel_initializer=initializer))\nmodel.add(layers.BatchNormalization())\nmodel.add(layers.Conv2D(512, kernel_size=(3, 3), activation='relu', padding='same',kernel_initializer=initializer))\nmodel.add(layers.BatchNormalization())\nmodel.add(layers.MaxPooling2D(pool_size=(2, 2), strides=(2, 2)))\nmodel.add(layers.Dropout(0.25))\n\n\n\n\nmodel.add(layers.Flatten())\n\nmodel.add(layers.Dense(1024, activation='relu'))\nmodel.add(layers.Dense(1024, activation='relu'))\nmodel.add(layers.Dense(512, activation='relu'))\nmodel.add(layers.Dense(256, activation='relu'))\nmodel.add(layers.Dense(128, activation='relu'))\nmodel.add(layers.Dropout(0.15))\nmodel.add(layers.Dense(num_classes, activation='softmax'))\n\nmodel.summary()\n","metadata":{"execution":{"iopub.status.busy":"2023-02-09T08:57:04.908495Z","iopub.execute_input":"2023-02-09T08:57:04.909545Z","iopub.status.idle":"2023-02-09T08:57:05.217939Z","shell.execute_reply.started":"2023-02-09T08:57:04.909492Z","shell.execute_reply":"2023-02-09T08:57:05.216994Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"earlystop =tf.keras.callbacks.EarlyStopping(monitor='val_loss', \n                          min_delta=0, \n                          patience=25, \n                          verbose=1, \n                          restore_best_weights=True)\n                        \nreduce_lr = tf.keras.callbacks.ReduceLROnPlateau(monitor='val_loss', \n                              factor=0.8, \n                              patience=5, \n                              verbose=1, \n                              min_delta=0.0001)","metadata":{"execution":{"iopub.status.busy":"2023-02-09T08:57:08.503432Z","iopub.execute_input":"2023-02-09T08:57:08.503860Z","iopub.status.idle":"2023-02-09T08:57:08.510232Z","shell.execute_reply.started":"2023-02-09T08:57:08.503828Z","shell.execute_reply":"2023-02-09T08:57:08.509274Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"callback=[earlystop,reduce_lr]\nmodel.compile(loss='categorical_crossentropy', optimizer=tf.keras.optimizers.Adam( learning_rate=0.0001), metrics=['accuracy'],) \nhistory = model.fit(x=train_input,y=train_label ,batch_size=256, epochs=100 ,verbose=1,validation_split=0.2,callbacks=callback)","metadata":{"execution":{"iopub.status.busy":"2023-02-09T08:57:10.561008Z","iopub.execute_input":"2023-02-09T08:57:10.561713Z","iopub.status.idle":"2023-02-09T09:00:55.197090Z","shell.execute_reply.started":"2023-02-09T08:57:10.561667Z","shell.execute_reply":"2023-02-09T09:00:55.195948Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"result = np.argmax(model.predict(test_input),axis=1)\ndata = pd.DataFrame({'Label':result})\ndata.reset_index(inplace=True)\ndata =data.rename(columns={\"index\": \"ImageId\"})\ndata[\"ImageId\"]=data[\"ImageId\"]+1\ndata.to_csv('result.csv',index=False)","metadata":{"execution":{"iopub.status.busy":"2023-02-09T09:01:10.785664Z","iopub.execute_input":"2023-02-09T09:01:10.786023Z","iopub.status.idle":"2023-02-09T09:01:36.453620Z","shell.execute_reply.started":"2023-02-09T09:01:10.785992Z","shell.execute_reply":"2023-02-09T09:01:36.452573Z"},"trusted":true},"execution_count":null,"outputs":[]}]}