{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"collapsed":true},"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 in \n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nimport tensorflow as tf\nfrom keras.utils.np_utils import to_categorical # convert to one-hot-encoding\nfrom keras.models import Model\nfrom keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPool2D,ZeroPadding2D,BatchNormalization,Activation,Input\nfrom keras.optimizers import RMSprop\nfrom keras.preprocessing.image import ImageDataGenerator\nfrom keras.callbacks import ReduceLROnPlateau\nfrom keras.callbacks import ModelCheckpoint\n\n# Input data files are available in the \"../input/\" directory.\n# For example, running this (by clicking run or pressing Shift+Enter) will list the files in the input directory\n\nimport os\nprint(os.listdir(\"../input\"))\n\n# Any results you write to the current directory are saved as output.","execution_count":null,"outputs":[]},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":true,"collapsed":true},"cell_type":"code","source":"train = pd.read_csv('../input/train.csv')\ntest = pd.read_csv('../input/test.csv')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"d355afe79551a63a8f1961dcc4a476e85b0d9430","collapsed":true},"cell_type":"code","source":"Y_train = train['label']\nX_train = train.drop('label',axis = 1) ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"212fc58f3bcd38d1f996d9aa2b93f7a19b3bd3f7","collapsed":true},"cell_type":"code","source":"X_train.isnull().any().describe()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"a795909ff458cb766d34fc0ce561c01e1c0935d9","collapsed":true},"cell_type":"code","source":"test.isnull().any().describe()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"collapsed":true,"_uuid":"3cf1a35d6d3a25c2ca46e4103771f99a39e04073"},"cell_type":"code","source":"X_train = X_train/255\ntest = test/255","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"9f878a1fa8a17aa37c38972610358418cfa3ac66","collapsed":true},"cell_type":"code","source":"X_train = X_train.values.reshape(-1,28,28,1)\ntest = test.values.reshape(-1,28,28,1)\nY_train  = to_categorical(Y_train,num_classes = 10)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"collapsed":true,"_uuid":"514b6d3d6c4be0aafc7827a073b310bf3a0ca5cc"},"cell_type":"code","source":"def model(input_shape):\n    X_input = Input(input_shape)\n    X = ZeroPadding2D((3,3))(X_input)\n    # conv>batchnorm>relu\n    X = Conv2D(32,(7,7),strides = (1,1),name = 'conv0')(X)\n    X = BatchNormalization(axis = 3,name= 'bn0')(X)\n    X = Activation('relu')(X)\n    X = MaxPool2D((2,2),name = 'maxpool0')(X)\n    X = Conv2D(32,(7,7),strides = (1,1),name = 'conv1')(X)\n    X = BatchNormalization(axis = 3,name= 'bn1')(X)\n    X = Activation('relu')(X)\n    X = MaxPool2D((2,2),name = 'maxpool1')(X)\n    X = Flatten()(X)\n    X = Dense(80,activation= 'relu',name = 'fc0')(X)\n    X = Dense(40,activation= 'relu',name = 'fc1')(X)\n    X = Dense(10,activation= 'sigmoid',name = 'fc2')(X)\n    model = Model(inputs = X_input,outputs = X,name = 'First')\n    return model","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"05d18a8b89b6550073a715046ccc5a22a4e5ac89","collapsed":true},"cell_type":"code","source":"First_attempt = model((28,28,1))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"5e9769370b24521a56f079b7a96bc30c24f1b370","collapsed":true},"cell_type":"code","source":"First_attempt.compile(optimizer = 'RMSprop',loss = 'categorical_crossentropy',metrics = ['accuracy'])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"9a7faa5e63c58b1926f6cc3f8a67de7cdb25dd11","collapsed":true},"cell_type":"code","source":"filepath = \"weights.best_csv\"\ncheckpoint = ModelCheckpoint(filepath,monitor = \"val_acc\",save_best_only = True, mode='max')\ncallbacks_list = [checkpoint]\nFirst_attempt.fit(x = X_train,y = Y_train,validation_split = 0.33,epochs = 5,batch_size = 112,callbacks = callbacks_list,verbose = 0)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"collapsed":true,"_uuid":"aac2750bb20a489054fe783a8c2066b2361a4478"},"cell_type":"code","source":"result = First_attempt.predict(test)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"0f11041fb4ba64823b708a2e5311069aac894a22","collapsed":true},"cell_type":"code","source":"result = np.argmax(result,axis = 1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"collapsed":true,"_uuid":"9034ea43b9d92c6c9f58c4838c9d74a0ed42bf93"},"cell_type":"code","source":"result = pd.Series(result,name = 'Label')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"collapsed":true,"_uuid":"b627fc099b02e9c5afb57320159db5481191797d"},"cell_type":"code","source":"submission = pd.concat([pd.Series(range(1,28001),name = 'ImageId'),result],axis = 1)\nsubmission.to_csv(\"cnn_result\")","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.6","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}