{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"import numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nimport os\nfrom skimage import data,io,filters\nfrom sklearn import preprocessing\n\nfrom keras import Sequential\nfrom keras.layers.core import Dense,Flatten,Dropout\nfrom keras.layers.convolutional import Conv2D, MaxPooling2D\nfrom keras.optimizers import SGD\nimport cv2","execution_count":null,"outputs":[]},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":true},"cell_type":"code","source":"df = pd.read_csv(\"../input/train.csv\")\nX = (df.iloc[:,1:].values/255).reshape(-1,28,28)\nX = np.expand_dims(X, axis=3)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"14079d6b2d8d5f44e6130c3db61ff95d549061c0","collapsed":true},"cell_type":"code","source":"y = df['label'].values\nenc = preprocessing.OneHotEncoder()\nenc.fit(y.reshape(-1,1))\ny = enc.transform(y.reshape(-1,1)).toarray()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"01bc1fc2239c87091a68b622e226e647c25bd88e"},"cell_type":"code","source":"def dieCNN():\n    model = Sequential()\n    model.add(Conv2D(32,(5,5), activation='relu', input_shape=(28,28,1)))\n    model.add(Conv2D(32,(3,3), activation='relu', padding='same'))\n    model.add(MaxPooling2D(pool_size=(2,2)))\n    \n    model.add(Conv2D(64,(3,3), strides=(3,3), activation='relu'))\n    \n    model.add(Flatten())\n    model.add(Dense(1024, activation=\"relu\"))\n    model.add(Dropout(0.3))\n    model.add(Dense(256, activation=\"relu\"))\n    \n    model.add(Dense(10, activation='softmax'))\n    \n    return model","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"e7814eeea240377d3b0ec6c6af774b28a05b5fae","collapsed":true},"cell_type":"code","source":"model = dieCNN()\nsgd = SGD(lr=0.001, decay=1e-6, momentum=0.9, nesterov=True)\nmodel.compile(optimizer=sgd, loss='categorical_crossentropy',metrics=['accuracy'])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"a39bb4e67a51e759398583493fa3c78065334fe6"},"cell_type":"code","source":"model.fit(X,y, epochs=150, verbose=1, batch_size=32)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"collapsed":true,"_uuid":"f7d38d935a6c9376897a8e7dcb187b2497154a0a"},"cell_type":"code","source":"model.save_weights(\"model.h5\")","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"ebcaf3a4d63455d137b0e8ac9b901b74aa6e31ec","collapsed":true},"cell_type":"code","source":"X_test = pd.read_csv(\"../input/test.csv\").values\npred = pd.read_csv(\"../input/sample_submission.csv\").values","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"98471f14a11d1795b28f3922451b827f5a6e698d","collapsed":true},"cell_type":"code","source":"for i,x in enumerate(X_test):\n    tmp = (x/255).reshape(-1,28,28)\n    tmp = np.expand_dims(tmp, axis=3)\n    pred[i,1] = np.argmax(model.predict(tmp))\n\noutput = pd.DataFrame(pred)\noutput.to_csv(\"output.csv\",header=['ImageId','Label'],index=False)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"collapsed":true,"_uuid":"4e860bd1261b1984dcb49d0ba477cf57e2f82361"},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.4","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}