{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":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)\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 all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/output'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# Any results you write to the current directory are saved as output.","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"from keras.models import Sequential\nfrom keras.layers import Dense, Dropout, Activation, Flatten, Add, BatchNormalization\nfrom keras.layers import Convolution2D, MaxPooling2D\nfrom keras.utils import np_utils","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"train = np.genfromtxt('/kaggle/input/digit-recognizer/train.csv', delimiter=',',skip_header=1)\nX_test = np.genfromtxt('/kaggle/input/digit-recognizer/test.csv', delimiter=',',skip_header=1)\nprint(train.shape, x_test.shape)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"X_train =train[:,1:] \ny_train=train[:,0]\nprint(X_train.shape, y_train.shape)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"X_train = X_train.reshape(X_train.shape[0], 28, 28)\nX_test = X_test.reshape(X_test.shape[0], 28, 28)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print(X_train.shape, y_train.shape, X_test.shape)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print (X_train.shape)\nfrom matplotlib import pyplot as plt\n%matplotlib inline\nplt.imshow(X_train[1])\nprint(y_train[1])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"X_train = X_train.astype('float32')\nX_test = X_test.astype('float32')\nX_train /= 255\nX_test /= 255","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"X_train = X_train.reshape(X_train.shape[0], 28, 28,1)\nX_test = X_test.reshape(X_test.shape[0], 28, 28,1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print(X_train.shape, y_train.shape, X_test.shape)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"y_train[:10]\nY_train = np_utils.to_categorical(y_train, 10)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"Y_train[:10]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"from keras.layers import Activation\nmodel = Sequential()\n \nmodel.add(Convolution2D(8, 3, 3, activation='relu', input_shape=(28,28,1))) #26\nmodel.add(BatchNormalization())\nmodel.add(Dropout(0.2))\n\nmodel.add(Convolution2D(16, 3, 3, activation='relu')) #24\nmodel.add(BatchNormalization())\nmodel.add(Dropout(0.2))\n\nmodel.add(Convolution2D(8, 1, 1, activation='relu')) #24\n\nmodel.add(MaxPooling2D(pool_size=(2, 2)))#12\n\nmodel.add(Convolution2D(8, 3, 3, activation='relu'))#10\nmodel.add(BatchNormalization())\nmodel.add(Dropout(0.1))\n\n\nmodel.add(Convolution2D(8, 3, 3, activation='relu'))#8\nmodel.add(BatchNormalization())\nmodel.add(Dropout(0.1))\n\n\nmodel.add(Convolution2D(16, 3, 3, activation='relu'))#6\nmodel.add(BatchNormalization())\nmodel.add(Dropout(0.1))\n\n\nmodel.add(Convolution2D(10, 6, 6))\nmodel.add(BatchNormalization())\n#model.add(Dropout(0.1))\n\n\nmodel.add(Flatten())\nmodel.add(Activation('softmax'))\n\n\nmodel.summary()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"from keras.optimizers import Adam\nfrom keras.callbacks import LearningRateScheduler\ndef scheduler(epoch, lr):\n  return round(lr * 1/(1 + 0.019 * epoch), 10)\n\nmodel.compile(loss='categorical_crossentropy', optimizer=Adam(lr=0.01), metrics=['accuracy'])\n\nmodel.fit(X_train, Y_train, batch_size=128, epochs=20, verbose=1, callbacks=[LearningRateScheduler(scheduler, verbose=1)])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"y_pred = model.predict(X_test)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"y_pred_val=y_pred.argmax(1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"y_pred_val","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"i=3992\nplt.imshow(X_test[i][:,:,0])\nprint('Pred Label : ',y_pred_val[i])\nX_test[i][:,:,0].shape","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"op_df = pd.DataFrame()\nop_df['ImageId'] = np.arange(1,X_test.shape[0]+1)\nop_df['Label'] = y_pred_val\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"op_df.to_csv (r'submission_labels.csv', index = None, header=True)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"!ls /kaggle/working/","execution_count":null,"outputs":[]}],"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":4,"nbformat_minor":1}