{"cells":[{"metadata":{},"cell_type":"markdown","source":"# Using CNN in Kannada Digits Resolution"},{"metadata":{"trusted":true},"cell_type":"code","source":"from tensorflow.python.client import device_lib\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nfrom sklearn.model_selection import train_test_split # sklearn, train_test_split\nimport matplotlib.pyplot as plt # matplotlib, plt\nfrom keras.utils.np_utils import to_categorical # categorical - one-hot-encoding\n\n# Input data files are available in the \"../input/\" directory.\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n        \n# CNN libraries\nfrom sklearn.metrics import confusion_matrix\nimport itertools\nfrom keras.models import Sequential\nfrom keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPool2D\nfrom keras.optimizers import RMSprop,Adam\nfrom keras.callbacks import ReduceLROnPlateau\nfrom keras.preprocessing.image import ImageDataGenerator\n\n# Any results you write to the current directory are saved as output.","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"print(os.listdir(\"../input\"))\ndirectory_train = \"../input/Kannada-MNIST/train.csv\"\ndirectory_test = \"../input/Kannada-MNIST/test.csv\"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_data = pd.read_csv(directory_test)\ntest_data.head(10)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train_data = pd.read_csv(directory_train)\ntrain_data.head(10)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print('Test Shape:',test_data.shape)\nprint('Train Shape:',train_data.shape)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"y_train = train_data[\"label\"]\nx_train = train_data.drop(['label'],axis=1)\ny_train = to_categorical(y_train,num_classes=10)\n\nx_test = test_data.drop(['id'], axis=1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print(y_train.shape[0])\nprint(x_train.shape[0])\nprint(test_data.shape[0])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"\nx_train /= 255.0\nx_test /= 255.0\nx_train = x_train.values.reshape(x_train.shape[0],28, 28,1)\nx_test = x_test.values.reshape(x_test.shape[0],28, 28,1)\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def separating_data():\n    return train_test_split(x_train, \n                            y_train, \n                            test_size = 0.05,\n                            random_state = 42\n                           )\n\nx_train, x_validation, y_train, y_validation = train_test_split(x_train, \n                                                                y_train, \n                                                                test_size = 0.05,\n                                                                random_state = 42)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"max_epochs = 2\nmodel = Sequential()\n\nactivations = ['relu', 'softmax'] \n\nmodel.add(Conv2D(filters = 32, \n                 kernel_size = (5,5),\n                 padding = 'Same', \n                 activation = activations[0], \n                 input_shape = (28,28,1)))\nmodel.add(Conv2D(filters = 32, \n                 kernel_size = (5,5),\n                 padding = 'Same', \n                 activation = activations[0]))\nmodel.add(MaxPool2D(pool_size=(2,2)))\nmodel.add(Dropout(0.25))\n\n\nmodel.add(Conv2D(filters = 64, \n                 kernel_size = (3,3),\n                 padding = 'Same', \n                 activation = activations[0]))\nmodel.add(Conv2D(filters = 64, \n                 kernel_size = (3,3),\n                 padding = 'Same', \n                 activation = activations[0]))\n\nmodel.add(MaxPool2D(pool_size=(2,2), strides=(2,2)))\nmodel.add(Dropout(0.25))\n\n\nmodel.add(Flatten())\nmodel.add(Dense(256, activation = activations[0]))\nmodel.add(Dropout(0.5))\nmodel.add(Dense(10, activation = activations[1]))\n\nmodel.compile(loss='categorical_crossentropy', \n              optimizer='adam', \n              metrics=[\"accuracy\"])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model.compile(optimizer=\"adam\", loss=\"categorical_crossentropy\", metrics=[\"accuracy\"])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"generator = ImageDataGenerator()\nbatches = generator.flow(x_train, \n                         y_train, \n                         batch_size=32)\nbatches_value = generator.flow(x_validation, \n                               y_validation, \n                               batch_size=32)\n\nhistory = model.fit_generator(generator=batches, \n                              steps_per_epoch=batches.n, \n                              epochs=max_epochs, \n                              validation_data=batches_value, \n                              validation_steps=batches_value.n)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"my_predictions = model.predict_classes(x_test)\nsubmission = pd.read_csv('../input/Kannada-MNIST/sample_submission.csv')\nsubmission['label'] = my_predictions\nsubmission.to_csv(\"submission.csv\",index=False)","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}