From e698c63d4aa65b18712190595a2714a26baa0cb4 Mon Sep 17 00:00:00 2001 From: lemairecarl Date: Tue, 13 Jul 2021 19:20:12 -0400 Subject: [PATCH] Remove solutions and messy outputs --- ...ural Networks in PyTorch (Exercises).ipynb | 304 +++--------------- 1 file changed, 37 insertions(+), 267 deletions(-) diff --git a/intro-to-pytorch/Part 2 - Neural Networks in PyTorch (Exercises).ipynb b/intro-to-pytorch/Part 2 - Neural Networks in PyTorch (Exercises).ipynb index 201afee5f0..f003c5f4a4 100644 --- a/intro-to-pytorch/Part 2 - Neural Networks in PyTorch (Exercises).ipynb +++ b/intro-to-pytorch/Part 2 - Neural Networks in PyTorch (Exercises).ipynb @@ -11,7 +11,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": null, "metadata": { "collapsed": true }, @@ -62,7 +62,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": null, "metadata": { "collapsed": true }, @@ -98,21 +98,11 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": null, "metadata": { "collapsed": true }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "torch.Size([64, 1, 28, 28])\n", - "torch.Size([64])\n" - ] - } - ], + "outputs": [], "source": [ "dataiter = iter(trainloader)\n", "images, labels = dataiter.next()\n", @@ -130,28 +120,11 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": null, "metadata": { "collapsed": true }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "image/png": { - "height": 248, - "width": 251 - }, - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "plt.imshow(images[1].numpy().squeeze(), cmap='Greys_r');" ] @@ -171,53 +144,16 @@ }, { "cell_type": "code", - "execution_count": 75, + "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ - "## Your solution \n", - "\n", - "## Activation function\n", - "def activation(x):\n", - " \"\"\" Sigmoid activation function \n", - " Arguments\n", - " ---------\n", - " x: torch.Tensor\n", - " \"\"\"\n", - " return 1/(1+torch.exp(-x))\n", - "\n", - "### Neural network\n", - "def multi_Layer_NW(inputUnits, hiddenUnits, outputUnits):\n", - " torch.manual_seed(7) # Set the random seed so things are predictable\n", - "\n", - " # Define the size of each layer in our network\n", - " n_input = inputUnits # Number of input units, must match number of input features\n", - " n_hidden = hiddenUnits # Number of hidden units \n", - " n_output = outputUnits # Number of output units\n", + "## Your solution\n", "\n", - " # Weights for inputs to hidden layer\n", - " W1 = torch.randn(n_input, n_hidden)\n", - " # Weights for hidden layer to output layer\n", - " W2 = torch.randn(n_hidden, n_output)\n", "\n", - " # and bias terms for hidden and output layers\n", - " B1 = torch.randn((1, n_hidden))\n", - " B2 = torch.randn((1, n_output))\n", - "\n", - " return W1,W2,B1,B2\n", - "\n", - "def calc_output(features,W1,W2,B1,B2):\n", - " h = activation(torch.matmul(features,W1).add_(B1))\n", - " output = activation(torch.matmul(h,W2).add_(B2))\n", - " return output\n", - "\n", - "# Features are flattened batch input\n", - "features = torch.flatten(images,start_dim=1)\n", - "W1,W2,B1,B2 = multi_Layer_NW(features.shape[1],256,10)\n", - "\n", - "out = calc_output(features,W1,W2,B1,B2) # output of your network, should have shape (64,10)" + "out = # output of your network, should have shape (64,10)" ] }, { @@ -242,24 +178,14 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": null, "metadata": { "collapsed": true }, - "outputs": [ - { - "ename": "IndentationError", - "evalue": "expected an indented block (, line 5)", - "output_type": "error", - "traceback": [ - "\u001b[1;36m File \u001b[1;32m\"\"\u001b[1;36m, line \u001b[1;32m5\u001b[0m\n\u001b[1;33m probabilities = softmax(out)\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mIndentationError\u001b[0m\u001b[1;31m:\u001b[0m expected an indented block\n" - ] - } - ], + "outputs": [], "source": [ "def softmax(x):\n", " ## TODO: Implement the softmax function here\n", - " retrun torch.exp(x) / torch.sum(torch.exp(x))\n", "\n", "# Here, out should be the output of the network in the previous excercise with shape (64,10)\n", "probabilities = softmax(out)\n", @@ -281,7 +207,7 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": null, "metadata": { "collapsed": true }, @@ -292,7 +218,7 @@ }, { "cell_type": "code", - "execution_count": 57, + "execution_count": null, "metadata": { "collapsed": true }, @@ -372,29 +298,13 @@ }, { "cell_type": "code", - "execution_count": 58, + "execution_count": null, "metadata": { "collapsed": true }, - "outputs": [ - { - "data": { - "text/plain": [ - "Network(\n", - " (hidden): Linear(in_features=784, out_features=256, bias=True)\n", - " (output): Linear(in_features=256, out_features=10, bias=True)\n", - " (sigmoid): Sigmoid()\n", - " (softmax): Softmax(dim=1)\n", - ")" - ] - }, - "execution_count": 58, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Create the network and look at its text representation\n", + "outputs": [], + "source": [ + "# Create the network and look at it's text representation\n", "model = Network()\n", "model" ] @@ -408,7 +318,7 @@ }, { "cell_type": "code", - "execution_count": 59, + "execution_count": null, "metadata": { "collapsed": true }, @@ -461,7 +371,7 @@ }, { "cell_type": "code", - "execution_count": 60, + "execution_count": null, "metadata": { "collapsed": true, "scrolled": true @@ -482,24 +392,11 @@ }, { "cell_type": "code", - "execution_count": 61, + "execution_count": null, "metadata": { "collapsed": true }, - "outputs": [ - { - "ename": "AttributeError", - "evalue": "'Network' object has no attribute 'fc1'", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfc1\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mweight\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfc1\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbias\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m~\\Anaconda3\\envs\\envTorch\\lib\\site-packages\\torch\\nn\\modules\\module.py\u001b[0m in \u001b[0;36m__getattr__\u001b[1;34m(self, name)\u001b[0m\n\u001b[0;32m 592\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mmodules\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 593\u001b[0m raise AttributeError(\"'{}' object has no attribute '{}'\".format(\n\u001b[1;32m--> 594\u001b[1;33m type(self).__name__, name))\n\u001b[0m\u001b[0;32m 595\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 596\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m__setattr__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mname\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mAttributeError\u001b[0m: 'Network' object has no attribute 'fc1'" - ] - } - ], + "outputs": [], "source": [ "print(model.fc1.weight)\n", "print(model.fc1.bias)" @@ -514,24 +411,11 @@ }, { "cell_type": "code", - "execution_count": 62, + "execution_count": null, "metadata": { "collapsed": true }, - "outputs": [ - { - "ename": "AttributeError", - "evalue": "'Network' object has no attribute 'fc1'", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m# Set biases to all zeros\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mmodel\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfc1\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbias\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfill_\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;32m~\\Anaconda3\\envs\\envTorch\\lib\\site-packages\\torch\\nn\\modules\\module.py\u001b[0m in \u001b[0;36m__getattr__\u001b[1;34m(self, name)\u001b[0m\n\u001b[0;32m 592\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mmodules\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 593\u001b[0m raise AttributeError(\"'{}' object has no attribute '{}'\".format(\n\u001b[1;32m--> 594\u001b[1;33m type(self).__name__, name))\n\u001b[0m\u001b[0;32m 595\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 596\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m__setattr__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mname\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mAttributeError\u001b[0m: 'Network' object has no attribute 'fc1'" - ] - } - ], + "outputs": [], "source": [ "# Set biases to all zeros\n", "model.fc1.bias.data.fill_(0)" @@ -539,24 +423,11 @@ }, { "cell_type": "code", - "execution_count": 63, + "execution_count": null, "metadata": { "collapsed": true }, - "outputs": [ - { - "ename": "AttributeError", - "evalue": "'Network' object has no attribute 'fc1'", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m# sample from random normal with standard dev = 0.01\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mmodel\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfc1\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mweight\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mnormal_\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mstd\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m0.01\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;32m~\\Anaconda3\\envs\\envTorch\\lib\\site-packages\\torch\\nn\\modules\\module.py\u001b[0m in \u001b[0;36m__getattr__\u001b[1;34m(self, name)\u001b[0m\n\u001b[0;32m 592\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mmodules\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 593\u001b[0m raise AttributeError(\"'{}' object has no attribute '{}'\".format(\n\u001b[1;32m--> 594\u001b[1;33m type(self).__name__, name))\n\u001b[0m\u001b[0;32m 595\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 596\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m__setattr__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mname\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mAttributeError\u001b[0m: 'Network' object has no attribute 'fc1'" - ] - } - ], + "outputs": [], "source": [ "# sample from random normal with standard dev = 0.01\n", "model.fc1.weight.data.normal_(std=0.01)" @@ -573,28 +444,11 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": null, "metadata": { "collapsed": true }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "image/png": { - "height": 235, - "width": 424 - }, - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# Grab some data \n", "dataiter = iter(trainloader)\n", @@ -625,42 +479,11 @@ }, { "cell_type": "code", - "execution_count": 65, + "execution_count": null, "metadata": { "collapsed": true }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Sequential(\n", - " (0): Linear(in_features=784, out_features=128, bias=True)\n", - " (1): ReLU()\n", - " (2): Linear(in_features=128, out_features=64, bias=True)\n", - " (3): ReLU()\n", - " (4): Linear(in_features=64, out_features=10, bias=True)\n", - " (5): Softmax(dim=1)\n", - ")\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "image/png": { - "height": 235, - "width": 424 - }, - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# Hyperparameters for our network\n", "input_size = 784\n", @@ -694,37 +517,11 @@ }, { "cell_type": "code", - "execution_count": 66, + "execution_count": null, "metadata": { "collapsed": true }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Linear(in_features=784, out_features=128, bias=True)\n" - ] - }, - { - "data": { - "text/plain": [ - "Parameter containing:\n", - "tensor([[-0.0087, -0.0220, 0.0054, ..., -0.0126, 0.0284, -0.0057],\n", - " [-0.0007, 0.0179, -0.0247, ..., 0.0131, -0.0338, -0.0108],\n", - " [ 0.0012, 0.0208, -0.0094, ..., 0.0140, 0.0052, 0.0094],\n", - " ...,\n", - " [-0.0183, 0.0111, 0.0117, ..., 0.0324, 0.0155, -0.0284],\n", - " [ 0.0046, -0.0355, 0.0147, ..., 0.0157, 0.0112, -0.0042],\n", - " [ 0.0255, -0.0254, -0.0215, ..., 0.0253, -0.0181, 0.0345]],\n", - " requires_grad=True)" - ] - }, - "execution_count": 66, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "print(model[0])\n", "model[0].weight" @@ -739,29 +536,11 @@ }, { "cell_type": "code", - "execution_count": 67, + "execution_count": null, "metadata": { "collapsed": true }, - "outputs": [ - { - "data": { - "text/plain": [ - "Sequential(\n", - " (fc1): Linear(in_features=784, out_features=128, bias=True)\n", - " (relu1): ReLU()\n", - " (fc2): Linear(in_features=128, out_features=64, bias=True)\n", - " (relu2): ReLU()\n", - " (output): Linear(in_features=64, out_features=10, bias=True)\n", - " (softmax): Softmax(dim=1)\n", - ")" - ] - }, - "execution_count": 67, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "from collections import OrderedDict\n", "model = nn.Sequential(OrderedDict([\n", @@ -783,20 +562,11 @@ }, { "cell_type": "code", - "execution_count": 68, + "execution_count": null, "metadata": { "collapsed": true }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Linear(in_features=784, out_features=128, bias=True)\n", - "Linear(in_features=784, out_features=128, bias=True)\n" - ] - } - ], + "outputs": [], "source": [ "print(model[0])\n", "print(model.fc1)" @@ -812,7 +582,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python [default]", "language": "python", "name": "python3" }, @@ -826,7 +596,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.1" + "version": "3.6.4" } }, "nbformat": 4,