{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Minimal Lasagne Demo (multilayer perceptron)\n", "In this script we build a small multilayer perceptron with two hidden layers having 500 and 50 neurons each for classifying the MNIST database of handwritten digits. \n", "\n", "\n", "## Loading the data\n", "While the original dataset has 70'000 examples of hand written digits (see below for loading) we restrict us here to the first 4000 digits so that an interactive session is possible. The subset of the first 4000 MNIST examples is provided in the repository for convenience. \n", "\n", "### Data-Format\n", "For Lasagne all images must be provided in a 4-dimensional array X with the following dimensions (number of images, number of colors, x, y) and the labels in a vector y of same size. So X[1,0,1,2] would be the image number 1, the color channel 0 and the pixel x = 1 and y=2." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "((4000, 1, 28, 28), (4000,), 28)" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%matplotlib inline\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import matplotlib.image as imgplot\n", "\n", "import cPickle as pickle\n", "import gzip\n", "with gzip.open('mnist_4000.pkl.gz', 'rb') as f:\n", " (X,y) = pickle.load(f)\n", "PIXELS = len(X[0,0,0,:])\n", "X.shape, y.shape, PIXELS" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "1.0584806" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X[0,0,15,16] " ] }, { "cell_type": "markdown", "metadata": {}, "source": [] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "#from create_mnist import load_data_2d\n", "#X,y,PIXELS = load_data_2d('/home/dueo/dl-playground/data/mnist.pkl.gz')\n", "#X.shape, y" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Normalization of the data\n", "The data is normalized so that each pixel has mean 0 and standard deviation close to 1 (calculated over all images). This has been done with the following code (the 0th axis is along the images): \n", "```\n", " Xmean = X.mean(axis = 0)\n", " XStd = np.sqrt(X.var(axis=0))\n", " X = (X-Xmean)/(XStd + 0.01)\n", "```\n", "Note that with this normalization the mean values of all pixels of a single image need not be 0.\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(0.046298616, 0.0, 0.0, 0.93183041)" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.mean(X[0,0,:,:]),np.mean(X[:,0,1,1]),np.mean(X[:,0,2,1]),np.var(X[:,0,10,10])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Let s plot the first few images and label" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([5, 0, 4, 1, 9, 2, 1, 3, 1, 4], dtype=int32)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y[0:10]" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "image/png": [ "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\n", "wY0bN2rjmzZtMurTyUopU8lwnvjjH/+ojUufg2mu6Nj1XetkFbBd60vq1mhUSl7TUbdPdqzHl0iW\n", "k6WtW7cu0cX37t17vzPDAZIbOQEMRE4gHfAEbwAAAAtMlgAAACwwWQIAALDAZAkAAMDCkB5KOdzZ\n", "tT6OVJ2Qm5urjUuVQufOnYuISetRSetXSfskMa2eSUS1TSpW1Q2FXe+H7jiXKjW3bdumjbe3t2vj\n", "mZmZ2nhVVZU2fv3112vjumobqRpOikvVcFKumFT4KKXPUSnHjx8/ro0jOtJn8Pbbb2vj48bp1+/N\n", "ysqKiNlVOeY0kypW03UnpfanTp3SxqU1CnXrVA6X91fClSUAAAALTJYAAAAsMFkCAACwwGQJAADA\n", "ApMlAAAAC0lfDSdV/ti1Lo+TpLFIlT8+ny8idvLkSW1bqUru6quv1salqhA71h9ymvQ+JtMYh8Lp\n", "ikSTnPjss8+08Y8++kgbHz9+vDb+4x//WBufNGmSNi5VOenWk5Kq3qRjX1eZo5Rc+SdV+Ejvu669\n", "tD+mVUjJ9H2WzNra2rRxqSozJydnyH06/dmYHBOmY5GqNXt6erTxs2fPauMmleBSHtqxpqXVWOzC\n", "lSUAAAALTJYAAAAsMFkCAACwwGQJAADAApMlAAAAC0lfDWeXRFSVSH1KVTs33HBDROzEiRPatlJ1\n", "ghSXKg6kapFESPWqt0Qxqap57bXXjLYxefJkbXzKlCnauHQcmlS4SWu9jRo1ShuXjh9pLHZUiEqV\n", "P7rqPitUyUVHWqNwxowZ2nh/f79jY7lw4YJRe92aoErJYxwxYkTU25BIx4+UW6bHm3SOG864sgQA\n", "AGCByRIAAIAFJksAAAAWmCwBAABYsJwsLVu27FW32+0vLi4+Eo6tWbNmTUFBwZdlZWXNZWVlzbt3\n", "737Q+WECyYGcAAYiJ5AOLKvhHn/88deefvrpTUuXLt0SjrlcrtCKFSteXLFixYvOD294sGv9urFj\n", "x0bEpKoCv9+vjUtr/khVdVJ7aS05XSVGOhmOOSGtR7Z///6I2PHjx7Vt3W63Nu7xeLRx07XRpOox\n", "3fEmtZVIVUVSXFozTspzXYWbVFVUUlKijQ/n6rZkyAlpjcLRo0dr40eOHImISeuiSRXDUgWndFyZ\n", "ng+k71rdPl177bXatlKFqHRekcZy7NgxbVyiO/5N14BLNpZXlubMmXMgKyura3A8FAoN38wGhoCc\n", "AAYiJ5AOYnrO0qZNm57esmXL0vLy8kMbNmx4dty4cd2D29TU1MwOz7ArKipURUXFEIcKRM/r9Sqv\n", "1xu3/qLJic2bN9/c3f2PsMfjEa/KAE5obW1Vra2tcesvmpyora2dHr6Sx3kC8WR6jjCeLD311FP/\n", "8ctf/vLXSin1wgsv/Puzzz67ob6+vnpwu9WrV7/X29s723T7gB0Gf/HW1dU51le0ObF8+fLDPp+v\n", "zLGBABYGT9AbGxsd6yvanFi1atXRYDA43bGBAILB54j169dbtjeuhsvNzT3hcrlCLpcr9MQTT/z+\n", "4MGDs8yHCaQOcgIYiJxAqjG+stTR0ZGfn5/foZRSO3bsWHBpBYQTTG98tONGSdPlDkyX6TCJS8sj\n", "XH/99dq4tNyJtBxAV1fErQZKKfnGb92SLOku3jkhkW4IlY7PYDAYEZOWapBuFC0r018oM1mqQSn5\n", "pmrddvr6+oz6lOLSdqT3YPv27dq4bp/Ky8u1bX/+859r46ZL+iT7DeFO5YS03x9//LE2vm/fPm08\n", "KysrIibd9CwVFEhx6cZvXQGPUnIxgHRzuq5IQiqckEjHm3Q+kHLItNhiOLPc0yVLlmzdv3//XadO\n", "ncouLCxs+9WvfvVv+/btu7ulpaXU5XKFJk6cePyVV155Ml6DBRKNnAAGIieQDiwnS1u3bl0yOLZs\n", "2bJXnRsOkNzICWAgcgLpgCd4AwAAWGCyBAAAYIHJEgAAgIVheyt7IqpB7KqSM3nsux1LpiglV8NJ\n", "pGq4QCCgjUvVUiZMK4LSlekxIcV1FTRS1Yt0zEpLQUjbseMzlrYhVQRJY5eq3v70pz9p47t379bG\n", "dUttLF68WNtWqrjSVSYqZV+VXKrnlrTf9913nzZuUlFmkj9W7U3j0mfm5LIh586dMxqLtCxWKuLK\n", "EgAAgAUmSwAAABaYLAEAAFhgsgQAAGCByRIAAICFYVsN5ySn12kyqaqTKnakqrSvv/5aGzetoJDW\n", "K7rmmmu0cWltL8TOrqoak2oeqa20Bpx0XJlWgkrHjy5ueqx9+eWX2viuXbu0ca/Xq41L78Hjjz8e\n", "Eevt7dW2leJ2VTiletVbKnKyQtSuqnFpO1I1rJMSdYxzZQkAAMACkyUAAAALTJYAAAAsMFkCAACw\n", "wGQJAADAAtVwGnZVG0mkdaC6u7sjYtIabaYVQdI6RtJ2RowYoY2bVCKYrqWH6DhZDZeRkaFt+8EH\n", "H0S9jVji0vGmi0tt9+/fr42/9dZb2vhXX32ljd96663a+MMPP6yN63JUqm6T4lJOSPlJDg2UiLVC\n", "JaZjsSOf7To32bW2oO44Nz0fJNsxzpUlAAAAC0yWAAAALDBZAgAAsMBkCQAAwILlZKmtra3wnnvu\n", "edvj8bTOmDHjo5deeuknSil15syZ8XPnzv3z1KlTP5k3b96e7u7ucfEZLpBY5AQwEDmBdOCyuuO8\n", "s7Mzr7OzM6+0tLQlEAhk3nLLLf/b1NRU+dprrz2enZ19auXKlXXr1q17rqurK2vt2rXPf7tRlysU\n", "CARe7O3tXTHkARpU8pjGpaoa0z6lipWzZ89q4z09Pdp4f39/1GMxXXtr5MiR2nhWVpY2Pnr0aG1c\n", "N0al9JULppU/TlZLZGdnq1AoNOSSmaHkxKFDh+p9Pl91tH1Jx9uVV+qLWKX1/EaNGqWN69ZAq6+v\n", "17bNycnRxr/3ve9p4/fee682fu2112rj0vptLS0tEbHOzk5tW101qVJKjR07VhvPy8vTxm+77TZt\n", "3O12a+O69RilNRqlSti+vj6juMlaekrpc2XRokUJz4menp7twWBw0VDHIOWKyXe56Tak84fpdpxc\n", "01EifXdKedjV1aWNS98Lupyzq0LUqfNETk6OZT5YXlnKy8vrLC0tbVFKqczMzMC0adP+0t7ePmHn\n", "zp3zq6qqGpRSqqqqqqGpqakyqtEAwxw5AQxETiAdRP2cJZ/PV9Tc3Fx22223ve/3+91ut9uvlFJu\n", "t9vv9/sj/slVU1MzO3wVoqKiQlVUVNg2aOByvF6vuHq8XUxzYvPmzTeHr354PB7l8XgcHR9wqdbW\n", "VtXa2upoH6Y5UVtbOz18NYzzBOLJ9BwR1WQpEAhkLly48I2NGzf+dMyYMQN+W3K5XCGXyxVxnWv1\n", "6tXv9fb2zo56JICNBn/x1tXV2br9WHJi+fLlh30+X5mtAwGiNHiC3tjYaOv2Y8mJVatWHQ0Gg9Nt\n", "HQgQhcHniPXr11u2v2w1XF9fX8bChQvfeOyxx/6zsrKySal//Cuhs7MzTymlOjo68nNzc08MbdjA\n", "8EFOAAORE0h1lpOlUCjkqq6urp8+ffrRZ5555jfh+Pz583c2NDRUKaVUQ0NDVTg5gFRHTgADkRNI\n", "B5bVcO++++4dd9555zszZ878MHwJtba2dtWsWbMOLl68uPGLL764oaioyNfY2Lh43Lhx35aiDJdq\n", "OKmtdHe+VAl28uRJbVyqZDGtltCRKpzGjdNX50rVbVL1jGnlgi7udJWDCbuq4YaSE05Xw0kVj1KV\n", "nG4ttddee03bNj8/XxuXqimlSjOpGk6qZNPtq5QnN9xwg1Fcqtg7d+6cNi6t09jb2xsRu3Dhgrat\n", "VA0nfbeYVr2Z5Jxd1XBDyQm7quHsOE84XQ1nGjfdJx3pu1M6Ttra2rTx06dPa+NSNZzue8HpajiJ\n", "XdVwlvcs3XHHHe9+88032k9m796990c1AiCFkBPAQOQE0gFP8AYAALDAZAkAAMACkyUAAAALTJYA\n", "AAAsRP0E72Rjeqe8rgpFuvPf9G57qTpJqpaQXH311RExqdpI11YpeexOVr1JcSer29KBaSWL9BlL\n", "lVZTp06NiEnHWyAQ0MYzMzO1cam6TaoQzcjI0MZ1x3lZmf65nt///ve1cWmdNmmfpPa6qjel9JVv\n", "dq3p5nSlUKozeZ+ktlJVWqLea5Oxm36PS8etlBNSlZyu6tX0WDbl9OfBlSUAAAALTJYAAAAsMFkC\n", "AACwwGQJAADAQtLf4C3dtHX48GFt/MiRI9r42LFjI2Ljx4/XtjVdMsT0xrLrrrtOG8/Ozo6ISTcX\n", "mt7kK8VNbxQ1uUnPqcfSpzvTm/ilmzZzc3MjYqtXr9a23bt3rzb+zjvvRL1tq7E88MAD2vidd94Z\n", "EZPytqenRxuXbk6VliQxjev2yXT5EruWgsBAJt9v0nudiLEoZbb8lV03eEu5IhVsmBzPdp0PEnXs\n", "c2UJAADAApMlAAAAC0yWAAAALDBZAgAAsMBkCQAAwMKwrYarrq7WxqUlTH7wgx9ExG6++WZt22nT\n", "pmnjUhXOVVddpY1PmDBBG5eWR9FV0JhWOUjsWjbBjgoFKnmiY9dnb/KZSZWgS5Ys0caXLl2qjUvL\n", "l0hxk6WBTp48qY2bVgOaxk0q3JyueiOHBjKtKNO93ybVZ1Z9Sp/lFVckz7UJaexSfra3t2vjugpu\n", "afvD/ZhNnk8PAAAgCTFZAgAAsMBkCQAAwAKTJQAAAAuWk6W2trbCe+65522Px9M6Y8aMj1566aWf\n", "KKXUmjVr1hQUFHxZVlbWXFZW1rx79+4H4zNcILHICWAgcgLpwGV1h3pnZ2deZ2dnXmlpaUsgEMi8\n", "5ZZb/repqamysbFx8ZgxY86uWLHiRe1GXa5QIBB4sbe3d4VTAze9s15X6SBVJ5hWRUjtTbdjIlHr\n", "7AzXqrfs7GwVCoWG/IEMJScOHTpU7/P59GWcNpCON+k418WltlIFp1TFJsXtyDm71sGya31Fk3Ww\n", "kqnqbdGiRQnPiZ6enu3BYHDRUMdgyuR4M/1+t+v8YQen1+d08riN9/kjJyfHMh8sHx2Ql5fXmZeX\n", "16mUUpmZmYFp06b9pb29fYJSypYkA4YbcgIYiJxAOoj6OUs+n6+oubm57Pbbb/8fr9dbsWnTpqe3\n", "bNmytLy8/NCGDRueHTdu3IBliWtqamaHn0tSUVGhKioqbB46IPN6vcrr9Trah2lObN68+ebw6t0e\n", "j0d5PB5HxwdcqrW1VbW2tjrah2lO1NbWTg9fseM8gXgyPUdY/gwXFggEMu++++59v/jFL/5PZWVl\n", "04kTJ3JzcnJOKqXUCy+88O8dHR359fX13/68wM9wsW3HBD/DmbHrZ7iwWHKCn+H4GS4Vf4YLiyUn\n", "+BlueJwnTNun4s9wl62G6+vry1i4cOEbjz766OuVlZVNSimVm5t7wuVyhVwuV+iJJ574/cGDB2fZ\n", "OWggmZETwEDkBFKd5WQpFAq5qqur66dPn370mWee+U043tHRkR/+7x07diwoLi4+4uQggWRBTgAD\n", "kRNIB5b3LHm93orXX3/90ZkzZ35YVlbWrJRSNTU1q7du3bqkpaWl1OVyhSZOnHj8lVdeeTI+w/0n\n", "Oy5dml5ClPo0bW8Huy5ROn2ZNtUkc07YsZacaU5I66VJP8M5mROmP7eZbsfkvXFybcVkk8w5IdG9\n", "36bf7ybbtpKK5wmntpFIUd2zZLzRONyzZAenf1tOxSQYrge83fcsmYrHPUsWfWvjuvuHTO97ktoz\n", "WUr+yZLd9yyZSuQ9SzqJ+n5PxfOEU9tw0pDvWQIAAEhnTJYAAAAsMFkCAACwwGQJAADAQtRP8E5F\n", "w+HmZrsqNJC+pGNF95BF6XiTHsgoSaZiCEm6PJAV0UnU+SARx76E41bm+JUlp5ecSKZ+06XPRPWb\n", "qH21m9NLTiRTvx999FFa9JmofhN1LNmN7zH6TPZ+mSzR57Dpl8nS8Os3XSZoSqXP++sEvsfoM9n7\n", "5Z4lAAAAC0yWAAAALDj2BG/bNwoMUaKfVpyovgEJOQH8k1U+ODJZAgAASBX8DAcAAGCByRIAAIAF\n", "JksAAAAWHJ0s7d69+8Gbbrrpr1OmTDm2bt2655zs61JFRUW+mTNnflhWVtY8a9asg070sWzZslfd\n", "bre/uLj4SDh25syZ8XPnzv3z1KlTP5k3b96e7u7ucU73uWbNmjUFBQVflpWVNZeVlTXv3r37QTv7\n", "bGtrK7znnnve9ng8rTNmzPjopZde+olSzu+r1K/T++s0coKcsLtfciI25IR90iInQqGQI6/+/v4R\n", "kyZN+vT48eNFwWAwo6SkpOXo0aPTnOrv0ldRUdHx06dPj3eyj3feeWfO4cOHy2bMmHEkHPvZz35W\n", "t27dupWhUEitXbv2ueeee26t032uWbPm3zZs2LDCqf3s6OjIa25uLg2FQurs2bOZU6dO/fjo0aPT\n", "nN5XqV+n99fJFzlBTjjRLzkR24ucsO+VDjnh2JWlgwcPzpo8efKnRUVFvoyMjL5HHnnkv998882H\n", "nOpvsJDydVO9AAADPklEQVTDJbFz5sw5kJWV1XVpbOfOnfOrqqoalFKqqqqqoampqdLpPpVydl/z\n", "8vI6S0tLW5RSKjMzMzBt2rS/tLe3T3B6X6V+lUpsufNQkBPkhBP9KkVOxIqcsEc65IRjk6X29vYJ\n", "hYWFbeE/FxQUfBneCae5XK7Q/fffv7e8vPzQ7373ux/Fo0+llPL7/W632+1XSim32+33+/3uePS7\n", "adOmp0tKSj6orq6ut/sy56V8Pl9Rc3Nz2W233fZ+PPc13O/tt9/+P0rFb3/tRk6QE3b3S07Ejpxw\n", "RqrmhGOTpUQ+cMzr9VY0NzeX7dq16zsvv/zyvxw4cGBOvMfgcrlC8XgPnnrqqf84fvz4xJaWltL8\n", "/PyOZ599doMT/QQCgcyFCxe+sXHjxp+OGTPm7KV/5+S+BgKBzEWLFm3fuHHjTzMzMwPx2l8nkBPk\n", "hF39khNDR07YL5VzwrHJ0oQJE9rb2toKw39ua2srLCgo+NKp/i6Vn5/foZRSOTk5JxcsWLDj4MGD\n", "s+LRr9vt9nd2duYppVRHR0d+bm7uCaf7zM3NPRE+CJ944onfO7GvfX19GQsXLnzjscce+8/Kysom\n", "peKzr+F+H3300dfD/cZjf51CTpATdvVLTgwdOWGvVM8JxyZL5eXlh44dOzbF5/MVBYPBkdu2bXt4\n", "/vz5O53qL+z8+fOjz549O0Yppc6dO3fNnj175l1aFeCk+fPn72xoaKhSSqmGhoaq8AfnpI6Ojvzw\n", "f+/YsWOB3fsaCoVc1dXV9dOnTz/6zDPP/CYcd3pfpX6d3l8nkRPkhBP9khPmyAlyIpbOHHu99dZb\n", "35k6derHkyZN+rSmpmaVk32FX59//vnEkpKSlpKSkhaPx/ORU/0+8sgjW/Pz8/+ekZERLCgoaHv1\n", "1VcfP3369Pj77rtv75QpUz6ZO3funq6urnFO9llfX7/sscce21JcXPzhzJkzP3jooYeaOjs73Xb2\n", "eeDAgTtcLtc3JSUlLaWlpc2lpaXNu3btetDpfdX1+9Zbb33H6f11+kVOkBN29ktOxPYiJ8gJ0xdr\n", "wwEAAFjgCd4AAAAWmCwBAABYYLIEAABggckSAACABSZLAAAAFpgsAQAAWPj/HxsGXCPTZOcAAAAA\n", "SUVORK5CYII=\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize=(10,30))\n", "for i in range(3):\n", " a=fig.add_subplot(1,3,(i+1))\n", " plt.imshow(-X[i,0,:,:], interpolation='none',cmap=plt.get_cmap('gray'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that the backgound is not uniform. That is due to the batchnormalization." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Our first simple network\n", "Let's define a MLP. First we load the necessary libraries and then define the network. \n", "#### Definition of the network\n", "There are several ways to define a network in Lasagne. We use the easiest method using the `NeuralNet` class from the `nolearn.lasagne` package. Other ways are detailed in the examples [https://github.com/Lasagne/Lasagne/blob/master/examples/]\n", " of the Lasagne library. \n" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from lasagne import layers\n", "from lasagne import nonlinearities\n", "from nolearn.lasagne import NeuralNet\n", "\n", "net1 = NeuralNet(\n", " # Geometry of the network\n", " layers=[\n", " ('input', layers.InputLayer),\n", " ('hidden1', layers.DenseLayer),\n", " ('hidden2', layers.DenseLayer),\n", " ('output', layers.DenseLayer),\n", " ],\n", " input_shape=(None, 1, PIXELS, PIXELS), #None in the first axis indicates that the batch size can be set later\n", " hidden1_num_units=500,\n", " hidden2_num_units=50,\n", " output_num_units=10, output_nonlinearity=nonlinearities.softmax,\n", "\n", " # learning rate parameters\n", " update_learning_rate=0.01,\n", " update_momentum=0.9,\n", " regression=False,\n", " # We only train for 10 epochs\n", " max_epochs=100,\n", " verbose=1,\n", "\n", " # Training test-set split\n", " eval_size = 0.2\n", " )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "####Training of the net. \n", "\n", "After the definition of the network the network has to be trained. Therefore the data is split automatically into 80% training set and 20% test set (controlled by `eval_size=0.2`). Since it takes quite a while to finish an epoch (at least with a CPU), we reduce the data to 1000 samples (800 for training and 200 for testing)." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " InputLayer \t(None, 1, 28, 28) \tproduces 784 outputs\n", " DenseLayer \t(None, 500) \tproduces 500 outputs\n", " DenseLayer \t(None, 50) \tproduces 50 outputs\n", " DenseLayer \t(None, 10) \tproduces 10 outputs\n", "\n", " Epoch | Train loss | Valid loss | Train / Val | Valid acc | Dur\n", "--------|--------------|--------------|---------------|-------------|-------\n", " 1 | \u001b[94m 2.187187\u001b[0m | \u001b[32m 1.725215\u001b[0m | 1.267776 | 50.21% | 0.1s\n", " 2 | \u001b[94m 1.230878\u001b[0m | \u001b[32m 1.118347\u001b[0m | 1.100622 | 72.76% | 0.1s\n", " 3 | \u001b[94m 0.685538\u001b[0m | \u001b[32m 0.766687\u001b[0m | 0.894156 | 76.81% | 0.1s\n", " 4 | \u001b[94m 0.419294\u001b[0m | \u001b[32m 0.609308\u001b[0m | 0.688148 | 79.44% | 0.1s\n", " 5 | \u001b[94m 0.292125\u001b[0m | \u001b[32m 0.533182\u001b[0m | 0.547890 | 82.32% | 0.1s\n", " 6 | \u001b[94m 0.218402\u001b[0m | \u001b[32m 0.497920\u001b[0m | 0.438629 | 83.49% | 0.1s\n", " 7 | \u001b[94m 0.170713\u001b[0m | \u001b[32m 0.477360\u001b[0m | 0.357619 | 83.49% | 0.1s\n", " 8 | \u001b[94m 0.137487\u001b[0m | \u001b[32m 0.464683\u001b[0m | 0.295872 | 85.20% | 0.1s\n", " 9 | \u001b[94m 0.113311\u001b[0m | \u001b[32m 0.456983\u001b[0m | 0.247956 | 85.46% | 0.1s\n", " 10 | \u001b[94m 0.094937\u001b[0m | \u001b[32m 0.452186\u001b[0m | 0.209952 | 86.12% | 0.1s\n", " 11 | \u001b[94m 0.080581\u001b[0m | \u001b[32m 0.449087\u001b[0m | 0.179433 | 86.12% | 0.1s\n", " 12 | \u001b[94m 0.069128\u001b[0m | \u001b[32m 0.446833\u001b[0m | 0.154707 | 86.12% | 0.1s\n", " 13 | \u001b[94m 0.059931\u001b[0m | \u001b[32m 0.445198\u001b[0m | 0.134617 | 85.73% | 0.1s\n", " 14 | \u001b[94m 0.052425\u001b[0m | \u001b[32m 0.444051\u001b[0m | 0.118060 | 85.07% | 0.1s\n", " 15 | \u001b[94m 0.046344\u001b[0m | \u001b[32m 0.443397\u001b[0m | 0.104521 | 85.07% | 0.1s\n", " 16 | \u001b[94m 0.041343\u001b[0m | \u001b[32m 0.443199\u001b[0m | 0.093283 | 85.07% | 0.1s\n", " 17 | \u001b[94m 0.037186\u001b[0m | \u001b[32m 0.443159\u001b[0m | 0.083912 | 85.46% | 0.1s\n", " 18 | \u001b[94m 0.033683\u001b[0m | 0.443349 | 0.075973 | 85.86% | 0.1s\n", " 19 | \u001b[94m 0.030721\u001b[0m | 0.443599 | 0.069254 | 85.86% | 0.1s\n", " 20 | \u001b[94m 0.028185\u001b[0m | 0.443829 | 0.063504 | 85.86% | 0.2s\n", " 21 | \u001b[94m 0.026001\u001b[0m | 0.444151 | 0.058541 | 86.51% | 0.1s\n", " 22 | \u001b[94m 0.024096\u001b[0m | 0.444518 | 0.054208 | 86.51% | 0.1s\n", " 23 | \u001b[94m 0.022428\u001b[0m | 0.445042 | 0.050395 | 86.51% | 0.1s\n", " 24 | \u001b[94m 0.020950\u001b[0m | 0.445603 | 0.047015 | 86.51% | 0.1s\n", " 25 | \u001b[94m 0.019639\u001b[0m | 0.446189 | 0.044014 | 86.51% | 0.1s\n", " 26 | \u001b[94m 0.018464\u001b[0m | 0.446819 | 0.041324 | 86.51% | 0.1s\n", " 27 | \u001b[94m 0.017411\u001b[0m | 0.447507 | 0.038906 | 86.51% | 0.1s\n", " 28 | \u001b[94m 0.016459\u001b[0m | 0.448230 | 0.036719 | 86.51% | 0.1s\n", " 29 | \u001b[94m 0.015597\u001b[0m | 0.448905 | 0.034744 | 86.51% | 0.1s\n", " 30 | \u001b[94m 0.014811\u001b[0m | 0.449615 | 0.032941 | 86.51% | 0.1s\n", " 31 | \u001b[94m 0.014091\u001b[0m | 0.450364 | 0.031289 | 86.51% | 0.1s\n", " 32 | \u001b[94m 0.013433\u001b[0m | 0.451118 | 0.029776 | 86.51% | 0.1s\n", " 33 | \u001b[94m 0.012828\u001b[0m | 0.451760 | 0.028395 | 86.51% | 0.1s\n", " 34 | \u001b[94m 0.012271\u001b[0m | 0.452523 | 0.027117 | 85.86% | 0.1s\n", " 35 | \u001b[94m 0.011756\u001b[0m | 0.453243 | 0.025938 | 85.86% | 0.1s\n", " 36 | \u001b[94m 0.011279\u001b[0m | 0.453902 | 0.024848 | 85.86% | 0.1s\n", " 37 | \u001b[94m 0.010835\u001b[0m | 0.454575 | 0.023836 | 85.86% | 0.1s\n", " 38 | \u001b[94m 0.010423\u001b[0m | 0.455292 | 0.022894 | 85.86% | 0.1s\n", " 39 | \u001b[94m 0.010039\u001b[0m | 0.455973 | 0.022016 | 86.25% | 0.1s\n", " 40 | \u001b[94m 0.009679\u001b[0m | 0.456613 | 0.021198 | 86.25% | 0.1s\n", " 41 | \u001b[94m 0.009342\u001b[0m | 0.457208 | 0.020432 | 86.25% | 0.1s\n", " 42 | \u001b[94m 0.009025\u001b[0m | 0.457866 | 0.019712 | 86.25% | 0.1s\n", " 43 | \u001b[94m 0.008728\u001b[0m | 0.458517 | 0.019035 | 86.25% | 0.1s\n", " 44 | \u001b[94m 0.008448\u001b[0m | 0.459182 | 0.018398 | 86.25% | 0.1s\n", " 45 | \u001b[94m 0.008183\u001b[0m | 0.459823 | 0.017797 | 86.25% | 0.1s\n", " 46 | \u001b[94m 0.007933\u001b[0m | 0.460458 | 0.017229 | 86.25% | 0.1s\n", " 47 | \u001b[94m 0.007696\u001b[0m | 0.461080 | 0.016692 | 86.25% | 0.1s\n", " 48 | \u001b[94m 0.007473\u001b[0m | 0.461711 | 0.016185 | 86.25% | 0.1s\n", " 49 | \u001b[94m 0.007260\u001b[0m | 0.462332 | 0.015703 | 86.25% | 0.1s\n", " 50 | \u001b[94m 0.007058\u001b[0m | 0.462975 | 0.015245 | 86.25% | 0.1s\n", " 51 | \u001b[94m 0.006866\u001b[0m | 0.463553 | 0.014813 | 86.25% | 0.1s\n", " 52 | \u001b[94m 0.006684\u001b[0m | 0.464142 | 0.014401 | 86.25% | 0.1s\n", " 53 | \u001b[94m 0.006510\u001b[0m | 0.464753 | 0.014007 | 86.25% | 0.1s\n", " 54 | \u001b[94m 0.006344\u001b[0m | 0.465317 | 0.013633 | 86.25% | 0.1s\n", " 55 | \u001b[94m 0.006185\u001b[0m | 0.465849 | 0.013278 | 86.25% | 0.1s\n", " 56 | \u001b[94m 0.006034\u001b[0m | 0.466419 | 0.012937 | 86.25% | 0.1s\n", " 57 | \u001b[94m 0.005889\u001b[0m | 0.466968 | 0.012612 | 86.25% | 0.1s\n", " 58 | \u001b[94m 0.005751\u001b[0m | 0.467491 | 0.012302 | 86.25% | 0.1s\n", " 59 | \u001b[94m 0.005618\u001b[0m | 0.468064 | 0.012002 | 86.25% | 0.1s\n", " 60 | \u001b[94m 0.005491\u001b[0m | 0.468637 | 0.011717 | 86.25% | 0.1s\n", " 61 | \u001b[94m 0.005368\u001b[0m | 0.469159 | 0.011443 | 86.25% | 0.1s\n", " 62 | \u001b[94m 0.005251\u001b[0m | 0.469698 | 0.011180 | 86.25% | 0.1s\n", " 63 | \u001b[94m 0.005138\u001b[0m | 0.470232 | 0.010927 | 86.25% | 0.1s\n", " 64 | \u001b[94m 0.005030\u001b[0m | 0.470752 | 0.010684 | 86.25% | 0.1s\n", " 65 | \u001b[94m 0.004925\u001b[0m | 0.471257 | 0.010451 | 86.25% | 0.1s\n", " 66 | \u001b[94m 0.004825\u001b[0m | 0.471753 | 0.010227 | 86.25% | 0.1s\n", " 67 | \u001b[94m 0.004728\u001b[0m | 0.472230 | 0.010011 | 86.25% | 0.1s\n", " 68 | \u001b[94m 0.004634\u001b[0m | 0.472726 | 0.009803 | 86.25% | 0.1s\n", " 69 | \u001b[94m 0.004544\u001b[0m | 0.473220 | 0.009603 | 86.25% | 0.1s\n", " 70 | \u001b[94m 0.004457\u001b[0m | 0.473693 | 0.009409 | 86.25% | 0.1s\n", " 71 | \u001b[94m 0.004373\u001b[0m | 0.474161 | 0.009223 | 86.25% | 0.1s\n", " 72 | \u001b[94m 0.004292\u001b[0m | 0.474641 | 0.009042 | 86.25% | 0.1s\n", " 73 | \u001b[94m 0.004213\u001b[0m | 0.475090 | 0.008868 | 86.25% | 0.1s\n", " 74 | \u001b[94m 0.004137\u001b[0m | 0.475516 | 0.008700 | 86.25% | 0.1s\n", " 75 | \u001b[94m 0.004064\u001b[0m | 0.475968 | 0.008538 | 86.25% | 0.1s\n", " 76 | \u001b[94m 0.003993\u001b[0m | 0.476425 | 0.008380 | 86.25% | 0.1s\n", " 77 | \u001b[94m 0.003924\u001b[0m | 0.476863 | 0.008228 | 86.25% | 0.1s\n", " 78 | \u001b[94m 0.003857\u001b[0m | 0.477288 | 0.008081 | 86.25% | 0.1s\n", " 79 | \u001b[94m 0.003792\u001b[0m | 0.477708 | 0.007938 | 86.25% | 0.1s\n", " 80 | \u001b[94m 0.003730\u001b[0m | 0.478123 | 0.007801 | 86.25% | 0.1s\n", " 81 | \u001b[94m 0.003669\u001b[0m | 0.478534 | 0.007667 | 86.25% | 0.1s\n", " 82 | \u001b[94m 0.003610\u001b[0m | 0.478950 | 0.007537 | 86.25% | 0.1s\n", " 83 | \u001b[94m 0.003552\u001b[0m | 0.479380 | 0.007410 | 86.25% | 0.1s\n", " 84 | \u001b[94m 0.003497\u001b[0m | 0.479805 | 0.007288 | 86.25% | 0.1s\n", " 85 | \u001b[94m 0.003442\u001b[0m | 0.480224 | 0.007168 | 86.25% | 0.1s\n", " 86 | \u001b[94m 0.003389\u001b[0m | 0.480636 | 0.007052 | 86.25% | 0.1s\n", " 87 | \u001b[94m 0.003338\u001b[0m | 0.481052 | 0.006939 | 86.25% | 0.1s\n", " 88 | \u001b[94m 0.003288\u001b[0m | 0.481467 | 0.006829 | 86.25% | 0.1s\n", " 89 | \u001b[94m 0.003239\u001b[0m | 0.481870 | 0.006722 | 86.25% | 0.1s\n", " 90 | \u001b[94m 0.003192\u001b[0m | 0.482258 | 0.006618 | 86.25% | 0.1s\n", " 91 | \u001b[94m 0.003145\u001b[0m | 0.482653 | 0.006517 | 86.25% | 0.1s\n", " 92 | \u001b[94m 0.003101\u001b[0m | 0.483014 | 0.006419 | 86.25% | 0.1s\n", " 93 | \u001b[94m 0.003057\u001b[0m | 0.483382 | 0.006323 | 86.25% | 0.1s\n", " 94 | \u001b[94m 0.003014\u001b[0m | 0.483755 | 0.006230 | 86.25% | 0.1s\n", " 95 | \u001b[94m 0.002972\u001b[0m | 0.484108 | 0.006140 | 86.25% | 0.1s\n", " 96 | \u001b[94m 0.002932\u001b[0m | 0.484467 | 0.006052 | 86.25% | 0.1s\n", " 97 | \u001b[94m 0.002892\u001b[0m | 0.484825 | 0.005966 | 86.25% | 0.1s\n", " 98 | \u001b[94m 0.002854\u001b[0m | 0.485175 | 0.005882 | 86.25% | 0.1s\n", " 99 | \u001b[94m 0.002816\u001b[0m | 0.485517 | 0.005801 | 86.25% | 0.1s\n", " 100 | \u001b[94m 0.002780\u001b[0m | 0.485853 | 0.005721 | 86.25% | 0.1s\n" ] } ], "source": [ "net = net1.fit(X[0:1000,:,:,:],y[0:1000])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As a remark, trainig longer 100 epochs and with 50k of the data, we get about 97.36% accuracy.\n", "\n", "We have a trained classifier with which we can make predictions." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Evaluate the model\n", "Now that we have fixed the weights of the network, we can make predictions on unseen data. We have trained only on the images 0-1000 so let's take the images 1001 to 1021 and do a prediction. \n", "\n", "Note that the softmax layer assigns the following probabilities to the for the classes $i = 0,1,\\ldots,9$ \n", "\n", "$\n", " p_i(\\text{input image}) = \\frac{e^{z_i}}{\\sum_{j=0}^9 e^{z_j}}\n", "$\n", "\n", "which he can obtain for a set of indices like via `net.predict_proba(X[toTest,:,:,:])`. The index with maximum probability is the predicted class and can be obtained by `net1.predict(X[toTest,:,:,:])`." ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[7 1 1 4 9 9 3 4 8 2 2 1 8 9 5 8 1 0 0 6 3 7 4 4 8]\n", "[[ 1.16831124e-07 3.81061155e-10 3.81762622e-09 8.92168191e-06\n", " 1.19226058e-06 3.25291012e-07 1.48419343e-09 9.99690592e-01\n", " 1.50690425e-06 2.97322345e-04]\n", " [ 2.66134011e-05 9.92980063e-01 3.18128965e-04 2.64594867e-03\n", " 1.99262358e-04 2.17088521e-03 6.98537100e-04 3.64902604e-04\n", " 5.20152273e-04 7.54903667e-05]\n", " [ 2.80395199e-07 9.99716640e-01 6.89360095e-05 1.82905078e-05\n", " 3.75537979e-06 7.27575934e-06 1.88080285e-05 1.65428048e-06\n", " 1.63609468e-04 7.55169822e-07]\n", " [ 5.20743022e-04 2.59210542e-02 2.27144058e-03 2.16244701e-02\n", " 4.05155212e-01 1.31634623e-01 3.96082038e-03 3.16489488e-02\n", " 5.45846894e-02 3.22678000e-01]]\n" ] }, { "data": { "text/plain": [ "7" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "toTest = range(1001,1026) #Some indices we would like to have a look into\n", "preds = net1.predict(X[toTest,:,:,:])\n", "print(preds) #The predictions for the different classes \n", "print(net.predict_proba(X[toTest,:,:,:])[0:4]) #The probabilities from the softmax layer.\n", "np.argmax(net.predict_proba(X[toTest,:,:,:])[0])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "####Let's look at the correponding images.\n", "Shown is the predicted value and the true value in parenthesis." ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": [ "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\n", "cZ/Qfw+lWDb6l6Xw8PCq5cuXT/7oo49uSklJOT1//vzH7rjjjiUdOnQ44at9mzZtLtQlFCql1KlT\n", "p1JffvnlWb/85S+fkr6nuLg4Nj4+viDQ5w+cCQsLqx09evSaKVOmfLh48eLv+2rD48kZMGDAtoce\n", "eug1LssinvXP9u3b+3/++efXPvroo79T6t+SqNQefdPb1NbWho0fP/7jKVOmfFhWVtby3LlziRcu\n", "XGjz05/+dJ6v9r765t133/1eZmbm/pKSkpiioqK4rl27Hp46deoi2gbxDB41NTVXTJs2bWFkZGTF\n", "K6+88ohTO+k5O3v27Bf37NnTa8mSJXdwX0jFsqGTphriM2zYsA1vvfXW/+PL99VXX12dkZGRU7f9\n", "t7/9bXJkZGR5u3btTrdr1+50q1atClq0aFGZkpJyqqamJqy29t9J5C1btiw9duxYWkP/tqb4uffe\n", "e//485///Jc28fT1ee655566++67F9VtI57B+fzud7/7n+jo6JK6vhUTE1McFRVVdtVVV31jE0v0\n", "TW99zp49mxQWFlZTVFQUS2PklMTrq29GR0eX7Ny5s0/d9rZt2/rHxMQU120jnsH71NTUhE2fPn3B\n", "2LFjP6+oqIiQ2jo9Z3/xi18806dPn50XLlxozX2hFssGP4FgfHbu3NmnvLw8srS0tOWLL774RNeu\n", "XQ9dvHgx3FfbysrKFklJSWfrsvorKytb5Obmtq37/P73v//xkCFDNubm5rat22f9+vXDe/Xqld3Q\n", "v7MpfM6ePZu0ePHiu0pKSqKrq6ubrVq1anxcXFzh5s2bB9nEs6amJuyNN96YmZ+fH19TUxO2adOm\n", "wSkpKaeWLl16K+IZ3E9ZWVlUXb86c+ZM8hNPPPHi7bff/uG5c+cSbGKJvumtT01NTVhqaurJefPm\n", "/aS6urpZfn5+/OTJk/9G/yMixbO29t//kZ01a9ZL5eXlkWVlZVEPPvjga1dfffVXiGfwPzNnznxj\n", "6NChX5eUlERfrq2vWD7//PM/y8jIyDlz5kyyr31CLZaNXoZTSqmFCxdOS01NPZWcnJy7evXqMZ9+\n", "+un14eHhVb7atmjR4uL06dPfWbRo0dS67bZt256t+7Rq1aqw7t/q9nnvvffu5ro6qB/CwsJq33jj\n", "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\n", "AATwsgQAAAAAIICXJQAAAAAAAU/kLLlZ9dyfJVOolh4I7dWtrt6QpdqDhZTzwn2tW7fW9r59+3zu\n", "w7f9iZ9TW6dyFL7O0a3mbnt8r+Omb0rH8Ccvgk49f/TRR7X94x//2PG7pOWLmkLOWSDwJ8dHWg4n\n", "EDlLks/2/rM9fmMhUL/R6Tj+lA5wc3x/jhPMeGJkCQAAAABAAC9LAAAAAAACnpDhKNJQqzT8Z1th\n", "lONWlqOE2nBiMHFTVkC6FoGIlz8EIi6NJba2Equ0gr3b+NnuFygZIJD7hAK2v4vHNtj90YnGGpdA\n", "YE85skMAACAASURBVPv3ySuxVMqb8cTIEgAAAACAQJgX3+AAAAAAALwCRpYAAAAAAATwsgQAAAAA\n", "IICXJQAAAAAAAbwsAQAAAAAI4GUJAAAAAEAAL0s+yMvLS+rZs+feysrKiMu1zc3NTe7Vq9eeixcv\n", "tgjGuQH/QTwbD4hl4wLxbDw09lg2+pelixcvtrj33nvf7ty585G4uLiiAQMGbFu1atUN0j4vvPDC\n", "kzNmzFgQERFRqZRSTzzxxP917949Jy4urqhnz557Fy5cOK2ubXJycu6YMWNWv/XWW/fX928B/+aV\n", "V155ZODAgd9ERkZWzJgxY8Hl2vN4Llmy5I7hw4dviI6OLh0zZsxq2hbxDC4nTpzoMHHixBUJCQnn\n", "U1JSTs+aNevlS5cuNXNqz2NZVFQUN3Xq1EVJSUl5SUlJeVOnTl1UXFwcqxRi2RDs3bu359ixY7+I\n", "j48vyMjIOLB8+fLJUnsez6ysrOzY2Njiuk94eHjVzTff/A+lEM9gM3r06DVRUVHldbHo2bPnXqk9\n", "j2VlZWXEj370oz+1atWqMCUl5fT8+fMfq2sbkrGsra1t1J/S0tKWc+fOnXP06NGOtbW16p///OdN\n", "sbGxRUeOHOnkq31FRUVEYmJi3smTJ1Pr/m3OnDlz9+/f3722tlZt2rRpcOvWrS9s2LBhWJ1//fr1\n", "w3v37r2roX9rU/ksW7bsluXLl0968MEHX5s+ffoCqa2veH722WfXfvjhh7c/++yzT48ePXo13wfx\n", "DN7nlltuWTZ9+vQFlZWVLc6cOZPcp0+fnS+99NIs21g+9thjvx0/fvyq4uLimMLCwrjrrrvu08cf\n", "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\n", "AAAASUVORK5CYII=\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize=(10,10))\n", "for i,num in enumerate(toTest):\n", " a=fig.add_subplot(5,5,(i+1)) #NB the one based API sucks!\n", " plt.axis('off')\n", " a.set_title(str(preds[i]) + \" (\" + str(y[num]) + \")\")\n", " plt.imshow(-X[num,0,:,:], interpolation='none',cmap=plt.get_cmap('gray'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Evaluation\n", "To evaluate the performance, we take all the unused data (starting from index 1000) in the training and compare their prediction to the true numbers stored in `y`. " ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0.87666666666666671" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.sum(net.predict(X[1000:,:,:,:]) == y[1000:]) / (len(y) - 1000.0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Using the simple approch we get a performence of approx. 88% which is similar to the accuracy calculated on the validation set 86%." ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "In the notebook [MinimalLasagneCNN.ipynb](MinimalLasagneCNN.ipynb) we show how to use a CNN." ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "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.5" } }, "nbformat": 4, "nbformat_minor": 0 }