{"cells":[{"metadata":{"id":"dLftm9sLDGKK","colab_type":"code","colab":{},"trusted":true,"collapsed":true},"cell_type":"code","source":"import os\nimport numpy as np\nimport matplotlib.pyplot as plt\nfrom keras.layers import *\nfrom keras.models import Sequential\nimport pandas as pd\nfrom keras.utils import np_utils\nfrom keras.callbacks import EarlyStopping, ReduceLROnPlateau","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Dig_MNIST = pd.read_csv(\"../input/Kannada-MNIST/Dig-MNIST.csv\")\nsample_submission = pd.read_csv(\"../input/Kannada-MNIST/sample_submission.csv\")\n# test = pd.read_csv(\"../input/Kannada-MNIST/test.csv\")\n# train = pd.read_csv(\"../input/Kannada-MNIST/train.csv\")\nsample_submission.head()","execution_count":null,"outputs":[]},{"metadata":{"id":"sOVuXTTtLNso","colab_type":"code","colab":{},"trusted":true},"cell_type":"code","source":"train_df = pd.read_csv(\"../input/Kannada-MNIST/train.csv\")\nval_df = pd.read_csv(\"../input/Kannada-MNIST/Dig-MNIST.csv\")\ntest_df = pd.read_csv(\"../input/Kannada-MNIST/test.csv\")","execution_count":null,"outputs":[]},{"metadata":{"id":"58jm6fCtLzkB","colab_type":"code","outputId":"095f5e91-d807-4d24-eb6e-a04a0ef6f313","colab":{"base_uri":"https://localhost:8080/","height":253},"trusted":true},"cell_type":"code","source":"test_df.head()","execution_count":null,"outputs":[]},{"metadata":{"id":"d55Iku3yMEv5","colab_type":"code","colab":{},"trusted":true},"cell_type":"code","source":"train_labels = train_df['label'].to_numpy()\ntrain_df.drop('label', axis=1, inplace=True)\nval_labels = val_df['label'].to_numpy()\nval_df.drop('label', axis=1, inplace=True)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"id":"JZpHb-zWMWhn","colab_type":"code","colab":{},"trusted":true},"cell_type":"code","source":"train_data = train_df.to_numpy().reshape((-1, 28, 28, 1))\nval_data = val_df.to_numpy().reshape((-1, 28, 28, 1))","execution_count":null,"outputs":[]},{"metadata":{"id":"rvRBgdsqPauF","colab_type":"code","colab":{},"trusted":true},"cell_type":"code","source":"test_id = test_df['id']\ntest_df.drop('id', axis=1, inplace=True)\ntest_data = test_df.to_numpy()","execution_count":null,"outputs":[]},{"metadata":{"id":"fJxuEY2OQGaH","colab_type":"code","colab":{},"trusted":true},"cell_type":"code","source":"test_data = test_data.reshape((-1, 28, 28, 1))","execution_count":null,"outputs":[]},{"metadata":{"id":"7kQndxtfMi-A","colab_type":"code","colab":{},"trusted":true},"cell_type":"code","source":"def plotImage(arr):\n    fig = plt.figure(figsize=(8, 10))\n    c=1\n    for i in np.random.randint(0, arr.shape[0], 5):\n        fig.add_subplot(1, 5, c)\n        plt.imshow(arr[i, :, :, 0].astype(np.uint8), cmap='gray')\n        c+=1\n    plt.show()  ","execution_count":null,"outputs":[]},{"metadata":{"id":"2fvxTFl8P2G1","colab_type":"code","outputId":"c3ec9907-ee98-4ff2-d9d7-baa89bb52214","colab":{"base_uri":"https://localhost:8080/","height":127},"trusted":true},"cell_type":"code","source":"plotImage(train_data)","execution_count":null,"outputs":[]},{"metadata":{"id":"jbWw1yF3P-RG","colab_type":"code","outputId":"d5001d47-dc7d-4a6e-c401-dbd43644a3d2","colab":{"base_uri":"https://localhost:8080/","height":127},"trusted":true},"cell_type":"code","source":"plotImage(test_data)","execution_count":null,"outputs":[]},{"metadata":{"id":"jZwNXwmDQBre","colab_type":"code","colab":{},"trusted":true},"cell_type":"code","source":"def baseline_model():\n    model = Sequential()\n    model.add(Conv2D(64, 3, 2, input_shape=(28, 28, 1)))\n    model.add(BatchNormalization())\n    model.add(Activation('elu'))\n\n    model.add(MaxPool2D())\n    model.add(Conv2D(128, 3, 2))\n    model.add(BatchNormalization())\n    model.add(Activation('elu'))\n\n    model.add(Conv2D(256, 3, 2))\n    model.add(BatchNormalization())\n    model.add(Activation('elu'))\n    model.add(MaxPool2D())\n    model.add(Conv2D(512, 1, 2))\n    model.add(BatchNormalization())\n    model.add(Activation('elu'))\n\n    model.add(Conv2D(1024, 1, 2))\n    model.add(BatchNormalization())\n    model.add(Activation('elu'))\n    model.add(MaxPool2D())\n    model.add(Flatten())\n    model.add(Dense(2048, activation='relu'))\n    model.add(Dropout(0.5))\n    model.add(Dense(1024, activation='relu'))\n    model.add(Dropout(0.5))\n    model.add(Dense(10, activation='softmax'))\n    model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])\n    return model","execution_count":null,"outputs":[]},{"metadata":{"id":"2V8vi8SQTGTK","colab_type":"code","outputId":"d9c37a5c-4ee3-4661-e7af-69e659d2895b","colab":{"base_uri":"https://localhost:8080/","height":1000},"trusted":true},"cell_type":"code","source":"model = baseline_model()\nmodel.summary()","execution_count":null,"outputs":[]},{"metadata":{"id":"6qOLIOGATKr6","colab_type":"code","colab":{},"trusted":true},"cell_type":"code","source":"y_train = np_utils.to_categorical(train_labels, num_classes=10)\ny_val = np_utils.to_categorical(val_labels, num_classes=10)","execution_count":null,"outputs":[]},{"metadata":{"id":"KJHq-k0HT4oq","colab_type":"code","colab":{},"trusted":true},"cell_type":"code","source":"x_train = train_data/255.\nx_val = val_data/255.\nx_test = test_data/255.","execution_count":null,"outputs":[]},{"metadata":{"id":"t-z2NdWYaK4h","colab_type":"code","colab":{},"trusted":true},"cell_type":"code","source":"#estop = EarlyStopping('val_loss', 0.001, 2)\nlrdecay = ReduceLROnPlateau()","execution_count":null,"outputs":[]},{"metadata":{"id":"p-t4v6noTxwW","colab_type":"code","outputId":"97bbd3ce-26f9-4632-f502-e5d81650e0e7","colab":{"base_uri":"https://localhost:8080/","height":1000},"trusted":true},"cell_type":"code","source":"model.fit(x_train, y_train, batch_size=128, epochs=30, validation_data=(x_val, y_val), shuffle=True, callbacks=[lrdecay])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Predict for test images\ntest_predictions = model.predict(x_test)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_cls = np.argmax(test_predictions, axis=1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"sub_df = pd.DataFrame({\"id\":test_id, \"label\":test_cls})","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"sub_df.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"sub_df.to_csv(\"submission.csv\", index=False)","execution_count":null,"outputs":[]},{"metadata":{"id":"2V7VloPpWTj-","colab_type":"code","colab":{},"trusted":false},"cell_type":"code","source":"","execution_count":0,"outputs":[]},{"metadata":{"_cell_guid":"","_uuid":"","trusted":true},"cell_type":"code","source":"","execution_count":0,"outputs":[]}],"metadata":{"colab":{"name":"KannadaMNIST.ipynb","provenance":[],"collapsed_sections":[]},"kernelspec":{"name":"python3","display_name":"Python 3"},"accelerator":"GPU"},"nbformat":4,"nbformat_minor":1}