{ "metadata": { "name": "", "signature": "sha256:0a0fa204efd54905f70f35858988ae72a6086b3a000c5d4a2e6aa223e767813b" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "from partSix import *" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "NN = Neural_Network()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "# X = (hours sleeping, hours studying), y = score on test\n", "X = np.array(([3,5], [5,1], [10,2], [6,1.5]), dtype=float)\n", "y = np.array(([75], [82], [93], [70]), dtype=float)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "#Plot projections of our new data:\n", "fig = figure(0, (8,3))\n", "\n", "subplot(1,2,1)\n", "scatter(X[:,0], y)\n", "grid(1)\n", "xlabel('Hours Sleeping')\n", "ylabel('Test Score')\n", "\n", "subplot(1,2,2)\n", "scatter(X[:,1], y)\n", "grid(1)\n", "xlabel('Hours Studying')\n", "ylabel('Test Score')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 4, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "#Normalize\n", "X = X/np.amax(X, axis = 0)\n", "y = y/100 #Max test score is 100" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "#Train network with new data:\n", "T = trainer(NN)\n", "T.train(X,y)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Optimization terminated successfully.\n", " Current function value: 0.000000\n", " Iterations: 135\n", " Function evaluations: 143\n", " Gradient evaluations: 143\n" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "#Plot cost during training:\n", "plot(T.J)\n", "grid(1)\n", "xlabel('Iterations')\n", "ylabel('Cost')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 7, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\ns19hezBlwDfb/G5FRERERERERERERERERERERERERERERERERERExJf/A50S25e6Kym9AAAAAElF\nTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "#Test network for various combinations of sleep/study:\n", "hoursSleep = linspace(0, 10, 100)\n", "hoursStudy = linspace(0, 5, 100)\n", "\n", "#Normalize data (same way training data was normalized)\n", "hoursSleepNorm = hoursSleep/10.\n", "hoursStudyNorm = hoursStudy/5.\n", "\n", "#Create 2-d version of input for plotting\n", "a, b = meshgrid(hoursSleepNorm, hoursStudyNorm)\n", "\n", "#Join into a single input matrix:\n", "allInputs = np.zeros((a.size, 2))\n", "allInputs[:, 0] = a.ravel()\n", "allInputs[:, 1] = b.ravel()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "allOutputs = NN.forward(allInputs)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "#Contour Plot:\n", "yy = np.dot(hoursStudy.reshape(100,1), np.ones((1,100)))\n", "xx = np.dot(hoursSleep.reshape(100,1), np.ones((1,100))).T\n", "\n", "CS = contour(xx,yy,100*allOutputs.reshape(100, 100))\n", "clabel(CS, inline=1, fontsize=10)\n", "xlabel('Hours Sleep')\n", "ylabel('Hours Study')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 10, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "#Training Data:\n", "trainX = np.array(([3,5], [5,1], [10,2], [6,1.5]), dtype=float)\n", "trainY = np.array(([75], [82], [93], [70]), dtype=float)\n", "\n", "#Testing Data:\n", "testX = np.array(([4,5.5], [4.5, 1], [9, 2.5], [6,2]), dtype=float)\n", "testY = np.array(([70], [89], [85], [75]), dtype=float)\n", "\n", "#NormalizeL\n", "trainX = trainX/np.amax(trainX, axis=0)\n", "trainY = trainY/100.\n", "\n", "testX = testX/np.amax(trainX, axis=0)\n", "testY = testY/100." ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 13 }, { "cell_type": "code", "collapsed": false, "input": [ "#Modify trainer class to check testing error during training:\n", "class trainer(object):\n", " def __init__(self, N):\n", " #Make Local reference to network:\n", " self.N = N\n", " \n", " def callbackF(self, params):\n", " self.N.setParams(params)\n", " self.J.append(self.N.costFunction(self.X, self.y))\n", " self.testJ.append(self.N.costFunction(self.testX, self.testY))\n", " \n", " def costFunctionWrapper(self, params, X, y):\n", " self.N.setParams(params)\n", " cost = self.N.costFunction(X, y)\n", " grad = self.N.computeGradients(X,y)\n", " return cost, grad\n", " \n", " def train(self, trainX, trainY, testX, testY):\n", " #Make an internal variable for the callback function:\n", " self.X = trainX\n", " self.y = trainY\n", " \n", " self.testX = testX\n", " self.testY = testY\n", "\n", " #Make empty list to store costs:\n", " self.J = []\n", " self.testJ = []\n", " \n", " params0 = self.N.getParams()\n", "\n", " options = {'maxiter': 200, 'disp' : True}\n", " _res = optimize.minimize(self.costFunctionWrapper, params0, jac=True, method='BFGS', \\\n", " args=(trainX, trainY), options=options, callback=self.callbackF)\n", "\n", " self.N.setParams(_res.x)\n", " self.optimizationResults = _res" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 17 }, { "cell_type": "code", "collapsed": false, "input": [ "#Train network with new data:\n", "NN = Neural_Network()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 18 }, { "cell_type": "code", "collapsed": false, "input": [ "T = trainer(NN)\n", "T.train(trainX, trainY, testX, testY)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Optimization terminated successfully.\n", " Current function value: 0.000000\n", " Iterations: 140\n", " Function evaluations: 155\n", " Gradient evaluations: 155\n" ] } ], "prompt_number": 19 }, { "cell_type": "code", "collapsed": false, "input": [ "#Plot costs during training:\n", "plot(T.J)\n", "plot(T.testJ)\n", "grid(1)\n", "xlabel('Iterations')\n", "ylabel('Cost')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 22, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAY0AAAEPCAYAAAC+35gCAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl8U1X+//FXtra0LC20gqylLAoiVhQoqFh1QFTcFxTR\nwWVkZnAGt1Hcccavu79hHJdB5QvqMC4jKo5fQVwogwsoS0GBSlsoO0IppZTSNsv9/XESGkraJm2T\nm5N8no9HHsm9uTd5B9qcnvO591wQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEKYaCxQABQC9wV4\n/lJgDbAaWAmcG8K+QgghYogNKAIyAQeQDwyot02K3+OTvdsHu68QQogIs4bxtYehvvhLACfwDqpn\n4e+Q3+O2QGkI+wohhIiwcDYa3YBtfsvbvevquwzYACwA/hjivkIIISIonI2GEeR2H6GGni4G3gIs\nYUskhBCiRexhfO0dQA+/5R6oHkNDlnrzdPRu1+S+Xbt2NXbu3NnypEIIEV+Kgb5mh6jPjgqWCSQQ\nuJjdh7qexRDv9sHuC2Do7NFHHzU7QotIfnPpnF/n7Iahf36CHwkK+MUeLi7gduAz1NFQs1C1i8ne\n52cCVwI3oordlcC1TewbU0pKSsyO0CKS31w659c5O+ifvyXC2WiAKm4vqLdupt/jZ7y3YPcVQghh\nonA3GqIRkyZNMjtCi0h+c+mcX+fsEDi/2+Nm476NFJYV4vK48BgeDMPAwMBjeHC6nbg8Lpwe773f\nstPtbPy+iW3chvuYPGoU6mj/N+H/6Ny2c4s+u+5HKhmB/mGEECJSnG4nUxdO5c01b9KlbRdOTD+R\nBFsCFosFCxYsFgtWixWH1YHD5sBusat7qx2H1Xtvcxx5vjn3NqsNS4Cvc4vl6HWDOw8+ko1mfv9L\nT8NEeXl55Obmmh2j2SS/uXTOr3N2qMtfWVvJ1f++GqvFypY7ttApuZPZ0cIunOdpCCFETLvoXxfR\nvV135l87Py4aDJDhKSGEaLZ2T7Zj5107aZfYzuwoIWnJ8JT0NIQQoplcHhc2q83sGBEljYaJ8vLy\nzI7QIpLfXDrn1zk71OV3e9zYrfFVGpZGQwghmsnlcWGzxFdPQ2oaQgjRDIZhYP2zFc8jnmMObY12\nUtMQQogIcxtubBabdg1GS0mjYaJYGdfVleQ3j87ZQeV3eVxxV88AaTSEEKJZ3B533B05BVLTEEKI\nZjlQfYAef+1Bxf0VZkcJmdQ0hBAiwtxG/B1uC9JomCoWxnV1JvnNo3N2qKtpxOPwlDQaQgjRDPF4\nYh9ITUMIIZpl24FtjJg1gu13bTc7SsikpiGEEBEmNQ0RcbEwrqszyW8enbODyh+vh9xKoyGEEM0Q\nj/NOgdQ0hBCiWdbvXc9V713F+inrzY4SMqlpCCFEhMkhtyLiYmFcV2eS3zw6Z4e6moYUwoUQQgRF\nahp6kpqGEMIUy7Yv446Fd7Ds1mVmRwmZ1DSEECLC5JBbEXGxMK6rM8lvHp2zg9/cU3E4PCWNhhBC\nNEO8nhEe7prGWGAGYANeB56u9/z1wL3eHAeB3wFrvc+VABWAG3ACwwK8vtQ0hBCmWFS8iGe/fZbP\nb/jc7Cgha0lNI5zNpA14EfgVsAP4AfgY2OC3zSZgFHAA1cC8CuR4nzOAXKAsjBmFEKJZ5JDb1jcM\nKEL1GJzAO8Cl9bb5DtVgACwHutd7XvejuxoVC+O6OpP85tE5O0hNI1y6Adv8lrd71zXkFuBTv2UD\n+AJYAfym1dMJIUQLSE2j9V2JGnLyfeFPBIYDfwiw7TnAS8AZwH7vuuOBXUAG8Ll3v6X19pOahhDC\nFPPWz+NfP/2LedfMMztKyKK1prED6OG33APV26hvMPAaqoHZ77d+l/d+L/AharirfqPBpEmTyMzM\nBCA1NZXs7Gxyc3OBui6wLMuyLMtyay+vWb6GfVv24WN2nsaW8/LymDNnDsCR78toZAeKgUwgAcgH\nBtTbpieq7pFTb30y0M77OAX4BhgT4D0MnS1evNjsCC0i+c2lc36dsxuGyj937VzjuvevMztKs6CG\n/5v9xR4uLuB24DPUkVSzUEdOTfY+PxN4BEgDXvGu8x1a2wX4wC/jXGBRGLMKIURI4nWWW92PTvI2\nmkIIEVmzV8/mv1v/y+xLZ5sdJWQy95QQQkSYHHIrIs5XqNKV5DeXzvl1zg7e62nE6SG30mgIIUQz\nxGtPQ2oaQgjRDH9b9jeK9xfzwgUvmB0lZFLTEEKICJPhKRFxsTCuqzPJbx6ds4PMPSWEECJE8TrL\nrdQ0hBCiGf6y5C/UuGt4/NzHzY4SMqlpCCFEhElNQ0RcLIzr6kzym0fn7CA1DSGEECFye9wy95SG\npKYhhDDFvZ/fS3pyOveeca/ZUUImNQ0hhIgwGZ4SERcL47o6k/zm0Tk7eOeeitNDbqXREEKIZpDr\naehJahpCCFP89pPfkt0lm9+e/luzo4RMahpCCBFhUtMQERcL47o6k/zm0Tk71F1PIx6Hp6TREEKI\nZnB5XHFZCJeahhBCNMOEeRO4qN9FXD/4erOjhExqGkIIEWEy95SIuFgY19WZ5DePztnBb+4pqWkI\nIYQIRrye3Cc1DSGEaIZx/xrH5NMmc/EJF5sdJWRS0xBCiAiTQ25FxMXCuK7OJL95dM4OdTWNeBye\nkkZDCCGawe1xx+UZ4VLTEEKIZjh7ztn8OffPnJ15ttlRQiY1DSGEiDA55DY8xgIFQCFwX4DnrwfW\nAGuBb4DBIeyrvVgY19WZ5DePztlBrqcRLjbgRdSX/0DgOmBAvW02AaNQjcVfgFdD2FcIIUwTr7Pc\nhrOmMQJ4FPXFDzDNe/9UA9unAT8C3UPYV2oaQghTnDrzVGZdMoshxw8xO0rIorWm0Q3Y5re83buu\nIbcAnzZzXyGEiKh4PeQ2nJ84lC7AOcDNwBmh7jtp0iQyMzMBSE1NJTs7m9zcXKBu3DRal2fMmKFV\nXskfXcs65/evaURDnubkryioYOW3Kxl8+WDT8wSTd86cOQBHvi+jUQ6w0G/5fgIXtAcDRUDfZuxr\n6Gzx4sVmR2gRyW8unfPrnN0wVP7+f+9vFOwtMDtKsxDaH/VHCWdNww78DJwH7AS+RxW0N/ht0xP4\nCpgILAtxXwDD4zGw6H62iRBCO31e6MNnEz+jb8e+TW8cZVpS0wjn8JQLuB34DHU01CzUl/5k7/Mz\ngUdQBfBXvOucwLBG9j32TVzgcITnAwghREPkkNvwWACcgBp6etK7bqb3BnAr0Ak41Xsb1sS+x3A6\nWzdwJPmP6+pI8ptL5/w6Zwe/62nE4SG32p8RrnOjIYTQV7xeuU/3aoBRWmrQqZPZMYQQ8Sbj2QzW\n/X4dx6UcZ3aUkEXreRoRIT0NIYQZ4nWWW+0bDZfL7ATNFwvjujqT/ObROTvI9TS0Jj0NIYQZ4vXK\nfdrXNH7+2aB/f7NjCCHiTdLjSZRPKyfJnmR2lJDFdU1D5+EpIYS+5JBbTek8PBUL47o6k/zm0Tk7\nwOLFi+N2eEr7RkN6GkKISPMYHixYsFq0/woNmfY1je++M8jJMTuGECKe1LprSXkiBefDeg51xHVN\nQ+fhKSGEnuL1cFuIgUZD5+Ep3cd1Jb+5dM6vc3aAvMV5cVkEhxhoNKSnIYSINA+euO1paF/T+OQT\ng4suMjuGECKelFaVcsKLJ7Dv3n1mR2mWuK5p6Dw8JYTQU7xeSwNioNHQeXhK+3FdyW8qnfPrnB3g\nv0v+KzUNXUlPQwgRaR7DE5cn9kEM1DTefNPghhvMjiGEiCeb9m/ivDfPY/PUzWZHaZa4rmnoPDwl\nhNBTvF5LA2Kg0ah1esyO0Gy6j+tKfnPpnF/n7ADfff2dFMJ1VS1dDSFEhLk98TlZIcRATePpvx7k\n3jvamp1DCBFH1uxew40f3cia364xO0qzxHVNQ3oaQohIi9draUBwjcZbQa4zRY3GjYbu47qS31w6\n59c5O8D333wft8NTwTQag+ot24HTwpClWWpd+jYaQgg9uQ05IzyQB4CDwMnee99tD/Bx+KMFp0bj\ns/tyc3PNjtAikt9cOufXOTvAKcNPkeGpAJ4A2gHPee99t47AtPBHC470NIQQkSbX02jcJ4Dv8KQb\ngP8H9ApbohDp3GjoPq4r+c2lc36dswOs+m6V1DQa8QpQBZwC3AVsAt4M8vXHAgVAIXBfgOdPBL4D\nqoG76z1XAqwFVgPfN/QGNW59Gw0hhJ6kptE4F+ABLgNeAl5EDVM1xebddiwwELgOGFBvm33AH1BD\nYPUZQC5wKjCsoTdxatxo6D6uK/nNpXN+nbMDnDT0JKlpNOIgqig+ETVUZQMcQew3DChC9RicwDvA\npfW22Qus8D4fSJMnn+g8PCWE0JPbiN8zwoNpNMYDNcDNwG6gG/BsEPt1A7b5LW/3rguWAXyBalR+\n09BGtRr3NHQf15X85tI5v87ZAfKX5cft8FQwn3oXMBcYCoxD1ReCqWkYLcgFcIb3vTOAz1G1kaX1\nN1r95eNMnz4CgNTUVLKzs490fX0/mNG6nJ+fH1V5JH905Yv1/DovezweytaXkZeXFxV5mlrOy8tj\nzpw5AGRmZtISwcw9cg2qZ7HEuzwK+BPw7yb2ywGmo2oaAPejaiNPB9j2UaASeL6B12roeePsWxaS\n9/r5TUQRQojW8/aPbzP/5/m8c9U7ZkdplpbMPRVMT+MhVC9jj3c5A/iSphuNFUA/IBPYiRrmuq6B\nbeuHT0bVTg4CKcAY4LFAO7rc+p7cJ4TQk9Q0GmdBFax99hFcC+UCbgc+A9YD7wIbgMneG0AXVN3j\nTlTjtBV1TkgX1FBUPrAcVYBfFOhNnB6paZhF8ptL5/w6Zwf46fufpKbRiIWoL/5/oRqL8cCCIF9/\nQYBtZ/o93g30CLBfJZAdzBvofMitEEJP8XzlvsZ6DP2AzsDXwJWowjRAOaoBKQpvtKAYJ0+Yy9q5\nE8zOIYSII6+ufJUfdvzAa5e8ZnaUZgnX9TRmABXex/NQZ4PfBXwE/LU5bxYOOg9PCSH0JHNPBdYZ\nNY1HfWuB3uGJEzq3oW+jofu4ruQ3l875dc4OUPBDgRTCA0ht5Lmk1g7SXNLTEEJEmsw9FdgK4LYA\n638DrAxPnNDp3NPwnYSjK8lvLp3z65wdoPepveO2EN5YU3kH8CFwPXWNxGlAInB5mHMFzW3IeRpC\niMhye6SnEchuYCTqpLoSYLP3cQ5qeo+o4NK4p6H7uK7kN5fO+XXODrBx5ca4rWk01VQawFfeW1TS\neXhKCKEnj+GR4Sld6dxo6D6uK/nNpXN+nbMD9DilR9w2GsFMIxLV3A1eikMIIcLD7ZG5p7Slc6Oh\n+7iu5DeXzvl1zg6wafUmKYTryqNxoyGE0FM81zSaNfdIFDEcl/2e2g9fMjuHECKO3LHwDnp16MWd\nI+40O0qzhGvuKS14LNLTEEJEltQ0NOZB35P7dB/Xlfzm0jm/ztkBtq7ZGrfDU9o3GobUNIQQERbP\nc09pX9PgqvG43nkHW3w2+kIIE9wy/xZG9BjBrUNuNTtKs8R1TcNid+KUzoYQIoJchlxPQ1tWuxOX\npmUN3cd1Jb+5dM6vc3aAnWt3Sk1DVxab9DSEEJEVzzUN/RsNjXsaus+/I/nNpXN+nbMDdBrYSQ65\n1Zb0NIQQEeb2uGV4Slc6D0/pPq4r+c2lc36dswPs/mm3DE9py+bSdnhKCKEnj+GR4SldWaz69jR0\nH9eV/ObSOb/O2QE6nNhBehrasulbCBdC6ElqGjrTuKeh+7iu5DeXzvl1zg5Qur5Uehq6MjRuNIQQ\nenIbMsttuIwFCoBC4L4Az58IfAdUA3eHuK9i1Xd4SvdxXclvLp3z65wdoF3/djI8FQY24EXUl/9A\n4DpgQL1t9gF/AJ5rxr6A9DSEEJHn8sjcU+EwDCgCSgAn8A5wab1t9gIrvM+Hui+gd6Oh+7iu5DeX\nzvl1zg5QXlAuw1Nh0A3Y5re83buuVfc1LPoOTwkh9BTPc0+F81MbkdjX/fEh3iiazrJlkJqaSnZ2\n9pHxUt9fM9G67FsXLXkkf3Tli+X8ubm5UZUn1OU2fduw6ttVlHcsj4o8TS3n5eUxZ84cADIzM2mJ\ncF6EKQeYjqpLANwPeICnA2z7KFAJPB/ivoblUTvzTnFy+eWtllsIIRp14osn8uH4DxmQEbDUGvWi\n9SJMK4B+QCaQAIwHPm5g2/rhg97XsLiorW1Jp8Y8vr8EdCX5zaVzfp2zAxzceDBuaxrhHJ5yAbcD\nn6GOhpoFbAAme5+fCXQBfgDao3oSU1FHS1U2sO8xLIaNaqcLcITrcwghxFHi+Yxw7a8RbnskiZcz\n93HbTclmZxFCO9Wuasqry3F73EfWGfVKinarnSR7Ekn2JBJtib6hjbjW8689WXrTUnql9jI7SrO0\nZHhK+/K/FQfVuh5zK0QYGIZBUVkR3277lo37NrK/ej/l1eWUV5cf/fjwfgwMOiR2wGE7uqdu8X6f\nGBi4PC6qXdXUuGqocdeQYEs40oj4jiCyWWykJ6dzXMpx3DD4BiacPCGmG5d4PiM8JhqNWpeejYb/\nkS86kvzHcnvcbK/YTkl5CYddh3G6nbg8Lpwede8xPBiGoe5R9/7r/NcHWue/vnh1MZnZmRx2Hqay\ntpLSw6UUlxWzcd9G2ia05YyeZzAwfSADMwaSlpRGalIqaW3UfWpSKmlJaSTZk0L6cvcYHmrdtdS4\najjsOnykh+L0ONlXtY8tB7bwxNIneHnFy7x84cuc0uWUgK+j+89OVWGVHHKrKyt26WmIiKuoqSCv\nJI/CfYVs2r+J4v3FbNq/ia0HtpKenE5maiYpCSk4rA7sVjsOm7q3WqxHbhYsgR9bgltf7aym2lVN\nG0cbjks5jiHHD6Hv6X3p16kfx6UcF5bPbbVYj/QyOtDhqOcyUzM5retpXHbiZfzv6v9l9FujmXPZ\nHC7sd2FYspjJ4/FITUNTRttHunFHu2/5yz09zc4iYlxlbSWfbPyE99a9x5ebv2R4t+EMzBhIn7Q+\nZKVlkZWWRe+03iTZk8yOGhWWbV/GZe9cxjOjn+HGU240O06rSn0qlc1TN5PWJs3sKM0S1zUNGw5q\n5ZRwESaHag/xaeGnvLf+PRYVL2Jkj5GMP2k8sy6Zpe0XRqTkdM9h8a8Xc+6b59K/U39yuucAqvGd\nsWwGRWVFbK/YTs8OPcnpnsMFfS+gR4cegKrLPPn1kwxIH8DlA6LvJKx4rmloPzW6FQc1Gtc0dBar\n+T2Gh7ySPG788Ea6/r+uvLbqNcb2GcumP25iwfULmJQ9KSoaDB3+/QdkDOCZXz3D1IVT8RgeAO5Z\ndA8ff/YxZ/U8i3tG3sPQrkP5euvXDHl1CLNXz8blcXHLx7cwb8M8Jn8yma82f2XypzhWTVGN1DR0\nZbfoWwgX0cUwDD4t/JT7vrgPi8XCzdk389yY58JWH4gX1w++npd+eIl/rv0nGckZLCxayItnv8i4\nIeOObPO7ob/jpz0/MWHeBKYvmc6A9AEsmbSEFTtXcM2/r+Hdq97F6XGyfu96yqvLqXZVMyB9ABMH\nTzTlL36PITUNXRldpp/CRc7ZvP74qWZnERor3FfI5E8ms7tyN8+MfoaL+l0U04eMRtry7cu54r0r\nsGDhrcvf4pze5wTcrtpVzfvr3+eak64hwZYAwPvr3+eeRffQp2MfBqYPpFNyJxJtiSwoWsD+6v08\nP+Z5xvQZE8mPg+3PNmoe0re3Ed81DYuDWrf0NCKltKqUhUUL+XzT54zrN46rT7ra7EgtYhgG/1jx\nDx5e/DAPj3qYKcOmaPtFEM2Gdx/OuH7jSE1KbbDBAEiyJzFx8MSj1l018CquGnjVMdtOO3Ma83+e\nz23/uY1rB13L/5z7PxHpdfgOeY7Xnob2NQ27xo2GDmPS/vYc2kO/v/dj3oZ5DOkyhCkvT+Gpr5/C\nMPSa+8tjeHh//fuMfXwsmX/LZHb+bL6++Wum5kzVqsHQ7efnH+P+wdOj1ZyjrZHdYrFw2YmXseK2\nFXy/43sufvtidlTsaPHrNsVtuLGUWOK2J6rPb0gDbBa71DQi5IMNHzC271jevvJtALru68oT655g\n1a5VTB0+lZE9RrK5fDNz185lx8EdZKZm0ju1N73TetM7tTcZKRkmfwJYumUpd352JzarjRHpI5hx\n1QxO6HRC3H4BRFK4/o3Tk9P5bOJnPLz4YU5+5WQGHTeI60++nomDJ5KSkNLq7+fyuOL2yCmIgZpG\n//85l36/TOOTv402O0vMO+/N85gydApXDLjiyLrK2kpe/P5F3ljzBvsP78dtuBl/0ngGpA+gpLyE\nzeWb2Vy+meKyYrq178bVA6/m+pOvp1+nfhHLXeOq4YMNH/DKilfYemArT573JNcOulYaihhU46ph\nUfEiZq2exTfbvuG2IbfxwFkPtGrjcaj2EBnPZlD1YFWrvWaktaSmoftvjTHwyfPpseOPLPx77J11\nGk32HNpD/7/3Z9fdu2jjaHPM84ZhUFhWSGZq5pECpj+P4WH59uW8t+495v44l/P7ns8jox4JS+Ph\n9rhZv3c93277loXFC/lq81ec3vV0fn/677nkhEuOmWdJxKaisiIe+uohCssK+fjaj+nWPtgLhzbu\nQPUBevy1BxX3V7TK65khrgvhDouDWreeJ/fpNP/ORwUfMbbv2KMaDP/8FouF/p36N7i/1WJlRI8R\njOgxgsfOeYwXlr9Azqwc0pPTGXL8EEb1HMUlJ1xyzC+2YagJ82rdtTg9TpxuJ7XuWipqKiitKqW0\nqpS9VXvZe2gvRfuLKCgtYN2edRzf7niGdxvOFSdewcxxMwMeNqvTv38gOuePRPa+Hfvy9pVv8/Q3\nT5MzK4fHch/juJTjSE9O56SMk2iX2K7BfWtcNeyt2suh2kPYrXay0rKO9EzdhhvPZk9Ys0cz/RsN\nmwOXR2oa4fbv9f9m8mmTm94wCO0T2/PQqIeYduY0CkoLWLlzJV9s/oKHFj9ExzYdqXHVUF5dzmHX\nYTV+bLGRYEvAYXPgsDpw2By0T2xPenI6GckZpCenk56czsjuI7k5+2YGHTcoKk6+E+azWCxMO3Ma\nJ2WcxLvr3qW8upzdlbvZULqBru26kpGcceTnKsGWgMVioaisiC3lW0hPTiclIYXK2kraJrTl6oFX\n88BZD8T1tTQgBoancp6/BjZcznevXWt2lphVWlVKnxf6sOvuXSQ7wnfdEpfHxcZ9G0lxpJCalEob\nR5sjk/wJ0ZpcHheF+wopO1x2pAfr9Dhxe9xkpWXRr1O/I8OshmGwYucKfvd/v+NPI//EqF6jOHXm\nqey+Z7fJn6L54nt4yuqgSnoaYTW/YD5j+owJa4MB6mI/AzMGhvU9hAD1sxbs9b0tFgtDuw3lnMxz\n2Fy+mTN6nhHXR09p/yeczsNTuhxnv7B4IeP6jTtmvS75GyL5zaNj9qy0LDbt34TL48K1Sc86amuI\niUbDqWmjoQO3x82Xm75kdB85pFnEN1+j4fa4ser/1dls2n9yh9WO29Cz0dDhyJcVO1fQrX03urbr\nesxzOuRvjOQ3j47Z/Xsa7U5o+MirWKd9o5Gg8fCUDhYVL+L8PuebHUMI0/VK7cWOgzuodlVLTUNn\nCXYHLk17GjqM6y7atKjBGUR1yN8YyW8eHbMn2BLo0rYLm8s3U11YbXYc0+jfaNgcuI34LUqFU0VN\nBfm78zmr51lmRxEiKmSlZVG4r1B6GjrTuacR7eO6izcvZkT3EQGnDYHoz98UyW8eXbNnpWZRWFZI\nhxM7mB3FNDHRaOhaCI92i4obHpoSIh5lpWWxcd9GrabQb22x0WigZ6MRzeO6lbWVfFjwIRf1u6jB\nbaI5fzAkv3l0zd6nYx8Kywqp/LnS7Cim0b7RSJSeRlg8sfQJfpX1q6DPmhUiHmSlZbHz4M64rmlo\n38dKdDjwaNrTiNZx3eKyYl5d+Sprf7e20e2iNX+wJL95dM2elZYFQKeBnUxOYp5w9zTGAgVAIXBf\nA9u84H1+DXCq3/oSYC2wGvi+oTdIsNm1HZ6KVncvupt7Rt4T8IQ+IeJZpzadaJfQLq5nuQ1no2ED\nXkQ1HAOB64D6Yx0XAn2BfsBtwCt+zxlALqohGdbQmyRp3NOItnFdt8fNI4sfYd3eddyZc2eT20db\n/lBJfvPomt1isZCVlkXFz/pegKmlwjk8NQwoQvUYAN4BLgU2+G1zCfCG9/FyIBXoDPziXdfk1L1q\neErO0wDYXrGdkbNGUuWsIjUplaHdhnJz9s2c2/vcJsdgt5Rv4dcf/Rqb1cbSm5aSaE+MUGoh9JKV\nlsXO7TvNjmGacDYa3YBtfsvbgeFBbNMN1WgYwBeAG5gJvBboTZIcDjwWPXsarTmuaxgGt358Kzdl\n38Ttw25nf/V+Pi/+nGlfTmPvob1Myp7EpOxJdGvXjRp3Dfuq9lFUVsRPe37iw4IP+WnPT9w14i7u\nP/P+oIt8uo5L+0h+8+icPSstC/cgt9kxTBPORsMIcruGehNnAjuBDOBzVG1kaf2NkhL0bTRa0+ur\nXqe0qpSHRj2Ew+YgIyWD/p36M2XYFNbsXsPs/NkMf304B6oPkGhPJC0pjb4d+9K/U3/uPeNeRmeN\nlt6FEEHwTVwYr8JZzemAGo76p3f5IuAA8I3fNmcD+4GfvMsPoArjh4CD3nVVqCGrDOC7eu8xvWxX\nKSU/F8OeUvLz86muriYzMxNQ46YlJSVRuzxjxoxWyWtJtTB+3nge7PEgB/ccPOb5nEE5jO07lmHO\nYdzQ6wZeveFV7hxxJ73KezEoYRBjThuD3Wo3Lb/u//6SP/Rl3+NoyRPK8ukDT6d0fSme/Z6oyBPs\nv/f06dP56KOPyM/PZ8mSJQCPEWXsQDGQCSQA+QQuhH/qfZwDLPM+TgZ8cw+noBqaQKcmGx8X/Mdg\nwoWGx2NoZ/Hixa3yOg99+ZBx58I7W+W1QtFa+c0i+c2jc3bD0D8/wY8EHSPc1wi/AJiB6tHMAp4E\nJnufm+m99x1hdQi4CVgFZAEfeJ+3A3O9+9ZnLCxcyNg/P0/trEU4HGH5DFHvpJdPYtYls8jpnmN2\nFCGEBqKmUkXNAAAOTUlEQVT5GuELvDd/M+st3x5gv01AdjBv4LA5sNqdOJ3EZaNRUFpAeXU5w7o1\neFSyEEK0Gu2nEbFb7VjsTlwaHnWb1wrHqn+w4QOuOPEKrJbI/1e2Rn4zSX7z6Jwd9M/fEto3Gg6r\nA2yqpxGP5m2YxxUDrjA7hhAiToS7phFuxg87fmDkE5MpunclPXuaHSeySspLGPraUHbdvSuup2oW\nQoSmJTWNmOhpOJKcbN1qdpLI+3DDh1x6wqXSYAghIkb/RsPmwJbgZMsWs5OEriXjooZhMPfHuVw5\n4MrWCxQi3cd1Jb95dM4O+udvCf0bDasDm0PPRqMlvtn2DQdqDsiV9YQQEaV9TWPz/s0M+fvZXL19\nCzPrH8wbw65870rOzTyXKcOmmB1FCKGZuK9pWGzx1dMoLitmSckSJmVPMjuKECLOaN9o2K12DIue\njUZzx0VfWP4Ctw65lZSElNYNFCLdx3Ulv3l0zg76528J7Q+7cdjULLdbt4JhgEX3Abcm7D20l7fW\nvtXkpViFECIcdP+KNSqqK+jyfBeSnj9EQQFkZJgdKXwMw+DK966kT1ofnh3zrNlxhBCaiua5p8LO\nYXPg8rjo1QtKSmK70XhzzZsUlRXx9pVvmx1FCBGntK9pOKwOnG4nvXqhXV0jlHHRkvIS7vn8Hv55\nxT+j5mJJuo/rSn7z6Jwd9M/fEto3Gr5Lk/bo5dau0QjW+r3rOe/N83h41MMM7jzY7DhCiDimfU3D\nMAwSH0/kL8kH2F6SxAsvROaNK2srAdXTCedf/gsKF/Drj37Nc2Oe48ZTbgzb+wgh4kdc1zRAfXF3\n6+HkmyVJYX+vFTtX8PDih1m8eTF2qx2nx8lZPc9iytApXHzCxa02D9TqXat5NO9RVu9ezQfjP+DM\nnme2yusKIURLxEajYXNwfPfwnqthGAZ/WPAHPir4iAfPepD5184nwZZAjauGeRvm8dx3zzHhgwn0\nSetDVloW7RPbk+xIPubWxt4Gu9WOzWpj48qNDBo2CMMwqKipYH/1fjaUbmDlzpVU1FRw/5n3897V\n75FkD39j2Bx5eXnk5uaaHaPZJL95dM4O+udviZhoNJLsSaR1PsiWLR3D9h6PLXmM5TuWs2HKBtol\ntjuyPtGeyISTJzDh5Akcqj1EUVkRm/ZvorK2kipn1VG3ssNlVDmrcHlcuA03O3btYHvRdgwMOiR2\noENiB0ZnjWbaGdMYkDFAZq8VQkSdmKhpjH9/PL/qPZo7Rt3Krl3Qvn3rvsmsVbN44usn+Pbmb+nc\ntnPrvrgQQkRYXM89BXDZCZfx8cb5rX7Y7bYD27jxwxt5NO9RFly/QBoMIUTci4lG44J+F7CkZAnd\nsypb1GgYhsGug7uYu3YuEz+YSPbMbHp16MWGKRvo36l/6wX20v1Yb8lvLp3z65wd9M/fEjExaJ6a\nlEpO9xwsfT+juPjoixIZhkHZ4TK2HtjK7srdVNRUUFFTwYGaA1TUVFBaVcovh35he8V2fi79GbvV\nzqheoxjbdyzPjn6W49sdb9KnEkKI6BMTNQ2Al75/ifkrl5P/6Ju8+y6MOKuaWatm8cy3z1BRU0HP\nDj05vu3xdEjqQPuE9rRPVLf05HQ6t+1M13Zd6d+pP+nJ6SZ/JCGECK+W1DRiptHYdmAb2TOzeff0\n3Vz5wMfYxk1lyPFD+PN5DzMyc6jJMYUQInpIo+F1+qun08bRhq37fiF1yWzK157Brl1qynSbrfGb\n1XrsuoQEaNsWUlLq7v0f++5tNjUlu+9mtR697FtX/33WrcsjOzv3mPVWa917t2un7tu2Veuiie7H\nqkt+8+icHfTPH/dnhPv8cfgf+fGXH/ls4mMk35MMgMcDLhe43Y3fPJ5j19XUwKFD6lZZeezjnTvV\nY7dbNUyN3TyeY99jzx74+uvAGWpr1Wv7bgcPqsakbVvo0AG6dYMePaBfPxg4EPr0UTP8duwISUlg\nt8f+tUWEEJGn+9fKUT2NWGYYdQ3J/v2wYwds3QobN8L69bB5M5SWwr59qrFzu1WvxeFQDYivB+N/\n8/WAGrslJkJyMrRpo24pKdCpk2qg2rZVr5+QoO4djmNfO1DvqyXPR8trBnsvRDSS4SlxDMNQPSyn\nU938ezv1bw0953ZDdTUcPlx3O3RINU5790JVlWrInM66e//X879v6HFzno/UPsG+ZkP3EHjY0r9B\n8T0X6HFTz0fqNQK9ns1W98eI/+NA61ryvN1e9wdJ/Zv/HyvB3Bra3hoTJx6EJpobjbHADMAGvA48\nHWCbF4ALgCpgErA6hH21bjR0HxeV/I1rqBHyeI5+PtDjpp43DPjmmzxGjswNavtgXi+U1/ANo/oP\n/foeB1pX//l16/Lo1y+30X1crqP/8PG/+f5ICfbW2PZWa+DGpG1bNdybng49e0KvXjBoEJx2Gqxf\nr/fPfrTWNGzAi8CvgB3AD8DHwAa/bS4E+gL9gOHAK0BOkPtqLz8/X+sfPMnfOP8eRjiUlORz2WW5\n4XnxMJsxI5/f/CbX7BhHGsBAjcyhQ1BWpnrVW7eqIeCFC2HVKrDb87nttlyuvhoGD46v3ko4G41h\nQBFQ4l1+B7iUo7/4LwHe8D5eDqQCXYDeQeyrvfLycrMjtIjkN5fO+aMlu8VSNwzWpk1w+xgGTJ5c\njtMJV1+thmuHD4ecHBgxAoYOVT2UWBXORqMbsM1veTuqN9HUNt2ArkHsK4QQEWexQNeuMH06PPMM\n/PILLFumbk8+CStXquGtrCxITVVHM/pubdqodWlpqmEJdN+hQ3T3XMLZaARbbNC9GN9sJSUlZkdo\nEclvLp3z65wdjs7fuTNceqm6geqJlJaq4ayKCnUwie9WVQUHDqhhry1b1JGQZWV192VlalisTZu6\nHpDv5n9wQEM3/20CNTyzZ6saTbTKARb6Ld8P3Fdvm38A1/otFwCdg9wX1BCWITe5yU1ucgvpVkQU\nsgPFQCaQAOQDA+ptcyHwqfdxDrAshH2FEELEmAuAn1Gt2v3edZO9N58Xvc+vAYY0sa8QQgghhBBC\nhNdYVA2kkMD1jmjSA1gMrAN+Av7oXd8R+BzYCCxCHXIczWyoky//413WKX8q8D7qsO31qKPxdMp/\nP+rn50fgX0Ai0Z3/f4FfUHl9Gst7P+p3uQAYE6GMjQmU/1nUz88a4AOgg99z0ZQ/UHafuwEP6v/C\nJ5qyh40NNWyVCTiI/ppHFyDb+7gtathtAPAMcK93/X3AU5GPFpK7gLmoEy1Br/xvADd7H9tRv/C6\n5M8ENqEaCoB3gV8T3fnPAk7l6C+uhvIORP0OO1CftQjzryoaKP9o6nI9RfTmD5Qd1B+vC4HN1DUa\n0ZY9bEZw9NFV07w3XXyEOtvdd7QYqIalwLRETesOfAGcQ11PQ5f8HVBfuvXpkr8j6g+NNFSD9x/U\nF1i058/k6C+uhvLWPzpyIerAGLNlEvivdYDLgX96H0dj/kyOzf5vYDBHNxohZ9e1RWnopEAdZKL+\nCliO+gX6xbv+F+p+oaLRX4E/obq2Prrk7w3sBWYDq4DXgBT0yV8GPA9sBXYC5ahhHl3y+zSUtyvq\nd9hHh9/nm6k78lOH/Jeicq2ttz7k7Lo2GobZAZqpLTAPmAocrPec7/jpaDQO2IOqZzR0MmY057ej\njsx72Xt/iGN7ptGcvw9wB+oPjq6on6OJ9baJ5vyBNJU3mj/Lg0AtqrbUkGjKnww8ADzqt66xk6ob\nza5ro7EDNT7n04OjW8to5EA1GG+hhqdA/bXVxfv4eNQXczQaiZonbDPwNnAu6nPokn+79/aDd/l9\nVOOxGz3ynw58C+wDXKgi7Aj0ye/T0M9L/d/n7t510WgS6vyy6/3WRXv+Pqg/ONagfoe7AytRPb1o\nz95qdDv5zwK8iRri8fcMdeOJ04iuQmZDzqaupqFT/v8C/b2Pp6Oy65L/FNRRd21QP0tvAFOI/vyZ\nHFsID5TXV4xNQA0lFhMd0wtlcnT+sagj2OpPxBGN+TNpuB4TqBAeTdnDRqeT/85E1QLyUUM8q1E/\ngB1RxeVoPGSyIWdTd/SUTvlPQfU0/A+X1Cn/vdQdcvsGqucazfnfRtVfalH1x5toPO8DqN/lAuD8\niCYNrH7+m1GHpW6h7nf4Zb/toym/L3sNdf/2/jZx9CG30ZRdCCGEEEIIIYQQQgghhBBCCCGEEEII\nIYQQQgghhN4qvfe9gOta+bUfqLf8TSu/vhBCiAjzzQGWS92Z7sGyB/naQgghYoTvi30ZavbY1agJ\nJa2oi+58jzqL/DbvdrnAUmA+dVN7fwSsQE318RvvuqdQ80StRs3TBXW9Gov3tX9EzTp6jd9r56Gm\nsN5A3dTbvtdb583ybDM/qxBCiBbyNRr+c2qBaiQe9D5ORE1Bkon6Yq9EDWf5pHnv26AaAt9y/Z6G\nb/lK1DQaFuA41NQUXbyvXY6aydaCmqTwDKATR18ro32wH06I1qbrLLdCtLb6k7SNAW5E9RSWoebq\n6et97nvUF73PVNS8Yt+hZgzt18R7nYmaVttAzfS6BBjqXf4eNW+Q4X3NXqiGpBqYhbr4z+FQP5wQ\nrUUaDSEadjvqglmnoqaX/sK7/pDfNrnAeairnWWjGpmkJl7X4NhGyncNgxq/dW7UxIRuYBhqSvdx\nHH3VSiEiShoNIZSDQDu/5c+A31NX7O6PuphNfe2B/aiewIkcfalMJ4GL5UuB8ajfvwxgFKqH0dCU\n1CmoGWEXoK7TfkqTn0aIMGnq6A8hYp3vL/w1qL/o81GXhX0BVcNYhfoy34MaGqp/xbmFwG+B9aip\n+r/ze+5VVKF7JXCD334foi6itMa77k/e1x/AsVdNM1CN2XxUD8YC3NnsTyuEEEIIIYQQQgghhBBC\nCCGEEEIIIYQQQgghhBBCCCGEEEIIIfTy/wHD7cHMKBtYxwAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 22 }, { "cell_type": "code", "collapsed": false, "input": [ "#Regularization Parameter:\n", "Lambda = 0.0001" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 23 }, { "cell_type": "code", "collapsed": false, "input": [ "#Need to make changes to costFunction and costFunctionPrime\n", "def costFunction(self, X, y):\n", " #Compute cost for given X,y, use weights already stored in class.\n", " self.yHat = self.forward(X)\n", " J = 0.5*sum((y-self.yHat)**2)/X.shape[0] + (self.Lambda/2)*(sum(self.W1**2)+sum(self.W2**2))\n", " return J\n", "\n", "def costFunctionPrime(self, X, y):\n", " #Compute derivative with respect to W and W2 for a given X and y:\n", " self.yHat = self.forward(X)\n", "\n", " delta3 = np.multiply(-(y-self.yHat), self.sigmoidPrime(self.z3))\n", " #Add gradient of regularization term:\n", " dJdW2 = np.dot(self.a2.T, delta3) + self.Lambda*self.W2\n", "\n", " delta2 = np.dot(delta3, self.W2.T)*self.sigmoidPrime(self.z2)\n", " dJdW1 = np.dot(X.T, delta2) \n", "\n", " return dJdW1, dJdW2" ], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }