Skip to content

Instantly share code, notes, and snippets.

@arghyadeep99
Created October 3, 2019 01:58
Show Gist options
  • Save arghyadeep99/be26ac81de2f27afa4d7674543f4cfed to your computer and use it in GitHub Desktop.
Save arghyadeep99/be26ac81de2f27afa4d7674543f4cfed to your computer and use it in GitHub Desktop.
Revision of CNN.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "Revision of CNN.ipynb",
"provenance": [],
"collapsed_sections": [
"IHxOHn4Lkewd",
"hk8UAglbkq82",
"H33p3s9Kk4F1",
"npOSSkRqk_B1",
"IJ7_o41byRMq",
"6jNvS2mBzcQD",
"Hr58e6sD4OuL",
"dXPFilDV495B",
"tQo-Ud3J5t46"
],
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"accelerator": "GPU"
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/arghyadeep99/be26ac81de2f27afa4d7674543f4cfed/revision-of-cnn.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "cOBWp6QIfxnh",
"colab_type": "text"
},
"source": [
"#Convolutional Neural Networks\n",
"<ul>\n",
" <li><a href=\"https://adeshpande3.github.io/A-Beginner%27s-Guide-To-Understanding-Convolutional-Neural-Networks/\">What are convolutional neural networks?</a></li>\n",
"<ul>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "aBeCBae0PUf8",
"colab_type": "text"
},
"source": [
"### There are four main operations in a general CNN:\n",
"\n",
"1. Convolution\n",
"2. Non Linearity (ReLU)\n",
"3. Pooling or Sub Sampling\n",
"4. Classification (Fully Connected Layer)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Q_ICFWtzP-OY",
"colab_type": "text"
},
"source": [
"<figure>\n",
"<center>\n",
"<img src='https://drive.google.com/uc?id=1JVcAkiXWCj5TAGk7zoh3t2F4JlLfkAYy'/>\n",
" </center>\n",
" <center><figcaption><b>What a computer sees</b></figcaption></center>\n",
"</figure>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "uoOeCZpXlN_U",
"colab_type": "text"
},
"source": [
"## 1. The convolution step\n",
"<figure>\n",
"<center>\n",
"<img src='https://drive.google.com/uc?id=1JxrG91x3lEWSm40kQxGHNbKl2e5hBrt4'/>\n",
" </center>\n",
" <center><figcaption><b>Understanding what happens in Convolution</b></figcaption></center>\n",
"</figure>\n",
"\n",
"<figure>\n",
"<center>\n",
"<img src='https://drive.google.com/uc?id=1vl3-hkq8nPONWFBQa1YU7Y0RuiIEv9Ue'/>\n",
" </center>\n",
" <center><figcaption><b>Result of convolution</b></figcaption></center>\n",
"</figure>\n",
"\n",
"<figure>\n",
"<center>\n",
"<img src='https://drive.google.com/uc?id=1QumoiRuwx-g4N-F4vLOyOUDWqt9OsxWP'/>\n",
" </center>\n",
" <center><figcaption><b>Some common filters</b></figcaption></center>\n",
"</figure>\n",
"\n",
"<figure>\n",
"<center>\n",
"<img src='https://drive.google.com/uc?id=17Bk_CnB1VjimpkWP7q9tZKqQ-lK8XJun'/>\n",
" </center>\n",
" <center><figcaption><b>Generation of feature maps</b></figcaption></center>\n",
"</figure>\n",
"\n",
"<figure>\n",
"<center>\n",
"<img src='https://drive.google.com/uc?id=1Te-E_r68MH6A_QGBDGLx1scADZ2_RfKz'/>\n",
" </center>\n",
" <center><figcaption><b>Stack of feature maps</b></figcaption></center>\n",
"</figure>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "iIAHRbSOReiD",
"colab_type": "text"
},
"source": [
"## 2. Introducing non-linearity (ReLU function in this case)\n",
"\n",
"ReLU is an element wise operation (applied per pixel) and replaces all negative pixel values in the feature map by zero. The purpose of ReLU is to introduce non-linearity in our ConvNet, since most of the real-world data we would want our ConvNet to learn would be non-linear (Convolution is a linear operation – element wise matrix multiplication and addition, so we account for non-linearity by introducing a non-linear function like ReLU). Other non linear functions such as tanh or sigmoid can also be used instead of ReLU, but ReLU has been found to perform better in most situations.\n",
"\n",
"\n",
"<figure>\n",
"<center>\n",
"<img src='https://drive.google.com/uc?id=1l1L0z_wjDxgOH2al8rjygDBUM7Ybvo11'/>\n",
" </center>\n",
" <center><figcaption><b>Result of \"ReLUfication\"</b></figcaption></center>\n",
"</figure>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "IteLWimUSG7T",
"colab_type": "text"
},
"source": [
"## 3. Pooling or Sub Sampling\n",
"\n",
"Spatial Pooling (also called subsampling or downsampling) reduces the dimensionality of each feature map but retains the most important information. Spatial Pooling can be of different types: Max, Average, Sum etc.\n",
"\n",
"In case of Max Pooling, we define a spatial neighborhood (for example, a 2×2 window) and take the largest element from the rectified feature map within that window. Instead of taking the largest element we could also take the average (Average Pooling) or sum of all elements in that window. In practice, Max Pooling has been shown to work better.\n",
"\n",
"<figure>\n",
"<center>\n",
"<img src='https://drive.google.com/uc?id=1qZ7BIOC3VVt-4HVvpG0PJXTNdoLRY84g'/>\n",
" </center>\n",
" <center><figcaption><b>How max pooling works</b></figcaption></center>\n",
"</figure>\n",
"\n",
"We slide our 2 x 2 window by 2 cells (also called ‘stride’) and take the maximum value in each region. This reduces the dimensionality of our feature map.\n",
"\n",
"In the network shown below, pooling operation is applied separately to each feature map (notice that, due to this, we get three output maps from three input maps).\n",
"\n",
"<figure>\n",
"<center>\n",
"<img src='https://drive.google.com/uc?id=1c1PLdRPkIeqFXZWytUDJpQX-uPcMUEVg'/>\n",
" </center>\n",
" <center><figcaption><b>Stack of pooled layers</b></figcaption></center>\n",
"</figure>\n",
"\n",
"The function of Pooling is to progressively reduce the spatial size of the input representation. In particular, pooling:\n",
"1. makes the input representations (feature dimension) smaller and more manageable \n",
"2. reduces the number of parameters and computations in the network, therefore, controlling overfitting \n",
"3. makes the network invariant to small transformations, distortions and translations in the input image (a small distortion in input will not change the output of Pooling – since we take the maximum / average value in a local neighborhood).\n",
"4. helps us arrive at an almost scale invariant representation of our image (the exact term is “equivariant”). This is very powerful since we can detect objects in an image no matter where they are located.\n",
"\n",
"<figure>\n",
"<center>\n",
"<img src='https://drive.google.com/uc?id=1teXgbRKEY--9JfmbInHyeDXMVpQR0iks'/>\n",
" </center>\n",
" <center><figcaption><b>Result of pooling</b></figcaption></center>\n",
"</figure>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "QOjHMRn1U8_e",
"colab_type": "text"
},
"source": [
"## 4. Fully connected layer\n",
"\n",
"he Fully Connected layer is a traditional Multi Layer Perceptron that uses a softmax activation function in the output layer (other classifiers like SVM can also be used, but will stick to softmax in this post). The term “Fully Connected” implies that every neuron in the previous layer is connected to every neuron on the next layer. I recommend reading this post if you are unfamiliar with Multi Layer Perceptrons.\n",
"\n",
"The output from the convolutional and pooling layers represent high-level features of the input image. The purpose of the Fully Connected layer is to use these features for classifying the input image into various classes based on the training dataset. For example, the image classification task we set out to perform has four possible outputs.\n",
"\n",
"Apart from classification, adding a fully-connected layer is also a (usually) cheap way of learning non-linear combinations of these features. Most of the features from convolutional and pooling layers may be good for the classification task, but combinations of those features might be even better.\n",
"\n",
"The sum of output probabilities from the Fully Connected Layer is 1. This is ensured by using the Softmax as the activation function in the output layer of the Fully Connected Layer. The Softmax function takes a vector of arbitrary real-valued scores and squashes it to a vector of values between zero and one that sum to one.\n",
"\n",
"## 5. The final picture (pun intended)\n",
"\n",
"Understanding backpropogation\n",
"\n",
"<figure>\n",
"<center>\n",
"<img src='https://drive.google.com/uc?id=1F30C-fIU9UADqRyGJfss7PfhHarH28Ln'/>\n",
" </center>\n",
" <center><figcaption><b>The final picture</b></figcaption></center>\n",
"</figure>\n",
"\n",
"Image Credits: https://ujjwalkarn.me/2016/08/11/intuitive-explanation-convnets/"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "pREN0A_pkOpd",
"colab_type": "text"
},
"source": [
"##Building the model"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "IHxOHn4Lkewd",
"colab_type": "text"
},
"source": [
"### Adding PyTorch to this notebook and Importing Files"
]
},
{
"cell_type": "code",
"metadata": {
"id": "Q7ortZIJjvFw",
"colab_type": "code",
"outputId": "97cb5a79-972e-4f92-917e-6c41ea9014ae",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"source": [
"# make sure to enable GPU acceleration! == Done\n",
"device = 'cuda'\n",
"\n",
"!pip3 install torch torchvision\n",
"!pip install torchviz\n",
"\n",
"#Import Libraries\n",
"\n",
"\n",
"from __future__ import print_function\n",
"import argparse\n",
"import torch\n",
"import torch.nn as nn\n",
"import torch.nn.functional as F\n",
"import torch.optim as optim\n",
"from torchvision import datasets, transforms\n",
"from torch.autograd import Variable\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from math import pi\n",
"from copy import deepcopy\n",
"from torchviz import make_dot, make_dot_from_trace"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"Requirement already satisfied: torch in /usr/local/lib/python3.6/dist-packages (1.1.0)\n",
"Requirement already satisfied: torchvision in /usr/local/lib/python3.6/dist-packages (0.3.0)\n",
"Requirement already satisfied: numpy in /usr/local/lib/python3.6/dist-packages (from torch) (1.16.4)\n",
"Requirement already satisfied: six in /usr/local/lib/python3.6/dist-packages (from torchvision) (1.12.0)\n",
"Requirement already satisfied: pillow>=4.1.1 in /usr/local/lib/python3.6/dist-packages (from torchvision) (4.3.0)\n",
"Requirement already satisfied: olefile in /usr/local/lib/python3.6/dist-packages (from pillow>=4.1.1->torchvision) (0.46)\n",
"Collecting torchviz\n",
"\u001b[?25l Downloading https://files.pythonhosted.org/packages/8f/8e/a9630c7786b846d08b47714dd363a051f5e37b4ea0e534460d8cdfc1644b/torchviz-0.0.1.tar.gz (41kB)\n",
"\u001b[K |████████████████████████████████| 51kB 4.6MB/s \n",
"\u001b[?25hRequirement already satisfied: torch in /usr/local/lib/python3.6/dist-packages (from torchviz) (1.1.0)\n",
"Requirement already satisfied: graphviz in /usr/local/lib/python3.6/dist-packages (from torchviz) (0.10.1)\n",
"Requirement already satisfied: numpy in /usr/local/lib/python3.6/dist-packages (from torch->torchviz) (1.16.4)\n",
"Building wheels for collected packages: torchviz\n",
" Building wheel for torchviz (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
" Created wheel for torchviz: filename=torchviz-0.0.1-cp36-none-any.whl size=3520 sha256=12a35599acd74d7e9a3bcf3993c15bc006431ba3eb645f3ac6cdde37d0032cf7\n",
" Stored in directory: /root/.cache/pip/wheels/2a/c2/c5/b8b4d0f7992c735f6db5bfa3c5f354cf36502037ca2b585667\n",
"Successfully built torchviz\n",
"Installing collected packages: torchviz\n",
"Successfully installed torchviz-0.0.1\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "hk8UAglbkq82",
"colab_type": "text"
},
"source": [
"###All Paramteres for training the model"
]
},
{
"cell_type": "code",
"metadata": {
"id": "0VhjMJ9hkzEF",
"colab_type": "code",
"colab": {}
},
"source": [
"args={}\n",
"kwargs={}\n",
"args['batch_size']=1000\n",
"args['test_batch_size']=1000\n",
"args['epochs']=10 #The number of Epochs is the number of times you go through the full dataset. \n",
"args['lr']=0.01 #Learning rate is how fast it will decend. \n",
"args['momentum']=0.5 #SGD momentum (default: 0.5) Momentum is a moving average of our gradients (helps to keep direction).\n",
"\n",
"args['seed']=1 #random seed\n",
"args['log_interval']=10\n",
"args['cuda']=True"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "H33p3s9Kk4F1",
"colab_type": "text"
},
"source": [
"###Downloading and pre-processing data"
]
},
{
"cell_type": "code",
"metadata": {
"id": "ph9MZxnqk3LQ",
"colab_type": "code",
"outputId": "12ca8da6-c563-4a99-f405-193ac3482173",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"source": [
"#load the data\n",
"train_loader = torch.utils.data.DataLoader(\n",
" datasets.MNIST('../data', train=True, download=True,\n",
" transform=transforms.Compose([\n",
" transforms.ToTensor(),\n",
" transforms.Normalize((0.1307,), (0.3081,))\n",
" ])),\n",
" batch_size=args['batch_size'], shuffle=True, **kwargs)\n",
"test_loader = torch.utils.data.DataLoader(\n",
" datasets.MNIST('../data', train=False, transform=transforms.Compose([\n",
" transforms.ToTensor(),\n",
" transforms.Normalize((0.1307,), (0.3081,))\n",
" ])),\n",
" batch_size=args['test_batch_size'], shuffle=True, **kwargs)\n",
"\n",
"data = datasets.MNIST('../data', train=False, transform=transforms.Compose([\n",
" transforms.ToTensor(),\n",
" transforms.Normalize((0.1307,), (0.3081,))\n",
" ]))"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
" 0%| | 0/9912422 [00:00<?, ?it/s]"
],
"name": "stderr"
},
{
"output_type": "stream",
"text": [
"Downloading http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz to ../data/MNIST/raw/train-images-idx3-ubyte.gz\n"
],
"name": "stdout"
},
{
"output_type": "stream",
"text": [
"9920512it [00:00, 21906603.24it/s] \n"
],
"name": "stderr"
},
{
"output_type": "stream",
"text": [
"Extracting ../data/MNIST/raw/train-images-idx3-ubyte.gz\n"
],
"name": "stdout"
},
{
"output_type": "stream",
"text": [
"32768it [00:00, 335428.03it/s]\n",
"0it [00:00, ?it/s]"
],
"name": "stderr"
},
{
"output_type": "stream",
"text": [
"Downloading http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz to ../data/MNIST/raw/train-labels-idx1-ubyte.gz\n",
"Extracting ../data/MNIST/raw/train-labels-idx1-ubyte.gz\n",
"Downloading http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz to ../data/MNIST/raw/t10k-images-idx3-ubyte.gz\n"
],
"name": "stdout"
},
{
"output_type": "stream",
"text": [
"1654784it [00:00, 5844890.47it/s] \n",
"8192it [00:00, 130587.80it/s]\n"
],
"name": "stderr"
},
{
"output_type": "stream",
"text": [
"Extracting ../data/MNIST/raw/t10k-images-idx3-ubyte.gz\n",
"Downloading http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz to ../data/MNIST/raw/t10k-labels-idx1-ubyte.gz\n",
"Extracting ../data/MNIST/raw/t10k-labels-idx1-ubyte.gz\n",
"Processing...\n",
"Done!\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "npOSSkRqk_B1",
"colab_type": "text"
},
"source": [
"###Defining the model"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "i98jratNpvJu",
"colab_type": "text"
},
"source": [
"<figure>\n",
"<center>\n",
"<img src='https://drive.google.com/uc?id=1NQbtJmkDPsu9vzfT1qSgpLskEDR9tiqA'/>\n",
" </center>\n",
" <center><figcaption><b>Understanding the dilation parameter</b></figcaption></center>\n",
"</figure>"
]
},
{
"cell_type": "code",
"metadata": {
"id": "mq_y4gc3lJ1f",
"colab_type": "code",
"colab": {}
},
"source": [
"class Net(nn.Module):\n",
" #This defines the structure of the NN.\n",
" def __init__(self):\n",
" super(Net, self).__init__()\n",
" self.conv1 = nn.Conv2d(1, 16, kernel_size=5, stride = 1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros')\n",
" self.conv2 = nn.Conv2d(16, 32, kernel_size=5, stride = 1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros')\n",
" self.conv3 = nn.Conv2d(32,64, kernel_size=5, stride = 1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros')\n",
" self.fc1 = nn.Linear(3*3*64, 256)\n",
" self.fc2 = nn.Linear(256, 10)\n",
"\n",
" def forward(self, x):\n",
" self.x = x\n",
" self.after_conv1 = self.conv1(self.x) \n",
" self.after_relu1 = F.relu(self.after_conv1)\n",
" self.after_conv2 = self.conv2(self.after_relu1)\n",
" self.after_maxpool2 = F.max_pool2d(self.after_conv2, 2)\n",
" self.after_relu2 = F.relu(self.after_maxpool2)\n",
" self.after_dropout2 = F.dropout(self.after_relu2, p=0.5, training=self.training)\n",
" self.after_conv3 = self.conv3(self.after_dropout2)\n",
" self.after_maxpool3 = F.max_pool2d(self.after_conv3,2)\n",
" self.after_relu3 = F.relu(self.after_maxpool3)\n",
" self.after_dropout3 = F.dropout(self.after_relu3, p=0.5, training=self.training)\n",
" self.after_reshape = self.after_dropout3.view(-1,3*3*64 )\n",
" self.after_fc4 = self.fc1(self.after_reshape)\n",
" self.after_relu4 = F.relu(self.after_fc4)\n",
" self.after_dropout4 = F.dropout(self.after_relu4, training=self.training)\n",
" self.after_fc5 = self.fc2(self.after_dropout4)\n",
" return F.log_softmax(self.after_fc5, dim=1)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "IJ7_o41byRMq",
"colab_type": "text"
},
"source": [
"###Training and Testing the Model\n"
]
},
{
"cell_type": "code",
"metadata": {
"id": "J39pN6C0yUr_",
"colab_type": "code",
"outputId": "2bb86b3d-891d-4f7c-e4fb-0e4572dc54a1",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"source": [
"def train(epoch):\n",
" model.train()\n",
" for batch_idx, (data, target) in enumerate(train_loader):\n",
" if args['cuda']:\n",
" data, target = data.cuda(), target.cuda()\n",
" #Variables in Pytorch are differenciable. \n",
" data, target = Variable(data), Variable(target)\n",
" #This will zero out the gradients for this batch. \n",
" optimizer.zero_grad()\n",
" output = model(data)\n",
" # Calculate the loss The negative log likelihood loss. It is useful to train a classification problem with C classes.\n",
" loss = F.nll_loss(output, target)\n",
" # print(loss)\n",
" #dloss/dx for every Variable \n",
" loss.backward()\n",
" #to do a one-step update on our parameter.\n",
" optimizer.step()\n",
" #Print out the loss periodically. \n",
" if batch_idx % args['log_interval'] == 0:\n",
" print('Train Epoch: {} [{}/{} ({:.0f}%)]\\tLoss: {:.6f}'.format(\n",
" epoch, batch_idx * len(data), len(train_loader.dataset),\n",
" 100. * batch_idx / len(train_loader), loss.data))\n",
"\n",
"def test():\n",
" model.eval()\n",
" test_loss = 0\n",
" correct = 0\n",
" for data, target in test_loader:\n",
" if args['cuda']:\n",
" data, target = data.cuda(), target.cuda()\n",
" data, target = Variable(data, volatile=True), Variable(target)\n",
" output = model(data)\n",
" test_loss += F.nll_loss(output, target, size_average=False).data # sum up batch loss\n",
" pred = output.data.max(1, keepdim=True)[1] # get the index of the max log-probability\n",
" correct += pred.eq(target.data.view_as(pred)).long().cpu().sum()\n",
"\n",
" test_loss /= len(test_loader.dataset)\n",
" print('\\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\\n'.format(\n",
" test_loss, correct, len(test_loader.dataset),\n",
" 100. * correct / len(test_loader.dataset)))\n",
" \n",
"model = Net()\n",
"if args['cuda']:\n",
" model.cuda()\n",
"\n",
"optimizer = optim.SGD(model.parameters(), lr=args['lr'], momentum=args['momentum'])\n",
"\n",
"for epoch in range(1, args['epochs'] + 1):\n",
" train(epoch)\n",
" test()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"Train Epoch: 1 [0/60000 (0%)]\tLoss: 2.319651\n",
"Train Epoch: 1 [10000/60000 (17%)]\tLoss: 2.307608\n",
"Train Epoch: 1 [20000/60000 (33%)]\tLoss: 2.299467\n",
"Train Epoch: 1 [30000/60000 (50%)]\tLoss: 2.294416\n",
"Train Epoch: 1 [40000/60000 (67%)]\tLoss: 2.286313\n",
"Train Epoch: 1 [50000/60000 (83%)]\tLoss: 2.287686\n"
],
"name": "stdout"
},
{
"output_type": "stream",
"text": [
"/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:31: UserWarning: volatile was removed and now has no effect. Use `with torch.no_grad():` instead.\n",
"/usr/local/lib/python3.6/dist-packages/torch/nn/_reduction.py:46: UserWarning: size_average and reduce args will be deprecated, please use reduction='sum' instead.\n",
" warnings.warn(warning.format(ret))\n"
],
"name": "stderr"
},
{
"output_type": "stream",
"text": [
"\n",
"Test set: Average loss: 2.2664, Accuracy: 3299/10000 (32%)\n",
"\n",
"Train Epoch: 2 [0/60000 (0%)]\tLoss: 2.276994\n",
"Train Epoch: 2 [10000/60000 (17%)]\tLoss: 2.261916\n",
"Train Epoch: 2 [20000/60000 (33%)]\tLoss: 2.256086\n",
"Train Epoch: 2 [30000/60000 (50%)]\tLoss: 2.256189\n",
"Train Epoch: 2 [40000/60000 (67%)]\tLoss: 2.228010\n",
"Train Epoch: 2 [50000/60000 (83%)]\tLoss: 2.209493\n",
"\n",
"Test set: Average loss: 2.1656, Accuracy: 6251/10000 (62%)\n",
"\n",
"Train Epoch: 3 [0/60000 (0%)]\tLoss: 2.199782\n",
"Train Epoch: 3 [10000/60000 (17%)]\tLoss: 2.170506\n",
"Train Epoch: 3 [20000/60000 (33%)]\tLoss: 2.124279\n",
"Train Epoch: 3 [30000/60000 (50%)]\tLoss: 2.041222\n",
"Train Epoch: 3 [40000/60000 (67%)]\tLoss: 1.973004\n",
"Train Epoch: 3 [50000/60000 (83%)]\tLoss: 1.873237\n",
"\n",
"Test set: Average loss: 1.5402, Accuracy: 7328/10000 (73%)\n",
"\n",
"Train Epoch: 4 [0/60000 (0%)]\tLoss: 1.727988\n",
"Train Epoch: 4 [10000/60000 (17%)]\tLoss: 1.591698\n",
"Train Epoch: 4 [20000/60000 (33%)]\tLoss: 1.502393\n",
"Train Epoch: 4 [30000/60000 (50%)]\tLoss: 1.363354\n",
"Train Epoch: 4 [40000/60000 (67%)]\tLoss: 1.298051\n",
"Train Epoch: 4 [50000/60000 (83%)]\tLoss: 1.157867\n",
"\n",
"Test set: Average loss: 0.7577, Accuracy: 8269/10000 (82%)\n",
"\n",
"Train Epoch: 5 [0/60000 (0%)]\tLoss: 1.114378\n",
"Train Epoch: 5 [10000/60000 (17%)]\tLoss: 1.046182\n",
"Train Epoch: 5 [20000/60000 (33%)]\tLoss: 0.973768\n",
"Train Epoch: 5 [30000/60000 (50%)]\tLoss: 0.910388\n",
"Train Epoch: 5 [40000/60000 (67%)]\tLoss: 0.863636\n",
"Train Epoch: 5 [50000/60000 (83%)]\tLoss: 0.843958\n",
"\n",
"Test set: Average loss: 0.5115, Accuracy: 8791/10000 (87%)\n",
"\n",
"Train Epoch: 6 [0/60000 (0%)]\tLoss: 0.796372\n",
"Train Epoch: 6 [10000/60000 (17%)]\tLoss: 0.809377\n",
"Train Epoch: 6 [20000/60000 (33%)]\tLoss: 0.758734\n",
"Train Epoch: 6 [30000/60000 (50%)]\tLoss: 0.751131\n",
"Train Epoch: 6 [40000/60000 (67%)]\tLoss: 0.697480\n",
"Train Epoch: 6 [50000/60000 (83%)]\tLoss: 0.682581\n",
"\n",
"Test set: Average loss: 0.4096, Accuracy: 9012/10000 (90%)\n",
"\n",
"Train Epoch: 7 [0/60000 (0%)]\tLoss: 0.634730\n",
"Train Epoch: 7 [10000/60000 (17%)]\tLoss: 0.579798\n",
"Train Epoch: 7 [20000/60000 (33%)]\tLoss: 0.649082\n",
"Train Epoch: 7 [30000/60000 (50%)]\tLoss: 0.669187\n",
"Train Epoch: 7 [40000/60000 (67%)]\tLoss: 0.620290\n",
"Train Epoch: 7 [50000/60000 (83%)]\tLoss: 0.681278\n",
"\n",
"Test set: Average loss: 0.3466, Accuracy: 9129/10000 (91%)\n",
"\n",
"Train Epoch: 8 [0/60000 (0%)]\tLoss: 0.626142\n",
"Train Epoch: 8 [10000/60000 (17%)]\tLoss: 0.557685\n",
"Train Epoch: 8 [20000/60000 (33%)]\tLoss: 0.567673\n",
"Train Epoch: 8 [30000/60000 (50%)]\tLoss: 0.542058\n",
"Train Epoch: 8 [40000/60000 (67%)]\tLoss: 0.492771\n",
"Train Epoch: 8 [50000/60000 (83%)]\tLoss: 0.503536\n",
"\n",
"Test set: Average loss: 0.2989, Accuracy: 9259/10000 (92%)\n",
"\n",
"Train Epoch: 9 [0/60000 (0%)]\tLoss: 0.534490\n",
"Train Epoch: 9 [10000/60000 (17%)]\tLoss: 0.525550\n",
"Train Epoch: 9 [20000/60000 (33%)]\tLoss: 0.522225\n",
"Train Epoch: 9 [30000/60000 (50%)]\tLoss: 0.487088\n",
"Train Epoch: 9 [40000/60000 (67%)]\tLoss: 0.519037\n",
"Train Epoch: 9 [50000/60000 (83%)]\tLoss: 0.523765\n",
"\n",
"Test set: Average loss: 0.2715, Accuracy: 9327/10000 (93%)\n",
"\n",
"Train Epoch: 10 [0/60000 (0%)]\tLoss: 0.518909\n",
"Train Epoch: 10 [10000/60000 (17%)]\tLoss: 0.465700\n",
"Train Epoch: 10 [20000/60000 (33%)]\tLoss: 0.478674\n",
"Train Epoch: 10 [30000/60000 (50%)]\tLoss: 0.481431\n",
"Train Epoch: 10 [40000/60000 (67%)]\tLoss: 0.489986\n",
"Train Epoch: 10 [50000/60000 (83%)]\tLoss: 0.472173\n",
"\n",
"Test set: Average loss: 0.2456, Accuracy: 9382/10000 (93%)\n",
"\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "6jNvS2mBzcQD",
"colab_type": "text"
},
"source": [
"###Testing Using Custom Examples"
]
},
{
"cell_type": "code",
"metadata": {
"id": "7iUbW0TszgYp",
"colab_type": "code",
"outputId": "f9137040-5947-4eb7-e2fd-dead7ff887d3",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"source": [
"%matplotlib inline\n",
"\n",
"import matplotlib.pyplot as plt\n",
"\n",
"model.eval()\n",
"example = deepcopy(data.data[25])\n",
"\n",
"if args['cuda']:\n",
" model.cuda()\n",
" example = example.cuda()\n",
"\n",
"example = Variable(example,volatile=True).float().unsqueeze(0).unsqueeze(0)\n",
"print(model(example).data)\n",
"\n",
"plt.matshow(data.data[25])\n",
"plt.colorbar()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"tensor([[ 0.0000, -1359.1697, -482.2861, -801.7672, -1136.7977, -526.2972,\n",
" -696.3121, -883.9150, -743.1136, -765.6729]], device='cuda:0')\n"
],
"name": "stdout"
},
{
"output_type": "stream",
"text": [
"/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:12: UserWarning: volatile was removed and now has no effect. Use `with torch.no_grad():` instead.\n",
" if sys.path[0] == '':\n"
],
"name": "stderr"
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.colorbar.Colorbar at 0x7fd17c255710>"
]
},
"metadata": {
"tags": []
},
"execution_count": 7
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 288x288 with 2 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "OOcYNcTT32n1",
"colab_type": "code",
"outputId": "8f066300-0546-4c2d-f916-8bb8cb91c1ee",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"source": [
"make_dot(model(example))"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<graphviz.dot.Digraph at 0x7fd17c2995f8>"
],
"image/svg+xml": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n -->\n<!-- Title: %3 Pages: 1 -->\n<svg width=\"429pt\" height=\"864pt\"\n viewBox=\"0.00 0.00 429.01 864.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n<g id=\"graph0\" class=\"graph\" transform=\"scale(.9954 .9954) rotate(0) translate(4 864)\">\n<title>%3</title>\n<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-864 427,-864 427,4 -4,4\"/>\n<!-- 140537707992680 -->\n<g id=\"node1\" class=\"node\">\n<title>140537707992680</title>\n<polygon fill=\"#caff70\" stroke=\"#000000\" points=\"347,-21 222,-21 222,0 347,0 347,-21\"/>\n<text text-anchor=\"middle\" x=\"284.5\" y=\"-7.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">LogSoftmaxBackward</text>\n</g>\n<!-- 140537707992792 -->\n<g id=\"node2\" class=\"node\">\n<title>140537707992792</title>\n<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"336.5,-78 232.5,-78 232.5,-57 336.5,-57 336.5,-78\"/>\n<text text-anchor=\"middle\" x=\"284.5\" y=\"-64.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">AddmmBackward</text>\n</g>\n<!-- 140537707992792&#45;&gt;140537707992680 -->\n<g id=\"edge1\" class=\"edge\">\n<title>140537707992792&#45;&gt;140537707992680</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M284.5,-56.7787C284.5,-49.6134 284.5,-39.9517 284.5,-31.3097\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"288.0001,-31.1732 284.5,-21.1732 281.0001,-31.1732 288.0001,-31.1732\"/>\n</g>\n<!-- 140537707994976 -->\n<g id=\"node3\" class=\"node\">\n<title>140537707994976</title>\n<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"219.5,-149 165.5,-149 165.5,-114 219.5,-114 219.5,-149\"/>\n<text text-anchor=\"middle\" x=\"192.5\" y=\"-121.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (10)</text>\n</g>\n<!-- 140537707994976&#45;&gt;140537707992792 -->\n<g id=\"edge2\" class=\"edge\">\n<title>140537707994976&#45;&gt;140537707992792</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M218.1271,-113.6724C231.5188,-104.3565 247.7974,-93.0322 260.8816,-83.9302\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"263.1445,-86.6197 269.3548,-78.0358 259.147,-80.8733 263.1445,-86.6197\"/>\n</g>\n<!-- 140537707994584 -->\n<g id=\"node4\" class=\"node\">\n<title>140537707994584</title>\n<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"331.5,-142 237.5,-142 237.5,-121 331.5,-121 331.5,-142\"/>\n<text text-anchor=\"middle\" x=\"284.5\" y=\"-128.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward0</text>\n</g>\n<!-- 140537707994584&#45;&gt;140537707992792 -->\n<g id=\"edge3\" class=\"edge\">\n<title>140537707994584&#45;&gt;140537707992792</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M284.5,-120.9317C284.5,-112.0913 284.5,-99.2122 284.5,-88.3135\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"288.0001,-88.2979 284.5,-78.2979 281.0001,-88.2979 288.0001,-88.2979\"/>\n</g>\n<!-- 140537707992736 -->\n<g id=\"node5\" class=\"node\">\n<title>140537707992736</title>\n<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"336.5,-213 232.5,-213 232.5,-192 336.5,-192 336.5,-213\"/>\n<text text-anchor=\"middle\" x=\"284.5\" y=\"-199.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">AddmmBackward</text>\n</g>\n<!-- 140537707992736&#45;&gt;140537707994584 -->\n<g id=\"edge4\" class=\"edge\">\n<title>140537707992736&#45;&gt;140537707994584</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M284.5,-191.7166C284.5,-181.3953 284.5,-165.5401 284.5,-152.6896\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"288.0001,-152.3848 284.5,-142.3849 281.0001,-152.3849 288.0001,-152.3848\"/>\n</g>\n<!-- 140537707994752 -->\n<g id=\"node6\" class=\"node\">\n<title>140537707994752</title>\n<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"220.5,-291 166.5,-291 166.5,-256 220.5,-256 220.5,-291\"/>\n<text text-anchor=\"middle\" x=\"193.5\" y=\"-263.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256)</text>\n</g>\n<!-- 140537707994752&#45;&gt;140537707992736 -->\n<g id=\"edge5\" class=\"edge\">\n<title>140537707994752&#45;&gt;140537707992736</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M215.9944,-255.9494C230.2906,-244.7952 248.6989,-230.4327 262.8325,-219.4054\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"265.2741,-221.9397 271.0053,-213.0288 260.9681,-216.4208 265.2741,-221.9397\"/>\n</g>\n<!-- 140537707993128 -->\n<g id=\"node7\" class=\"node\">\n<title>140537707993128</title>\n<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"330,-284 239,-284 239,-263 330,-263 330,-284\"/>\n<text text-anchor=\"middle\" x=\"284.5\" y=\"-270.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ViewBackward</text>\n</g>\n<!-- 140537707993128&#45;&gt;140537707992736 -->\n<g id=\"edge6\" class=\"edge\">\n<title>140537707993128&#45;&gt;140537707992736</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M284.5,-262.7166C284.5,-252.3953 284.5,-236.5401 284.5,-223.6896\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"288.0001,-223.3848 284.5,-213.3849 281.0001,-223.3849 288.0001,-223.3848\"/>\n</g>\n<!-- 140537707994416 -->\n<g id=\"node8\" class=\"node\">\n<title>140537707994416</title>\n<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"331.5,-355 237.5,-355 237.5,-334 331.5,-334 331.5,-355\"/>\n<text text-anchor=\"middle\" x=\"284.5\" y=\"-341.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward0</text>\n</g>\n<!-- 140537707994416&#45;&gt;140537707993128 -->\n<g id=\"edge7\" class=\"edge\">\n<title>140537707994416&#45;&gt;140537707993128</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M284.5,-333.7166C284.5,-323.3953 284.5,-307.5401 284.5,-294.6896\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"288.0001,-294.3848 284.5,-284.3849 281.0001,-294.3849 288.0001,-294.3848\"/>\n</g>\n<!-- 140537707992848 -->\n<g id=\"node9\" class=\"node\">\n<title>140537707992848</title>\n<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"374.5,-419 194.5,-419 194.5,-398 374.5,-398 374.5,-419\"/>\n<text text-anchor=\"middle\" x=\"284.5\" y=\"-405.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MaxPool2DWithIndicesBackward</text>\n</g>\n<!-- 140537707992848&#45;&gt;140537707994416 -->\n<g id=\"edge8\" class=\"edge\">\n<title>140537707992848&#45;&gt;140537707994416</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M284.5,-397.9317C284.5,-389.0913 284.5,-376.2122 284.5,-365.3135\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"288.0001,-365.2979 284.5,-355.2979 281.0001,-365.2979 288.0001,-365.2979\"/>\n</g>\n<!-- 140537707991392 -->\n<g id=\"node10\" class=\"node\">\n<title>140537707991392</title>\n<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"363,-476 206,-476 206,-455 363,-455 363,-476\"/>\n<text text-anchor=\"middle\" x=\"284.5\" y=\"-462.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">CudnnConvolutionBackward</text>\n</g>\n<!-- 140537707991392&#45;&gt;140537707992848 -->\n<g id=\"edge9\" class=\"edge\">\n<title>140537707991392&#45;&gt;140537707992848</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M284.5,-454.7787C284.5,-447.6134 284.5,-437.9517 284.5,-429.3097\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"288.0001,-429.1732 284.5,-419.1732 281.0001,-429.1732 288.0001,-429.1732\"/>\n</g>\n<!-- 140537707994696 -->\n<g id=\"node11\" class=\"node\">\n<title>140537707994696</title>\n<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"228.5,-540 134.5,-540 134.5,-519 228.5,-519 228.5,-540\"/>\n<text text-anchor=\"middle\" x=\"181.5\" y=\"-526.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward0</text>\n</g>\n<!-- 140537707994696&#45;&gt;140537707991392 -->\n<g id=\"edge10\" class=\"edge\">\n<title>140537707994696&#45;&gt;140537707991392</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M198.5084,-518.9317C214.9089,-508.7411 239.9464,-493.1838 258.7827,-481.4797\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"260.8197,-484.3346 267.4664,-476.084 257.1253,-478.3889 260.8197,-484.3346\"/>\n</g>\n<!-- 140537707994808 -->\n<g id=\"node12\" class=\"node\">\n<title>140537707994808</title>\n<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"271.5,-604 91.5,-604 91.5,-583 271.5,-583 271.5,-604\"/>\n<text text-anchor=\"middle\" x=\"181.5\" y=\"-590.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MaxPool2DWithIndicesBackward</text>\n</g>\n<!-- 140537707994808&#45;&gt;140537707994696 -->\n<g id=\"edge11\" class=\"edge\">\n<title>140537707994808&#45;&gt;140537707994696</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M181.5,-582.9317C181.5,-574.0913 181.5,-561.2122 181.5,-550.3135\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"185.0001,-550.2979 181.5,-540.2979 178.0001,-550.2979 185.0001,-550.2979\"/>\n</g>\n<!-- 140537707581392 -->\n<g id=\"node13\" class=\"node\">\n<title>140537707581392</title>\n<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"260,-661 103,-661 103,-640 260,-640 260,-661\"/>\n<text text-anchor=\"middle\" x=\"181.5\" y=\"-647.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">CudnnConvolutionBackward</text>\n</g>\n<!-- 140537707581392&#45;&gt;140537707994808 -->\n<g id=\"edge12\" class=\"edge\">\n<title>140537707581392&#45;&gt;140537707994808</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M181.5,-639.7787C181.5,-632.6134 181.5,-622.9517 181.5,-614.3097\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"185.0001,-614.1732 181.5,-604.1732 178.0001,-614.1732 185.0001,-614.1732\"/>\n</g>\n<!-- 140537707713424 -->\n<g id=\"node14\" class=\"node\">\n<title>140537707713424</title>\n<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"125.5,-725 31.5,-725 31.5,-704 125.5,-704 125.5,-725\"/>\n<text text-anchor=\"middle\" x=\"78.5\" y=\"-711.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward0</text>\n</g>\n<!-- 140537707713424&#45;&gt;140537707581392 -->\n<g id=\"edge13\" class=\"edge\">\n<title>140537707713424&#45;&gt;140537707581392</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M95.5084,-703.9317C111.9089,-693.7411 136.9464,-678.1838 155.7827,-666.4797\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"157.8197,-669.3346 164.4664,-661.084 154.1253,-663.3889 157.8197,-669.3346\"/>\n</g>\n<!-- 140537707713032 -->\n<g id=\"node15\" class=\"node\">\n<title>140537707713032</title>\n<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"157,-789 0,-789 0,-768 157,-768 157,-789\"/>\n<text text-anchor=\"middle\" x=\"78.5\" y=\"-775.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">CudnnConvolutionBackward</text>\n</g>\n<!-- 140537707713032&#45;&gt;140537707713424 -->\n<g id=\"edge14\" class=\"edge\">\n<title>140537707713032&#45;&gt;140537707713424</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M78.5,-767.9317C78.5,-759.0913 78.5,-746.2122 78.5,-735.3135\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"82.0001,-735.2979 78.5,-725.2979 75.0001,-735.2979 82.0001,-735.2979\"/>\n</g>\n<!-- 140537707712808 -->\n<g id=\"node16\" class=\"node\">\n<title>140537707712808</title>\n<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"75,-860 0,-860 0,-825 75,-825 75,-860\"/>\n<text text-anchor=\"middle\" x=\"37.5\" y=\"-832.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (16, 1, 5, 5)</text>\n</g>\n<!-- 140537707712808&#45;&gt;140537707713032 -->\n<g id=\"edge15\" class=\"edge\">\n<title>140537707712808&#45;&gt;140537707713032</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M48.9208,-824.6724C54.2802,-816.3066 60.6771,-806.3212 66.1488,-797.7799\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"69.1831,-799.5318 71.6303,-789.2234 63.2889,-795.7558 69.1831,-799.5318\"/>\n</g>\n<!-- 140537707713480 -->\n<g id=\"node17\" class=\"node\">\n<title>140537707713480</title>\n<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"147.5,-860 93.5,-860 93.5,-825 147.5,-825 147.5,-860\"/>\n<text text-anchor=\"middle\" x=\"120.5\" y=\"-832.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (16)</text>\n</g>\n<!-- 140537707713480&#45;&gt;140537707713032 -->\n<g id=\"edge16\" class=\"edge\">\n<title>140537707713480&#45;&gt;140537707713032</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M108.8007,-824.6724C103.3105,-816.3066 96.7576,-806.3212 91.1524,-797.7799\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"93.95,-795.6636 85.5373,-789.2234 88.0977,-799.5042 93.95,-795.6636\"/>\n</g>\n<!-- 140537707712696 -->\n<g id=\"node18\" class=\"node\">\n<title>140537707712696</title>\n<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"219,-732 144,-732 144,-697 219,-697 219,-732\"/>\n<text text-anchor=\"middle\" x=\"181.5\" y=\"-704.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (32, 4, 5, 5)</text>\n</g>\n<!-- 140537707712696&#45;&gt;140537707581392 -->\n<g id=\"edge17\" class=\"edge\">\n<title>140537707712696&#45;&gt;140537707581392</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M181.5,-696.6724C181.5,-688.8405 181.5,-679.5893 181.5,-671.4323\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"185.0001,-671.2234 181.5,-661.2234 178.0001,-671.2235 185.0001,-671.2234\"/>\n</g>\n<!-- 140537707712864 -->\n<g id=\"node19\" class=\"node\">\n<title>140537707712864</title>\n<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"291.5,-732 237.5,-732 237.5,-697 291.5,-697 291.5,-732\"/>\n<text text-anchor=\"middle\" x=\"264.5\" y=\"-704.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (32)</text>\n</g>\n<!-- 140537707712864&#45;&gt;140537707581392 -->\n<g id=\"edge18\" class=\"edge\">\n<title>140537707712864&#45;&gt;140537707581392</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M241.3799,-696.6724C229.4916,-687.5056 215.0816,-676.3942 203.3769,-667.3689\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"205.4633,-664.5581 195.4069,-661.2234 201.1889,-670.1015 205.4633,-664.5581\"/>\n</g>\n<!-- 140537707995032 -->\n<g id=\"node20\" class=\"node\">\n<title>140537707995032</title>\n<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"322,-547 247,-547 247,-512 322,-512 322,-547\"/>\n<text text-anchor=\"middle\" x=\"284.5\" y=\"-519.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (64, 8, 5, 5)</text>\n</g>\n<!-- 140537707995032&#45;&gt;140537707991392 -->\n<g id=\"edge19\" class=\"edge\">\n<title>140537707995032&#45;&gt;140537707991392</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M284.5,-511.6724C284.5,-503.8405 284.5,-494.5893 284.5,-486.4323\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"288.0001,-486.2234 284.5,-476.2234 281.0001,-486.2235 288.0001,-486.2234\"/>\n</g>\n<!-- 140537707995088 -->\n<g id=\"node21\" class=\"node\">\n<title>140537707995088</title>\n<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"394.5,-547 340.5,-547 340.5,-512 394.5,-512 394.5,-547\"/>\n<text text-anchor=\"middle\" x=\"367.5\" y=\"-519.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (64)</text>\n</g>\n<!-- 140537707995088&#45;&gt;140537707991392 -->\n<g id=\"edge20\" class=\"edge\">\n<title>140537707995088&#45;&gt;140537707991392</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M344.3799,-511.6724C332.4916,-502.5056 318.0816,-491.3942 306.3769,-482.3689\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"308.4633,-479.5581 298.4069,-476.2234 304.1889,-485.1015 308.4633,-479.5581\"/>\n</g>\n<!-- 140537707993240 -->\n<g id=\"node22\" class=\"node\">\n<title>140537707993240</title>\n<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"421,-284 348,-284 348,-263 421,-263 421,-284\"/>\n<text text-anchor=\"middle\" x=\"384.5\" y=\"-270.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">TBackward</text>\n</g>\n<!-- 140537707993240&#45;&gt;140537707992736 -->\n<g id=\"edge21\" class=\"edge\">\n<title>140537707993240&#45;&gt;140537707992736</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M369.3122,-262.7166C352.992,-251.1293 326.8486,-232.5675 307.898,-219.1126\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"309.6832,-216.0876 299.5031,-213.1522 305.6307,-221.7953 309.6832,-216.0876\"/>\n</g>\n<!-- 140537707994360 -->\n<g id=\"node23\" class=\"node\">\n<title>140537707994360</title>\n<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"419,-362 350,-362 350,-327 419,-327 419,-362\"/>\n<text text-anchor=\"middle\" x=\"384.5\" y=\"-334.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256, 576)</text>\n</g>\n<!-- 140537707994360&#45;&gt;140537707993240 -->\n<g id=\"edge22\" class=\"edge\">\n<title>140537707994360&#45;&gt;140537707993240</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M384.5,-326.9494C384.5,-317.058 384.5,-304.6435 384.5,-294.2693\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"388.0001,-294.0288 384.5,-284.0288 381.0001,-294.0289 388.0001,-294.0288\"/>\n</g>\n<!-- 140537707993576 -->\n<g id=\"node24\" class=\"node\">\n<title>140537707993576</title>\n<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"423,-142 350,-142 350,-121 423,-121 423,-142\"/>\n<text text-anchor=\"middle\" x=\"386.5\" y=\"-128.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">TBackward</text>\n</g>\n<!-- 140537707993576&#45;&gt;140537707992792 -->\n<g id=\"edge23\" class=\"edge\">\n<title>140537707993576&#45;&gt;140537707992792</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M369.6568,-120.9317C353.4155,-110.7411 328.621,-95.1838 309.9676,-83.4797\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"311.6991,-80.4342 301.3682,-78.084 307.9787,-86.3637 311.6991,-80.4342\"/>\n</g>\n<!-- 140537707993856 -->\n<g id=\"node25\" class=\"node\">\n<title>140537707993856</title>\n<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"418,-220 355,-220 355,-185 418,-185 418,-220\"/>\n<text text-anchor=\"middle\" x=\"386.5\" y=\"-192.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (10, 256)</text>\n</g>\n<!-- 140537707993856&#45;&gt;140537707993576 -->\n<g id=\"edge24\" class=\"edge\">\n<title>140537707993856&#45;&gt;140537707993576</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M386.5,-184.9494C386.5,-175.058 386.5,-162.6435 386.5,-152.2693\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"390.0001,-152.0288 386.5,-142.0288 383.0001,-152.0289 390.0001,-152.0288\"/>\n</g>\n</g>\n</svg>\n"
},
"metadata": {
"tags": []
},
"execution_count": 8
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Hr58e6sD4OuL",
"colab_type": "text"
},
"source": [
"##Visualizing all layers"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "dXPFilDV495B",
"colab_type": "text"
},
"source": [
"###Extracting Layers"
]
},
{
"cell_type": "code",
"metadata": {
"id": "PC0rwtNT47ok",
"colab_type": "code",
"colab": {}
},
"source": [
"all_parameters=np.array(deepcopy(list(model.parameters())))"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "MrJwsgf_5DSb",
"colab_type": "code",
"outputId": "7296f34c-654b-4d20-8351-71ca98a6408e",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 199
}
},
"source": [
"# Printing Paramter Names\n",
"for i in model.named_parameters():\n",
" print(i[0])"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"conv1.weight\n",
"conv1.bias\n",
"conv2.weight\n",
"conv2.bias\n",
"conv3.weight\n",
"conv3.bias\n",
"fc1.weight\n",
"fc1.bias\n",
"fc2.weight\n",
"fc2.bias\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "bRv2F5Kp5Nzn",
"colab_type": "code",
"colab": {}
},
"source": [
"for i in range(len(all_parameters)):\n",
" all_parameters[i] = all_parameters[i].cpu().detach().numpy()"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "Yx_oxCFZ5U7F",
"colab_type": "code",
"outputId": "f24fe1b0-9e9b-4a0a-a4f9-b4aabcd67b2b",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
}
},
"source": [
"layer = 0\n",
"print(all_parameters[layer].shape,all_parameters[layer].size)\n",
"all_parameters[layer]"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"(16, 1, 5, 5) 400\n"
],
"name": "stdout"
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([[[[-2.14212865e-01, -1.87882140e-01, -1.40519291e-02,\n",
" -3.67063284e-02, -4.69096676e-02],\n",
" [-2.03082129e-01, -3.48809361e-02, 9.62384194e-02,\n",
" 1.17893852e-01, 1.03401877e-01],\n",
" [-1.44074231e-01, -8.91651809e-02, 1.19560711e-01,\n",
" 7.55216107e-02, 1.41721338e-01],\n",
" [ 1.42361656e-01, 1.25321493e-01, -7.27576166e-02,\n",
" 2.14470327e-01, 1.12762377e-01],\n",
" [-1.41099721e-01, 1.92377910e-01, -4.13115956e-02,\n",
" -6.26242235e-02, -7.55806454e-03]]],\n",
"\n",
"\n",
" [[[-4.80192155e-03, 9.51321870e-02, 2.19093382e-01,\n",
" 2.24121794e-01, 1.67219609e-01],\n",
" [ 1.23762779e-01, 1.50269508e-01, 1.58798441e-01,\n",
" 3.58631946e-02, 8.26426893e-02],\n",
" [ 2.22898141e-01, -5.46119511e-02, 2.77312975e-02,\n",
" -1.42151549e-01, 7.82742128e-02],\n",
" [ 2.35132892e-02, 1.53005153e-01, 2.04747114e-02,\n",
" -1.74282357e-01, 1.44214079e-01],\n",
" [-2.47692447e-02, -3.58538777e-02, -7.34098852e-02,\n",
" 5.92034049e-02, 8.84230211e-02]]],\n",
"\n",
"\n",
" [[[ 4.45225909e-02, 3.44058834e-02, 2.98267063e-02,\n",
" 2.24954441e-01, 1.16746619e-01],\n",
" [-2.51505431e-02, 1.88728973e-01, 6.03223406e-02,\n",
" 2.02620998e-01, 1.33088425e-01],\n",
" [ 1.51216194e-01, -9.59109440e-02, 2.19170749e-01,\n",
" 2.66154557e-02, 1.39942423e-01],\n",
" [ 1.25298336e-01, -1.01998277e-01, -5.84961288e-02,\n",
" -9.40980613e-02, -2.07784310e-01],\n",
" [ 3.16904560e-02, -1.67682096e-01, -2.08750874e-01,\n",
" 4.95901220e-02, -2.00937539e-01]]],\n",
"\n",
"\n",
" [[[-1.07260704e-01, -1.77555054e-01, -1.24704204e-01,\n",
" 1.57842203e-03, 4.32534143e-02],\n",
" [-1.07292317e-01, -1.55570418e-01, -1.44659027e-01,\n",
" 1.66911140e-01, 2.02939197e-01],\n",
" [-1.02549930e-04, 1.25762060e-01, 2.49703214e-01,\n",
" 2.10653931e-01, -3.76394168e-02],\n",
" [-3.17537189e-02, 8.10551047e-02, 1.33419335e-01,\n",
" 2.10850671e-01, 8.19768086e-02],\n",
" [ 1.48001476e-03, 2.26180717e-01, 2.02634409e-01,\n",
" -4.90852818e-02, 1.07320435e-01]]],\n",
"\n",
"\n",
" [[[-1.58427894e-01, -8.63265023e-02, -4.26946245e-02,\n",
" 1.70651630e-01, -1.29134029e-01],\n",
" [ 2.26313937e-02, -1.64617836e-01, -3.72446105e-02,\n",
" -1.89779148e-01, -1.81952521e-01],\n",
" [-9.84460786e-02, -1.78577185e-01, 1.14485718e-01,\n",
" -4.08558398e-02, -1.75340652e-01],\n",
" [-1.74578354e-01, -3.69131528e-02, -1.16207242e-01,\n",
" -9.62754190e-02, 9.90097076e-02],\n",
" [-1.38541246e-02, -1.16338551e-01, -6.47933483e-02,\n",
" 5.11294901e-02, 4.53278609e-02]]],\n",
"\n",
"\n",
" [[[ 2.46075839e-01, 2.12369546e-01, 1.27510622e-01,\n",
" 1.23748742e-01, -2.37534180e-01],\n",
" [-1.05081521e-01, 1.23957783e-01, 1.72290921e-01,\n",
" 1.17000543e-01, -2.31168941e-01],\n",
" [ 1.60030574e-01, -1.23427816e-01, -1.62525237e-01,\n",
" -2.24100664e-01, -1.31452739e-01],\n",
" [ 1.95314944e-01, -5.15413471e-02, -1.46767542e-01,\n",
" -1.69269562e-01, -1.15366504e-01],\n",
" [-1.09921634e-01, 7.72852972e-02, -7.12641552e-02,\n",
" -1.12977214e-01, -1.65548429e-01]]],\n",
"\n",
"\n",
" [[[ 2.85262704e-01, 1.66728407e-01, -6.78931549e-02,\n",
" -1.96343884e-01, 4.15973961e-02],\n",
" [ 1.82846859e-01, 2.38600686e-01, 3.01387273e-02,\n",
" -1.87773243e-01, -1.49635300e-01],\n",
" [ 2.73933470e-01, 5.31865507e-02, -1.39612496e-01,\n",
" -2.17102081e-01, 1.11066312e-01],\n",
" [ 2.57921696e-01, -5.39552085e-02, -1.47146389e-01,\n",
" 7.76698664e-02, 6.67141005e-02],\n",
" [-1.06645815e-01, -2.50858497e-02, -1.79847330e-01,\n",
" -2.27696300e-02, -1.74352393e-01]]],\n",
"\n",
"\n",
" [[[-2.15252146e-01, -1.98134094e-01, -1.32250965e-01,\n",
" -3.61766922e-03, 2.50564009e-01],\n",
" [ 1.33544922e-01, -1.69015318e-01, -1.63253695e-01,\n",
" 2.20616668e-01, -9.24829543e-02],\n",
" [ 1.63800269e-01, -1.09454840e-01, 8.85575041e-02,\n",
" 2.08968401e-01, 1.38330743e-01],\n",
" [ 1.41773894e-01, 1.48658603e-01, 1.96164846e-01,\n",
" 1.46527633e-01, 1.66158661e-01],\n",
" [ 3.10338661e-02, -1.64152294e-01, 2.09752932e-01,\n",
" 1.22648917e-01, -4.80037816e-02]]],\n",
"\n",
"\n",
" [[[ 1.90415993e-01, 4.65392545e-02, 2.33139277e-01,\n",
" 9.10300985e-02, 8.76069292e-02],\n",
" [-8.55433848e-03, 2.49391899e-01, 3.07688981e-01,\n",
" 3.16572823e-02, -9.66557786e-02],\n",
" [ 6.11364171e-02, 1.21064350e-01, 6.38579652e-02,\n",
" 1.43540651e-01, 1.47306412e-01],\n",
" [-1.67572349e-02, 2.23655701e-01, 1.17858119e-01,\n",
" 4.33306582e-02, 1.02859676e-01],\n",
" [-1.36016071e-01, 1.27947852e-01, 3.02260816e-01,\n",
" 2.37627298e-01, -6.00672513e-02]]],\n",
"\n",
"\n",
" [[[-1.32312000e-01, 7.48896003e-02, 8.01117122e-02,\n",
" -1.78637773e-01, 6.87932819e-02],\n",
" [ 1.24962427e-01, 2.08474025e-01, -3.75006571e-02,\n",
" -1.34080663e-01, 1.75971806e-01],\n",
" [ 2.85022613e-02, 8.23892951e-02, 1.69096757e-02,\n",
" 1.19525827e-01, -9.00414363e-02],\n",
" [-1.20529540e-01, -1.03437893e-01, 3.33143026e-02,\n",
" -6.45333678e-02, 1.20985776e-01],\n",
" [-1.02415435e-01, 1.51904806e-01, 1.93221405e-01,\n",
" -1.02789784e-02, -1.46968856e-01]]],\n",
"\n",
"\n",
" [[[ 1.18086629e-01, -2.07665209e-02, -1.94234595e-01,\n",
" 2.95508141e-03, -1.03131622e-01],\n",
" [ 5.23356125e-02, -3.01318299e-02, -1.78178117e-01,\n",
" -5.56938015e-02, 2.89963931e-03],\n",
" [ 4.50259335e-02, -9.53542814e-02, -5.56939058e-02,\n",
" 1.37603790e-01, -1.76843837e-01],\n",
" [-1.56399652e-01, -7.46127889e-02, 1.14377514e-01,\n",
" -8.39513242e-02, -4.55404669e-02],\n",
" [-4.13219407e-02, -2.82415692e-02, -2.75733415e-02,\n",
" -1.02079868e-01, 1.25924870e-01]]],\n",
"\n",
"\n",
" [[[-1.08208787e-02, -3.57459001e-02, 1.32813090e-02,\n",
" -7.32818395e-02, 2.04939783e-01],\n",
" [-1.77180782e-01, -1.86633810e-01, 1.53452247e-01,\n",
" -1.11623704e-02, 4.88528702e-03],\n",
" [ 1.13596812e-01, -1.97625697e-01, 1.91867173e-01,\n",
" 7.64720663e-02, 1.99583974e-02],\n",
" [-5.66890985e-02, -3.72615047e-02, 1.65383458e-01,\n",
" 2.29048386e-01, -2.25341064e-03],\n",
" [-1.99875474e-01, -5.12559637e-02, 2.12823659e-01,\n",
" 2.12403134e-01, -8.94042626e-02]]],\n",
"\n",
"\n",
" [[[-1.07780874e-01, -1.59345433e-01, 1.78342998e-01,\n",
" -1.34763360e-01, -1.34254377e-02],\n",
" [ 1.64347693e-01, -3.94119062e-02, 1.76211521e-01,\n",
" -1.14721678e-01, 1.20407775e-01],\n",
" [-9.35295746e-02, -1.27241043e-02, -1.61349058e-01,\n",
" -6.03775680e-03, -1.63003936e-01],\n",
" [ 1.37067303e-01, -1.98873699e-01, 3.13923508e-02,\n",
" 1.55422822e-01, 2.21952032e-02],\n",
" [-1.63493648e-01, -1.16031528e-01, 1.78659856e-01,\n",
" 6.61863061e-03, -1.67499706e-01]]],\n",
"\n",
"\n",
" [[[ 1.11253805e-01, -1.06864847e-01, 2.66713481e-02,\n",
" 6.85933158e-02, 1.08257592e-01],\n",
" [-4.50445861e-02, -2.66003031e-02, -7.75634870e-02,\n",
" 1.62851587e-01, 6.07848726e-02],\n",
" [-1.60841215e-02, 1.33135021e-01, -2.05713287e-01,\n",
" -7.86133632e-02, -1.16597936e-01],\n",
" [ 2.10915692e-02, 5.47351204e-02, -8.18429366e-02,\n",
" 6.37865812e-02, -1.19514957e-01],\n",
" [-1.90042898e-01, 3.65746319e-02, -4.91198851e-03,\n",
" 1.00706778e-01, -1.11297548e-01]]],\n",
"\n",
"\n",
" [[[-1.17648698e-01, 1.25058383e-01, -2.02028994e-02,\n",
" 2.01040685e-01, 7.87216201e-02],\n",
" [-2.22390786e-01, -1.67348996e-01, 1.61142856e-01,\n",
" 1.17200807e-01, 1.11605316e-01],\n",
" [ 9.73237827e-02, -3.48934415e-03, -5.83505817e-02,\n",
" 1.92240179e-02, 1.56514272e-01],\n",
" [-1.87580884e-01, 6.03687167e-02, -1.89034883e-02,\n",
" 1.36911660e-01, 1.10976361e-01],\n",
" [-1.46499366e-01, 1.86243162e-01, 9.54688042e-02,\n",
" 1.69426396e-01, -3.26049095e-03]]],\n",
"\n",
"\n",
" [[[ 9.83408764e-02, 2.87383109e-01, 5.69700003e-02,\n",
" 7.83259124e-02, -9.19540785e-03],\n",
" [ 2.27886453e-01, 2.28249162e-01, 2.61546314e-01,\n",
" 2.59933144e-01, 5.74052427e-03],\n",
" [-1.63521469e-01, 1.23495154e-01, 2.35017478e-01,\n",
" 1.14121318e-01, 2.89061159e-01],\n",
" [-2.75093615e-01, -2.01096945e-02, 4.62842435e-02,\n",
" 1.44970387e-01, 1.29671633e-01],\n",
" [-4.44313973e-01, -1.77194789e-01, -2.15636089e-01,\n",
" -2.12525561e-01, 3.44383195e-02]]]], dtype=float32)"
]
},
"metadata": {
"tags": []
},
"execution_count": 12
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "tQo-Ud3J5t46",
"colab_type": "text"
},
"source": [
"###Plotting the weights"
]
},
{
"cell_type": "code",
"metadata": {
"id": "r0SG7HUm5z9n",
"colab_type": "code",
"outputId": "6213962d-3c22-4ec2-a642-851d02a17d62",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 892
}
},
"source": [
"import matplotlib.pyplot as plt\n",
"\n",
"layer =int(input('Enter the Layer: '))*2\n",
"fil = int(input('Enter the filter number: '))\n",
"\n",
"print(all_parameters[layer][fil][0])\n",
"\n",
"length = int(all_parameters[layer][fil][0].size**0.5)\n",
"plt.matshow(all_parameters[layer][fil][0].reshape(length,length))\n",
"plt.colorbar()\n",
"plt.show()\n",
"\n",
"binwidth = 0.01\n",
"\n",
"plt.hist(all_parameters[layer][fil][0])\n",
"plt.show()\n",
"\n",
"plt.hist(all_parameters[layer+1])\n",
"plt.show()\n"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"Enter the Layer: 1\n",
"Enter the filter number: 1\n",
"[[ 0.08596534 -0.07424985 0.04018736 0.02432946 -0.02979402]\n",
" [-0.03057344 -0.07387438 0.07688809 0.09478265 -0.09599309]\n",
" [ 0.03270142 -0.05165147 -0.0104804 0.05097883 0.04563018]\n",
" [-0.00391414 0.04063414 0.02786794 -0.01702285 0.00100057]\n",
" [ 0.0219871 -0.08892018 0.05067436 -0.03919886 -0.08180952]]\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"image/png": "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\nP5LtCexJ8Y7zAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 288x288 with 2 Axes>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "wPZBXWh_8JtE",
"colab_type": "text"
},
"source": [
"###Visualizing Values as they pass through the model"
]
},
{
"cell_type": "code",
"metadata": {
"id": "PDCf5ett8Nvf",
"colab_type": "code",
"colab": {}
},
"source": [
"# Loading the test data\n",
"data = datasets.MNIST('../data', train=False, download=True,\n",
" transform=transforms.Compose([\n",
" transforms.ToTensor(),\n",
" transforms.Normalize((0.1307,), (0.3081,))\n",
" ]))"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "UulVBUTF8XSo",
"colab_type": "code",
"outputId": "1dbd65bc-3999-4d4c-d29d-a433340eb7be",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 375
}
},
"source": [
"# Evaluating an Example\n",
"e = 1\n",
"model.train()\n",
"example = deepcopy(data.data[e]).unsqueeze(0).unsqueeze(0)\n",
"\n",
"if args['cuda']:\n",
" model.cuda()\n",
" example = example.cuda()\n",
"\n",
"example = Variable(example,volatile=True).float()\n",
"print(model(example).data)\n",
"\n",
"plt.matshow(data.data[e])\n",
"plt.colorbar()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"tensor([[ -75.1333, -353.2830, -14.9619, -85.3990, -936.0524, -361.3423,\n",
" 0.0000, -884.4292, -330.8306, -839.4867]], device='cuda:0')\n"
],
"name": "stdout"
},
{
"output_type": "stream",
"text": [
"/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:9: UserWarning: volatile was removed and now has no effect. Use `with torch.no_grad():` instead.\n",
" if __name__ == '__main__':\n"
],
"name": "stderr"
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.colorbar.Colorbar at 0x7fd175fbfe80>"
]
},
"metadata": {
"tags": []
},
"execution_count": 14
},
{
"output_type": "display_data",
"data": {
"image/png": "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\nSUVORK5CYII=\n",
"text/plain": [
"<Figure size 288x288 with 2 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "uzrsbOU3BgJe",
"colab_type": "code",
"outputId": "84e63cf6-98d1-4b20-c39e-a296ea9e66a4",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
}
},
"source": [
"import numpy as np\n",
"img = plt.matshow(model.x.cpu().detach().numpy()[0][0])\n",
"plt.colorbar()\n",
"plt.show()\n",
"\n",
"plt.matshow(model.after_conv1.cpu().detach().numpy()[0][0])\n",
"print(model.after_conv1.cpu().detach().numpy()[0][2].shape)\n",
"plt.colorbar()\n",
"plt.show()\n",
"\n",
"plt.matshow(model.after_relu1.cpu().detach().numpy()[0][0])\n",
"print(model.after_relu1.cpu().detach().numpy()[0][0].shape)\n",
"plt.colorbar()\n",
"plt.show()\n",
"\n",
"plt.matshow(model.after_conv2.cpu().detach().numpy()[0][0])\n",
"print(model.after_conv2.cpu().detach().numpy()[0][0].shape)\n",
"plt.colorbar()\n",
"plt.show()\n",
"\n",
"plt.matshow(model.after_maxpool2.cpu().detach().numpy()[0][0])\n",
"print(model.after_maxpool2.cpu().detach().numpy()[0][0].shape)\n",
"plt.colorbar()\n",
"plt.show()\n",
"\n",
"plt.matshow(model.after_relu2.cpu().detach().numpy()[0][0])\n",
"print(model.after_relu2.cpu().detach().numpy()[0][0].shape)\n",
"plt.colorbar()\n",
"plt.show()\n",
"\n",
"\n",
"plt.matshow(model.after_dropout2.cpu().detach().numpy()[0][0])\n",
"print(model.after_dropout2.cpu().detach().numpy()[0][0].shape)\n",
"plt.colorbar()\n",
"plt.show()\n",
"\n",
"plt.matshow(model.after_conv3.cpu().detach().numpy()[0][0])\n",
"print(model.after_conv3.cpu().detach().numpy()[0][0].shape)\n",
"plt.colorbar()\n",
"plt.show()\n",
"\n",
"plt.matshow(model.after_maxpool3.cpu().detach().numpy()[0][0])\n",
"print(model.after_maxpool3.cpu().detach().numpy()[0][0].shape)\n",
"plt.colorbar()\n",
"plt.show()\n",
"\n",
"plt.matshow(model.after_relu3.cpu().detach().numpy()[0][0])\n",
"print(model.after_relu3.cpu().detach().numpy()[0][0].shape)\n",
"plt.colorbar()\n",
"plt.show()\n",
"\n",
"plt.matshow(model.after_dropout3.cpu().detach().numpy()[0][0])\n",
"print(model.after_dropout3.cpu().detach().numpy()[0][0].shape)\n",
"plt.colorbar()\n",
"plt.show()\n",
"\n",
"x = model.after_reshape.cpu().detach().numpy().reshape(64,9)\n",
"plt.matshow(x)\n",
"print(x.shape)\n",
"plt.colorbar()\n",
"plt.show()\n",
"\n",
"x = model.after_fc4.cpu().detach().numpy().reshape(16,16)\n",
"plt.matshow(x)\n",
"print(x.shape)\n",
"plt.colorbar()\n",
"plt.show()\n",
"\n",
"x = model.after_relu4.cpu().detach().numpy().reshape(16,16)\n",
"plt.matshow(x)\n",
"print(x.shape)\n",
"plt.colorbar()\n",
"plt.show()\n",
"\n",
"x = model.after_dropout4.cpu().detach().numpy().reshape(16,16)\n",
"plt.matshow(x)\n",
"print(x.shape)\n",
"plt.colorbar()\n",
"plt.show()\n",
"\n",
"x = model.after_fc5.cpu().detach().numpy().reshape(5,2)\n",
"plt.matshow(x)\n",
"print(x.shape)\n",
"plt.colorbar()\n",
"plt.show()\n",
"\n",
"x = F.log_softmax(model.after_fc5, dim=1).cpu().detach().numpy().reshape(5,2)\n",
"plt.matshow(x)\n",
"print(x.shape)\n",
"plt.colorbar()\n",
"plt.show()\n"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\nSUVORK5CYII=\n",
"text/plain": [
"<Figure size 288x288 with 2 Axes>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"(24, 24)\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"image/png": "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\nSdjMAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 288x288 with 2 Axes>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"(24, 24)\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 288x288 with 2 Axes>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"(20, 20)\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"image/png": "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\nGXp/xc1T+wAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 288x288 with 2 Axes>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"(10, 10)\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"image/png": "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\nYII=\n",
"text/plain": [
"<Figure size 288x288 with 2 Axes>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"(10, 10)\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 288x288 with 2 Axes>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"(10, 10)\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"image/png": "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\nVyhxpwAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 288x288 with 2 Axes>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"(6, 6)\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 288x288 with 2 Axes>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"(3, 3)\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 288x288 with 2 Axes>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"(3, 3)\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"image/png": "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\nAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 288x288 with 2 Axes>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"(3, 3)\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 288x288 with 2 Axes>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"(64, 9)\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAOwAAAOfCAYAAADLjS/mAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3X20XXV95/HPN/fmWUhIgiFNIgka\noYgicI0BWqtEEdAxrDUthVpNHTqZtuhodS0FO2sxtrVjZzpaXIthJgVqmCJI8QGWwwhpgLEKARKe\nkwCJ4SE3JiTkCU3Iwz33O3+cnXqb3H3u2b/ce87ve+/7tdZdOWef/c3v58FPvr+7z95nm7sLQAyj\n2j0BAM0jsEAgBBYIhMACgRBYIBACCwTS9sCa2UVm9ryZbTCzqyvU3Wxm28zs2Qo1s83sATNba2Zr\nzOyzTdaNM7NHzeypou4rzY5Z1HeY2RNm9sMKNS+Z2TNm9qSZrapQN9nM7jSz58xsnZmd20TNqcU4\nh39eN7PPNTnenxbvybNmdpuZjWt2rkjg7m37kdQh6WeSTpE0RtJTkk5vsvZ9ks6W9GyF8WZIOrt4\nfJykF5oZT5JJelPxeLSkRyQtqDDu5yV9W9IPK9S8JGlawnu6TNIfFo/HSJqc8N9kq6STm9h3pqQX\nJY0vnt8h6Q/a+f+p4f7T7g47X9IGd9/o7gcl3S5pUTOF7v5jSTurDObuW9z98eLxLyStU/3/dAPV\nubv/sng6uvhp6owTM5sl6SOSbqwy1xRmNkn1f8hukiR3P+juuyv+NQsl/czdX25y/05J482sU9IE\nST+vOB4qaHdgZ0ra1Od5t5oI0GAwszmSzlK9Wzazf4eZPSlpm6Tl7t5UnaS/lfRFSb0Vp+iS7jOz\n1Wa2pMmauZK2S/r7Ygl+o5lNrDju5ZJua2qC7psl/Y2kVyRtkbTH3e+rOB4qaHdg28LM3iTpu5I+\n5+6vN1Pj7jV3f7ekWZLmm9kZTYzzUUnb3H11wjR/w93PlnSxpKvM7H1N1HSq/mvCDe5+lqS9kqoc\nFxgj6WOS/rHJ/U9QfUU0V9KvSZpoZr/f7Hiort2B3Sxpdp/ns4ptQ8bMRqse1lvd/XtV64sl5gOS\nLmpi9/MlfczMXlJ9uX+Bmf1Dk+NsLv7cJun7qv/6MJBuSd19uv+dqge4WRdLetzdX21y/w9KetHd\n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\n",
"text/plain": [
"<Figure size 288x1152 with 2 Axes>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"(16, 16)\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"image/png": "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\nQmCC\n",
"text/plain": [
"<Figure size 288x288 with 2 Axes>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"(16, 16)\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"image/png": "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\nKCmISIn/D5UNNefRNElEAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 288x288 with 2 Axes>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"(16, 16)\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 288x288 with 2 Axes>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"(5, 2)\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAARcAAAJDCAYAAAAhJFCoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAFfBJREFUeJzt3W+s5Fd93/HPl4VASJoYYxqM160t\nxY3iElTQyiDxJM0/FofEypPKjkpogrqqBBKRkCiEB5EaRaoUKa2i0ijbxkpQUZDVpIpbOXWcFISQ\nYuJ1RJ3aDmVFSrBF4honkMQS1LvfPriz4v7m2r538Tlzd+59vaQRO3Nn7xxG1tn3Ob/f/Ka6OwCj\nveiwBwAcTSYXYAqTCzCFyQWYwuQCTGFyAaYwuQBTmFyAKUwuwBQvPuwBwFHwln/8Lf2lpy5s7PUe\nfOir93b36Y294DfA5AIDfOmpC/nDe//exl7vxLWfvWZjL/YNsiwCplAuMEAnuZiLhz2MK4pyAaZQ\nLjBE50Irl92UCzCFcoEBdvZcXHhtN+UCTGFyAaawLIJBHIpeUi7AFMoFBuh0LvgmjQXlAkyhXGAQ\nh6KXlAswhXKBATrJBeWyoFyAKZQLDGLPZUm5AFMoFxigE+e5rFEuwBQmF2AKyyIYxMcWl5QLMIVy\ngQE67SS6NcoFmEK5wAidXBAuC8oFmEK5wAA7V/9nN+UCTKFcYIjKhdRhD+KKolyAKZQLDNBJLjpa\ntKBcgClMLsAUlkUwiA3dJeUCTKFcYICdq/8rl92OfblU1emq+kxVna+q9x/2eI6aqrqzqp6oqv91\n2GNhs4715FJVJ5J8KMlbk9yc5I6quvlwR3Xk/FqS04c9iE242LWx2zY41pNLkluSnO/uz3X315J8\nNMlthzymI6W7P5HkqcMeB5t33PdcrkvyhV33H0vyxkMaC1vMnstex71cgEmOe7k8nuT6XfdPrh6D\ny9KpXPBv9cJxfzceSHJTVd1YVd+U5PYkdx/ymOBIONaTS3c/k+TdSe5N8miSu7r74cMd1dFSVb+R\n5A+SfFdVPVZV7zzsMbEZx31ZlO6+J8k9hz2Oo6q77zjsMWzKthwi3pRjXS7APMe+XGAEh6L3Ui7A\nFMoFhqhcaP9W7+bdAKYwuSSpqjOHPYaj7qi/xzvfW/Sijd22wXaMcr4j/R/+FcJ7fMzYc4FBHC1a\nmjK5XHX1ib725PbMW6++7kS++3Uv3aovhvjTp1952EO4LC++5tvzsu98zVa9x//vib/Kha88bcb4\nBk2ZAa49+eJ8+L++esavZuXtD/7UYQ/hyPs/7/uVAz+329Gidd4NYAqTCzDF9myMwBXuog3dBeUC\nTKFcYICdDy76t3o37wYwhXKBIRyKXufdAKZQLjDApQ8u8nXeDWAK5QKDXHCB7gXlAkxhcgGmsCyC\nAXyd617eDWAK5QKDXHQS3YJ3A5hCucAAPri4l3cDmEK5wACdchLdGuUCTKFcYBAfXFzybgBTKBcY\noDsuFrXGuwFMYXIBprAsgiHK9xatUS7AFMoFBujY0F3n3QCmUC4wiA8uLnk3gCmUCwzQqVz0wcUF\n5QJMoVxgEHsuS94NYAqTCzCFZREM0HH1/3XeDWCKA00uVXW6qj5TVeer6v2zBwXbp3Jhg7dtsO/k\nUlUnknwoyVuT3Jzkjqq6efbAgO12kD2XW5Kc7+7PJUlVfTTJbUkemTkw2Cb2XPY6yLtxXZIv7Lr/\n2OoxgOc07GhRVZ1JciZJXn3diVG/FrbGtuyFbMpByuXxJNfvun9y9dhCd5/t7lPdfeqqq00ucNwd\npFweSHJTVd2YnUnl9iQ/PnVUsGW6y57Lmn0nl+5+pqreneTeJCeS3NndD08fGbDVDrTn0t33JLln\n8lhgq7nM5ZJ3A46gqrq+qj5WVY9U1cNV9Z7V41dX1X1V9dnV/75i9XhV1S+tTpR9qKre8ELHYHKB\no+mZJO/t7puTvCnJu1Ynv74/ye93901Jfn91P9k5Sfam1e1Mkl9+oQPwwUUYoJMr6nuLuvuLSb64\n+vNfV9Wj2Tk/7bYk37t62q8n+XiSf7l6/MPd3Unur6qrqura1e/5higXOOKq6oYkr0/yqSTfsWvC\n+PMk37H68/CTZZULDFGb3tC9pqrO7bp/trvPrj+pqr41yW8m+enu/krV1+uqu7uqetYATS6wnZ7s\n7lPP94Sqekl2JpaPdPdvrR7+i0vLnaq6NskTq8cPdLLs5bAsggF2PrhYG7vtp3YS5VeTPNrdv7jr\nR3cnecfqz+9I8tu7Hv+J1VGjNyX58gvZb0mUCxxVb07y9iR/XFWfXj32M0n+dZK7quqdST6f5J+s\nfnZPkluTnE/ydJKffKEDMLnAIFfS1f+7+5PJcx6++v5neX4nedfIMVw57wZwpCgXGMA3Lu6lXIAp\n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\n/wdKdU6mkIE93gAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 288x720 with 2 Axes>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"(5, 2)\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"image/png": "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\nAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 288x720 with 2 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "5Ao-yC5p7wmo",
"colab_type": "text"
},
"source": [
"## To visualize the CNN on MNIST even better, check out this link:\n",
"\n",
"http://scs.ryerson.ca/~aharley/vis/conv/flat.html"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "J9mJDK1xIj5E",
"colab_type": "text"
},
"source": [
"##Attributing Result to neurons and Data\n",
"print(model.after_conv3.cpu().detach().numpy()[0][0].shape)\n",
"plt.colorbar()\n",
"plt.show()\n"
]
},
{
"cell_type": "code",
"metadata": {
"id": "buoYew7IIsIU",
"colab_type": "code",
"colab": {}
},
"source": [
"# Loading the test data\n",
"data = datasets.MNIST('../data', train=False, download=True,\n",
" transform=transforms.Compose([\n",
" transforms.ToTensor(),\n",
" transforms.Normalize((0.1307,), (0.3081,))\n",
" ]))"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "7pEkEH4fIuVk",
"colab_type": "code",
"outputId": "bb1db090-9ddb-475e-85df-c1fa811bd01e",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 300
}
},
"source": [
"# Evaluating an Example\n",
"e = 10\n",
"model.eval()\n",
"example = []\n",
"example = deepcopy(data.data[e]).unsqueeze(0).unsqueeze(0)\n",
"\n",
"if args['cuda']:\n",
" model.cuda()\n",
" example = example.cuda()\n",
"\n",
"example = Variable(example).float()\n",
"example.requires_grad=True\n",
"print(model(example).data)\n",
"\n",
"plt.matshow(data.data[e])\n",
"plt.colorbar()\n",
"\n",
"model.after_fc5[0][8].backward()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"tensor([[ 0.0000, -1260.5658, -454.7112, -665.7850, -1311.0803, -568.8503,\n",
" -750.2554, -1009.5161, -765.2604, -955.6873]], device='cuda:0')\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"image/png": "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\na/D/eWJsL2b6U9kAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 288x288 with 2 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "L4pPa_e9J-p2",
"colab_type": "code",
"outputId": "12b4d23b-1f7b-4223-9874-4ed70340e4c9",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
}
},
"source": [
"make_dot(model.after_fc5[0][4])"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<graphviz.dot.Digraph at 0x7fe360eb06d8>"
],
"image/svg+xml": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n -->\n<!-- Title: %3 Pages: 1 -->\n<svg width=\"457pt\" height=\"864pt\"\n viewBox=\"0.00 0.00 456.75 864.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n<g id=\"graph0\" class=\"graph\" transform=\"scale(.9341 .9341) rotate(0) translate(4 921)\">\n<title>%3</title>\n<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-921 485,-921 485,4 -4,4\"/>\n<!-- 140614560319696 -->\n<g id=\"node1\" class=\"node\">\n<title>140614560319696</title>\n<polygon fill=\"#caff70\" stroke=\"#000000\" points=\"389.5,-21 295.5,-21 295.5,0 389.5,0 389.5,-21\"/>\n<text text-anchor=\"middle\" x=\"342.5\" y=\"-7.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">SelectBackward</text>\n</g>\n<!-- 140614560320200 -->\n<g id=\"node2\" class=\"node\">\n<title>140614560320200</title>\n<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"389.5,-78 295.5,-78 295.5,-57 389.5,-57 389.5,-78\"/>\n<text text-anchor=\"middle\" x=\"342.5\" y=\"-64.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">SelectBackward</text>\n</g>\n<!-- 140614560320200&#45;&gt;140614560319696 -->\n<g id=\"edge1\" class=\"edge\">\n<title>140614560320200&#45;&gt;140614560319696</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M342.5,-56.7787C342.5,-49.6134 342.5,-39.9517 342.5,-31.3097\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"346.0001,-31.1732 342.5,-21.1732 339.0001,-31.1732 346.0001,-31.1732\"/>\n</g>\n<!-- 140614560319808 -->\n<g id=\"node3\" class=\"node\">\n<title>140614560319808</title>\n<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"394.5,-135 290.5,-135 290.5,-114 394.5,-114 394.5,-135\"/>\n<text text-anchor=\"middle\" x=\"342.5\" y=\"-121.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">AddmmBackward</text>\n</g>\n<!-- 140614560319808&#45;&gt;140614560320200 -->\n<g id=\"edge2\" class=\"edge\">\n<title>140614560319808&#45;&gt;140614560320200</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M342.5,-113.7787C342.5,-106.6134 342.5,-96.9517 342.5,-88.3097\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"346.0001,-88.1732 342.5,-78.1732 339.0001,-88.1732 346.0001,-88.1732\"/>\n</g>\n<!-- 140614560318744 -->\n<g id=\"node4\" class=\"node\">\n<title>140614560318744</title>\n<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"277.5,-206 223.5,-206 223.5,-171 277.5,-171 277.5,-206\"/>\n<text text-anchor=\"middle\" x=\"250.5\" y=\"-178.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (10)</text>\n</g>\n<!-- 140614560318744&#45;&gt;140614560319808 -->\n<g id=\"edge3\" class=\"edge\">\n<title>140614560318744&#45;&gt;140614560319808</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M276.1271,-170.6724C289.5188,-161.3565 305.7974,-150.0322 318.8816,-140.9302\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"321.1445,-143.6197 327.3548,-135.0358 317.147,-137.8733 321.1445,-143.6197\"/>\n</g>\n<!-- 140614560320032 -->\n<g id=\"node5\" class=\"node\">\n<title>140614560320032</title>\n<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"389.5,-199 295.5,-199 295.5,-178 389.5,-178 389.5,-199\"/>\n<text text-anchor=\"middle\" x=\"342.5\" y=\"-185.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward0</text>\n</g>\n<!-- 140614560320032&#45;&gt;140614560319808 -->\n<g id=\"edge4\" class=\"edge\">\n<title>140614560320032&#45;&gt;140614560319808</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M342.5,-177.9317C342.5,-169.0913 342.5,-156.2122 342.5,-145.3135\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"346.0001,-145.2979 342.5,-135.2979 339.0001,-145.2979 346.0001,-145.2979\"/>\n</g>\n<!-- 140614559822792 -->\n<g id=\"node6\" class=\"node\">\n<title>140614559822792</title>\n<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"394.5,-270 290.5,-270 290.5,-249 394.5,-249 394.5,-270\"/>\n<text text-anchor=\"middle\" x=\"342.5\" y=\"-256.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">AddmmBackward</text>\n</g>\n<!-- 140614559822792&#45;&gt;140614560320032 -->\n<g id=\"edge5\" class=\"edge\">\n<title>140614559822792&#45;&gt;140614560320032</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M342.5,-248.7166C342.5,-238.3953 342.5,-222.5401 342.5,-209.6896\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"346.0001,-209.3848 342.5,-199.3849 339.0001,-209.3849 346.0001,-209.3848\"/>\n</g>\n<!-- 140614559823744 -->\n<g id=\"node7\" class=\"node\">\n<title>140614559823744</title>\n<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"278.5,-348 224.5,-348 224.5,-313 278.5,-313 278.5,-348\"/>\n<text text-anchor=\"middle\" x=\"251.5\" y=\"-320.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256)</text>\n</g>\n<!-- 140614559823744&#45;&gt;140614559822792 -->\n<g id=\"edge6\" class=\"edge\">\n<title>140614559823744&#45;&gt;140614559822792</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M273.9944,-312.9494C288.2906,-301.7952 306.6989,-287.4327 320.8325,-276.4054\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"323.2741,-278.9397 329.0053,-270.0288 318.9681,-273.4208 323.2741,-278.9397\"/>\n</g>\n<!-- 140614559825312 -->\n<g id=\"node8\" class=\"node\">\n<title>140614559825312</title>\n<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"388,-341 297,-341 297,-320 388,-320 388,-341\"/>\n<text text-anchor=\"middle\" x=\"342.5\" y=\"-327.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ViewBackward</text>\n</g>\n<!-- 140614559825312&#45;&gt;140614559822792 -->\n<g id=\"edge7\" class=\"edge\">\n<title>140614559825312&#45;&gt;140614559822792</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M342.5,-319.7166C342.5,-309.3953 342.5,-293.5401 342.5,-280.6896\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"346.0001,-280.3848 342.5,-270.3849 339.0001,-280.3849 346.0001,-280.3848\"/>\n</g>\n<!-- 140614556677792 -->\n<g id=\"node9\" class=\"node\">\n<title>140614556677792</title>\n<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"389.5,-412 295.5,-412 295.5,-391 389.5,-391 389.5,-412\"/>\n<text text-anchor=\"middle\" x=\"342.5\" y=\"-398.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward0</text>\n</g>\n<!-- 140614556677792&#45;&gt;140614559825312 -->\n<g id=\"edge8\" class=\"edge\">\n<title>140614556677792&#45;&gt;140614559825312</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M342.5,-390.7166C342.5,-380.3953 342.5,-364.5401 342.5,-351.6896\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"346.0001,-351.3848 342.5,-341.3849 339.0001,-351.3849 346.0001,-351.3848\"/>\n</g>\n<!-- 140614555760400 -->\n<g id=\"node10\" class=\"node\">\n<title>140614555760400</title>\n<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"432.5,-476 252.5,-476 252.5,-455 432.5,-455 432.5,-476\"/>\n<text text-anchor=\"middle\" x=\"342.5\" y=\"-462.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MaxPool2DWithIndicesBackward</text>\n</g>\n<!-- 140614555760400&#45;&gt;140614556677792 -->\n<g id=\"edge9\" class=\"edge\">\n<title>140614555760400&#45;&gt;140614556677792</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M342.5,-454.9317C342.5,-446.0913 342.5,-433.2122 342.5,-422.3135\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"346.0001,-422.2979 342.5,-412.2979 339.0001,-422.2979 346.0001,-422.2979\"/>\n</g>\n<!-- 140614555759784 -->\n<g id=\"node11\" class=\"node\">\n<title>140614555759784</title>\n<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"421,-533 264,-533 264,-512 421,-512 421,-533\"/>\n<text text-anchor=\"middle\" x=\"342.5\" y=\"-519.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">CudnnConvolutionBackward</text>\n</g>\n<!-- 140614555759784&#45;&gt;140614555760400 -->\n<g id=\"edge10\" class=\"edge\">\n<title>140614555759784&#45;&gt;140614555760400</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M342.5,-511.7787C342.5,-504.6134 342.5,-494.9517 342.5,-486.3097\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"346.0001,-486.1732 342.5,-476.1732 339.0001,-486.1732 346.0001,-486.1732\"/>\n</g>\n<!-- 140614560053064 -->\n<g id=\"node12\" class=\"node\">\n<title>140614560053064</title>\n<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"286.5,-597 192.5,-597 192.5,-576 286.5,-576 286.5,-597\"/>\n<text text-anchor=\"middle\" x=\"239.5\" y=\"-583.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward0</text>\n</g>\n<!-- 140614560053064&#45;&gt;140614555759784 -->\n<g id=\"edge11\" class=\"edge\">\n<title>140614560053064&#45;&gt;140614555759784</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M256.5084,-575.9317C272.9089,-565.7411 297.9464,-550.1838 316.7827,-538.4797\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"318.8197,-541.3346 325.4664,-533.084 315.1253,-535.3889 318.8197,-541.3346\"/>\n</g>\n<!-- 140614551732576 -->\n<g id=\"node13\" class=\"node\">\n<title>140614551732576</title>\n<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"329.5,-661 149.5,-661 149.5,-640 329.5,-640 329.5,-661\"/>\n<text text-anchor=\"middle\" x=\"239.5\" y=\"-647.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MaxPool2DWithIndicesBackward</text>\n</g>\n<!-- 140614551732576&#45;&gt;140614560053064 -->\n<g id=\"edge12\" class=\"edge\">\n<title>140614551732576&#45;&gt;140614560053064</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M239.5,-639.9317C239.5,-631.0913 239.5,-618.2122 239.5,-607.3135\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"243.0001,-607.2979 239.5,-597.2979 236.0001,-607.2979 243.0001,-607.2979\"/>\n</g>\n<!-- 140614551734984 -->\n<g id=\"node14\" class=\"node\">\n<title>140614551734984</title>\n<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"318,-718 161,-718 161,-697 318,-697 318,-718\"/>\n<text text-anchor=\"middle\" x=\"239.5\" y=\"-704.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">CudnnConvolutionBackward</text>\n</g>\n<!-- 140614551734984&#45;&gt;140614551732576 -->\n<g id=\"edge13\" class=\"edge\">\n<title>140614551734984&#45;&gt;140614551732576</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M239.5,-696.7787C239.5,-689.6134 239.5,-679.9517 239.5,-671.3097\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"243.0001,-671.1732 239.5,-661.1732 236.0001,-671.1732 243.0001,-671.1732\"/>\n</g>\n<!-- 140614551734760 -->\n<g id=\"node15\" class=\"node\">\n<title>140614551734760</title>\n<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"183.5,-782 89.5,-782 89.5,-761 183.5,-761 183.5,-782\"/>\n<text text-anchor=\"middle\" x=\"136.5\" y=\"-768.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward0</text>\n</g>\n<!-- 140614551734760&#45;&gt;140614551734984 -->\n<g id=\"edge14\" class=\"edge\">\n<title>140614551734760&#45;&gt;140614551734984</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M153.5084,-760.9317C169.9089,-750.7411 194.9464,-735.1838 213.7827,-723.4797\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"215.8197,-726.3346 222.4664,-718.084 212.1253,-720.3889 215.8197,-726.3346\"/>\n</g>\n<!-- 140614551735152 -->\n<g id=\"node16\" class=\"node\">\n<title>140614551735152</title>\n<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"215,-846 58,-846 58,-825 215,-825 215,-846\"/>\n<text text-anchor=\"middle\" x=\"136.5\" y=\"-832.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">CudnnConvolutionBackward</text>\n</g>\n<!-- 140614551735152&#45;&gt;140614551734760 -->\n<g id=\"edge15\" class=\"edge\">\n<title>140614551735152&#45;&gt;140614551734760</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M136.5,-824.9317C136.5,-816.0913 136.5,-803.2122 136.5,-792.3135\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"140.0001,-792.2979 136.5,-782.2979 133.0001,-792.2979 140.0001,-792.2979\"/>\n</g>\n<!-- 140614556737608 -->\n<g id=\"node17\" class=\"node\">\n<title>140614556737608</title>\n<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"81,-917 0,-917 0,-882 81,-882 81,-917\"/>\n<text text-anchor=\"middle\" x=\"40.5\" y=\"-889.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (1, 1, 28, 28)</text>\n</g>\n<!-- 140614556737608&#45;&gt;140614551735152 -->\n<g id=\"edge16\" class=\"edge\">\n<title>140614556737608&#45;&gt;140614551735152</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M66.9865,-881.8423C81.0997,-872.4335 98.3415,-860.939 112.1226,-851.7516\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"114.2323,-854.5516 120.6114,-846.0924 110.3494,-848.7273 114.2323,-854.5516\"/>\n</g>\n<!-- 140614556737664 -->\n<g id=\"node18\" class=\"node\">\n<title>140614556737664</title>\n<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"174,-917 99,-917 99,-882 174,-882 174,-917\"/>\n<text text-anchor=\"middle\" x=\"136.5\" y=\"-889.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (16, 1, 5, 5)</text>\n</g>\n<!-- 140614556737664&#45;&gt;140614551735152 -->\n<g id=\"edge17\" class=\"edge\">\n<title>140614556737664&#45;&gt;140614551735152</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M136.5,-881.6724C136.5,-873.8405 136.5,-864.5893 136.5,-856.4323\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"140.0001,-856.2234 136.5,-846.2234 133.0001,-856.2235 140.0001,-856.2234\"/>\n</g>\n<!-- 140614556737720 -->\n<g id=\"node19\" class=\"node\">\n<title>140614556737720</title>\n<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"246.5,-917 192.5,-917 192.5,-882 246.5,-882 246.5,-917\"/>\n<text text-anchor=\"middle\" x=\"219.5\" y=\"-889.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (16)</text>\n</g>\n<!-- 140614556737720&#45;&gt;140614551735152 -->\n<g id=\"edge18\" class=\"edge\">\n<title>140614556737720&#45;&gt;140614551735152</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M196.3799,-881.6724C184.4916,-872.5056 170.0816,-861.3942 158.3769,-852.3689\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"160.4633,-849.5581 150.4069,-846.2234 156.1889,-855.1015 160.4633,-849.5581\"/>\n</g>\n<!-- 140614551734032 -->\n<g id=\"node20\" class=\"node\">\n<title>140614551734032</title>\n<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"277,-789 202,-789 202,-754 277,-754 277,-789\"/>\n<text text-anchor=\"middle\" x=\"239.5\" y=\"-761.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (32, 4, 5, 5)</text>\n</g>\n<!-- 140614551734032&#45;&gt;140614551734984 -->\n<g id=\"edge19\" class=\"edge\">\n<title>140614551734032&#45;&gt;140614551734984</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M239.5,-753.6724C239.5,-745.8405 239.5,-736.5893 239.5,-728.4323\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"243.0001,-728.2234 239.5,-718.2234 236.0001,-728.2235 243.0001,-728.2234\"/>\n</g>\n<!-- 140614551732800 -->\n<g id=\"node21\" class=\"node\">\n<title>140614551732800</title>\n<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"349.5,-789 295.5,-789 295.5,-754 349.5,-754 349.5,-789\"/>\n<text text-anchor=\"middle\" x=\"322.5\" y=\"-761.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (32)</text>\n</g>\n<!-- 140614551732800&#45;&gt;140614551734984 -->\n<g id=\"edge20\" class=\"edge\">\n<title>140614551732800&#45;&gt;140614551734984</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M299.3799,-753.6724C287.4916,-744.5056 273.0816,-733.3942 261.3769,-724.3689\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"263.4633,-721.5581 253.4069,-718.2234 259.1889,-727.1015 263.4633,-721.5581\"/>\n</g>\n<!-- 140614560053120 -->\n<g id=\"node22\" class=\"node\">\n<title>140614560053120</title>\n<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"380,-604 305,-604 305,-569 380,-569 380,-604\"/>\n<text text-anchor=\"middle\" x=\"342.5\" y=\"-576.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (64, 8, 5, 5)</text>\n</g>\n<!-- 140614560053120&#45;&gt;140614555759784 -->\n<g id=\"edge21\" class=\"edge\">\n<title>140614560053120&#45;&gt;140614555759784</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M342.5,-568.6724C342.5,-560.8405 342.5,-551.5893 342.5,-543.4323\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"346.0001,-543.2234 342.5,-533.2234 339.0001,-543.2235 346.0001,-543.2234\"/>\n</g>\n<!-- 140614551735376 -->\n<g id=\"node23\" class=\"node\">\n<title>140614551735376</title>\n<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"452.5,-604 398.5,-604 398.5,-569 452.5,-569 452.5,-604\"/>\n<text text-anchor=\"middle\" x=\"425.5\" y=\"-576.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (64)</text>\n</g>\n<!-- 140614551735376&#45;&gt;140614555759784 -->\n<g id=\"edge22\" class=\"edge\">\n<title>140614551735376&#45;&gt;140614555759784</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M402.3799,-568.6724C390.4916,-559.5056 376.0816,-548.3942 364.3769,-539.3689\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"366.4633,-536.5581 356.4069,-533.2234 362.1889,-542.1015 366.4633,-536.5581\"/>\n</g>\n<!-- 140614559825592 -->\n<g id=\"node24\" class=\"node\">\n<title>140614559825592</title>\n<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"479,-341 406,-341 406,-320 479,-320 479,-341\"/>\n<text text-anchor=\"middle\" x=\"442.5\" y=\"-327.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">TBackward</text>\n</g>\n<!-- 140614559825592&#45;&gt;140614559822792 -->\n<g id=\"edge23\" class=\"edge\">\n<title>140614559825592&#45;&gt;140614559822792</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M427.3122,-319.7166C410.992,-308.1293 384.8486,-289.5675 365.898,-276.1126\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"367.6832,-273.0876 357.5031,-270.1522 363.6307,-278.7953 367.6832,-273.0876\"/>\n</g>\n<!-- 140614560038696 -->\n<g id=\"node25\" class=\"node\">\n<title>140614560038696</title>\n<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"477,-419 408,-419 408,-384 477,-384 477,-419\"/>\n<text text-anchor=\"middle\" x=\"442.5\" y=\"-391.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256, 576)</text>\n</g>\n<!-- 140614560038696&#45;&gt;140614559825592 -->\n<g id=\"edge24\" class=\"edge\">\n<title>140614560038696&#45;&gt;140614559825592</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M442.5,-383.9494C442.5,-374.058 442.5,-361.6435 442.5,-351.2693\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"446.0001,-351.0288 442.5,-341.0288 439.0001,-351.0289 446.0001,-351.0288\"/>\n</g>\n<!-- 140614560318240 -->\n<g id=\"node26\" class=\"node\">\n<title>140614560318240</title>\n<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"481,-199 408,-199 408,-178 481,-178 481,-199\"/>\n<text text-anchor=\"middle\" x=\"444.5\" y=\"-185.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">TBackward</text>\n</g>\n<!-- 140614560318240&#45;&gt;140614560319808 -->\n<g id=\"edge25\" class=\"edge\">\n<title>140614560318240&#45;&gt;140614560319808</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M427.6568,-177.9317C411.4155,-167.7411 386.621,-152.1838 367.9676,-140.4797\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"369.6991,-137.4342 359.3682,-135.084 365.9787,-143.3637 369.6991,-137.4342\"/>\n</g>\n<!-- 140614559825200 -->\n<g id=\"node27\" class=\"node\">\n<title>140614559825200</title>\n<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"476,-277 413,-277 413,-242 476,-242 476,-277\"/>\n<text text-anchor=\"middle\" x=\"444.5\" y=\"-249.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (10, 256)</text>\n</g>\n<!-- 140614559825200&#45;&gt;140614560318240 -->\n<g id=\"edge26\" class=\"edge\">\n<title>140614559825200&#45;&gt;140614560318240</title>\n<path fill=\"none\" stroke=\"#000000\" d=\"M444.5,-241.9494C444.5,-232.058 444.5,-219.6435 444.5,-209.2693\"/>\n<polygon fill=\"#000000\" stroke=\"#000000\" points=\"448.0001,-209.0288 444.5,-199.0288 441.0001,-209.0289 448.0001,-209.0288\"/>\n</g>\n</g>\n</svg>\n"
},
"metadata": {
"tags": []
},
"execution_count": 79
}
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment