{ "cells": [ { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "iteration 0: loss 1.100414\n", "iteration 10: loss 0.908604\n", "iteration 20: loss 0.836994\n", "iteration 30: loss 0.804308\n", "iteration 40: loss 0.787222\n", "iteration 50: loss 0.777453\n", "iteration 60: loss 0.771512\n", "iteration 70: loss 0.767734\n", "iteration 80: loss 0.765252\n", "iteration 90: loss 0.763578\n", "iteration 100: loss 0.762428\n", "iteration 110: loss 0.761624\n", "iteration 120: loss 0.761055\n", "iteration 130: loss 0.760649\n", "iteration 140: loss 0.760356\n", "iteration 150: loss 0.760143\n", "iteration 160: loss 0.759988\n", "iteration 170: loss 0.759874\n", "iteration 180: loss 0.759790\n", "iteration 190: loss 0.759728\n" ] } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "#Train a Linear Classifier\n", "\n", "# initialize parameters randomly\n", "W = 0.01 * np.random.randn(D,K)\n", "b = np.zeros((1,K))\n", "\n", "# some hyperparameters\n", "step_size = 1e-0\n", "reg = 1e-3 # regularization strength\n", "\n", "# gradient descent loop\n", "num_examples = X.shape[0]\n", "for i in xrange(200):\n", " \n", " # evaluate class scores, [N x K]\n", " scores = np.dot(X, W) + b \n", " \n", " # compute the class probabilities\n", " exp_scores = np.exp(scores)\n", " probs = exp_scores / np.sum(exp_scores, axis=1, keepdims=True) # [N x K]\n", " \n", " # compute the loss: average cross-entropy loss and regularization\n", " corect_logprobs = -np.log(probs[range(num_examples),y])\n", " data_loss = np.sum(corect_logprobs)/num_examples\n", " reg_loss = 0.5*reg*np.sum(W*W)\n", " loss = data_loss + reg_loss\n", " if i % 10 == 0:\n", " print \"iteration %d: loss %f\" % (i, loss)\n", " \n", " # compute the gradient on scores\n", " dscores = probs\n", " dscores[range(num_examples),y] -= 1\n", " dscores /= num_examples\n", " \n", " # backpropate the gradient to the parameters (W,b)\n", " dW = np.dot(X.T, dscores)\n", " db = np.sum(dscores, axis=0, keepdims=True)\n", " \n", " dW += reg*W # regularization gradient\n", " \n", " # perform a parameter update\n", " W += -step_size * dW\n", " b += -step_size * db" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "training accuracy: 0.51\n" ] } ], "source": [ "# evaluate training set accuracy\n", "scores = np.dot(X, W) + b\n", "predicted_class = np.argmax(scores, axis=1)\n", "print 'training accuracy: %.2f' % (np.mean(predicted_class == y))" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(-1.8987463970374139, 1.9412536029625895)" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# plot the resulting classifier\n", "h = 0.02\n", "x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1\n", "y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1\n", "xx, yy = np.meshgrid(np.arange(x_min, x_max, h),\n", " np.arange(y_min, y_max, h))\n", "Z = np.dot(np.c_[xx.ravel(), yy.ravel()], W) + b\n", "Z = np.argmax(Z, axis=1)\n", "Z = Z.reshape(xx.shape)\n", "fig = plt.figure()\n", "plt.contourf(xx, yy, Z, cmap=plt.cm.Spectral, alpha=0.8)\n", "plt.scatter(X[:, 0], X[:, 1], c=y, s=40, cmap=plt.cm.Spectral)\n", "plt.xlim(xx.min(), xx.max())\n", "plt.ylim(yy.min(), yy.max())\n", "#fig.savefig('spiral_linear.png')" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "iteration 0: loss 1.098714\n", "iteration 1000: loss 0.295563\n", "iteration 2000: loss 0.257634\n", "iteration 3000: loss 0.250632\n", "iteration 4000: loss 0.248781\n", "iteration 5000: loss 0.247064\n", "iteration 6000: loss 0.245940\n", "iteration 7000: loss 0.245230\n", "iteration 8000: loss 0.244816\n", "iteration 9000: loss 0.244535\n" ] } ], "source": [ "# initialize parameters randomly\n", "h = 100 # size of hidden layer\n", "W = 0.01 * np.random.randn(D,h)\n", "b = np.zeros((1,h))\n", "W2 = 0.01 * np.random.randn(h,K)\n", "b2 = np.zeros((1,K))\n", "\n", "# some hyperparameters\n", "step_size = 1e-0\n", "reg = 1e-3 # regularization strength\n", "\n", "# gradient descent loop\n", "num_examples = X.shape[0]\n", "for i in xrange(10000):\n", " \n", " # evaluate class scores, [N x K]\n", " hidden_layer = np.maximum(0, np.dot(X, W) + b) # note, ReLU activation\n", " scores = np.dot(hidden_layer, W2) + b2\n", " \n", " # compute the class probabilities\n", " exp_scores = np.exp(scores)\n", " probs = exp_scores / np.sum(exp_scores, axis=1, keepdims=True) # [N x K]\n", " \n", " # compute the loss: average cross-entropy loss and regularization\n", " corect_logprobs = -np.log(probs[range(num_examples),y])\n", " data_loss = np.sum(corect_logprobs)/num_examples\n", " reg_loss = 0.5*reg*np.sum(W*W) + 0.5*reg*np.sum(W2*W2)\n", " loss = data_loss + reg_loss\n", " if i % 1000 == 0:\n", " print \"iteration %d: loss %f\" % (i, loss)\n", " \n", " # compute the gradient on scores\n", " dscores = probs\n", " dscores[range(num_examples),y] -= 1\n", " dscores /= num_examples\n", " \n", " # backpropate the gradient to the parameters\n", " # first backprop into parameters W2 and b2\n", " dW2 = np.dot(hidden_layer.T, dscores)\n", " db2 = np.sum(dscores, axis=0, keepdims=True)\n", " # next backprop into hidden layer\n", " dhidden = np.dot(dscores, W2.T)\n", " # backprop the ReLU non-linearity\n", " dhidden[hidden_layer <= 0] = 0\n", " # finally into W,b\n", " dW = np.dot(X.T, dhidden)\n", " db = np.sum(dhidden, axis=0, keepdims=True)\n", " \n", " # add regularization gradient contribution\n", " dW2 += reg * W2\n", " dW += reg * W\n", " \n", " # perform a parameter update\n", " W += -step_size * dW\n", " b += -step_size * db\n", " W2 += -step_size * dW2\n", " b2 += -step_size * db2" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "training accuracy: 0.99\n" ] } ], "source": [ "# evaluate training set accuracy\n", "hidden_layer = np.maximum(0, np.dot(X, W) + b)\n", "scores = np.dot(hidden_layer, W2) + b2\n", "predicted_class = np.argmax(scores, axis=1)\n", "print 'training accuracy: %.2f' % (np.mean(predicted_class == y))" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(-1.8987463970374139, 1.9412536029625895)" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nQDHwU+Danl7o54nTB7BZiqIow8vx80beOLyj2337m0K5WAiRD0wHVgohvm3ZHiqEWAkgpbQDvwZW\nA6nAh1LKtP4cV1EURemb/mbXfA583sX2YuCydt9/B8Qfv5+iKIpyaqkZr4qiKMOYCvKKoijDmAry\niqIow5gK8oqiKMOYCvKKoijDmAryiqIow5gK8oqiKMOYCvKKoijDmAryiqIow5gK8oqiKMOYCvKK\noijDmAryiqIow5gK8oqiKMOYCvKKoijDmAryiqIow5gK8oqiKMOYCvKKoijDmAryiqIow5gK8oqi\nKMOYCvKKoijDWL+CvBBiqRDioBDCLoSY3MN+uUKIFCHEXiHEjv4cU1EURek7XT9//gCwBHi9l/0c\nwDwpZXU/j6coiqKcgH4FeSllOoAQQvSyq0ANDSmKogy6wQq8ElgjhNgphLh9kI6pKIpy1uu1Jy+E\nWAMEt9+EM2g/KqX8qo/HmSWlLBZCBOIM9mlSyk0n3lxFURTlRPQa5KWUF/b3IFLK4pZ/y4UQK4Cp\nQLdB/vVD29oeTwkMJzkwvL9NUBRFGTZ2lRewu7ygT/v298Zre12Oywsh3AGNlLJeCOEBXAQ80dML\n/Txx+gA2S1EUZXhJPq7z+8bh7pMW+5tCuVgIkQ9MB1YKIb5t2R4qhFjZslswsEkIsRfYBnwlpVzd\nn+MqiqIofdPf7JrPgc+72F4MXNbyOAeY2J/jKIqiKCdHpTUqiqIMYyrIK4qiDGMqyCuKogxjKsgr\niqIMYyrIK4qiDGMqyCuKogxjKsgriqIMYyrIK4qiDGMqyCuKogxjKsgriqIMYyrIK4qiDGMqyCuK\nogxjKsgriqIMYyrIK4qiDGMqyCuKogxjKsi3s6uPy2kNFWdSe8+ktsKZ1d4zqa2g2jvYVJBvp69r\nJg4VZ1J7z6S2wpnV3jOpraDaO9hUkFcURRnGVJBXFEUZxoSU8nS3oQMhxNBqkKIoyhlASim62j7k\ngryiKIoycNRwjaIoyjCmgryiKMowdlYHeSHEUiHEQSGEXQgxuYf9coUQKUKIvUKIHYPZxnZt6Gtb\nFwghDgshMoQQDw5mG49rh68QYrUQIl0IsUoI4d3Nfqft3PblXAkhXhZCHBFC7BNCTBzM9nXRlh7b\nK4SYK4SoEULsafn6/eloZ0tb3hJClAoh9vewz1A6tz22dyid2xMmpTxrv4B4YBSwHpjcw37ZgO9Q\nbyvOi3YmEAXogX1Awmlq73PA71oePwg8O5TObV/OFbAQ+Lrl8TRg22l8//vS3rnAl6erjce1ZTYw\nEdjfzfND5tz2sb1D5tye6NdZ3ZOXUqZLKY8AXd6Vbkdwmj/19LGtU4EjUso8KaUV+BBYNCgN7GwR\n8E7L43eAxd3sd7rObV/O1SLgXQAp5XbAWwgRPLjNbNPX97a3v+VBIaXcBFT3sMtQOrd9aS8MkXN7\nos7qIH8CJLBGCLFTCHH76W5MD8KA/HbfF7RsOx2CpJSlAFLKEiCom/1O17nty7k6fp/CLvYZLH19\nb2e0DH98LYRIHJymnZShdG776kw5tx3oTncDTjUhxBqgfQ9B4Awsj0opv+rjy8ySUhYLIQJxBqS0\nliv/UGzroOmhvV2NV3aXqzso5/YssRuIlFI2CiEWAp8Do09zm4aLM/bcDvsgL6W8cABeo7jl33Ih\nxAqcH50HPBANQFsLgch234e3bDslempvy02sYCllqRAiBCjr5jUG5dx2oS/nqhCI6GWfwdJre6WU\n9e0efyuEeE0I4SelrBqkNp6IoXRue3WGndsO1HDNMV3PFhPCXQjh2fLYA7gIODiYDetCd2ODO4E4\nIUSUEMIF+Cnw5eA1q4MvgZtbHt8EfHH8Dqf53PblXH0J3NjSvulATesQ1GnQa3vbj2kLIabinOx4\nOoOQoPu/1aF0blt1294heG777nTf+T2dXzhvBuYDTUAx8G3L9lBgZcvjGJyZDHuBA8BDQ7WtLd8v\nANKBI6errS3t8APWtrRlNeAz1M5tV+cK+DlwR7t9/oEzqyWFHjKwhkJ7gV/hvEjuBbYA005jWz8A\nigAzcBS4ZYif2x7bO5TO7Yl+qbIGiqIow5garlEURRnGVJBXFEUZxlSQVxRFGcZUkFcURRnGVJBX\nFEUZxlSQVxRFGcZUkFcURRnGVJBXFEUZxv4fTdjOGCcS/eMAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# plot the resulting classifier\n", "h = 0.02\n", "x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1\n", "y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1\n", "xx, yy = np.meshgrid(np.arange(x_min, x_max, h),\n", " np.arange(y_min, y_max, h))\n", "Z = np.dot(np.maximum(0, np.dot(np.c_[xx.ravel(), yy.ravel()], W) + b), W2) + b2\n", "Z = np.argmax(Z, axis=1)\n", "Z = Z.reshape(xx.shape)\n", "fig = plt.figure()\n", "plt.contourf(xx, yy, Z, cmap=plt.cm.Spectral, alpha=0.8)\n", "plt.scatter(X[:, 0], X[:, 1], c=y, s=40, cmap=plt.cm.Spectral)\n", "plt.xlim(xx.min(), xx.max())\n", "plt.ylim(yy.min(), yy.max())" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "We’ve worked with a toy 2D dataset and trained both a linear network and a 2-layer Neural Network. \n", "We saw that the change from a linear classifier to a Neural Network involves very few changes in the code. \n", "The score function changes its form (1 line of code difference), and the backpropagation changes its form \n", "(we have to perform one more round of backprop through the hidden layer to the first layer of the network).\n", "\n" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [Root]", "language": "python", "name": "Python [Root]" }, "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 }