{"cells":[{"metadata":{"_uuid":"cd1f5aee-1110-467d-8f7a-a5292d7ac44c","_cell_guid":"7312ee2d-3510-4e55-8fb9-0a662fc9011f","trusted":true},"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nimport os\nimport tensorflow as tf","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"b54b7966-1417-4423-9ab6-6b0afb47f122","_cell_guid":"0503a120-aa15-4f0e-a6bb-9e6c68561c3b","trusted":true},"cell_type":"code","source":"from sklearn.model_selection import train_test_split","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"c4bb5265-f86f-486d-ab8b-fca3874866ed","_cell_guid":"2e1c3f48-5208-45f5-82b5-670b4b8596b3","trusted":true},"cell_type":"code","source":"def get_data(file):\n    data = pd.read_csv(file)\n    data = data.to_numpy()\n    labels = []\n    images = []   \n    for row_ind in range(data.shape[0]):\n        labels.append(data[row_ind, 0])\n        images.append(data[row_ind, 1:])\n    images = np.reshape(images, newshape=(-1, 28, 28,1))\n    labels = np.array(labels)\n    return images, labels\n\ntraining_images, training_labels = get_data('../input/Kannada-MNIST/train.csv')\nval_images, val_labels = get_data('../input/Kannada-MNIST/Dig-MNIST.csv')\ntest_images, test_id = get_data('../input/Kannada-MNIST/test.csv')\n\nprint(training_images.shape)\nprint(training_labels.shape)\nprint(test_images.shape)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"sample_sub=pd.read_csv('../input/Kannada-MNIST/sample_submission.csv')","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"47991321-f307-4bfd-a3e3-958b845041c3","_cell_guid":"96a368fa-b8e1-48b3-b102-18f354706e38","trusted":true},"cell_type":"code","source":"from keras.utils.np_utils import to_categorical","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"b82418c6-be4d-479b-9500-a4e757b20f8f","_cell_guid":"5d0ec254-8e1b-4c64-bfb8-c2cad9d778ee","trusted":true},"cell_type":"code","source":"training_labels = to_categorical(training_labels, num_classes = 10)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"142d2820-d4c4-40df-83bd-8a3a55483241","_cell_guid":"a72d4a5c-e628-4808-8efe-148a86ab35f5","trusted":true},"cell_type":"code","source":"from sklearn.model_selection import train_test_split","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"0e6b9441-6b99-4522-a2b8-86c4c5201fea","_cell_guid":"4b232c13-279e-41d5-b452-5b42a20518a2","trusted":true},"cell_type":"code","source":"X_train, X_val, Y_train, Y_val = train_test_split(training_images,training_labels, test_size = 0.2, random_state=10)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"865b1b5a-67ca-428e-bef0-373713cbd8af","_cell_guid":"85f5199f-631d-4672-b4a2-51e0e0aa5a48","trusted":true},"cell_type":"code","source":"from tensorflow import keras\nfrom keras.models import Sequential\nfrom keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPool2D\nfrom keras.optimizers import RMSprop","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"1ce7ec13-731a-41a6-8876-34dc90e530c0","_cell_guid":"f64e7aa3-725a-4d8c-8bf2-b6ccae4ebef7","trusted":true},"cell_type":"code","source":"model = tf.keras.models.Sequential([\n    tf.keras.layers.Conv2D(64, (3, 3), activation='relu', input_shape=(28, 28, 1),padding='same'),\n    tf.keras.layers.Conv2D(64, (3, 3), activation='relu', input_shape=(28, 28, 1),padding='same'),\n    tf.keras.layers.Conv2D(128, (3, 3), activation='relu', input_shape=(28, 28, 1),padding='same'),\n    tf.keras.layers.MaxPooling2D(2, 2),\n    tf.keras.layers.Conv2D(128, (3, 3), activation='relu',padding='same'),\n    tf.keras.layers.Conv2D(192, (3, 3), activation='relu',padding='same'),\n    tf.keras.layers.MaxPooling2D(2, 2),\n    tf.keras.layers.Conv2D(192, (3, 3), activation='relu',padding='same'),\n    tf.keras.layers.MaxPooling2D(2, 2),\n    tf.keras.layers.Dropout(.5),\n    tf.keras.layers.Flatten(),\n    tf.keras.layers.Dense(512, activation='relu'),\n    tf.keras.layers.Dense(10, activation='softmax')\n])","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"799e8b78-4b4c-447a-a306-af68c9f19b08","_cell_guid":"22f1d2cb-3934-4f35-9c83-11e72651c75c","trusted":true},"cell_type":"code","source":"model.compile(optimizer= keras.optimizers.RMSprop(learning_rate=0.0005, rho=0.9) , loss= \"categorical_crossentropy\", metrics=['accuracy'])","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"75c4509e-f8f9-4903-96e4-ba779e3642fa","_cell_guid":"bb80e09c-44d4-4271-94bb-1c1ed7683db6","trusted":true},"cell_type":"code","source":"model.fit(X_train, Y_train, batch_size = 120, epochs =40, validation_data = (X_val, Y_val), verbose = 2)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"e465a5ef-ed4a-4fae-89dc-1c82713aa774","_cell_guid":"dd3894d9-1861-4c6c-9d24-343fd5f89cd6","trusted":true},"cell_type":"code","source":"results = model.predict(test_images)\nresults = np.argmax(results,axis = 1)\n\nsample_sub['label']=results\nsample_sub.to_csv('submission.csv',index=False)\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"language_info":{"name":"python","version":"3.6.6","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"}},"nbformat":4,"nbformat_minor":1}