diff --git a/Best_points_nishanth.h5 b/Best_points_nishanth.h5 new file mode 100644 index 0000000..4186307 Binary files /dev/null and b/Best_points_nishanth.h5 differ diff --git a/a-z-recognition.ipynb b/a-z-recognition.ipynb new file mode 100644 index 0000000..f11aead --- /dev/null +++ b/a-z-recognition.ipynb @@ -0,0 +1,682 @@ +{ + "cells": [ + { + "cell_type": "code", + "source": [ + "import tensorflow as tf\r\n", + "from scipy.io import loadmat\r\n", + "import numpy as np\r\n", + "import pandas as pd\r\n", + "import matplotlib.pyplot as plt\r\n", + "%matplotlib inline\r\n", + "from tensorflow.keras.layers import Dense,Flatten,Conv2D,MaxPooling2D,BatchNormalization,Dropout\r\n", + "from tensorflow.keras.models import Sequential\r\n", + "from tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint,ReduceLROnPlateau\r\n", + "import pandas as pd\r\n", + "import cv2\r\n", + "import PIL\r\n", + "from PIL import Image, ImageEnhance, ImageDraw, ImageFont\r\n", + "from IPython.display import display\r\n", + "from sklearn.model_selection import train_test_split" + ], + "outputs": [], + "execution_count": 3, + "metadata": { + "gather": { + "logged": 1617550068009 + } + } + }, + { + "cell_type": "code", + "source": [ + "# Load the data\r\n", + "train_data = pd.read_csv(\"emnist-balanced-train.csv\")\r\n", + "test_data = pd.read_csv(\"emnist-balanced-test.csv\")" + ], + "outputs": [], + "execution_count": 4, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": false, + "source_hidden": false + }, + "nteract": { + "transient": { + "deleting": false + } + }, + "gather": { + "logged": 1617550077895 + } + } + }, + { + "cell_type": "code", + "source": [ + "print(train_data.shape)\r\n", + "print(test_data.shape)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "(112799, 785)\n", + "(18799, 785)\n" + ] + } + ], + "execution_count": 5, + "metadata": { + "collapsed": true, + "jupyter": { + "source_hidden": false, + "outputs_hidden": false + }, + "nteract": { + "transient": { + "deleting": false + } + }, + "gather": { + "logged": 1617550078100 + } + } + }, + { + "cell_type": "code", + "source": [ + "#training_letters\r\n", + "y1 = np.array(train_data.iloc[:,0].values)\r\n", + "x1 = np.array(train_data.iloc[:,1:].values)\r\n", + "#testing_labels\r\n", + "y2 = np.array(test_data.iloc[:,0].values)\r\n", + "x2 = np.array(test_data.iloc[:,1:].values)\r\n", + "print(y1.shape)\r\n", + "print(x1.shape)\r\n" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "(112799,)\n", + "(112799, 784)\n" + ] + } + ], + "execution_count": 6, + "metadata": { + "collapsed": true, + "jupyter": { + "source_hidden": false, + "outputs_hidden": false + }, + "nteract": { + "transient": { + "deleting": false + } + }, + "gather": { + "logged": 1617550078387 + } + } + }, + { + "cell_type": "code", + "source": [ + "fig,axes = plt.subplots(3,5,figsize=(10,8))\r\n", + "for i,ax in enumerate(axes.flat):\r\n", + " ax.imshow(x1[i].reshape([28,28]))" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/png": "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z/smEY1JhmNJpf5EX3qnL9Gf6Ev0JfozFfsznlN4PYhot3W7vPFnidRFa11BRNT4b+d4PrlSqoSIziaixYk+ligkW3+iL6OXbH1JhP6MFvrSIYX7kgj9+TnJ1J/xHECpU/yszdZQUErlEdFrRPRtrfWxRB9PFNCfjdCX3pLi/Ym+tKR4XxKhP4Vk6894DqDKiaiXdbsnEe2N4/Ofyn6lVDciosZ/D8TjSZVS6XTyTTBTa/16Io+lBZKtP9GX0Uu2viRCf0YLfdnIA31JhP40krE/4zmAWkpE/ZRSpUqpDCKaSESz4/j8pzKbiCY1tifRyXnVVqWUUkT0AhFt0Fo/nchjaaFk60/0ZfSSrS+J0J/RQl+SZ/qSCP1JREncn3FO/BpLRJuIaCsRPRrn536ZiCqIKEAnR/V3E1ERnczc39z4b2EcjuNiOnkJdg0RrWr8b2wijiVVUopydAAAIABJREFU+xN96Z2+RH+iL9GX6M9U7U9s5QIAAADgEiqRAwAAALiEARQAAACASxhAAQAAALiEARQAAACASxhAAQAAALiEARQAAACASxhAAQAAALiEARQAAACASxhAAQAAALiEARQAAACASxhAAQAAALiEARQAAACASxhAAQAAALiEARQAAACASxhAAQAAALiEARQAAACASxhAAQAAALiEARQAAACASxhAAQAAALiEARQAAACASxhAAQAAALiEARQAAACASxhAAQAAALiEARQAAACASxhAAQAAALiEARQAAACASxhAAQAAALiEARQAAACASxhAAQAAALiEARQAAACASxhAAQAAALiEARQAAACASxhAAQAAALiEARQAAACASxhAAQAAALiEARQAAACASxhAAQAAALiEARQAAACASxhAAQAAALjUogGUUuoqpdRGpdQWpdQjsTooSAz0p3egL70F/ekd6EvvUFrr6H5RKT8RbSKiMURUTkRLiehWrfX62B0exAv60zvQl96C/vQO9KW3pLXgd0cQ0Rat9TYiIqXUX4loHBFFfCNkqEydRbkteEpoiTo6Tg26XkUIu+pP9GXiVVPVIa11p1OEcG6mGJyb3oJz0zuaOjdbMoDqQUS7rdvlRHS+805KqXuJ6F4ioizKofPVZS14SmiJxXpeU+HT9if6Mrm8p1/dGSGEczPF4Nz0Fpyb3tHUudmSHKhTjcg+Nx+otZ6qtR6utR6eTpkteDpoZaftT/RlysC56S04N70D56aHtGQAVU5EvazbPYlob8sOBxII/ekd6EtvQX96B/rSQ1oygFpKRP2UUqVKqQwimkhEs2NzWJAA6E/vQF96C/rTO9CXHhJ1DpTWOqiUup+I5hCRn4imaa3XxezIIK7Qn96BvvQW9Kd3oC+9pSVJ5KS1foeI3onRsUCCoT+9A33pLehP70BfNsHnjxwLh+J3HM2ESuQAAAAALmEABQAAAOBSi6bwIErWZUrlk6taddha0ZqElywBAOLK/rz0NzHF0wQdaIjV0UAz+HJyuF1YIGKhTh34hl9+/x0emh/xMdvvqDftzM37RSxcWcXt2lpXx9oSuAIFAAAA4BIGUAAAAAAuYQAFAAAA4BJyoOLAng8mknPCun2eiKljx007tO+AiOmQlROVzPlRiue1/YP7R7yb3r5b3G5y7tp6TNKf2/nANX3RWeL27jHcR3m75ON3/Otq047n/DpAW+TLlRvn2p+XoY7tm/84DUHT1jvKRUzXcz6NDgYJ3Pvc91qnItMuv4GLrQcuPibu98DgBaadruT32BmZeyI+39ZAZ9N+7NOrRSx9YW/T7vmG43vl4GFux/jzG1egAAAAAFzCAAoAAADAJUzhxYqjgqq/HU/NVXz5DBGrG1Vt2l/q+6mILdxfZtqVHw8XsU5r+FJz9uzl8vmTaEovrbinaQ/+8yYR8ymeHvvnjAtFrNtCeanXVl3Gr2f2AbkkOXMrT3WGDhyUv2iVhfDl8dRAj6c3i7tN6zbHtHcG5aXp+7PvN+2uL8r+CldXE4BK449STAk1j0rP4HZWpmkHz+wj7lc1INu0jwyS0+vaugSgwvLx02p52r/Xv7JFLGO3Na1jTfEQYZq+SXYqRVmxCB0czlOtBWN5f+R7en8o7ndtLk+n+kmWMUhXkctUDMmwpveGvitiz7e7hI+jqqeIdVxmfZ6v2xjx8aOBK1AAAAAALmEABQAAAOASBlAAAAAALiEHqgVUJs/b+zsWiVjdgG6mHbq8SsSmDJxn2pfnbBOxG9pzbtOTOVeJ2GfhfqZd/LZzC5jmHnUrcOR/HbiM56Bf6fyaiNlz3OMfXCpin97XiyLplc55CpUhWfrht9svNe19n50tf9F6XcL5nCf2Yvdfi7sV+HievJtjGv6hb80y7V9mTBCx7vMq+cZ2uQRX19VTJNhaIgVZ7/Mjt48QoYu/vdi050+TuX2df/dx6x5XMlHyc8nOh2zoJT8jd13JeUkNnTlv7OsXvi/ud3Eu560MyZDnlJ1DEyKZH1Vr5YW+cL3MJ31pE9/OfF9+7nT9UxNlS2JQQiXpWX3oy5a5Y8FzB5j2vsl1IvbQQP6sn5Any0bY1jRw7tuuYGHE+12SJT9P8308XJmQJ0v83DCYP6N/8R1ZoubFeV8w7QE/bidioWOR826bA1egAAAAAFzCAAoAAADApZSfwrOXD5OK/XjQXl7r6yCr4Faf292093xBPvcPx75u2tfmbhex9r4sfkySS+Y7+fmy86VFsgTAmg7W8t5W+FujpXzysn1NMd/OVJHfYudm+B2390a4p5O8jH/D0L+ZdmBI88o5ZCt5adpvvZ4hx3zorfm88/fAB54RsdmTzjHtmUtGipivhv++9Br5GvV4n6fwMvfXiFh4yw7TtismQ2LZ7/O6Itmf/9uVp/BefWCniM2cOcS0Q0eOttLRJZA95eOoTn3wUp7Cqxwqp78mXrbQtAdl87k/JmeXuF+eSjftsGPZu825JL69j6eKvtphmYgVDzlk2k+ljZEPZE3p+bbJY2kLJQ5EH5bK6c1tN/D34WOD/i5io7K5Anit5r7YGJCftVM23WTae3bJaV3b7SM+Ebft98iVjveI/Z16ef5aEVswhHfD0CXdRYzWYAoPAAAAIK4wgAIAAABwCQMoAAAAAJdSIwfKWj6c1qWTCG2/m7c+aeggc1d0DIaH4TzOqeleLEv+f6v0FdPul7FfxM7KsF9ax1JQ4sdcUi/zgH5bcaVpr54zUMS6W1u56FDybN3i3Lqi99s8r3zia3K5frbivIQaLfN75tR2jfgc9pJWezlrrDjzniL5XN5WJ17y/JNrVjvvHtGJu/h1WVwvd59/5LF7Tbtw+hL5iwnYsietaxfT1kUdRExv57yHROaH2NuCEBGRla/k61siQuGM6N4/Op0/UKr7yX5II35fOPMzfvMlLn3R4cVFUT13MhF5p0SkrByTfRfL98dD9/Py8i/m7BCxQitHKWzVG1ndID8vFx7npfPPLRotYr5aft3DubJP+pbtM+2X+/9VxG7Jr+DjOud5ERt958OmXfpGloj5Fq4iT2gib23fnWeatrMEzwfnPGXaGY6SFZsD/Dj3rPiKaacvlKUDer7Bnxn5lZ9FPMTlpXILtEWduHTItO/LLbt+3odLKIzIlF/8Lw78i2lfMf57Ilaygd+D0ZSWwRUoAAAAAJcwgAIAAABwKSWm8Ozlw7pAXg7sO4YreX+xo7wcmO+TlVKjke8/YdrFaZUiNiQjYNpN7SJdFT4hbm8L8mXDP+4fLWJLF/Pl8P5vysunvkO8BDqYgKmcZgvxcmVndWDbu8flktLf/vAW0846FBCx/x7Nr1kgL7pqwHYl8qVXOSuR87SBs7++vmOcaV/Rcb2IDcvky9GDMuQlYHtZtT116bxdkiaXttf04t8r8iW+4vyeCVw+Y9bkX4jY2Fcnm3afyXLZcbTSevHS91BnWTpkxzg+/wPt+H1wyyhZ7btPFlcqHps7T8RiMQX8+fOdb9vvJSKitNus6f2/OH4vWc9jx/SMXZHa10kuPS8fbU3bjZafWWOsaTvn676mgV+LrQHeueG3Wy8V9zv4WUfTLntbfi6kH+NztaFDpojtO5uX4G8plVNxwzL4dbenEomIOg7iEgdV62XKSNHHVv8la981g6gw7ihVYE/bPTxwroh18vNr/EZNZxF7buco0857O9+0i1bI783QHp4+daZ/2NQGuUtH5h7egWLD1j4itrkXp3+cmyGn99pbKUDB3Nh+gOIKFAAAAIBLGEABAAAAuHTaAZRSappS6oBSaq31s0Kl1Fyl1ObGfwta9zAhVtCfnlKCvvQOnJuegnOzDWhOMsB0InqWiF60fvYIEc3TWj+ulHqk8faU2B/eSTrMuQ7q2HER23yA56hv7LJCxG63lqr6mtgCoPmcj5FxynsREVWEeEn3NSvukcEP+LzpPlfODw+s4iXQwT1ya5MYzd5Op1buT7+Vq7UxIN9iZ2dwX87aL3dIb7+Cc0VCW+T2NyUfRn6tm8vXjufQ54+S+Vfjc3nef/4JGau9l/vr9RyZnzH1LM7JOTJI5maF2nGOxK3nLRax4kwuifHUu9eJWP9XORZqIkeAiA4R0W3UyudmdQm/80rTZC7J+C9y3tMax3JoHbCO3ZHL5e/M521dvy4idvRhfv/cVbpAxK7L5e2N7JwaZ46ZJI/L38rbIDlLYkzstdy0/+GXf6uWeTTTKZGftfbS9mGyhMq+S/gcqB8tt794/pxnTXtAuswfLA/yNiyTd18lYhtn8HMUbOaSJkVbDoj7FVR+atrh4/Lz3z7jMhzlFYq38Hn8vctvErGn+nN5hTMdb507Svhc/dXAa0Wso5/zaXTTOVBxOTebZPdntszLO3EplwjYdaU8H/59zi9N2855IiL6WzXnqv3q2Qki1nXhEdPOWrvUtMNNf4ZF5CwrEKriz4WiJbKvf9+b869usrb2IpK5qLEobWQ77cNprf9NRJWOH48johmN7RlEdH1sDwtaC/rTU2oIfekZODc9BedmGxDteKyL1rqCiKjx386R7qiUulcptUwptSxA2Bg1STWrP9GXKQHnprfg3PQOnJse0+plDLTWU4loKhFRO1UY5fpzvlQarpTLZLPe723aT6dfJmJ2hVl7KSORvKznXJJsVxUWv+O49G9fqndW1Z5+hKenfO/JqW77UqfeKJdqBpOowrhTLPrSnkod2l5OUS7JGhr5uaOoEusUPlZj2tWhbEeU31fOchWqhqcl9IbNIla0kt8r9uV9IiKVxZe/VxUPErEVVjXsfps+FbGQY5qitUTqT2dV71sulSUCbDk+7pdzP5bv3dLMg867G2dk8mPa5UCI3E3H/Ydd3Z+IKKAjn0dr63laaV19jyaeS7JLmlyZs0/E8lSm8+7Gr+dcbdp9A7Ep9eAU1bnpLFWQx1Pc9pQdkVza/ohjafvwTH6t0xy7LnwQ4BIHizaVidjg9zjFInyQp62Dxx0V7ZtZLsC5O4Ou4fNoX2VPEasM8d8a0LKMSEUDH3OanJGMm1h81qYV8998cLT8+780mafGr8iXnz/2p5g9ZUckp+26zpC/F67hz1fS0X3VN8l6H3RcXS1Cm4fyWDQwJH7fodFegdqvlOpGRNT474HT3B+SG/rTO9CX3oL+9A70pcdEO4CaTUSTGtuTiOjN2BwOJAj60zvQl96C/vQO9KXHNKeMwctEtIiIBiilypVSdxPR40Q0Rim1mYjGNN6GFID+9JRSQl96Bs5NT8G52QacNgdKa31rhNBlEX7eqpw7vnedvppvfCBL0l9xM++87Czhrq2/vNtAeSX1uh48t/v1gjWmneMoW1Ae5AnymUflkvz3vn8JH+MCuYN3+IQ1sd4ac8VNiEd/hjry9huD053z0TzDXpxxWEQWp0feDifWttY58jfbcT6WMyenvi/f17+7XP6eNS/vXNYs8rbWbYx4LC14B2zXWg8/xc9jem7a26I4y4E80pHPv0i5g6dSb+UoZTaR81Sv5RLot2u5/IGdxzZt54Xifvs+s/rXUf+jYB3/Dc5cCnsbIqdjA3h7Cv9PXxKx63M5r/GwYyugstebt6VUvD9rfY6yE1RmbaFzucw1tbf0uCp3p4hlqlz+PUcJh+owl73wHU0XsfA+fl/F5DPRkaOqrKX7XQtl6YVCfw1FsmBfP9POk3/q5/KsmhCXc7MpDb14y53KYfI1vb39MtPu4pfn3+zj/D36y8/GiFj3D/l9IXKeiOL7XeY8TxOwxRURKpEDAAAAuIYBFAAAAIBLrV7GoLXZU3q+bbtErGwWX+YLZ8g/NZzFtw+e3VXEnhvKu3+PuvIz0+7uWNP64pERpj1z/Xki1m8dV9UOOqYdITHsKbWXl54vYj8Yu8S0ncvoyy/lJeolC2UsFuUVUtmGBr52vinQUcQuzNpj2v+zT04FrHr2LNM+PCzypf8OG+SUYadZZmcM0nVcOiQvJOda+oZleZBImpp0UI7K1kce5crZo7IrHPfm6aLfHB4pIv7F65v1fHFhlXOpHD9MhI5dx1MyH5z7nIgV+KypOEepgnrNU97O8hH2NKtyFKQWlepjMP2jHGVE7FSC23q9L2ID0u2Dke8xe/q3n2OK9zTVxxPKl5srbm+5kfvs7stlRf/uafyZdjAkS/A8+o9bTLvsDRkLf7qGgOEKFAAAAIBLGEABAAAAuJTyU3j2pV/nCj3/br7MrkrkBrG7ruLLuw0F8rKsyubbD2yYaNqHthSJ+/V5hVfX9NstV5QFdzlWa0FS8dXEb8WflzhXmN34j++Ydunrco7mR1/gaYJec+W5Wbh8pWkXvBx5CY1z1VM4jlMo/h6yCvPz5/C+sAU+OY1lvy4vz79IxFqr+ng07Gmuo33k1NW4vrz62J6yI5KrL8OOicjV1iz2joDcLHnB4f6mnXGklf9/3bFhNfnt3Sbk+8bf1Oby9tuxiVWZycZXKKvHdxp4yLRH5W0Qseowd9oHJ3qLWNEafm0yHN9r4Wx+Xyjn5uHVPN0ZrmveytN4CFnvVxXj1Xq4AgUAAADgEgZQAAAAAC5hAAUAAADgUurnQFnLcn3Zct4+cGYf0z5wrsxZuOZazkvolVUpf0/zY/5xDi+/Lp4v59HTVm817dAJx7bdca4wnors1znewnmRc2lOaFmaoMf7fLutly14/4TMJSx9g/Oe0uYvF7Hi+ZEfJ0GFg0/LN4RLFez+mcyTGZnpvDd7uPxq0+4/7YiIJevfGsiXR9Y/a59pOyvO23lPWwJyafsdL0027a6fyPMqZztXAC+t2iFiwRifS/6ucneB/Wdz5fihWbtFzGddOzgalseRXsN/u69B5vUlbxEDolDn9uL2XaVcumBIhuyzObV8Hv/XwhtEbPCc7XwjS77pt/6QS18ECuVr0+Xf/Hne/qWlHGiNvEW/I4fNuhRU5yilsSXA4wJnWRQXleVPCVegAAAAAFzCAAoAAADApZSbwlPpshJ0zbizTXv/eXI8eOfVPIcwPEdWJn7n6Jmm/Zv5V4pYRhU/Tv+/8fSe3i4vAzvLJkQ+6CaWzDYlRacB/UePm/bOoPwbeqfx5fInFo4VsYFbuOp7a/zlaT17mPaMy58XMbv6+IGQ7NfM/VyhOZkv4bcWe6r1Equ6OBHRD0fz61YyL26HFDPOauOb7upg2h+c85Tj3rxs21nOYdfPBph21ubUqNbsXNId9ZS6dbIqx/muKuwNgx1L2630i1hM89ib5xIRVQ3iYylJc04X8sbG24JyOb69gbA6dpxSRbCdnG7r4Odjd5Zt8NtL+9PlGyFQxjtznOgsH3PUpfzeTvfJPluw9xzrublvW6N6e8Dxt4ZzIj/HrmChabff7ngftPDYcAUKAAAAwCUMoAAAAABcwgAKAAAAwKWUyIHyWSXjfZ3lju8VF/Lc7uUXrxKxm9qvMO19IblT9f9v786Dq6ruOIB/f0lewhIgAU1EzIbikuKCRYpWK26VulSdcanaFpda7WhHW/f6R6e1rTqd2mqtdRgXGGutG+PSWsXdWi0KyCAQIiBhEUiIyJIgJO+90z/yvOf8Lr6X3CTvvpuX72eGyXk5L7kn7/fufYd7fuecuavtdOW6Z/V0zOLNduzYzXsyHXr81J+PpRvtTIUtG5X+eRkkt27zfcOOW0d6Or2zy3q78b/F7JizfzsVs2s3wuLP92gzNqdl5udTVJ1pGlzb8vjfW79/6UyvfPkFa1XdZWe/6pXffugQVRdf4+QMRiifr6i22iuvuENvfzHv2D945fICnRuzyJnSfuG8n6i68S/brWlMXF9PosSdtu2f0j2r/mivfOnhTaquCPZ8OSCm809mX3SfV37rrINV3QPvTfPK/vO9fKk9ftkn9twvWdminrfHddBRsJfNb2m4QLfrymk2Ka9UYqruww57Xbqh8TxVV/mqPd8TGzchytzPoPUn6L/fzVccKvq9fPKwZq8857i/qrpFU6q88rACfU0+ZajdHu2JHRNU3dzSI3ra7F5x/9ZPp+nP3ounvOOV/fleW+KlXjn2uc7D6+tViXegiIiIiAJiB4qIiIgooEgO4fmnFn92nl1yYOt0PcX88al/9soHxfSt81d32t3Ub3zvXFV30N12yMYsX6Lqks5QXVH1fl5522S9CvOmo+2tQuPvijqPS/ZrU1Ui6W8cGmN/Z8ea8arO3c287pE1qi6+Xk8vz6WOGjvM6p8+nHBemP7eGbs78Q32dvxPZ12p6jpG2ca4u5EDQFn7e9ltWMSNn2Nve7eeq6fvX1VupzU/dMcxqm7CrbYcb9JDf/2uQA8PScxeQ+SgOlXXcIUdUv/H1PtUXXmB3rHAddMqew3Z/059rUlGeNhOcaZtlzfqWK5usOft5ol66Kay0L4u/lXKJ5XY3zk+ptMo6qbZ4bitvjSK2fVTvfKqNXYJgjHvV6nnjVpdiXS27W+HcqYc2ajqTihd5pXbTKeqe6vtUK/c0rC3qivbstQrR3k4Noikb7BqlPM+P7RYX4gPLbbXSf/PNSfsc+9ZeqKqc6+bfV3huzudpbpddSWbvXJjpx7KfHTtN7xyWaseDu5rdHkHioiIiCggdqCIiIiIAmIHioiIiCigSOZAucsWAMBnh9vxzh/Wf6DqJsZsXYnosc+EM1Zv4rqvWNC8xXme7/ildtpj+0S7rP2mY/TY/7XT/+2V/dM9XfvE9O7siT0SpqxCJzGoqV6Pzb+3dX+v3PJ6raqTHOZA+ZdzWPdtO74+xpdTstzZyX34et/rYLKcFOXkf1Tf8b6uE9uWbI/fDzQF737klY99+gZV9/g5Ngfxg+MeUHUPvGB3bp/52kmqTpzkA//7oK06+Ptgn3o99X1Gzf+88pnD9R4zFYXu9UXnTrlbtFzYeKGq67jf5lQWLZ4fuI1RU7zuM/V49Ec23/P102tV3fThNueyvGCIqnOXOPCf72cMs7kpndBLAhx2oF3mYlVdhVe+v+Z49bxP1jpbtPh2xRpXZafj/3zfl1WdmxO7pEO364VPJ3rl8mX6l5ovdG5YlLnXqhFNum5Zp831O1J2qLqRvhi64s4n4rakzmGdtXWyVx7y5ghVN3qh/UxNZmH7FndpoEy3flZ1VqjHG5z8upFbl/uf3rcm9etvIyIiIhoEuu1AiUiViLwhIg0islRErk19f7SIvCIiK1Jfy7v7XZRbSSTBWOaVGOOZH3hu5h2em4NAT4bw4gCuN8YsFJERABaIyCsALgHwmjHmThG5BcAtAG7udUucacifnf01VfXr05/0yqcO09OhSyT9tOMTh27wyncd95Squ/n28+2h2/U0Z3dn5yumvu2Vjy9tUM+bELO3epviehhr0a4ar/y7laepug0ZbkmPr7O3pB+c8HdVN3XoKq98yTHXqbpx82wou5l6m/1YZjDa2cF792jfcg4S3g3RfJmejDDi6dyOP/jeDarq+2N/5JX/NvVBVXfdaDuN/OpzP1J1CWd69HpfKGqKfCdFD8RED8UVqaE5nRKw29gDLu7QP3fpgqu8cu1v9TCEGrbLxhBFyOdmfK1eYX/MU3YI5o/Dz1d1d0yzQ0DfPUDH8sAhdmhuRKEe/nJXwx7mW2piUokdqj3KmYZ+7qFPqOd1TrSv9S6T/nVf2amHpf7Zbockf7XwDFVX9pJ9T1S+qV+HeP9dG0I9Nyvm6s/Ga6rsUi27avRQ3NMn3O+V9y3UdRc1XuyV1y4Zq+rGP2OXNNlnoV6yItnfQ5+irwPujh7+pYGGFNhlKn6zWH/eVvzXfjYm2/UySH3V7SeWMWajMWZhqrwDQAOAcQDOAjA79bTZAM7u15ZRvytAARjLvNLJeOYHnpt5h+fmIBDov/wiUgtgEoB5ACqNMRuBrk4WgIo0P/NjEZkvIvM7Ed5eZ5QZY5lfGM/8wVjmF8Yzf/W4AyUipQCeAXCdMWZ7T3/OGDPTGDPZGDM5hpLuf4CyjrHML4xn/mAs8wvjmd96tIyBiMTQ9SZ4zBgzJ/XtZhEZa4zZKCJjAbSk/w09OIYzRXFHlR77rIrZ6bb+nZYzGeLkRZw6TE+hnTb9T155q2/W9Lr4SK/8dpvdXfyudXpsdUmT3dplxEI9/j72HbtkfFmLXj7enUophboPa6rtmPNp59yEdOpe1FOQEz0ct89GLE2nHkPf7w37P6YvLtN1W5I2JsVbfbHM9jIGeSiMc9Pl35Kl7mKb4/LLw2aouqbbbKwf+fosVXdIsX1fBMl5WtIR88pLd4/r0c88vEZvMbP7Kbs1SOWrOv+lep3N28rKVOwMwo4ljM5BTO60+SH7vLVF1W3ZYXOdn9tfv56dzjZIbv4oAFw8xS4nUV2ir1mHldhlDGqK7LH9uVI7nTj8Z5eOubs9zOw1U1WdO33dzYMBgDELnCn3m3W7+kvY8UxsblWPa5+zOUPbJ+glBxYcXeuVN8V0rFvn2td4/Ps6r6nowxVe2X2/ZIUvJ1Zi9twvKtLvsw/abB5zmMsr9GQWngB4CECDMeZup+p5AF9eMWcAeK5fW0b9znQl7jKW+YXxzAM8N/MS45nnenIH6psAfgDgIxH5Mu3+FwDuBPCkiFwOYC2A87LTROovia4F0hjL/FEKxjMv8NzMOzw3B4FuO1DGmHewx2R7z0lpvh+YSdrbyWMa9G22ez892Sv/bNxcVTex2A4X7fTdnnNv9+5IpF/uYNUuncf3VvMBXrl1gb3dP6RFvwz7rrfHG7lc3wZOrmzyyvFO3/Ca207/VM2Vdjpm3dO+af4Os3pd2rp0ilAEY0zWY1nc0u6VdyT1315XZJd7GHayvntd+JRd9T2+Tg+t0FdqCyOeGTnv5eSiZaqq+gI7FHP7uLNUXWKvUeiNQmc39USLnfqOZPpzpTSxRj9OfuKVo7KYRVjnZkbOkF5yiV6xuWyZjWV5oR5ic1eIlmK9nMvC6nqvPH+i78BaAAAFZklEQVSI/riZeYRNlWizq74gPkzHsmin/f3j3tQpAbFtdlp9plQJ//T1RPaHZ0M/N81unWxuFjd65bLNlarunkfTT/6rfdyeL4lNzaoumcvlX5zPyh3NparqxYajvPIBjy1VdYltPU49C4wrkRMREREFxA4UERERUUDsQBEREREF1KNlDELhjEkPf+FDVbVJJnnlK+qvUXUdzhRad6wc0OPlse2+xcgSdpy9oEOP65Zttzk8IzYtsBW+afbuTtgJkz4HI6MMU4mxtBEDkWmy+Us3rtdbKHyr/GOvXDFcL8cfHzESlEecc3qPnLZe5rhFJWdp0HFiaTLkD/nzcOTj1fZBgb4+V7bs7ZUrRtrlCJLF+mPJvT6btXorIdNhr/EZc00HI+fvT7TqHN2aZ0v9z7bPdZZDiNSWV0U290469L2fIa32vZVs920p09vP5h7gHSgiIiKigNiBIiIiIgooOkN4Dv/K1qPetdMqRy7X05/d273+oTj3dq97q7frB50pu/7jO0Nzg/42cC8k2+0QaOu39Ftsjtgd0mH0yrkmrleLJ6KBzX8td/V0qRJegfvOP7SaWPZxmmdGl9lph+Zq/qU/tYeutkOUiQzvuf7GO1BEREREAbEDRURERBQQO1BEREREAUUyB8ovvtHJjdmYPk+GY+XRE6lpsERENDD48o8TzXbrr+KXN+u6LC5VkAnvQBEREREFxA4UERERUUADYgiPiIiICEBWVxcPgnegiIiIiAJiB4qIiIgoIHagiIiIiAJiB4qIiIgoIHagiIiIiAJiB4qIiIgoIDEhTgcUkc0A1gDYC0BraAdOb7C1o8YYs3d//CLGMiPGs+8GWzsYy3AM1Hi2Y/C9ht3JeSxD7UB5BxWZb4yZHPqB2Y5+F5W2R6UdQLTaElRU2s529F1U2h6VdgDRaksQUWp3VNoShXZwCI+IiIgoIHagiIiIiALKVQdqZo6O68d29F1U2h6VdgDRaktQUWk729F3UWl7VNoBRKstQUSp3VFpS87bkZMcKCIiIqKBjEN4RERERAGxA0VEREQUUKgdKBGZLiKNIrJSRG4J+dgPi0iLiCxxvjdaRF4RkRWpr+UhtKNKRN4QkQYRWSoi1+aqLX2Vq3gylv2P52b+xJOxzJ9YAoxn6piRjGdoHSgRKQTwFwDfAVAP4EIRqQ/r+ABmAZju+94tAF4zxkwA8FrqcbbFAVxvjDkEwFQAV6deh1y0pddyHM9ZYCz7Dc9Nz4CPJ2PpGfCxBBhPRzTjaYwJ5R+AowG87Dy+FcCtYR0/dcxaAEucx40AxqbKYwE0htme1HGfA3BKFNoykOLJWOZPLBlPxpKxZDwHYjzDHMIbB2Cd83h96nu5VGmM2QgAqa8VYR5cRGoBTAIwL9dt6YWoxZOx7L2oxRJgPHuLsfQZwLEEGM89RCmeYXag5Cu+N2jXUBCRUgDPALjOGLM91+3pBcYzhbHMLwM8noylY4DHEmA8lajFM8wO1HoAVc7j/QBsCPH4X6VZRMYCQOprSxgHFZEYut4Ejxlj5uSyLX0QtXgylr0XtVgCjGdvMZYpeRBLgPH0RDGeYXagPgAwQUTqRKQYwPcAPB/i8b/K8wBmpMoz0DWumlUiIgAeAtBgjLk7l23po6jFk7HsvajFEmA8e4uxRN7EEmA8AUQ4niEnfp0G4GMAqwDcFvKxHwewEUAnunr1lwMYg67M/RWpr6NDaMex6LoFuxjAotS/03LRloEaT8Yyf2LJeDKWjCXjOVDjya1ciIiIiALiSuREREREAbEDRURERBQQO1BEREREAbEDRURERBQQO1BEREREAbEDRURERBQQO1BEREREAf0fMXtt3/afm6YAAAAASUVORK5CYII=\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "execution_count": 7, + "metadata": { + "collapsed": true, + "jupyter": { + "source_hidden": false, + "outputs_hidden": false + }, + "nteract": { + "transient": { + "deleting": false + } + }, + "gather": { + "logged": 1617550079861 + } + } + }, + { + "cell_type": "code", + "source": [ + "number_of_classes = 47\r\n", + "\r\n", + "y1 = tf.keras.utils.to_categorical(y1, number_of_classes)\r\n", + "y2 = tf.keras.utils.to_categorical(y2, number_of_classes)" + ], + "outputs": [], + "execution_count": 26, + "metadata": { + "collapsed": true, + "jupyter": { + "source_hidden": false, + "outputs_hidden": false + }, + "nteract": { + "transient": { + "deleting": false + } + }, + "gather": { + "logged": 1617550240254 + } + } + }, + { + "cell_type": "code", + "source": [ + "# Normalise and reshape data\r\n", + "train_images = x1 / 255.0\r\n", + "test_images = x2 / 255.0\r\n", + "\r\n", + "train_images_number = train_images.shape[0]\r\n", + "train_images_height = 28\r\n", + "train_images_width = 28\r\n", + "train_images_size = train_images_height*train_images_width\r\n", + "\r\n", + "train_images = train_images.reshape(train_images_number, train_images_height, train_images_width, 1)\r\n", + "\r\n", + "test_images_number = test_images.shape[0]\r\n", + "test_images_height = 28\r\n", + "test_images_width = 28\r\n", + "test_images_size = test_images_height*test_images_width\r\n", + "\r\n", + "test_images = test_images.reshape(test_images_number, test_images_height, test_images_width, 1)" + ], + "outputs": [], + "execution_count": 27, + "metadata": { + "collapsed": true, + "jupyter": { + "source_hidden": false, + "outputs_hidden": false + }, + "nteract": { + "transient": { + "deleting": false + } + }, + "gather": { + "logged": 1617550242402 + } + } + }, + { + "cell_type": "code", + "source": [ + "model = Sequential([\r\n", + "Conv2D(32,(5,5), input_shape=(28, 28, 1),activation=\"relu\"), \r\n", + "MaxPooling2D(pool_size = (2,2)),\r\n", + "Dropout(0.3),\r\n", + "Flatten(),\r\n", + "Dense(128,activation = \"relu\"),\r\n", + "Dense(number_of_classes,activation = \"softmax\")\r\n", + "\r\n", + "])\r\n", + "model.compile(optimizer='adam',\r\n", + " loss='categorical_crossentropy',\r\n", + " metrics=['accuracy'])\r\n", + "\r\n" + ], + "outputs": [], + "execution_count": 32, + "metadata": { + "collapsed": true, + "jupyter": { + "source_hidden": false, + "outputs_hidden": false + }, + "nteract": { + "transient": { + "deleting": false + } + }, + "gather": { + "logged": 1617550749703 + } + } + }, + { + "cell_type": "code", + "source": [ + "train_x,test_x,train_y,test_y = train_test_split(train_images,y1,test_size=0.2,random_state = 42)" + ], + "outputs": [], + "execution_count": 24, + "metadata": { + "collapsed": true, + "jupyter": { + "source_hidden": false, + "outputs_hidden": false + }, + "nteract": { + "transient": { + "deleting": false + } + }, + "gather": { + "logged": 1617550230654 + } + } + }, + { + "cell_type": "code", + "source": [ + "model.summary()" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Model: \"sequential_9\"\n", + "_________________________________________________________________\n", + "Layer (type) Output Shape Param # \n", + "=================================================================\n", + "conv2d_10 (Conv2D) (None, 24, 24, 32) 832 \n", + "_________________________________________________________________\n", + "max_pooling2d_10 (MaxPooling (None, 12, 12, 32) 0 \n", + "_________________________________________________________________\n", + "dropout_10 (Dropout) (None, 12, 12, 32) 0 \n", + "_________________________________________________________________\n", + "flatten_10 (Flatten) (None, 4608) 0 \n", + "_________________________________________________________________\n", + "dense_21 (Dense) (None, 128) 589952 \n", + "_________________________________________________________________\n", + "dense_22 (Dense) (None, 47) 6063 \n", + "=================================================================\n", + "Total params: 596,847\n", + "Trainable params: 596,847\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n" + ] + } + ], + "execution_count": 33, + "metadata": { + "collapsed": true, + "jupyter": { + "source_hidden": false, + "outputs_hidden": false + }, + "nteract": { + "transient": { + "deleting": false + } + }, + "gather": { + "logged": 1617550766235 + } + } + }, + { + "cell_type": "code", + "source": [ + "MCP = ModelCheckpoint('Best_points_nishanth.h5',verbose=1,save_best_only=True,monitor='val_accuracy',mode='max')\r\n", + "ES = EarlyStopping(monitor='val_accuracy',min_delta=0,verbose=0,restore_best_weights = True,patience=3,mode='max')\r\n", + "RLP = ReduceLROnPlateau(monitor='val_loss',patience=3,factor=0.2,min_lr=0.0001)\r\n" + ], + "outputs": [], + "execution_count": 34, + "metadata": { + "collapsed": true, + "jupyter": { + "source_hidden": false, + "outputs_hidden": false + }, + "nteract": { + "transient": { + "deleting": false + } + }, + "gather": { + "logged": 1617550779304 + } + } + }, + { + "cell_type": "code", + "source": [ + "history = model.fit(train_x,train_y,epochs=10,validation_data=(test_x,test_y),callbacks=[MCP,ES,RLP])" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Train on 90239 samples, validate on 22560 samples\n", + "Epoch 1/10\n", + "90080/90239 [============================>.] - ETA: 0s - loss: 0.8049 - accuracy: 0.7548\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", + "Epoch 00001: val_accuracy improved from -inf to 0.83076, saving model to Best_points_nishanth.h5\n", + "90239/90239 [==============================] - 30s 329us/sample - loss: 0.8043 - accuracy: 0.7549 - val_loss: 0.5012 - val_accuracy: 0.8308\n", + "Epoch 2/10\n", + "90208/90239 [============================>.] - ETA: 0s - loss: 0.4813 - accuracy: 0.8359\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", + "Epoch 00002: val_accuracy improved from 0.83076 to 0.84592, saving model to Best_points_nishanth.h5\n", + "90239/90239 [==============================] - 28s 308us/sample - loss: 0.4814 - accuracy: 0.8359 - val_loss: 0.4382 - val_accuracy: 0.8459\n", + "Epoch 3/10\n", + "90080/90239 [============================>.] - ETA: 0s - loss: 0.4140 - accuracy: 0.8562\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", + "Epoch 00003: val_accuracy improved from 0.84592 to 0.86002, saving model to Best_points_nishanth.h5\n", + "90239/90239 [==============================] - 28s 308us/sample - loss: 0.4140 - accuracy: 0.8561 - val_loss: 0.4062 - val_accuracy: 0.8600\n", + "Epoch 4/10\n", + "90048/90239 [============================>.] - ETA: 0s - loss: 0.3703 - accuracy: 0.8688\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", + "Epoch 00004: val_accuracy improved from 0.86002 to 0.86427, saving model to Best_points_nishanth.h5\n", + "90239/90239 [==============================] - 27s 303us/sample - loss: 0.3704 - accuracy: 0.8688 - val_loss: 0.3914 - val_accuracy: 0.8643\n", + "Epoch 5/10\n", + "90144/90239 [============================>.] - ETA: 0s - loss: 0.3406 - accuracy: 0.8760\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", + "Epoch 00005: val_accuracy did not improve from 0.86427\n", + "90239/90239 [==============================] - 27s 294us/sample - loss: 0.3405 - accuracy: 0.8760 - val_loss: 0.4003 - val_accuracy: 0.8617\n", + "Epoch 6/10\n", + "90048/90239 [============================>.] - ETA: 0s - loss: 0.3130 - accuracy: 0.8848\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", + "Epoch 00006: val_accuracy improved from 0.86427 to 0.86454, saving model to Best_points_nishanth.h5\n", + "90239/90239 [==============================] - 26s 293us/sample - loss: 0.3131 - accuracy: 0.8848 - val_loss: 0.3933 - val_accuracy: 0.8645\n", + "Epoch 7/10\n", + "90016/90239 [============================>.] - ETA: 0s - loss: 0.2956 - accuracy: 0.8887\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", + "Epoch 00007: val_accuracy improved from 0.86454 to 0.86817, saving model to Best_points_nishanth.h5\n", + "90239/90239 [==============================] - 27s 294us/sample - loss: 0.2956 - accuracy: 0.8887 - val_loss: 0.3872 - val_accuracy: 0.8682\n", + "Epoch 8/10\n", + "90176/90239 [============================>.] - ETA: 0s - loss: 0.2793 - accuracy: 0.8931\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", + "Epoch 00008: val_accuracy did not improve from 0.86817\n", + "90239/90239 [==============================] - 26s 290us/sample - loss: 0.2793 - accuracy: 0.8931 - val_loss: 0.4142 - val_accuracy: 0.8623\n", + "Epoch 9/10\n", + "90112/90239 [============================>.] - ETA: 0s - loss: 0.2624 - accuracy: 0.8989\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", + "Epoch 00009: val_accuracy did not improve from 0.86817\n", + "90239/90239 [==============================] - 26s 293us/sample - loss: 0.2626 - accuracy: 0.8989 - val_loss: 0.4085 - val_accuracy: 0.8641\n", + "Epoch 10/10\n", + "90080/90239 [============================>.] - ETA: 0s - loss: 0.2509 - accuracy: 0.9019\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", + "Epoch 00010: val_accuracy did not improve from 0.86817\n", + "90239/90239 [==============================] - 26s 291us/sample - loss: 0.2509 - accuracy: 0.9020 - val_loss: 0.4091 - val_accuracy: 0.8633\n" + ] + } + ], + "execution_count": 35, + "metadata": { + "collapsed": true, + "jupyter": { + "source_hidden": false, + "outputs_hidden": false + }, + "nteract": { + "transient": { + "deleting": false + } + }, + "gather": { + "logged": 1617551052423 + } + } + }, + { + "cell_type": "code", + "source": [ + "import seaborn as sns\r\n", + "q = len(history.history['accuracy'])\r\n", + "\r\n", + "plt.figsize=(10,10)\r\n", + "sns.lineplot(x = range(1,1+q),y = history.history['accuracy'], label='Accuracy')\r\n", + "sns.lineplot(x = range(1,1+q),y = history.history['val_accuracy'], label='Val_Accuracy')\r\n", + "plt.xlabel('epochs')\r\n", + "plt.ylabel('Accuray')" + ], + "outputs": [ + { + "output_type": "execute_result", + "execution_count": 36, + "data": { + "text/plain": "Text(0, 0.5, 'Accuray')" + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "execution_count": 36, + "metadata": { + "collapsed": true, + "jupyter": { + "source_hidden": false, + "outputs_hidden": false + }, + "nteract": { + "transient": { + "deleting": false + } + }, + "gather": { + "logged": 1617551066655 + } + } + }, + { + "cell_type": "code", + "source": [ + "test_loss, test_accuracy = model.evaluate(test_x,test_y)\r\n", + "print(f\"Test loss: {test_loss}\")\r\n", + "print(f\"Test accuracy: {test_accuracy}\")" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "22560/22560 [==============================] - 2s 88us/sample - loss: 0.3872 - accuracy: 0.8682\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", + "Test loss: 0.3871571917535988\n", + "Test accuracy: 0.8681737780570984\n" + ] + } + ], + "execution_count": 38, + "metadata": { + "collapsed": true, + "jupyter": { + "source_hidden": false, + "outputs_hidden": false + }, + "nteract": { + "transient": { + "deleting": false + } + }, + "gather": { + "logged": 1617551079827 + } + } + }, + { + "cell_type": "code", + "source": [ + "\r\n", + "my_lol_img = cv2.imread('A_img.png', cv2.IMREAD_GRAYSCALE)\r\n", + "my_lol_img = cv2.resize(my_lol_img, (28, 28))\r\n", + "my_img = my_lol_img[np.newaxis,...,np.newaxis]\r\n", + "my_img.shape" + ], + "outputs": [ + { + "output_type": "execute_result", + "execution_count": 42, + "data": { + "text/plain": "(1, 28, 28, 1)" + }, + "metadata": {} + } + ], + "execution_count": 42, + "metadata": { + "collapsed": true, + "jupyter": { + "source_hidden": false, + "outputs_hidden": false + }, + "nteract": { + "transient": { + "deleting": false + } + }, + "gather": { + "logged": 1617551169579 + } + } + }, + { + "cell_type": "code", + "source": [ + "fig, axes = plt.subplots(1, 2,figsize = (4,4))\r\n", + "fig.subplots_adjust(hspace=-0.7, wspace= 0.2)\r\n", + "for i,ax in enumerate(axes.flat):\r\n", + " ax.imshow(np.squeeze(my_img))\r\n", + " ax.text(6., -1.0, f'Letter A',fontsize = 20)\r\n", + " ax.get_xaxis().set_visible(False)\r\n", + " ax.get_yaxis().set_visible(False)\r\n", + " \r\n", + " \r\n", + "plt.show()" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "execution_count": 43, + "metadata": { + "collapsed": true, + "jupyter": { + "source_hidden": false, + "outputs_hidden": false + }, + "nteract": { + "transient": { + "deleting": false + } + }, + "gather": { + "logged": 1617551176446 + } + } + }, + { + "cell_type": "code", + "source": [ + "predict = model.predict(my_img)\r\n", + "answer = np.argmax(predict)\r\n", + "class_mapping = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabdefghnqrt'\r\n", + "print(class_mapping[answer+1])\r\n" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "R\n" + ] + } + ], + "execution_count": 44, + "metadata": { + "collapsed": true, + "jupyter": { + "source_hidden": false, + "outputs_hidden": false + }, + "nteract": { + "transient": { + "deleting": false + } + }, + "gather": { + "logged": 1617551178605 + } + } + }, + { + "cell_type": "code", + "source": [], + "outputs": [], + "execution_count": null, + "metadata": { + "collapsed": true, + "jupyter": { + "source_hidden": false, + "outputs_hidden": false + }, + "nteract": { + "transient": { + "deleting": false + } + } + } + } + ], + "metadata": { + "kernel_info": { + "name": "python3" + }, + "kernelspec": { + "name": "python3", + "language": "python", + "display_name": "Python 3" + }, + "language_info": { + "name": "python", + "version": "3.6.9", + "mimetype": "text/x-python", + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "pygments_lexer": "ipython3", + "nbconvert_exporter": "python", + "file_extension": ".py" + }, + "microsoft": { + "host": { + "AzureML": { + "notebookHasBeenCompleted": true + } + } + }, + "nteract": { + "version": "nteract-front-end@1.0.0" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file