{ "metadata": { "name": "", "signature": "sha256:738d2aead367a9c0196726ab52e61379856800b3481521452c27b727b60e4a8c" }, "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": [ "Warning: Maximum number of iterations has been exceeded.\n", " Current function value: 0.000000\n", " Iterations: 200\n", " Function evaluations: 230\n", " Gradient evaluations: 230\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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\nQmCC\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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\nQmCC\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", "#Normalize:\n", "trainX = trainX/np.amax(trainX, axis=0)\n", "trainY = trainY/100 #Max test score is 100\n", "\n", "#Normalize:\n", "testX = testX/np.amax(testX, axis=0)\n", "testY = testY/100 #Max test score is 100" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 11 }, { "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": 12 }, { "cell_type": "code", "collapsed": false, "input": [ "#Train network with new data:\n", "NN = Neural_Network()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 13 }, { "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: 127\n", " Function evaluations: 145\n", " Gradient evaluations: 145\n" ] } ], "prompt_number": 14 }, { "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": 15, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nsw8s888AAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 15 }, { "cell_type": "code", "collapsed": false, "input": [ "#Regularization Parameter:\n", "Lambda = 0.0001" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 16 }, { "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", " #Add gradient of regularization term:\n", " dJdW1 = np.dot(X.T, delta2) + self.Lambda*self.W1\n", "\n", " return dJdW1, dJdW2" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 17 }, { "cell_type": "code", "collapsed": false, "input": [ "#New complete class, with changes:\n", "class Neural_Network(object):\n", " def __init__(self, Lambda=0): \n", " #Define Hyperparameters\n", " self.inputLayerSize = 2\n", " self.outputLayerSize = 1\n", " self.hiddenLayerSize = 3\n", " \n", " #Weights (parameters)\n", " self.W1 = np.random.randn(self.inputLayerSize,self.hiddenLayerSize)\n", " self.W2 = np.random.randn(self.hiddenLayerSize,self.outputLayerSize)\n", " \n", " #Regularization Parameter:\n", " self.Lambda = Lambda\n", " \n", " def forward(self, X):\n", " #Propogate inputs though network\n", " self.z2 = np.dot(X, self.W1)\n", " self.a2 = self.sigmoid(self.z2)\n", " self.z3 = np.dot(self.a2, self.W2)\n", " yHat = self.sigmoid(self.z3) \n", " return yHat\n", " \n", " def sigmoid(self, z):\n", " #Apply sigmoid activation function to scalar, vector, or matrix\n", " return 1/(1+np.exp(-z))\n", " \n", " def sigmoidPrime(self,z):\n", " #Gradient of sigmoid\n", " return np.exp(-z)/((1+np.exp(-z))**2)\n", " \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)/X.shape[0] + self.Lambda*self.W2\n", " \n", " delta2 = np.dot(delta3, self.W2.T)*self.sigmoidPrime(self.z2)\n", " #Add gradient of regularization term:\n", " dJdW1 = np.dot(X.T, delta2)/X.shape[0] + self.Lambda*self.W1\n", " \n", " return dJdW1, dJdW2\n", " \n", " #Helper functions for interacting with other methods/classes\n", " def getParams(self):\n", " #Get W1 and W2 Rolled into vector:\n", " params = np.concatenate((self.W1.ravel(), self.W2.ravel()))\n", " return params\n", " \n", " def setParams(self, params):\n", " #Set W1 and W2 using single parameter vector:\n", " W1_start = 0\n", " W1_end = self.hiddenLayerSize*self.inputLayerSize\n", " self.W1 = np.reshape(params[W1_start:W1_end], \\\n", " (self.inputLayerSize, self.hiddenLayerSize))\n", " W2_end = W1_end + self.hiddenLayerSize*self.outputLayerSize\n", " self.W2 = np.reshape(params[W1_end:W2_end], \\\n", " (self.hiddenLayerSize, self.outputLayerSize))\n", " \n", " def computeGradients(self, X, y):\n", " dJdW1, dJdW2 = self.costFunctionPrime(X, y)\n", " return np.concatenate((dJdW1.ravel(), dJdW2.ravel()))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 18 }, { "cell_type": "code", "collapsed": false, "input": [ "NN = Neural_Network(Lambda = 0.0001)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 19 }, { "cell_type": "code", "collapsed": false, "input": [ "#Make sure we didn't break anything, do numerical gradient checking:\n", "numgrad = computeNumericalGradient(NN, X, y)\n", "grad = NN.computeGradients(X, y)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 20 }, { "cell_type": "code", "collapsed": false, "input": [ "#Should be less than 1e-8:\n", "norm(grad-numgrad)/norm(grad+numgrad)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 21, "text": [ "1.9066062157737719e-10" ] } ], "prompt_number": 21 }, { "cell_type": "code", "collapsed": false, "input": [ "T = trainer(NN)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 22 }, { "cell_type": "code", "collapsed": false, "input": [ "T.train(trainX, trainY, testX, testY)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Optimization terminated successfully.\n", " Current function value: 0.002618\n", " Iterations: 101\n", " Function evaluations: 107\n", " Gradient evaluations: 107\n" ] } ], "prompt_number": 23 }, { "cell_type": "code", "collapsed": false, "input": [ "#Visualize Costs during training:\n", "plot(T.J)\n", "plot(T.testJ)\n", "grid(1)\n", "xlabel('Iterations')\n", "ylabel('Costs')\n", "legend(['Training', 'Testing'])" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 25, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nyxWEAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 25 }, { "cell_type": "code", "collapsed": false, "input": [ "allOutputs = NN.forward(allInputs)\n", "\n", "#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": 26, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 26 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }