{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "# unit 4.2 - Training a CNN on CIFAR\n", "\n", "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://githubtocolab.com/culurciello/deep-learning-course-source/blob/main/source/lectures/42-conv-cifar10-tutorial.ipynb)\n", "\n", "This is it. You have seen how to define neural networks, compute loss and make\n", "updates to the weights of the network.\n", "\n", "Now you might be thinking,\n", "\n", "## What about data?\n", "\n", "Generally, when you have to deal with image, text, audio or video data,\n", "you can use standard python packages that load data into a numpy array.\n", "Then you can convert this array into a ``torch.*Tensor``.\n", "\n", "- For images, packages such as Pillow, OpenCV are useful\n", "- For audio, packages such as scipy and librosa\n", "- For text, either raw Python or Cython based loading, or NLTK and\n", " SpaCy are useful\n", "\n", "Specifically for vision, we have created a package called\n", "``torchvision``, that has data loaders for common datasets such as\n", "ImageNet, CIFAR10, MNIST, etc. and data transformers for images, viz.,\n", "``torchvision.datasets`` and ``torch.utils.data.DataLoader``.\n", "\n", "This provides a huge convenience and avoids writing boilerplate code.\n", "\n", "For this tutorial, we will use the CIFAR10 dataset.\n", "It has the classes: ‘airplane’, ‘automobile’, ‘bird’, ‘cat’, ‘deer’,\n", "‘dog’, ‘frog’, ‘horse’, ‘ship’, ‘truck’. The images in CIFAR-10 are of\n", "size 3x32x32, i.e. 3-channel color images of 32x32 pixels in size.\n", "\n", ".. figure:: /_static/img/cifar10.png\n", " :alt: cifar10\n", "\n", " cifar10\n", "\n", "\n", "## Training an image classification convolutional neural network\n", "\n", "We will do the following steps in order:\n", "\n", "1. Load and normalize the CIFAR10 training and test datasets using\n", " ``torchvision``\n", "2. Define a Convolutional Neural Network\n", "3. Define a loss function\n", "4. Train the network on the training data\n", "5. Test the network on the test data\n", "\n", "### 1. Load and normalize CIFAR10\n", "\n", "Using ``torchvision``, it’s extremely easy to load CIFAR10.\n" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "import torch\n", "import torchvision\n", "import torchvision.transforms as transforms" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The output of torchvision datasets are PILImage images of range [0, 1].\n", "We transform them to Tensors of normalized range [-1, 1].\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Note

If running on Windows and you get a BrokenPipeError, try setting\n", " the num_worker of torch.utils.data.DataLoader() to 0.

\n", "\n" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Files already downloaded and verified\n", "Files already downloaded and verified\n" ] } ], "source": [ "transform = transforms.Compose(\n", " [transforms.ToTensor(),\n", " transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])\n", "\n", "batch_size = 8\n", "\n", "trainset = torchvision.datasets.CIFAR10(root='./data', train=True,\n", " download=True, transform=transform)\n", "trainloader = torch.utils.data.DataLoader(trainset, batch_size=batch_size,\n", " shuffle=True, num_workers=2)\n", "\n", "testset = torchvision.datasets.CIFAR10(root='./data', train=False,\n", " download=True, transform=transform)\n", "testloader = torch.utils.data.DataLoader(testset, batch_size=batch_size,\n", " shuffle=False, num_workers=2)\n", "\n", "classes = ('plane', 'car', 'bird', 'cat',\n", " 'deer', 'dog', 'frog', 'horse', 'ship', 'truck')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us show some of the training images, for fun.\n", "\n" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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vt0+Ho+5++67ueyyy5iYmOBP//RPef755y/iEW8dHnroIf7kT/6EPXv2oJTiP/7jP9ZtFxE+85nPMDc3R7fb5cCBA/zyl79ct8/8/Dx33XUXU1NTzMzM8Bd/8ResrFzcDsObjfPJ+f3vf/9Z1/htt922bp8o5/PzhS98gT/8wz9kcnKSnTt38s53vpNDhw6t2+dCxoujR4/yjne8g16vx86dO/nEJz5BXdcb+VM2PRci67e//e1nXdcf+tCH1u2zVWW96ZSPr33ta/zN3/wN99xzDz/5yU+46aabuPXWWzlx4sTFPrQtzetf/3qOHTvWPh5++OF221//9V/zn//5n3zjG9/gwQcf5De/+Q133nnnRTzarcNgMOCmm27iS1/60jm3f/GLX+Qf//Ef+ed//mceeeQR+v0+t956K+PxuN3nrrvu4qmnnuK+++7j29/+Ng899BAf/OAHN+onbAnOJ2eA2267bd01/pWvfGXd9ijn8/Pggw9y991386Mf/Yj77ruPqqq45ZZbGAwG7T7nGy+stbzjHe+gLEt++MMf8q//+q/ce++9fOYzn7kYP2nTciGyBvjABz6w7rr+4he/2G7b0rKWTcZb3vIWufvuu9v/rbWyZ88e+cIXvnARj2prc88998hNN910zm0LCwuSpql84xvfaF/7+c9/LoAcPHhwg47w0gCQb37zm+3/zjnZvXu3/P3f/3372sLCguR5Ll/5yldERORnP/uZAPK///u/7T7f+c53RCklzz333IYd+1biTDmLiLzvfe+TO+6447e+J8r55XHixAkB5MEHHxSRCxsv/uu//ku01nL8+PF2ny9/+csyNTUlRVFs7A/YQpwpaxGRP/7jP5a//Mu//K3v2cqy3lSWj7IsefTRRzlw4ED7mtaaAwcOcPDgwYt4ZFufX/7yl+zZs4err76au+66i6NHjwLw6KOPUlXVOplff/31XHnllVHmvyNHjhzh+PHj62Q7PT3Nvn37WtkePHiQmZkZ3vzmN7f7HDhwAK01jzzyyIYf81bmgQceYOfOnVx33XV8+MMf5tSpU+22KOeXx+LiIgDbt28HLmy8OHjwIDfeeCO7du1q97n11ltZWlriqaee2sCj31qcKeuGf/u3f2N2dpYbbriBT33qUwyHw3bbVpb1pmosd/LkSay16wQJsGvXLn7xi19cpKPa+uzbt497772X6667jmPHjvG5z32OP/qjP+LJJ5/k+PHjZFnGzMzMuvfs2rWL48ePX5wDvkRo5Heu67nZdvz4cXbu3Llue5IkbN++Pcr/JXDbbbdx5513snfvXp5++mk+/elPc/vtt3Pw4EGMMVHOLwPnHH/1V3/FW9/6Vm644QaACxovjh8/fs5rvtkWOZtzyRrgve99L1dddRV79uzhiSee4JOf/CSHDh3i3//934GtLetNpXxEXhluv/329u83vOEN7Nu3j6uuuoqvf/3rdLvdi3hkkcjvhz/7sz9r/77xxht5wxvewDXXXMMDDzzAzTfffBGPbOty99138+STT66LD4u8Mvw2Wa+NSbrxxhuZm5vj5ptv5umnn+aaa67Z6MP8vbKp3C6zs7MYY86KnH7++efZvXv3RTqqS4+ZmRle+9rXcvjwYXbv3k1ZliwsLKzbJ8r8d6eR34tdz7t37z4rmLqua+bn56P8fweuvvpqZmdnOXz4MBDl/FL56Ec/yre//W2+//3vc8UVV7SvX8h4sXv37nNe8822yHp+m6zPxb59+wDWXddbVdabSvnIsow3velNfO9732tfc87xve99j/3791/EI7u0WFlZ4emnn2Zubo43velNpGm6TuaHDh3i6NGjUea/I3v37mX37t3rZLu0tMQjjzzSynb//v0sLCzw6KOPtvvcf//9OOfagSby0nn22Wc5deoUc3NzQJTzhSIifPSjH+Wb3/wm999/P3v37l23/ULGi/379/PTn/50nbJ33333MTU1xete97qN+SFbgPPJ+lw8/vjjAOuu6y0r64sd8XomX/3qVyXPc7n33nvlZz/7mXzwgx+UmZmZddG8kZfGxz72MXnggQfkyJEj8oMf/EAOHDggs7OzcuLECRER+dCHPiRXXnml3H///fLjH/9Y9u/fL/v377/IR701WF5elscee0wee+wxAeQf/uEf5LHHHpNf//rXIiLyd3/3dzIzMyPf+ta35IknnpA77rhD9u7dK6PRqP2M2267Td74xjfKI488Ig8//LBce+218p73vOdi/aRNyYvJeXl5WT7+8Y/LwYMH5ciRI/Lf//3f8gd/8Ady7bXXyng8bj8jyvn8fPjDH5bp6Wl54IEH5NixY+1jOBy2+5xvvKjrWm644Qa55ZZb5PHHH5fvfve7smPHDvnUpz51MX7SpuV8sj58+LB8/vOflx//+Mdy5MgR+da3viVXX321vO1tb2s/YyvLetMpHyIi//RP/yRXXnmlZFkmb3nLW+RHP/rRxT6kLc273/1umZubkyzL5PLLL5d3v/vdcvjw4Xb7aDSSj3zkI7Jt2zbp9Xryrne9S44dO3YRj3jr8P3vf1+Asx7ve9/7RMSn2/7t3/6t7Nq1S/I8l5tvvlkOHTq07jNOnTol73nPe2RiYkKmpqbkz//8z2V5efki/JrNy4vJeTgcyi233CI7duyQNE3lqquukg984ANnLViinM/PuWQMyL/8y7+0+1zIePGrX/1Kbr/9dul2uzI7Oysf+9jHpKqqDf41m5vzyfro0aPytre9TbZv3y55nstrXvMa+cQnPiGLi4vrPmerylqJiGycnSUSiUQikcj/72yqmI9IJBKJRCKXPlH5iEQikUgksqFE5SMSiUQikciGEpWPSCQSiUQiG0pUPiKRSCQSiWwoUfmIRCKRSCSyoUTlIxKJRCKRyIYSlY9IJBKJRCIbSlQ+IpFIJBKJbChR+YhEIpFIJLKhROUjEolEIpHIhhKVj0gkEolEIhvK/wP8dfe/frKnDQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "car truck ship frog truck deer deer car \n" ] } ], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "# functions to show an image\n", "\n", "\n", "def imshow(img):\n", " img = img / 2 + 0.5 # unnormalize\n", " npimg = img.numpy()\n", " plt.imshow(np.transpose(npimg, (1, 2, 0)))\n", " plt.show()\n", "\n", "\n", "# get some random training images\n", "dataiter = iter(trainloader)\n", "images, labels = next(dataiter)\n", "# print(images[0].shape, images[0].mean(), images[0].std())\n", "\n", "# show images\n", "imshow(torchvision.utils.make_grid(images))\n", "# print labels\n", "print(' '.join(f'{classes[labels[j]]:5s}' for j in range(batch_size)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2. Define a Convolutional Neural Network\n", "Copy the neural network from the Neural Networks section before and modify it to\n", "take 3-channel images (instead of 1-channel images as it was defined).\n", "\n" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "tensor([[-0.0332, 0.0059, 0.0249, 0.0549, -0.0387, -0.0645, -0.0843, 0.0244,\n", " -0.0088, 0.0829],\n", " [-0.0281, -0.0027, 0.0320, 0.0482, -0.0392, -0.0638, -0.0827, 0.0298,\n", " -0.0070, 0.0798],\n", " [-0.0392, -0.0063, 0.0256, 0.0495, -0.0438, -0.0721, -0.0852, 0.0295,\n", " -0.0149, 0.0822],\n", " [-0.0273, -0.0058, 0.0195, 0.0420, -0.0454, -0.0626, -0.0697, 0.0244,\n", " -0.0112, 0.0830],\n", " [-0.0303, 0.0078, 0.0196, 0.0369, -0.0390, -0.0685, -0.0786, 0.0279,\n", " -0.0111, 0.0926],\n", " [-0.0317, -0.0014, 0.0233, 0.0403, -0.0431, -0.0677, -0.0796, 0.0239,\n", " -0.0142, 0.0812],\n", " [-0.0290, 0.0005, 0.0172, 0.0421, -0.0429, -0.0624, -0.0773, 0.0196,\n", " -0.0038, 0.0824],\n", " [-0.0270, 0.0004, 0.0287, 0.0445, -0.0420, -0.0649, -0.0794, 0.0293,\n", " -0.0097, 0.0901]], grad_fn=)" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import torch.nn as nn\n", "import torch.nn.functional as F\n", "\n", "\n", "class Net(nn.Module):\n", " def __init__(self):\n", " super().__init__()\n", " self.conv1 = nn.Conv2d(3, 6, 5)\n", " self.pool = nn.MaxPool2d(2, 2)\n", " self.conv2 = nn.Conv2d(6, 16, 5)\n", " self.fc1 = nn.Linear(16 * 5 * 5, 120)\n", " self.fc2 = nn.Linear(120, 84)\n", " self.fc3 = nn.Linear(84, 10)\n", "\n", " def forward(self, x):\n", " x = self.conv1(x)\n", "# print(x.shape)\n", " x = self.pool(F.relu(x))\n", "# print(x.shape)\n", " x = self.conv2(x)\n", "# print(x.shape)\n", " x = self.pool(F.relu(x))\n", "# print(x.shape)\n", " x = torch.flatten(x, 1) # flatten all dimensions except batch\n", "# print(x.shape)\n", " x = F.relu(self.fc1(x))\n", " x = F.relu(self.fc2(x))\n", " x = self.fc3(x)\n", "# print(x.shape)\n", " return x\n", "\n", "\n", "net = Net()\n", "\n", "# test sizes\n", "net(images)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3. Define a Loss function and optimizer\n", "Let's use a Classification Cross-Entropy loss and SGD with momentum.\n", "\n" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "import torch.optim as optim\n", "\n", "criterion = nn.CrossEntropyLoss()\n", "optimizer = optim.Adam(net.parameters())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 4. Train the network\n", "\n", "This is when things start to get interesting.\n", "We simply have to loop over our data iterator, and feed the inputs to the\n", "network and optimize.\n", "\n" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, 2000] loss: 1.732\n", "[1, 4000] loss: 1.469\n", "[1, 6000] loss: 1.373\n", "[2, 2000] loss: 1.269\n", "[2, 4000] loss: 1.249\n", "[2, 6000] loss: 1.212\n", "Finished Training\n" ] } ], "source": [ "for epoch in range(2): # loop over the dataset multiple times\n", "\n", " running_loss = 0.0\n", " for i, data in enumerate(trainloader, 0):\n", " # get the inputs; data is a list of [inputs, labels]\n", " inputs, labels = data\n", "\n", " # zero the parameter gradients\n", " optimizer.zero_grad()\n", "\n", " # forward + backward + optimize\n", " outputs = net(inputs)\n", " loss = criterion(outputs, labels)\n", " loss.backward()\n", " optimizer.step()\n", "\n", " # print statistics\n", " running_loss += loss.item()\n", " if i % 2000 == 1999: # print every 2000 mini-batches\n", " print(f'[{epoch + 1}, {i + 1:5d}] loss: {running_loss / 2000:.3f}')\n", " running_loss = 0.0\n", "\n", "print('Finished Training')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's quickly save our trained model:\n", "\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "PATH = './cifar_net.pth'\n", "torch.save(net.state_dict(), PATH)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "See [here](https://pytorch.org/docs/stable/notes/serialization.html)\n", "for more details on saving PyTorch models.\n", "\n", "### 5. Test the network on the test data\n", "\n", "We have trained the network for 2 passes over the training dataset.\n", "But we need to check if the network has learnt anything at all.\n", "\n", "We will check this by predicting the class label that the neural network\n", "outputs, and checking it against the ground-truth. If the prediction is\n", "correct, we add the sample to the list of correct predictions.\n", "\n", "Okay, first step. Let us display an image from the test set to get familiar.\n", "\n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "GroundTruth: cat ship ship plane\n" ] } ], "source": [ "dataiter = iter(testloader)\n", "images, labels = next(dataiter)\n", "\n", "# print images\n", "imshow(torchvision.utils.make_grid(images))\n", "print('GroundTruth: ', ' '.join(f'{classes[labels[j]]:5s}' for j in range(4)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, let's load back in our saved model (note: saving and re-loading the model\n", "wasn't necessary here, we only did it to illustrate how to do so):\n", "\n" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "net = Net()\n", "net.load_state_dict(torch.load(PATH))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Okay, now let us see what the neural network thinks these examples above are:\n", "\n" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "outputs = net(images)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The outputs are energies for the 10 classes.\n", "The higher the energy for a class, the more the network\n", "thinks that the image is of the particular class.\n", "So, let's get the index of the highest energy:\n", "\n" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Predicted: cat ship ship ship \n" ] } ], "source": [ "_, predicted = torch.max(outputs, 1)\n", "\n", "print('Predicted: ', ' '.join(f'{classes[predicted[j]]:5s}'\n", " for j in range(4)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The results seem pretty good.\n", "\n", "Let us look at how the network performs on the whole dataset.\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "correct = 0\n", "total = 0\n", "# since we're not training, we don't need to calculate the gradients for our outputs\n", "with torch.no_grad():\n", " for data in testloader:\n", " images, labels = data\n", " # calculate outputs by running images through the network\n", " outputs = net(images)\n", " # the class with the highest energy is what we choose as prediction\n", " _, predicted = torch.max(outputs.data, 1)\n", " total += labels.size(0)\n", " correct += (predicted == labels).sum().item()\n", "\n", "print(f'Accuracy of the network on the 10000 test images: {100 * correct // total} %')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "That looks way better than chance, which is 10% accuracy (randomly picking\n", "a class out of 10 classes).\n", "Seems like the network learnt something.\n", "\n", "Hmmm, what are the classes that performed well, and the classes that did\n", "not perform well:\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# prepare to count predictions for each class\n", "correct_pred = {classname: 0 for classname in classes}\n", "total_pred = {classname: 0 for classname in classes}\n", "\n", "# again no gradients needed\n", "with torch.no_grad():\n", " for data in testloader:\n", " images, labels = data\n", " outputs = net(images)\n", " _, predictions = torch.max(outputs, 1)\n", " # collect the correct predictions for each class\n", " for label, prediction in zip(labels, predictions):\n", " if label == prediction:\n", " correct_pred[classes[label]] += 1\n", " total_pred[classes[label]] += 1\n", "\n", "\n", "# print accuracy for each class\n", "for classname, correct_count in correct_pred.items():\n", " accuracy = 100 * float(correct_count) / total_pred[classname]\n", " print(f'Accuracy for class: {classname:5s} is {accuracy:.1f} %')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Okay, so what next?\n", "\n", "How do we run these neural networks on the GPU?\n", "\n", "## Training on GPU\n", "Just like how you transfer a Tensor onto the GPU, you transfer the neural\n", "net onto the GPU.\n", "\n", "Let's first define our device as the first visible cuda device if we have\n", "CUDA available:\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')\n", "\n", "# Assuming that we are on a CUDA machine, this should print a CUDA device:\n", "\n", "print(device)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The rest of this section assumes that ``device`` is a CUDA device.\n", "\n", "Then these methods will recursively go over all modules and convert their\n", "parameters and buffers to CUDA tensors:\n", "\n", ".. code:: python\n", "\n", " net.to(device)\n", "\n", "\n", "Remember that you will have to send the inputs and targets at every step\n", "to the GPU too:\n", "\n", ".. code:: python\n", "\n", " inputs, labels = data[0].to(device), data[1].to(device)\n", "\n", "Why don't I notice MASSIVE speedup compared to CPU? Because your network\n", "is really small.\n", "\n", "**Exercise:** Try increasing the width of your network (argument 2 of\n", "the first ``nn.Conv2d``, and argument 1 of the second ``nn.Conv2d`` –\n", "they need to be the same number), see what kind of speedup you get.\n", "\n", "**Goals achieved**:\n", "\n", "- Understanding PyTorch's Tensor library and neural networks at a high level.\n", "- Train a small neural network to classify images\n", "\n", "## Training on multiple GPUs\n", "If you want to see even more MASSIVE speedup using all of your GPUs,\n", "please check out :doc:`data_parallel_tutorial`." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.9" } }, "nbformat": 4, "nbformat_minor": 1 }