{"cells":[{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"import pandas as pd\n\nfrom keras.utils import to_categorical","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train_fname = '/kaggle/input/digit-recognizer/train.csv'\n\ntrain_db = pd.read_csv(train_fname)\n\ntrain_label = train_db['label'].to_numpy()\ntrain_label = to_categorical(train_label, num_classes=10)\n\ntrain_input = train_db.drop('label', axis=1).to_numpy()\ntrain_input = train_input.reshape((train_input.shape[0], 28,28,1))\ntrain_input = train_input.astype('float32')/ 255","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"from keras.regularizers import l2\nfrom keras.models import Sequential\nfrom keras.layers import Dense, Flatten, Conv2D, MaxPooling2D, Dropout","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model = Sequential()\n\nmodel.add(Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))\nmodel.add(Conv2D(32, (3, 3), activation='relu'))\nmodel.add(Conv2D(32, (3, 3), activation='relu'))\nmodel.add(MaxPooling2D((2,2)))\n\nmodel.add(Conv2D(64, (3, 3), activation='relu'))\nmodel.add(Conv2D(64, (3, 3), activation='relu'))\nmodel.add(Conv2D(64, (3, 3), activation='relu'))\nmodel.add(MaxPooling2D((2,2)))\n\nmodel.add(Flatten())\n\nmodel.add(Dropout(0.5))\nmodel.add(Dense(256, activation='relu', kernel_regularizer=l2(1e-3)))\nmodel.add(Dense( 10, activation='softmax'))\n\nmodel.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['acc'])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model.summary()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"perf = model.fit(train_input,\n                 train_label,\n                 epochs=30,\n                 batch_size=128,\n                 validation_split=0.2)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"import matplotlib.pyplot as plt\n\n\nplt.plot(perf.history['acc'], label='training accuracy')\nplt.plot(perf.history['val_acc'], label='validation accuracy')\nplt.title('training and validation accuracy')\nplt.legend()\n\nplt.figure()\n\nplt.plot(perf.history['loss'], label='training loss')\nplt.plot(perf.history['val_loss'], label='validation loss')\nplt.title('training and validation loss')\nplt.legend()\n\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_fname = '/kaggle/input/digit-recognizer/test.csv'\n\ntest_db = pd.read_csv(test_fname)\n\ntest_input = test_db.to_numpy()\ntest_input = test_input.reshape((test_input.shape[0], 28,28,1))\ntest_input = test_input.astype('float32')/ 255","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"predictions = model.predict_classes(test_input)\nimageid = list(range(1,len(predictions)+1))\n\nsubmission = pd.DataFrame({\"ImageId\": imageid, \"Label\": predictions})\nsubmission.to_csv('submission.csv', index=False, header=True)","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}