{"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_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\n\nimport os\n\nfrom tensorflow import keras\nfrom tensorflow.keras import Sequential\nfrom tensorflow.keras.layers import Dense, Conv2D, MaxPooling2D, Flatten\nfrom tensorflow.keras.optimizers import Adam, SGD","metadata":{"execution":{"iopub.status.busy":"2021-12-31T20:15:20.416364Z","iopub.execute_input":"2021-12-31T20:15:20.416685Z","iopub.status.idle":"2021-12-31T20:15:26.253603Z","shell.execute_reply.started":"2021-12-31T20:15:20.416603Z","shell.execute_reply":"2021-12-31T20:15:26.252555Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df = pd.read_csv(\"../input/digit-recognizer/train.csv\")\ntest_df = pd.read_csv(\"../input/digit-recognizer/test.csv\")\n\ntest_df","metadata":{"execution":{"iopub.status.busy":"2021-12-31T20:15:44.311697Z","iopub.execute_input":"2021-12-31T20:15:44.312217Z","iopub.status.idle":"2021-12-31T20:15:49.071576Z","shell.execute_reply.started":"2021-12-31T20:15:44.312174Z","shell.execute_reply":"2021-12-31T20:15:49.070670Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_x = train_df.copy()\ndel(train_x[\"label\"])\n\ntrain_y = train_df[\"label\"]\n\ntrain_x = train_x.to_numpy()\ntrain_x = train_x.reshape((train_x.shape[0], 28, 28))\ntrain_x = np.expand_dims(train_x, axis=3)","metadata":{"execution":{"iopub.status.busy":"2021-12-31T20:15:49.073407Z","iopub.execute_input":"2021-12-31T20:15:49.073796Z","iopub.status.idle":"2021-12-31T20:15:49.421857Z","shell.execute_reply.started":"2021-12-31T20:15:49.073754Z","shell.execute_reply":"2021-12-31T20:15:49.421059Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_x = test_df.copy()\n\ntest_x = test_x.to_numpy()\ntest_x = test_x.reshape((test_x.shape[0], 28, 28))\ntest_x = np.expand_dims(test_x, axis=3)","metadata":{"execution":{"iopub.status.busy":"2021-12-31T20:15:49.422908Z","iopub.execute_input":"2021-12-31T20:15:49.423140Z","iopub.status.idle":"2021-12-31T20:15:49.492928Z","shell.execute_reply.started":"2021-12-31T20:15:49.423113Z","shell.execute_reply":"2021-12-31T20:15:49.492145Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_x = train_x / 255\ntest_x = test_x / 255","metadata":{"execution":{"iopub.status.busy":"2021-12-31T20:15:49.494415Z","iopub.execute_input":"2021-12-31T20:15:49.494818Z","iopub.status.idle":"2021-12-31T20:15:49.670572Z","shell.execute_reply.started":"2021-12-31T20:15:49.494785Z","shell.execute_reply":"2021-12-31T20:15:49.669836Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_y = keras.utils.to_categorical(train_y, 10)","metadata":{"execution":{"iopub.status.busy":"2021-12-31T20:15:49.671511Z","iopub.execute_input":"2021-12-31T20:15:49.671711Z","iopub.status.idle":"2021-12-31T20:15:49.675803Z","shell.execute_reply.started":"2021-12-31T20:15:49.671686Z","shell.execute_reply":"2021-12-31T20:15:49.675218Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model = Sequential([\n    Conv2D(32, (3, 3), padding='same', input_shape=(28, 28, 1)),\n    MaxPooling2D((2, 2), strides=2),\n    Conv2D(64, (3, 3), padding='same'),\n    MaxPooling2D((2, 2), strides=2),\n    Conv2D(128, (3, 3), padding='same'),\n    MaxPooling2D((2, 2), strides=2),\n    Flatten(),\n    Dense(128),\n    Dense(10, activation='softmax'),\n])\n\n# model = Sequential([\n#     Flatten(input_shape=(28, 28, 1)),\n#     Dense(units=10, activation='softmax')\n# ])\n\n\nmodel.compile(\n    loss='categorical_crossentropy',\n    optimizer=Adam(0.0001),\n    metrics=['accuracy']\n)\n\nmodel.summary()","metadata":{"execution":{"iopub.status.busy":"2021-12-31T20:16:00.028044Z","iopub.execute_input":"2021-12-31T20:16:00.028732Z","iopub.status.idle":"2021-12-31T20:16:00.200116Z","shell.execute_reply.started":"2021-12-31T20:16:00.028690Z","shell.execute_reply":"2021-12-31T20:16:00.199208Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"hist = model.fit(train_x, train_y, batch_size=32, epochs=10, validation_split=0.2)","metadata":{"execution":{"iopub.status.busy":"2021-12-31T20:16:00.497841Z","iopub.execute_input":"2021-12-31T20:16:00.498395Z","iopub.status.idle":"2021-12-31T20:19:23.784806Z","shell.execute_reply.started":"2021-12-31T20:16:00.498348Z","shell.execute_reply":"2021-12-31T20:19:23.784232Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.plot(hist.history[\"loss\"])\nplt.plot(hist.history[\"val_loss\"])","metadata":{"execution":{"iopub.status.busy":"2021-12-31T20:19:23.785970Z","iopub.execute_input":"2021-12-31T20:19:23.786247Z","iopub.status.idle":"2021-12-31T20:19:23.995603Z","shell.execute_reply.started":"2021-12-31T20:19:23.786220Z","shell.execute_reply":"2021-12-31T20:19:23.994521Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"labels = []\npixels = []\n\nlabels_ = model.predict(test_x)\nfor i in labels_:\n    labels.append(np.argmax(i))\n\n# pixels_dict = {\"label\": labels}\n\n# pixels = test_x.reshape(test_x.shape[0], 784).T * 255\n\n# for i in range(784):\n#     pixels_dict[f\"pixel{i}\"] = pixels[i]","metadata":{"execution":{"iopub.status.busy":"2021-12-31T20:19:23.996957Z","iopub.execute_input":"2021-12-31T20:19:23.997748Z","iopub.status.idle":"2021-12-31T20:19:29.637246Z","shell.execute_reply.started":"2021-12-31T20:19:23.997700Z","shell.execute_reply":"2021-12-31T20:19:29.636248Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"ids = [i+1 for i in range(28000)]","metadata":{"execution":{"iopub.status.busy":"2021-12-31T20:19:29.639433Z","iopub.execute_input":"2021-12-31T20:19:29.639873Z","iopub.status.idle":"2021-12-31T20:19:29.646684Z","shell.execute_reply.started":"2021-12-31T20:19:29.639826Z","shell.execute_reply":"2021-12-31T20:19:29.645482Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df = pd.DataFrame({\"ImageId\": ids, \"Label\": labels})","metadata":{"execution":{"iopub.status.busy":"2021-12-31T20:19:56.009668Z","iopub.execute_input":"2021-12-31T20:19:56.009945Z","iopub.status.idle":"2021-12-31T20:19:56.031366Z","shell.execute_reply.started":"2021-12-31T20:19:56.009916Z","shell.execute_reply":"2021-12-31T20:19:56.030752Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df.to_csv(\"submission.csv\", index=False)","metadata":{"execution":{"iopub.status.busy":"2021-12-31T20:19:57.033142Z","iopub.execute_input":"2021-12-31T20:19:57.033880Z","iopub.status.idle":"2021-12-31T20:19:57.071485Z","shell.execute_reply.started":"2021-12-31T20:19:57.033830Z","shell.execute_reply":"2021-12-31T20:19:57.070556Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df","metadata":{"execution":{"iopub.status.busy":"2021-12-31T20:19:58.299014Z","iopub.execute_input":"2021-12-31T20:19:58.299319Z","iopub.status.idle":"2021-12-31T20:19:58.309758Z","shell.execute_reply.started":"2021-12-31T20:19:58.299287Z","shell.execute_reply":"2021-12-31T20:19:58.308936Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}