{"cells":[{"metadata":{},"cell_type":"markdown","source":"Import the required libraries","execution_count":null},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"import os\nimport numpy as np\nimport pandas as pd\nimport tensorflow as tf\nimport matplotlib.pyplot as plt","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Display the input files","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"for dirname, _, filenames in os.walk('/kaggle/input/'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Load the training data","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"train_data = np.genfromtxt('/kaggle/input/digit-recognizer/train.csv', delimiter=',')\nprint(train_data.shape)\n\nlabel_data = train_data[1:, 0]\ntrain_data = train_data[1:, 1:]\n\nprint(train_data.shape)\nprint(label_data.shape)\n\ntrain_data = np.reshape(train_data, (42000, 28, 28, 1))\ntrain_display = np.reshape(train_data, (42000, 28, 28))\nprint(train_data.shape)\n\nplt.figure(figsize=(10,10))\nfor i in range(5):\n    plt.subplot(5,5,i+1)\n    plt.xticks([])\n    plt.yticks([])\n    plt.grid(False)\n    plt.imshow(train_display[i], cmap=plt.cm.binary)\n    plt.xlabel(label_data[i])\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Create the model","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"model = tf.keras.models.Sequential([\n    tf.keras.layers.Conv2D(16, 3, padding='same', activation='relu', input_shape=(28, 28, 1)),\n    tf.keras.layers.MaxPooling2D(),\n    tf.keras.layers.Conv2D(32, 3, padding='same', activation='relu'),\n    tf.keras.layers.MaxPooling2D(),\n    tf.keras.layers.Conv2D(64, 3, padding='same', activation='relu'),\n    tf.keras.layers.MaxPooling2D(),\n    tf.keras.layers.Flatten(),\n    tf.keras.layers.Dense(512, activation='relu'),\n    tf.keras.layers.Dense(10)\n])\n\nmodel.summary()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Compile and train the model","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True), metrics=['accuracy'])\n\nbatch_size = 128\n\nhistory = model.fit(train_data, label_data, steps_per_epoch=42000//batch_size, epochs=10)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Create the probability model and predict for test data","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"probability_model = tf.keras.Sequential([model, tf.keras.layers.Softmax()])\n\ntest_data = np.genfromtxt('/kaggle/input/digit-recognizer/test.csv', delimiter=',')\nprint(test_data.shape)\n\ntest_data = test_data[1:]\nprint(test_data.shape)\n\ntest_data = np.reshape(test_data, (28000, 28, 28, 1))\nresult_data = probability_model.predict(test_data)\nprint(result_data.shape)\n\nresult = np.argmax(result_data, axis=1)\nprint(result.shape)\n\nimageid = list(range(1, 28001))\nsubmission = pd.DataFrame({'ImageId': imageid, 'Label': result})\nsubmission.head()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Create the csv file and verify it","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"submission.to_csv('submission.csv', index=False)\nprint('File saved')\n\nfor dirname, _, filenames in os.walk('/kaggle/working/'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))","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":4}