{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load in \n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\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# Any results you write to the current directory are saved as output.","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Data Loading"},{"metadata":{"trusted":true},"cell_type":"code","source":"train = pd.read_csv(\"../input/Kannada-MNIST/train.csv\")\ntest = pd.read_csv(\"../input/Kannada-MNIST/test.csv\")","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Preparing dataset"},{"metadata":{"trusted":true},"cell_type":"code","source":"Y = train[\"label\"]\n\n# Drop 'label' column\nX = train.drop(labels = [\"label\"],axis = 1) ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Normalize the data\nX = X / 255.0\ntest = test / 255.0","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Reshape image in 3 dimensions (height = 28px, width = 28px , canal = 1)\nX = X.values.reshape(-1,28,28,1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"X.shape","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"#Dropping id column\nx_test=test.drop('id', axis=1).iloc[:,:].values\nx_test = x_test.reshape(x_test.shape[0], 28, 28,1)\nx_test.shape","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Let's plot and see the dataset"},{"metadata":{"trusted":true},"cell_type":"code","source":"import matplotlib.pyplot as plt\n%matplotlib inline","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.figure(num='digit',figsize=(9,9))\nfor i in range(9):\n    plt.subplot(3,3,i+1) \n    plt.title(Y[i])\n    plt.imshow(np.squeeze(X[i,:,:,]))\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Converting dependent variables into categorical data\nfrom keras.utils.np_utils import to_categorical\nY = to_categorical(Y, num_classes = 10)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Splitting dataset into taining and validation set\nfrom sklearn.model_selection import train_test_split\nX_train, X_val, Y_train, Y_val = train_test_split(X, Y, test_size = 0.1, random_state=42)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# CRNN : CNN + RNN\nCRNN is a network that combines CNN and RNN to process images containing sequence information such as letters.\n\nIt is mainly used for OCR technology and has the following advantages.\n\n    End-to-end learning is possible.\n    Sequence data of arbitrary length can be processed because of LSTM which is free in size of input and output sequence.\n    There is no need for a detector or cropping technique to find each character one by one.\n\nYou can use CRNN for OCR, license plate recognition, text recognition, and so on. It depends on what data you are training.\n\n## Model\n![image.png](attachment:image.png)\n\n## Layers\n\nThere are mainly three layers in CRNN architecture\n\n### Convolutional Layer\n\nExtracts features through CNN Layer (VGGNet, ResNet ...).\n\n### Recurrent Layer\n\nSplits the features into a certain size and inserts them into the input of the Bidirectional LSTM or GRU.\n\n### Transcription Layer\n\nConversion of Feature-specific predictions to Label using CTC (Connectionist Temporal Classification).\n","attachments":{"image.png":{"image/png":"iVBORw0KGgoAAAANSUhEUgAABKwAAAFACAYAAACRGeQXAAAABHNCSVQICAgIfAhkiAAAIABJREFUeF7svQm4VNWV970QuCCgckEFVAQRYkSDRkATRduooBnstGhwCJ9fm45oOp1O+7afQIZ+7Y6K8NrpTvsmIuZNun1MjBgwicYWaIf4Kt1hUEOMQyOIksggk0wyynd++7Juzj23qm7VvTWcqvpvnvNUnX32Xnvt3y7qVv1r7XU6HYiKqYiACIiACIiACIiACIiACIiACIiACIiACIhASggckhI/5IYIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIBAISrPRCEAEREAEREAEREAEREAEREAEREAEREAERSBUBCVapWg45IwIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIMFKrwEREAEREAEREAEREAEREAEREAEREAEREIFUEZBglarlkDMiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAISrPQaEAEREAEREAEREAEREAEREAEREAEREAERSBUBCVapWg45IwIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIMFKrwEREAEREAEREAEREAEREAEREAEREAEREIFUEZBglarlkDMiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAISrPQaEAEREAEREAEREAEREAEREAEREAEREAERSBUBCVapWg45IwIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIMFKrwEREAEREAEREAEREAEREAEREAEREAEREIFUEZBglarlkDMiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAISrPQaEAEREAEREAEREAEREAEREAEREAEREAERSBUBCVapWg45IwIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIMFKrwEREAEREAEREAEREAEREAEREAEREAEREIFUEZBglarlkDMiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAISrPQaEAEREAEREAEREAEREAEREAEREAEREAERSBUBCVapWg45IwIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIMGqRl8DV155pflRo1PMe1qzZ89uZgETFREQAREQAREQAREQARGAQKdOnVoc+VLh82Wyb/ycz5y0ofA8V9ts1/xza6brbjvpbya/9Pk3SUnn2QjEv0Nme41l61vKen2fKyXd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tsvFItlW57VDQIJV7axl2WeS7Q0tW329vEFle4NmgbIx8MWDXfIN2/8YtbXAmfom+2ArKagl2+hcBERABERABERABOqFgN/hr63H+Ocz/8wVvztgsi6byOBcaR8fM/n5L84/33Yd7VMva15t8/TXir/G4ufZ5pLs42JP8nWXqX+yjb/+MrWlLtNY+bye4+P496f4az3TeJl8yzVWJhuqqy4CnaIXRWaZs7rmIW/LQIAonXiEUPylU2ikFO3b+kNehimVfIhCueRyKBf/TP3ia1UPrDMxUJ0IiIAIiIAIiIAIiIAIiEBxCBT6faQ4o8pKPRNQDqt6Xv0izr1QQaTQ9kV0taymCp1nNoEr+cchH7v5tCkrDA0mAiIgAiIgAiIgAiIgAiIgAiIgAnkSkGCVJyg1E4FyECAnF6IVApULTvFIKXygXqGv5VgNjSECIiACIiACIiACIiACIiACIlApAhKsKkVe44pAGwSSQhXNJVa1AU2XRUAEREAEREAEREAEREAESkKAH82VD7ckaGU0CwHlsMoCRtWZCSgvUmYuxax1xvE7IPKHQVv8iklZtkRABERABERABERABERABERABNJMQIJVmldHvomACIiACIiACIiACIiACIiACIiACIhAHRI4pA7nrCmLgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAikmIAEqxQvjlwTAREQAREQAREQAREQAREQAREQAREQgXokIMGqHlddcxYBERABERABERABERABERABERABERCBFBOQYJXixZFrIiACIiACIiACIiACIiACIiACIiACIlCPBCRY1eOqa84iIAIiIAIiIAIiIAIiIAIiIAIiIAIikGICEqxSvDhyTQREQAREQAREQAREQAREQAREQAREQATqkYAEq3pcdc1ZBERABERABERABERABERABERABERABFJMQIJVihdHromACIiACIiACIiACIiACIiACIiACIhAPRKQYFWPq645i4AIiIAIiIAIiIAIiIAIiIAIiIAIiECKCUiwSvHiyDUREAEREAEREAEREAEREAEREAEREAERqEcCEqzqcdU1ZxEQAREQAREQAREQAREQAREQAREQARFIMQEJVileHLkmAiIgAiIgAiIgAiIgAiIgAiIgAiIgAvVIQIJVPa665iwCIiACIiACIiACIiACIiACIiACIiACKSYgwSrFiyPXREAEREAEREAEREAEREAEREAEREAERKAeCUiwqsdV15xFQAREQAREQAREQAREQAREQAREQAREIMUEJFileHHkmgiIgAiIgAiIgAiIgAiIgAiIgAiIgAjUIwEJVvW46pqzCIiACIiACIiACIiACIiACIiACIiACKSYgASrFC+OXBMBERABERABERABERABERABERABERCBeiQgwaoeV11zFgEREAEREAEREAEREAEREAEREIEcBDZv2pzjau5LHemb27Ku1hOBLvU0Wc1VBERABERABERABERABESgPghMnjzZXnrppfqYbAdnOX78eLvhhhs6aKU03e+9916bO3duUYyffvrpNn369KLYqnUj/P+5//77wzF27NiCp3vn9Dvt5z//uf3DP/yDTZgwoeD+6iACEJBgpdeBCIiACIiACIiACIiACIhAzRFArJo/f37NzasUE0LISWt5Q+tY1qVZsWKFXXPNNbZo0SI76aST2j12Y2Ojvffee3bllVfak08+aXdOu9Ma+zS225461icBbQmsz3XXrEVABERABERABERABESgLggcOHDAdGRmkHZBb+eSJfbOzO+H12lH17AuXuwdnOSSiPeYMWOCWHXLLbfYa6+91q7oKtyYMmWKPffcc3bmmWfarFmz7JJPXmLaJtjBBarD7hKs6nDRNWUREAEREAEREAEREAEREAERSDuB9Q/PSbuLNeMfYtKll15qa9eutZkzZxZl6+SJJ55ov/71r23SpElBBJsydUrN8NJEykNAWwLLw1mjiIAIiIAIiIAIiIAIiIAIiIAIFEBg7SOPWdejjzJbv6aAXmraHgJXXX1Vs1hV7Hxm5CGjEGnVu3fvoohh7Zmj+lQfAUVYVd+ayWMREAEREAEREAEREAEREAERqGkCW+cvsJ3L11uPYUNqep5pmBwJ1tkeyjbAYotVPj9yWLE9cMaMGcbWQxURyIeABKt8KKmNCIiACIiACIiACIiACIiACIhA2QgcPm6sjXljoR02anTZxqzHgUiyjohEgvUpk0u3ZY+E69/97ncD4okTJ9Yjas25HQS0JbAd0NRFBERABERABERABERABESgegkQUcJdBItRxo8fX7KolGL4V802GqIcSNatoZqnkHrfEasod999d8nv4jdq1KgQxcWYbBMsVTRX6qHLwbwJKMIqb1RqKAIiIAIiIAIiIAIiIAIiUAsEEKuWLVvWoals2bIlbKNauXJlh+yoswhUigCJ1n/xi1+ErXpjx44tixskYKfMnTu3LONpkOomoAir6l4/eS8CIiACIiACIiACIiACItAOAiNGjLB58+a1o2dTlwULFti4cePa3V8dsxNYN3NWtBXwDOsRReSolI7AndPvDInWb7311tINkrDMnQMRrUjAzv+hcgllZZugBioqAQlWRcUpYyIgAiIgAiIgAiIgAiIgAiJQPgLkIOLLf1vloosuqgpxYH8U9fO7L33TBnzuAjt59oNtTUvXO0DgmWeeCbmryr017/rrrw+v2f/4j/+oitdkBxCrawcJSLDqIEB1FwEREAEREAEREAEREAEREIFKEWBLouchasuHaohmWXtvk/jW54JPtDUdXe8AAbYDLlq0KEQ7lbuQy6p///6GYKYiArkISLDKRUfXREAEREAEREAEREAEREAERKAKCCA8XHHFFRk9raati2sf+YV1PaqHHTnhcxnnosriEFjwHwuCoTPOOKM4Bgu0ct5559ns2bMN4Yw7CKqIQCYCEqwyUVGdCIiACIiACIiACIiACIiACFQRgd69e9fE9qoeg4+3I04fYZ0lYpT01bd06dJgn62ilSgf/ehHg2CFcDZhwoRKuKAxq4CA7hJYBYskF0VABERABERABERABERABESgHgiQt2rorHvqYaoVnSN3yiR/FUnQK1FcKHPhrBI+aMz0E5Bglf41kociIAIiIAIiIAIiIAIiIAIiIAIiUDQCb731lg0aNKho9go1RB4rypYtWwrtqvZ1RECCVR0ttqYqAiIgAiIgAiIgAiIgAiIgAiIgAq+//rqxjbSShcTrq1atqqQLGjvlBCRYpXyB5J4IiIAIiIAIiIAIiIAIiIAI1DqBVZOn2huTvlTr00zF/Eh0Thk8eHBF/RkxYkRFx9fg6SegpOvpXyN5KAIiIAIiIAIiIAIiIAIiIAJ255132pQpU2qSxOof/sS69u5lQxOzW716dagZM2ZMh+e9Zs2aDtuoBQNLli5JzTTmz5+fGl/kSPoISLBK35rIIxEQAREQAREQAREQAREQARFoRWDq1Kn2z//8zzZt2jS77rrrWl2v1oqND822ve/utCE33dhqCm+//Xaoe/7551tdK7Ri48aNhXZRexEQgQoS0JbACsLX0CIgAiIgAiIgAiIgAiIgAiJQCIF169bZX/7lX9rIkSNtyZL0RMoUModk2/VzHglVR024InnJzjnnnFB34MCBDh3YOPXUU1vZV4UIiEB6CSjCKr1rI89EQAREQAREQAREQAREQARSTmDGjBnGUc6ya9cue+GFF+zcc8+1s846q5xDl2SsY7/4BTv0hMHWcOKJJbEvo8UnsGLFClu5cqUNGTLETtS6FR+wLAYCEqz0QhABERABERABERABERABERCBdhIYNmyYnXDCCe3sXVi3ZL6frl272vDhw+1Xv/pVYYZS1vrwcWONQ6U6CEyePNnuv/9+I2n6smXL7Nprr7Xp06dXh/PysqoISLCqquWSsyIgAmkgsGDBgjS4IR8yEGhsbLRRo0ZluKIqERABERABESgNgcsuu6xsX9Y7derUPIkbb7zR7rj9DiOB9j333FOaycmqCCQIzJ49O4hVr/zuFWvs02jccXD4KcPDFtUJEyaIlwgUlYAEq6LilDEREIF6IDBu3Lh6mGZVzpG1mTdvXlX6LqdFQAREQAREIB8Cn/jEJ+y+++6riW1Y+yOxg9I5Ej5UqoPAnDlzQkQVYhWFR86pl2BVHWtYTV5KsKqm1ZKvIiACqSEwadIku+KK1olBU+NgHTryjW98ow5nrSmLgAiIgAjUE4HFixfXVCTx2ntn2etf+7Z9bPEvrYcipKvipfzss8/a5Zdf3sJXoquIulIRgWITkGBVbKKyJwIiUBcEevfubWPHKtdCmhb7rrvuSpM78kUEREAERCDFBPbu3Wvkf6q2Umvb3lf/8AHrelQPiVVV9EJcu3atkYIhXjinXkUEik3gkGIblD0REAEREAEREAEREAEREAERSCMB8u2Qi3LHjh1pdK+ufNq5ZIntXL7eBvzZJXU1b01WBEQgfwKKsMqflVqKgAiIgAiIgAiIgAiIgAhUKYFXX33VXnvtNduzZ4917969SmdRO26vf3hOmMwxk/6idiZVBzPp37+/bd7clHvMp8s59SoiUGwCirAqNlHZEwEREAEREAEREAEREAERSB2BdevWBZ/OP/98CVYpWJ3B06fZqHkPaDtgCtaiEBfOO+88W7p0aYsunFOvIgLFJiDBqthEZU8EREAEREAEREAEREAERCB1BM455xz7zGc+Y/369Uudb/Xq0OHjlA+02taehOskWGd7LYVHzpOJ2KttXvI3nQS0JTCd6yKvREAEREAEREAEREAEREAEOkDgjDPOsFWrVjVbqMYk64VM/6WXXrLJkycX0kVtRaBgAhMmTAgRVsNPGW4jRoywZcuW2bXXXmvUq4hAsQlIsCo2UdkTAREQAREQAREQAREQARGoGAESqi9cuNBOP/1027hxY8X8KPfA8+fPN45qKH+YNt2OmnCFNZx4YjW4Kx8TBKZPn26TJk2ylStX2pAhQ+xEraNeIyUiIMGqRGBlVgREQAREQAREQAREQAREoLwEVq9ebUuiu8+RWJ2Io/vuu89mzZpVXifKPNqokaNaCVXjxo2zq6++2q677rpmbxAW0lDWzZxlr3/t28GVY6cqIiwNa9IeHxCpJFS1h5z6FEJAglUhtNRWBERABERABERABERABEQgtQR69ewVfDv77LPtBz/4QWr9LKZjjX0abezY1rmgBg4cmLG+mGO3x9amp54O3frfMKk93dVHBESgjghIsKqjxdZURUAEREAEREAEREAERKCWCSDeXHbZZXlNke1znTp1yqutGhWHwP4oQfeah5+yAZ+7wDpHa6UiAiIgArkISLDKRUfXREAEap7Avffea3Pnzi1onsccc4w98cQTYauBSmkJ3H777TZq1KjSDiLrIiACIiACVUuAhM/bt28PEVWFlPHjx4ccV8UoF110UTHM1IWN3StXWI9hR1ufCz6R93zZ5kkZM2ZM3n2yNVyzZk22S6oXARFIIQEJVilcFLkkAiJQPgIki+QXVnI95FtOPfXUfJuqXTsJbNmyxRYtWmQ333xzOy2omwiIgAiIQC0TILH64sWLbd26ddarVy/bu3evFXIXwBtuuKGW8aR2bj2iH6E+9t+/Lci/t99+O7R//vnnC+qXqXE9JeHPNH/ViUC1EZBgVW0rJn9FQARKQmDevHklsSuj7SOwYMGCgkTE9o2iXiIgAiIgAtVIAHGKH5tIrE7S59NOO60gsaoa51zPPn/kIx8JYlVH74DIj5ODBw+uZ5SauwhUHQEJVlW3ZHJYBERABERABERABERABOqXAJFUCFWNjY1GYnGVJgL/9E//FKLOvJC+gO10RxxxhN1x+x1Gfq9qLIcffnhwO1Ni+ULnQzSeigiIQPUQkGBVPWslT0VABERABERABERABESgLgkkt/yNGDGiLjm0NekHH3ywuQn5vThGjx6dCrHq1QlX2+EfPd2OnTq5rWnougiIgAgEAhKs9EIQAREQAREQAREQAREQARFILYFXX301CC/jxo4rmvCyZMkS27x5c1HmPGTIkBDxVely00032Q9/+EP77W//mCOqe/fuFhexKuXjzog3dwc89ITBlXJB44qACFQhAQlWVbhoclkEREAEREAEREAEREAEap0AUVVscWNbW7G3cn3961/vcE4k53/LLbfY9OnTU7Ec//iP/2h/+qd/art27Qr+/Pmf/3kqxLR3Zv2f4M/Rn7s8FZzkhAiIQHUQkGBVHeskL0VABERABERABERABESgrgi4WEWeKra1FXIXwHxAnXTSSfbZz342n6YZ23BH21mzZmW8VqlK8jxddNFF9thjj9lhhx0Wcleloaz52RPWY9jRxl0CVWqDwIoVK4y7baclwrA2qGoWSQISrJJEdC4CIiACIiACIiACIiACIlBxAtz9D7GqVInVBw0a1KHIKO5omzbBikW7/9/ut0GDB9nf//3fF20LZUdfDENuutG6REnyVWqDwOTJk+3+++83csmxXffaa6/t0P+l2qCiWZSCgASrUlCVTREQAREQAREQAREQAREQgYIIbN602Rq6NVjPnj1DPx79eUGG6qwx+bjY4hgvw4YNM+4SyOFl/PjxdsMNN1SEjhKtVwR7SQadPXt2EKte+d0rQRDl/+3wU4bbyJEjbcKECSUZU0brl8Ah9Tt1zVwEREAEREAEREAEREAERCANBNhe9Myvngk5q1QKI0Dy+Pnz59tbb73V3PHII49sYYTrbN9SEYGOEpgzZ06IqEKsovDIOfUqIlBsAoqwKjZR2RMBERABERABERABERABEciLQDyxekNDg5188sl59VOj1gTIx5Ut+XunTp1adyhDzZ5IiGxIwR0UyzDVuhni2Weftcsvb5k8n+gqoq5URKDYBCRYFZuo7ImACFSUAPkkCinceYhSaL9CxlDbJgKNUe6KUUq2qpeDCIiACIhAjMCmTZvCXQD79etn55xzTtETqwt2ZQm89qWv2HsvvWrnrn+zso5o9KIRWLt2rfGZLl44p15FBIpNQIJVsYnKngiIQEUJjBs3rl3jt7dfuwar004wnjdvXp3OXtMWAREQARHIRAChatzYcalJDp7JR9W1jwDRVRsWLLUBn7ugfQbUSwREoO4JSLCq+5eAAIhA7RGYNGmSXXHFFbU3sSqe0Te+8Y0q9l6ui4AIiIAIFIvAjh07QiTGibFtYp4Lp1hjyE46CLw7+6fBkaMvvywdDsmLohDo37+/kTctXjinXkUEik1AglWxicqeCIhAxQn07t3bxo4dW3E/5MAfCdx1113CIQIiIAIiUOcE2PrHHe327NkTvtzqDoC1/YJY+8gvrOtRPazvlbpzXC2t9HnnnWdLly5tcUdAzqlXEYGxyfMcAAAgAElEQVRiE9BdAotNVPZEQAREQAREQAREQAREQARaEECoWrhwYag7++yzJVbVwevj9Cces5GPP1wHM62vKZJwnQTrmzc1RVnxyHkyEXt9UdFsS0VAglWpyMquCIiACIiACIiACIiACIhAIEBUVchXFeUzHDhwoKi0k8AZZ5xRNTeK6dyn0XroZivtXOn0dpswYYJde+21NvyU4XbxxReHR86pVxGBYhPQlsBiE5U9ERABERABERABERABERCBFgRGjx6tOwAW4TXx4osv2qc+9Sk799xz7b777muRC6wI5lNpYuvWrcGvGTNmdNi/7du3d9iGDJhNnz7dyBm7cuVKGzJkSF28DrXulSEgwaoy3DWqCIiACIiACIiACIiACNQkgb1799rixYvt5A+f3Hz3v65du9bkXJkUubkWLFhQtvnt27fPnn76aRs6dKjdeOONIWotTWVntP1z25IXrN+Nk4ri1m9/+9tgZ/LkyR22t2rVqg7bkIEmAtw4IX7zBHERgVIQkGBVCqqyKQIiIAIiIAIiIAIiIAJ1SCCeWL1Xr17NglUto3jwwQeNoxJl5syZ9otf/KISQ2cd851Z/8fevm+uNY690Bpid4PM2qGNCx/5yEfs+eeft/nz57fRMvdlhL3BgwfnbqSrIiACqSIgwSpVyyFnREAEREAEREAEREAERKA6Cbz66qu2bNkya2hosFFR7qJ6ib64+uqr7brrrivLosWjqbp3726f/vSn7fOf/7yNHz++LOPnM8ianz1hR4weWhSxivEOP/zwMGwx7gCNiKoiAiJQPQQkWFXPWslTERABERABERABERABEUgtgf79+tvv+/y+7u4CSBL5Yogp+S4sQtXw4cPt3nvvDcJgObcjtuXjupmzbO+7O63/TX/aVlNdFwEREIE2CegugW0iUgMREAEREAEREAEREAEREIG2CDRGd4VDuOnZs2dbTXW9nQRIcP29733Pli5dGsSqtJV9mzdb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"}}},{"metadata":{"trusted":true},"cell_type":"code","source":"from keras.models import Sequential\nfrom keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPool2D, BatchNormalization,\\\n                        Permute, TimeDistributed, Bidirectional,GRU\nfrom keras.layers import LeakyReLU\nfrom keras.optimizers import RMSprop\nfrom keras.preprocessing.image import ImageDataGenerator\nfrom keras.callbacks import ReduceLROnPlateau\nhidden_unit = 32\nkernel_size = 3\n\nmodel = Sequential()\nmodel.add(Conv2D(filters = 64, kernel_size = (3,3),padding = 'Same' , activation ='relu',input_shape = (28,28,1)))\nmodel.add(Conv2D(filters = 64, kernel_size = (3,3),padding = 'Same' , activation ='relu'))\nmodel.add(BatchNormalization())\n\nmodel.add(MaxPool2D(pool_size=(2,2),strides=(2,2)))\nmodel.add(Dropout(0.25))\n\nmodel.add(Conv2D(filters = 128, kernel_size = (3,3),padding = 'Same' , activation ='relu'))\nmodel.add(Conv2D(filters = 128, kernel_size = (3,3),padding = 'Same' , activation ='relu'))\nmodel.add(BatchNormalization())\n\nmodel.add(MaxPool2D(pool_size=(2,2), strides=(2,2)))\nmodel.add(Dropout(0.25))\n\nmodel.add(Conv2D(filters = 256, kernel_size = (3,3),padding = 'Same' , activation ='relu'))\nmodel.add(Conv2D(filters = 256, kernel_size = (3,3),padding = 'Same' , activation ='relu'))\nmodel.add(BatchNormalization())\n\nmodel.add(MaxPool2D(pool_size=(1,2), strides=(1,2)))\nmodel.add(Dropout(0.25))\n\nmodel.add(TimeDistributed(Flatten()))\nmodel.add(Bidirectional(GRU(hidden_unit,return_sequences=True)))\nmodel.add(Flatten())\nmodel.add(Dense(256 , activation ='relu'))\nmodel.add(BatchNormalization())\nmodel.add(Dropout(0.25))\nmodel.add(Dense(10, activation = \"softmax\"))","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Use Keras Data Generator to create more data"},{"metadata":{"trusted":true},"cell_type":"code","source":"datagen = ImageDataGenerator(  \n        rotation_range=10,  \n        zoom_range = 0.1,\n        width_shift_range=0.1,  \n        height_shift_range=0.1, \n        horizontal_flip=False,  \n        vertical_flip=False)  \ndatagen.fit(X_train)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"optimizer = RMSprop(lr=0.005, rho=0.9, epsilon=1e-08, decay=0.0)\nmodel.compile(optimizer = optimizer , loss = \"categorical_crossentropy\", metrics=[\"accuracy\"])\nlearning_rate = ReduceLROnPlateau(monitor='val_accuracy', \n                                            patience=3, \n                                            verbose=1, \n                                            factor=0.5, \n                                            min_lr=0.00001)\nepochs = 50\nbatch_size = 128","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"history = model.fit_generator(datagen.flow(X_train,Y_train, batch_size=batch_size),\n                              epochs = epochs, validation_data = (X_val,Y_val),\n                              verbose = 2, steps_per_epoch=X_train.shape[0] // batch_size\n                              , callbacks=[learning_rate])","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Let's plot the loss and accuracy curves for training and validation to see how our model performed"},{"metadata":{"trusted":true},"cell_type":"code","source":"fig, ax = plt.subplots(2,1)\nax[0].plot(history.history['loss'], color='b', label=\"Training loss\")\nax[0].plot(history.history['val_loss'], color='r', label=\"validation loss\",axes =ax[0])\nlegend = ax[0].legend(loc='best', shadow=True)\n\nax[1].plot(history.history['accuracy'], color='b', label=\"Training accuracy\")\nax[1].plot(history.history['val_accuracy'], color='r',label=\"Validation accuracy\")\nlegend = ax[1].legend(loc='best', shadow=True)\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Let's plot confusion matrix and see how our model is performing on validation dataset"},{"metadata":{"trusted":true},"cell_type":"code","source":"from sklearn.metrics import confusion_matrix\nimport itertools\nplt.figure(num='digit',figsize=(9,9))\ndef plot_confusion_matrix(cm, classes,\n                          normalize=False,\n                          title='Confusion matrix',\n                          cmap=plt.cm.Blues):\n    \"\"\"\n    This function prints and plots the confusion matrix.\n    Normalization can be applied by setting `normalize=True`.\n    \"\"\"\n    plt.imshow(cm, interpolation='nearest', cmap=cmap)\n    plt.title(title)\n    plt.colorbar()\n    tick_marks = np.arange(len(classes))\n    plt.xticks(tick_marks, classes, rotation=45)\n    plt.yticks(tick_marks, classes)\n\n    if normalize:\n        cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]\n\n    thresh = cm.max() / 2.\n    for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):\n        plt.text(j, i, cm[i, j],\n                 horizontalalignment=\"center\",\n                 color=\"white\" if cm[i, j] > thresh else \"black\")\n\n    plt.tight_layout()\n    plt.ylabel('True label')\n    plt.xlabel('Predicted label')\n\n# Predict the values from the validation dataset\nY_pred = model.predict(X_val)\n# Convert predictions classes to one hot vectors \nY_pred_classes = np.argmax(Y_pred,axis = 1) \n# Convert validation observations to one hot vectors\nY_true = np.argmax(Y_val,axis = 1) \n# compute the confusion matrix\nconfusion_mtx = confusion_matrix(Y_true, Y_pred_classes) \n# plot the confusion matrix\nplot_confusion_matrix(confusion_mtx, classes = range(10))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"#Display some error results \nerrors = (Y_pred_classes - Y_true != 0)\nY_pred_classes_errors = Y_pred_classes[errors]\nY_pred_errors = Y_pred[errors]\nY_true_errors = Y_true[errors]\nX_val_errors = X_val[errors]\n\ndef display_errors(errors_index,img_errors,pred_errors, obs_errors):\n    \"\"\" This function shows 6 images with their predicted and real labels\"\"\"\n    n = 0\n    nrows = 2\n    ncols = 3\n    plt.figure(num='digit',figsize=(9,9))\n    fig, ax = plt.subplots(nrows,ncols,sharex=True,sharey=True)\n    for row in range(nrows):\n        for col in range(ncols):\n            error = errors_index[n]\n            ax[row,col].imshow((img_errors[error]).reshape((28,28)))\n            ax[row,col].set_title(\"Predicted label :{}\\nTrue label :{}\".format(pred_errors[error],obs_errors[error]))\n            n += 1\n\n# Probabilities of the wrong predicted numbers\nY_pred_errors_prob = np.max(Y_pred_errors,axis = 1)\n\n# Predicted probabilities of the true values in the error set\ntrue_prob_errors = np.diagonal(np.take(Y_pred_errors, Y_true_errors, axis=1))\n\n# Difference between the probability of the predicted label and the true label\ndelta_pred_true_errors = Y_pred_errors_prob - true_prob_errors\n\n# Sorted list of the delta prob errors\nsorted_dela_errors = np.argsort(delta_pred_true_errors)\n\n# Top 6 errors \nmost_important_errors = sorted_dela_errors[-6:]\n\n# Show the top 6 errors\ndisplay_errors(most_important_errors, X_val_errors, Y_pred_classes_errors, Y_true_errors)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# predict results\nresults = model.predict(x_test)\n\n# select the indix with the maximum probability\nresults = np.argmax(results,axis = 1)\n\nresults = pd.Series(results,name=\"label\") ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"submission = pd.read_csv('../input/Kannada-MNIST/sample_submission.csv')\nsubmission['label'] = results","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Submit the results"},{"metadata":{"trusted":true},"cell_type":"code","source":"submission.to_csv(\"submission.csv\",index=False)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Things to do next \nThe fllowing tweak can be implemented on architecure to get better result.\n- Add more LSTM network\n- Impelement and use CTC loss \n- Different activation function"},{"metadata":{},"cell_type":"markdown","source":"**I hope you liked the notebook.\nIf you find this notebook useful please upvote!!!**"},{"metadata":{"trusted":true},"cell_type":"code","source":"","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":1}