{"cells":[{"metadata":{"trusted":false,"collapsed":true,"_uuid":"c6036862ee6ce601cd3a4f7b088dd805bb13f1d8"},"cell_type":"code","source":"import os\nimport sys\nimport time\nimport datetime\nimport numpy as np\nimport pandas as pd\nfrom keras.models import Model\nfrom keras.layers import Input\nfrom keras.optimizers import Adam\nfrom keras.layers import Activation\nfrom keras.layers.pooling import MaxPool2D\nfrom keras.layers.merge import Concatenate\nfrom keras.layers.convolutional import Conv2D\nfrom keras.utils.np_utils import to_categorical\nfrom keras.layers.advanced_activations import LeakyReLU\nfrom keras.layers.core import Dense, Flatten, Dropout, Reshape","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"collapsed":true,"_uuid":"fd1893ba1ac40015d8d57047edfc8c333608c708"},"cell_type":"code","source":"EPOCHS = 20\nNUM_CLASS = 10\nBATCH_SIZE = 32\nTRAIN_VAL_FRAC = 0.7\nIH, IW, IC = 28, 28 , 1\nDATASET_PATH = \"../input\"","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"collapsed":true,"_uuid":"bfcd2b61a5ee143ac265c2bac1ba5b61c5c62198"},"cell_type":"code","source":"model_in = Input([IH * IW * IC])\nmodel_in_reshape = Reshape(target_shape = [IH, IW, IC])(model_in)\n\nconv1 = Conv2D(filters = 8, kernel_size = (7, 7), strides = (2, 2), padding = 'same', \n               activation='relu')(model_in_reshape)\nconv2 = Conv2D(filters = 16, kernel_size = (5, 5), strides = (2, 2), padding = 'same', \n               activation='relu')(conv1)\nconv3 = Conv2D(filters = 32, kernel_size = (3, 3), strides = (2, 2), padding = 'same', \n               activation='relu')(conv2)\nflatten4 = Flatten()(conv3)\nflatten4 = Dropout(rate=0.5)(flatten4)\ndense5 = Dense(units=256, activation='relu')(flatten4)\ndense5 = Dropout(rate=0.5)(dense5)\ndense6 = Dense(units=10, activation='softmax')(dense5)\n\nmodel = Model(model_in, dense6)\nmodel.compile(optimizer='Adam', loss='categorical_crossentropy', metrics=['categorical_accuracy'])","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"collapsed":true,"_uuid":"7c1027d72b56a3d3bd57da216d85d7afc66722b7"},"cell_type":"code","source":"model.summary()","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"collapsed":true,"_uuid":"903ad4411f19da6f51845ead40d100f4c5f8605e"},"cell_type":"code","source":"df_train = pd.read_csv(filepath_or_buffer=os.path.join(DATASET_PATH, \"train.csv\"))\ndf_test = pd.read_csv(filepath_or_buffer=os.path.join(DATASET_PATH, \"test.csv\"))","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"collapsed":true,"_uuid":"cb189cbcee30f31601c896d8913cfa379ff3a3ee"},"cell_type":"code","source":"X_train = df_train.values[:, 1:]\nX_train = X_train / 255.0\nY_train = to_categorical(df_train.values[:, [0]], num_classes=NUM_CLASS)\n\nX_test = df_test.values\nX_test = X_test / 255.0","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"collapsed":true,"_uuid":"fdf67de89314e5d9e6296dc5bd8ef0afa7de1cf4"},"cell_type":"code","source":"idx = np.random.choice(np.arange(X_train.shape[0]), X_train.shape[0], replace = False)\n\nX_train = X_train[idx]\nY_train = Y_train[idx]","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"collapsed":true,"_uuid":"fc3866ca31bd3d508468356ea8f716bcc719ac69"},"cell_type":"code","source":"num_train = int(TRAIN_VAL_FRAC * X_train.shape[0])\nX_val = X_train[num_train:]\nY_val = Y_train[num_train:]\n\nX_train = X_train[:num_train]\nY_train = Y_train[:num_train]","execution_count":null,"outputs":[]},{"metadata":{"scrolled":false,"trusted":false,"collapsed":true,"_uuid":"262607c92e80953bf6da778da3cbade8a232bd38"},"cell_type":"code","source":"model.fit(X_train, Y_train, validation_data=(X_val, Y_val), epochs=EPOCHS, batch_size=BATCH_SIZE, shuffle=True)","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"collapsed":true,"_uuid":"c7f3055f384117b6dd0e503a072aa2369cc7c726"},"cell_type":"code","source":"probs = model.predict(X_test, batch_size = BATCH_SIZE, verbose = 1)\npredictions = np.argmax(probs, axis = 1)\n\nsubmission = pd.DataFrame({\n                \"ImageId\" : np.arange(1, X_test.shape[0] + 1),\n                \"Label\" : predictions\n            })\nsubmission.to_csv(\"kaggle.csv\", index = False)","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":2},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython2","version":"2.7.12"}},"nbformat":4,"nbformat_minor":1}