{"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\nimport tensorflow as tf\nfrom tensorflow.keras.models import Sequential\nfrom tensorflow.keras.layers import Conv2D, MaxPooling2D, Dense, Flatten, Dropout, BatchNormalization\nfrom tensorflow.keras import optimizers","metadata":{"execution":{"iopub.status.busy":"2022-09-02T10:27:52.943597Z","iopub.execute_input":"2022-09-02T10:27:52.944062Z","iopub.status.idle":"2022-09-02T10:28:01.336607Z","shell.execute_reply.started":"2022-09-02T10:27:52.943963Z","shell.execute_reply":"2022-09-02T10:28:01.335016Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_dataset = pd.read_csv('/kaggle/input/digit-recognizer/train.csv')\ntest_dataset = pd.read_csv('/kaggle/input/digit-recognizer/test.csv')\ntrain_dataset.head()","metadata":{"execution":{"iopub.status.busy":"2022-09-02T10:28:01.338843Z","iopub.execute_input":"2022-09-02T10:28:01.339812Z","iopub.status.idle":"2022-09-02T10:28:07.327682Z","shell.execute_reply.started":"2022-09-02T10:28:01.339773Z","shell.execute_reply":"2022-09-02T10:28:07.326218Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_train = np.array(train_dataset['label']) \nX_train = np.array(train_dataset.drop('label', axis=1)) / 255\nprint(\" y_train shape: {}, X_train shape {}\".format(y_train.shape, X_train.shape))","metadata":{"execution":{"iopub.status.busy":"2022-09-02T10:28:07.329455Z","iopub.execute_input":"2022-09-02T10:28:07.329891Z","iopub.status.idle":"2022-09-02T10:28:07.713642Z","shell.execute_reply.started":"2022-09-02T10:28:07.329856Z","shell.execute_reply":"2022-09-02T10:28:07.712211Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X_train = X_train.reshape(42000, 28, 28, 1)\ny_train = tf.one_hot(y_train, 10)","metadata":{"execution":{"iopub.status.busy":"2022-09-02T10:28:07.717316Z","iopub.execute_input":"2022-09-02T10:28:07.717720Z","iopub.status.idle":"2022-09-02T10:28:07.761143Z","shell.execute_reply.started":"2022-09-02T10:28:07.717687Z","shell.execute_reply":"2022-09-02T10:28:07.759261Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.imshow(X_train[11])","metadata":{"execution":{"iopub.status.busy":"2022-09-02T10:28:07.766030Z","iopub.execute_input":"2022-09-02T10:28:07.769785Z","iopub.status.idle":"2022-09-02T10:28:07.994908Z","shell.execute_reply.started":"2022-09-02T10:28:07.769732Z","shell.execute_reply":"2022-09-02T10:28:07.993344Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#tf.keras.backend.clear_session()\nmodel = Sequential()\n\nmodel.add(Conv2D(24, kernel_size=5,padding='same',activation='relu',input_shape=(28,28,1)))\nmodel.add(MaxPooling2D(pool_size=(2,2))) \nmodel.add(BatchNormalization())\n\nmodel.add(Conv2D(48, kernel_size=5,padding='same',activation='relu'))\nmodel.add(MaxPooling2D(pool_size=(2,2))) \nmodel.add(BatchNormalization())\n\nmodel.add(Conv2D(64, kernel_size=5,padding='same',activation='relu'))\nmodel.add(MaxPooling2D(pool_size=(2,2))) \nmodel.add(BatchNormalization())\n\nmodel.add(Flatten())\nmodel.add(Dropout(0.2))\n\nmodel.add(Dense(units=256, activation='relu'))\nmodel.add(Dropout(0.2))\nmodel.add(Dense(units=10, activation='softmax'))","metadata":{"execution":{"iopub.status.busy":"2022-09-02T10:28:07.998057Z","iopub.execute_input":"2022-09-02T10:28:07.998443Z","iopub.status.idle":"2022-09-02T10:28:08.386800Z","shell.execute_reply.started":"2022-09-02T10:28:07.998381Z","shell.execute_reply":"2022-09-02T10:28:08.385379Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"optimizer = optimizers.Adam(learning_rate=0.001,)\nmodel.compile(optimizer=optimizer, loss='categorical_crossentropy', metrics=['accuracy'])\nmodel.summary()","metadata":{"execution":{"iopub.status.busy":"2022-09-02T10:28:08.388788Z","iopub.execute_input":"2022-09-02T10:28:08.389331Z","iopub.status.idle":"2022-09-02T10:28:08.414093Z","shell.execute_reply.started":"2022-09-02T10:28:08.389280Z","shell.execute_reply":"2022-09-02T10:28:08.411815Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.fit(X_train, y_train, epochs=15, batch_size=256)","metadata":{"execution":{"iopub.status.busy":"2022-09-02T10:28:08.415946Z","iopub.execute_input":"2022-09-02T10:28:08.416438Z","iopub.status.idle":"2022-09-02T10:34:39.500092Z","shell.execute_reply.started":"2022-09-02T10:28:08.416367Z","shell.execute_reply":"2022-09-02T10:34:39.497836Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X_test = np.array(test_dataset).reshape(test_dataset.shape[0], 28, 28, 1) / 255\ny_pred = model.predict(X_test)","metadata":{"execution":{"iopub.status.busy":"2022-09-02T10:34:39.503571Z","iopub.execute_input":"2022-09-02T10:34:39.504236Z","iopub.status.idle":"2022-09-02T10:34:47.988520Z","shell.execute_reply.started":"2022-09-02T10:34:39.504178Z","shell.execute_reply":"2022-09-02T10:34:47.987285Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"prediction = tf.math.argmax(y_pred, axis = -1)\ndic = {'ImageId': test_dataset.index + 1, 'Label': prediction}\npred_data = pd.DataFrame(data=dic)\npred_data.to_csv(\"submission.csv\", index=False)","metadata":{"execution":{"iopub.status.busy":"2022-09-02T10:34:47.992006Z","iopub.execute_input":"2022-09-02T10:34:47.992369Z","iopub.status.idle":"2022-09-02T10:34:48.043365Z","shell.execute_reply.started":"2022-09-02T10:34:47.992335Z","shell.execute_reply":"2022-09-02T10:34:48.041957Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}