{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# define architecture\n", "# take batch and do\n", "# * read image\n", "# * preprocess\n", "# * (optional) rotate, etc\n", "# * feed into NN\n", "# train and show cost per epoch \n", "# test to show accuracy" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Using TensorFlow backend.\n" ] } ], "source": [ "%pylab inline\n", "\n", "import os\n", "import numpy as np\n", "import pandas as pd\n", "from scipy.misc import imread\n", "from sklearn.metrics import accuracy_score\n", "\n", "import tensorflow as tf\n", "import keras" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# To stop potential randomness\n", "seed = 128\n", "rng = np.random.RandomState(seed)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "root_dir = os.path.abspath('../..')\n", "data_dir = os.path.join(root_dir, 'data')\n", "sub_dir = os.path.join(root_dir, 'sub')\n", "\n", "# check for existence\n", "os.path.exists(root_dir)\n", "os.path.exists(data_dir)\n", "os.path.exists(sub_dir)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [], "source": [ "train = pd.read_csv(os.path.join(data_dir, 'Train', 'train.csv'))\n", "test = pd.read_csv(os.path.join(data_dir, 'Test.csv'))\n", "\n", "sample_submission = pd.read_csv(os.path.join(data_dir, 'Sample_Submission.csv'))" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
filenamelabel
00.png4
11.png9
22.png1
33.png7
44.png3
\n", "
" ], "text/plain": [ " filename label\n", "0 0.png 4\n", "1 1.png 9\n", "2 2.png 1\n", "3 3.png 7\n", "4 4.png 3" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train.head()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
filename
049000.png
149001.png
249002.png
349003.png
449004.png
\n", "
" ], "text/plain": [ " filename\n", "0 49000.png\n", "1 49001.png\n", "2 49002.png\n", "3 49003.png\n", "4 49004.png" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test.head()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nra7rqJTWt6hCdZ1fZhaOzabSgKnXqbXZbKJjs37x4Ruk7bihhj+fr6GXj0HCfwBe9LDCZrHFr6oq\nEj2s7XQ6PelNB0Gh/RXy8HhfiB4/yzfwSAkydd80TXDb/cK+HgvuPqft+OfI4j8OCf+BeNGbxcJP\niZ5r2tnSc8CtKIqoR12n0wlHdvEz+CANz6ZLFeXwta7rk727f+29AP95U56ExH9fJPwH4UXPlhjC\nN4tFD1HxwAmOiHNgEKLH/h7fwz+Hg2y8fIcf/r66rqPgna/Fh1vvg3++hZaGXj4WCf+BeNGb/WPx\nzf4RPZfcTiaTEMjjCTP8nl70KO/lh4PPHPh5dW2L9/FcjosrB/J44Wv8kEp1Chb3QcJ/AnxwDxY5\n1RG3qqrIveeHB9fTs+jxgOCf1zatNjWqml8j08AluHy/Xq9PvAR+nbLwEv39kfCfDLbIqeq6/X5/\n0jTTd8Bp68B7OByi1l08p47XuZ5+LHxeHMjjYGCqC7B4PBL+E3JJ1B/7flTr4Xu2220IAlZVZZPJ\nxD4+PkL6D806vXW/1NVH+6zU0VpYdEXtnx8J/4lh0ftGlrDYLHqk25BW85Nux+Nx1KUXy79uc9MR\nC+BDONwCW6m6n4OE/+R48UP4sPipbACPqPbXbrfbKm7Os7c1vOQeen6eva/IS1UBiudAwn9S2tx9\nFj6KcngmXVVVyQ48aKqBOEGbuD8r4uGzA37L4Ovula57XiT8JyZV1svC96Lnrru48sIBHl+e69tn\nnZvN53P//j6VrpO1fz4k/CeHBcOuPou+rXFG6or3bGuY2XZQh8XfFrX3dfd8lfCfi853/w/pdDr6\nP35DUs00OId/rsEGH8v9TJypwppU0c05yy6xP57j8Xjaxtlk8X8csp7iFnQ//xYhxP8bEr4QGSLh\nC5EhEr4QGSLhC5EhEr4QGSLhC5EhEr4QGSLhC5EhEr4QGSLhC5EhEr4QGSLhC5EhEr4QGSLhC5Eh\nEr4QGSLhC5EhEr4QGSLhC5Eh395sUwjxfMjiC5EhEr4QGSLhC5EhEr4QGSLhC5EhEr4QGSLhC5Eh\nEr4QGSLhC5EhEr4QGSLhC5EhEr4QGSLhC5EhEr4QGSLhC5EhEr4QGSLhC5EhEr4QGSLhC5EhEr4Q\nGfJfo4vCdQY/LsgAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "img_name = rng.choice(train.filename)\n", "filepath = os.path.join(data_dir, 'Train', 'Images', 'train', img_name)\n", "\n", "img = imread(filepath, flatten=True)\n", "\n", "pylab.imshow(img, cmap='gray')\n", "pylab.axis('off')\n", "pylab.show()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": true }, "outputs": [], "source": [ "temp = []\n", "for img_name in train.filename:\n", " image_path = os.path.join(data_dir, 'Train', 'Images', 'train', img_name)\n", " img = imread(image_path, flatten=True)\n", " img = img.astype('float32')\n", " temp.append(img)\n", " \n", "train_x = np.stack(temp)\n", "\n", "train_x /= 255.0 \n", "train_x = train_x.reshape(-1, 784).astype('float32')\n", "\n", "temp = []\n", "for img_name in test.filename:\n", " image_path = os.path.join(data_dir, 'Train', 'Images', 'test', img_name)\n", " img = imread(image_path, flatten=True)\n", " img = img.astype('float32')\n", " temp.append(img)\n", " \n", "test_x = np.stack(temp)\n", "\n", "test_x /= 255.0\n", "test_x = test_x.reshape(-1, 784).astype('float32')\n", "\n", "train_y = keras.utils.np_utils.to_categorical(train.label.values)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true }, "outputs": [], "source": [ "split_size = int(train_x.shape[0]*0.7)\n", "\n", "train_x, val_x = train_x[:split_size], train_x[split_size:]\n", "train_y, val_y = train_y[:split_size], train_y[split_size:]" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# define vars\n", "input_num_units = 784\n", "hidden_num_units = 50\n", "output_num_units = 10\n", "\n", "epochs = 5\n", "batch_size = 128" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from keras.models import Sequential\n", "from keras.layers import Dense" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": true }, "outputs": [], "source": [ "model = Sequential([\n", " Dense(output_dim=hidden_num_units, input_dim=input_num_units, activation='relu'),\n", " \n", " Dense(output_dim=output_num_units, input_dim=hidden_num_units, activation='softmax'),\n", "])" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": true }, "outputs": [], "source": [ "model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "____________________________________________________________________________________________________\n", "Layer (type) Output Shape Param # Connected to \n", "====================================================================================================\n", "dense_1 (Dense) (None, 50) 39250 dense_input_1[0][0] \n", "____________________________________________________________________________________________________\n", "dense_2 (Dense) (None, 10) 510 dense_1[0][0] \n", "====================================================================================================\n", "Total params: 39760\n", "____________________________________________________________________________________________________\n" ] } ], "source": [ "model.summary()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train on 34300 samples, validate on 14700 samples\n", "Epoch 1/5\n", "34300/34300 [==============================] - 2s - loss: 0.5869 - acc: 0.8442 - val_loss: 0.3317 - val_acc: 0.9090\n", "Epoch 2/5\n", "34300/34300 [==============================] - 1s - loss: 0.2671 - acc: 0.9244 - val_loss: 0.2548 - val_acc: 0.9293\n", "Epoch 3/5\n", "34300/34300 [==============================] - 1s - loss: 0.2135 - acc: 0.9396 - val_loss: 0.2182 - val_acc: 0.9398\n", "Epoch 4/5\n", "34300/34300 [==============================] - 1s - loss: 0.1820 - acc: 0.9485 - val_loss: 0.2020 - val_acc: 0.9418\n", "Epoch 5/5\n", "34300/34300 [==============================] - 1s - loss: 0.1605 - acc: 0.9548 - val_loss: 0.1848 - val_acc: 0.9468\n" ] } ], "source": [ "trained_model = model.fit(train_x, train_y, nb_epoch=epochs, batch_size=batch_size, validation_data=(val_x, val_y))" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "20864/21000 [============================>.] - ETA: 0s" ] } ], "source": [ "pred = model.predict_classes(test_x)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Prediction is: 5\n" ] }, { "data": { "image/png": "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\nATUzzBHuvzA8AAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "img_name = rng.choice(test.filename)\n", "filepath = os.path.join(data_dir, 'Train', 'Images', 'test', img_name)\n", "\n", "img = imread(filepath, flatten=True)\n", "\n", "test_index = int(img_name.split('.')[0]) - train.shape[0]\n", "\n", "print \"Prediction is: \", pred[test_index]\n", "\n", "pylab.imshow(img, cmap='gray')\n", "pylab.axis('off')\n", "pylab.show()" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": true }, "outputs": [], "source": [ "sample_submission.filename = test.filename; sample_submission.label = pred" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": true }, "outputs": [], "source": [ "sample_submission.to_csv(os.path.join(sub_dir, 'sub02.csv'), index=False)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "49000" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [conda env:keras]", "language": "python", "name": "conda-env-keras-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.12" } }, "nbformat": 4, "nbformat_minor": 0 }