{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"_kg_hide-input":false,"_kg_hide-output":false},"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nimport keras.layers.core as core\nimport keras.layers.convolutional as conv\nimport keras.models as models\nimport keras.utils.np_utils as kutils\nfrom keras.regularizers import l2\n\n# Get the data\ntrain = pd.read_csv(\"../input/train.csv\").values\ntest  = pd.read_csv(\"../input/test.csv\").values\n\nTrain_X = train[:, 1:].reshape(train.shape[0], 28, 28, 1)\nTrain_X = Train_X.astype(float)\nTrain_X /= 255.0\nTrain_Y = kutils.to_categorical(train[:, 0])\n\nClasses = Train_Y.shape[1]\n\nTest_X = test.reshape(test.shape[0], 28, 28, 1)\nTest_X = Test_X.astype(float)\nTest_X /= 255.0\n\ncnn = models.Sequential()\n\ncnn.add(conv.Convolution2D(16, 5, 5,  activation=\"relu\", input_shape=(28, 28, 1), border_mode='same'))\ncnn.add(conv.Convolution2D(32, 3, 3, activation=\"relu\", border_mode='same'))\ncnn.add(conv.MaxPooling2D(strides=(2,2)))\n\ncnn.add(conv.Convolution2D(64, 3, 3, activation=\"relu\", border_mode='same'))\n#cnn.add(conv.Convolution2D(64, 3, 3, activation=\"relu\", border_mode='same'))\ncnn.add(conv.MaxPooling2D(strides=(2,2)))\n\ncnn.add(core.Flatten())\ncnn.add(core.Dropout(0.2))\ncnn.add(core.Dense(256, activation=\"relu\", W_regularizer=l2(0.01), b_regularizer=l2(0.01)))\ncnn.add(core.Dropout(0.1))\ncnn.add(core.Dense(128, activation=\"relu\", W_regularizer=l2(0.01), b_regularizer=l2(0.01)))\ncnn.add(core.Dense(Classes, activation=\"softmax\"))\n\ncnn.summary()\ncnn.compile(loss=\"categorical_crossentropy\", optimizer=\"adam\", metrics=[\"accuracy\"])\n\ncnn.fit(Train_X, Train_Y, batch_size=30, nb_epoch=12, verbose=1)\n\nprediction = cnn.predict_classes(Test_X)\n\nnp.savetxt('cnn-RecogDigits.csv', np.c_[range(1,len(prediction)+1),prediction], delimiter=',', header = 'ImageId,Label', comments = '', fmt='%d')","execution_count":null,"outputs":[]},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","collapsed":true,"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":false},"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.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}