Loading data

Author

Marie-Hélène Burle

import torch
import torchvision
import torchvision.transforms as transforms
transform = transforms.Compose(
    [transforms.ToTensor(),
     transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])

batch_size = 4

trainset = torchvision.datasets.CIFAR10(root='./data', train=True,
                                        download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=batch_size,
                                          shuffle=True, num_workers=2)

testset = torchvision.datasets.CIFAR10(root='./data', train=False,
                                       download=True, transform=transform)
testloader = torch.utils.data.DataLoader(testset, batch_size=batch_size,
                                         shuffle=False, num_workers=2)

classes = ('plane', 'car', 'bird', 'cat',
           'deer', 'dog', 'frog', 'horse', 'ship', 'truck')
Downloading https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz to ./data/cifar-10-python.tar.gz
  0%|          | 0/170498071 [00:00<?, ?it/s]
  0%|          | 65536/170498071 [00:00<05:46, 491827.40it/s]
  0%|          | 229376/170498071 [00:00<03:01, 940231.98it/s]
  0%|          | 720896/170498071 [00:00<01:08, 2489207.41it/s]
  1%|          | 1540096/170498071 [00:00<00:37, 4456272.63it/s]
  2%|▏         | 2686976/170498071 [00:00<00:24, 6788933.98it/s]
  2%|▏         | 3899392/170498071 [00:00<00:19, 8438876.08it/s]
  3%|▎         | 5242880/170498071 [00:00<00:16, 9846200.47it/s]
  4%|▎         | 6258688/170498071 [00:00<00:19, 8531338.74it/s]
  4%|▍         | 7176192/170498071 [00:01<00:20, 7847303.95it/s]
  5%|▍         | 8028160/170498071 [00:01<00:21, 7474861.45it/s]
  5%|▌         | 8945664/170498071 [00:01<00:23, 6986552.30it/s]
  6%|▌         | 10125312/170498071 [00:01<00:19, 8145854.68it/s]
  7%|▋         | 11403264/170498071 [00:01<00:19, 8085393.70it/s]
  7%|▋         | 12681216/170498071 [00:01<00:17, 9136506.69it/s]
  8%|▊         | 13664256/170498071 [00:01<00:18, 8266228.57it/s]
  9%|▊         | 14876672/170498071 [00:02<00:19, 8115136.94it/s]
  9%|▉         | 16023552/170498071 [00:02<00:17, 8889527.98it/s]
 10%|█         | 17235968/170498071 [00:02<00:15, 9663233.51it/s]
 11%|█         | 18415616/170498071 [00:02<00:14, 10192680.60it/s]
 12%|█▏        | 19693568/170498071 [00:02<00:13, 10788258.47it/s]
 12%|█▏        | 20905984/170498071 [00:02<00:13, 11137044.67it/s]
 13%|█▎        | 22052864/170498071 [00:02<00:15, 9557520.41it/s] 
 14%|█▎        | 23068672/170498071 [00:02<00:16, 8727196.54it/s]
 14%|█▍        | 24281088/170498071 [00:02<00:15, 9443335.97it/s]
 15%|█▍        | 25559040/170498071 [00:03<00:14, 10268372.56it/s]
 16%|█▌        | 26804224/170498071 [00:03<00:13, 10723338.45it/s]
 16%|█▋        | 27983872/170498071 [00:03<00:12, 10965358.82it/s]
 17%|█▋        | 29130752/170498071 [00:03<00:12, 10999441.28it/s]
 18%|█▊        | 30277632/170498071 [00:03<00:12, 11092944.06it/s]
 18%|█▊        | 31424512/170498071 [00:03<00:14, 9440614.90it/s] 
 19%|█▉        | 32440320/170498071 [00:03<00:16, 8604088.25it/s]
 20%|█▉        | 33685504/170498071 [00:03<00:14, 9532970.77it/s]
 20%|██        | 34897920/170498071 [00:03<00:13, 10135662.97it/s]
 21%|██        | 36077568/170498071 [00:04<00:12, 10582520.65it/s]
 22%|██▏       | 37355520/170498071 [00:04<00:11, 11169621.76it/s]
 23%|██▎       | 38502400/170498071 [00:04<00:13, 9773618.49it/s] 
 23%|██▎       | 39682048/170498071 [00:04<00:14, 8776599.27it/s]
 24%|██▍       | 40861696/170498071 [00:04<00:13, 9463453.58it/s]
 25%|██▍       | 41877504/170498071 [00:04<00:14, 8655659.33it/s]
 25%|██▌       | 43057152/170498071 [00:04<00:13, 9383740.20it/s]
 26%|██▌       | 44466176/170498071 [00:05<00:14, 8918961.08it/s]
 27%|██▋       | 45580288/170498071 [00:05<00:13, 9435527.18it/s]
 27%|██▋       | 46694400/170498071 [00:05<00:12, 9666658.54it/s]
 28%|██▊       | 47710208/170498071 [00:05<00:14, 8690365.13it/s]
 29%|██▊       | 48627712/170498071 [00:05<00:14, 8168523.84it/s]
 29%|██▉       | 49840128/170498071 [00:05<00:13, 9100727.17it/s]
 30%|██▉       | 50790400/170498071 [00:05<00:13, 9110841.14it/s]
 31%|███       | 52035584/170498071 [00:05<00:11, 9964838.45it/s]
 31%|███       | 53149696/170498071 [00:05<00:11, 10248001.60it/s]
 32%|███▏      | 54362112/170498071 [00:06<00:10, 10700449.80it/s]
 33%|███▎      | 55672832/170498071 [00:06<00:10, 11243036.81it/s]
 33%|███▎      | 56819712/170498071 [00:06<00:10, 11161257.33it/s]
 34%|███▍      | 57966592/170498071 [00:06<00:10, 11116663.20it/s]
 35%|███▍      | 59179008/170498071 [00:06<00:09, 11322832.90it/s]
 35%|███▌      | 60325888/170498071 [00:06<00:11, 9942209.91it/s] 
 36%|███▌      | 61669376/170498071 [00:06<00:10, 10763417.54it/s]
 37%|███▋      | 62816256/170498071 [00:06<00:11, 9497849.00it/s] 
 38%|███▊      | 64094208/170498071 [00:06<00:10, 10264819.30it/s]
 38%|███▊      | 65175552/170498071 [00:07<00:11, 9240127.87it/s] 
 39%|███▉      | 66453504/170498071 [00:07<00:10, 10058185.89it/s]
 40%|███▉      | 67633152/170498071 [00:07<00:11, 9072239.63it/s] 
 40%|████      | 68812800/170498071 [00:07<00:10, 9707277.11it/s]
 41%|████      | 69861376/170498071 [00:07<00:10, 9705162.98it/s]
 42%|████▏     | 71041024/170498071 [00:07<00:09, 10230674.10it/s]
 42%|████▏     | 72253440/170498071 [00:07<00:09, 10719508.02it/s]
 43%|████▎     | 73367552/170498071 [00:07<00:10, 9165090.08it/s] 
 44%|████▎     | 74579968/170498071 [00:08<00:09, 9914670.67it/s]
 44%|████▍     | 75628544/170498071 [00:08<00:10, 9393229.65it/s]
 45%|████▌     | 76840960/170498071 [00:08<00:09, 10102760.55it/s]
 46%|████▌     | 78151680/170498071 [00:08<00:08, 10776594.99it/s]
 46%|████▋     | 79265792/170498071 [00:08<00:09, 9130592.02it/s] 
 47%|████▋     | 80445440/170498071 [00:08<00:09, 9771793.60it/s]
 48%|████▊     | 81690624/170498071 [00:08<00:09, 9036318.07it/s]
 49%|████▊     | 82870272/170498071 [00:08<00:09, 9686936.54it/s]
 49%|████▉     | 83918848/170498071 [00:09<00:09, 9524420.01it/s]
 50%|████▉     | 85032960/170498071 [00:09<00:08, 9915047.72it/s]
 51%|█████     | 86245376/170498071 [00:09<00:08, 10405683.29it/s]
 51%|█████     | 87326720/170498071 [00:09<00:10, 8265636.02it/s] 
 52%|█████▏    | 88539136/170498071 [00:09<00:09, 8953860.21it/s]
 53%|█████▎    | 89751552/170498071 [00:09<00:08, 9704131.64it/s]
 53%|█████▎    | 91029504/170498071 [00:09<00:07, 10463877.79it/s]
 54%|█████▍    | 92209152/170498071 [00:09<00:07, 10703416.42it/s]
 55%|█████▍    | 93683712/170498071 [00:09<00:07, 9862609.56it/s] 
 56%|█████▌    | 94961664/170498071 [00:10<00:07, 10491658.61it/s]
 56%|█████▋    | 96272384/170498071 [00:10<00:06, 10997980.66it/s]
 57%|█████▋    | 97419264/170498071 [00:10<00:07, 10342494.00it/s]
 58%|█████▊    | 98697216/170498071 [00:10<00:06, 10767972.20it/s]
 59%|█████▊    | 99811328/170498071 [00:10<00:07, 9199253.34it/s] 
 59%|█████▉    | 100925440/170498071 [00:10<00:07, 9645422.69it/s]
 60%|█████▉    | 102137856/170498071 [00:10<00:06, 10217765.32it/s]
 61%|██████    | 103251968/170498071 [00:10<00:06, 10436919.87it/s]
 61%|██████▏   | 104628224/170498071 [00:11<00:05, 11241775.49it/s]
 62%|██████▏   | 105807872/170498071 [00:11<00:06, 9989479.73it/s] 
 63%|██████▎   | 107053056/170498071 [00:11<00:05, 10593145.95it/s]
 64%|██████▎   | 108363776/170498071 [00:11<00:05, 11254452.83it/s]
 64%|██████▍   | 109543424/170498071 [00:11<00:06, 9843570.45it/s] 
 65%|██████▍   | 110592000/170498071 [00:11<00:06, 8765047.14it/s]
 66%|██████▌   | 111869952/170498071 [00:11<00:06, 9367360.92it/s]
 66%|██████▋   | 113147904/170498071 [00:11<00:05, 10176890.98it/s]
 67%|██████▋   | 114393088/170498071 [00:12<00:05, 10675017.04it/s]
 68%|██████▊   | 115638272/170498071 [00:12<00:04, 11091521.45it/s]
 69%|██████▊   | 116817920/170498071 [00:12<00:05, 9888741.53it/s] 
 69%|██████▉   | 118063104/170498071 [00:12<00:04, 10530585.33it/s]
 70%|██████▉   | 119177216/170498071 [00:12<00:05, 9416961.93it/s] 
 71%|███████   | 120422400/170498071 [00:12<00:05, 10010110.58it/s]
 71%|███████▏  | 121602048/170498071 [00:12<00:04, 10251330.49it/s]
 72%|███████▏  | 122912768/170498071 [00:12<00:04, 10914642.76it/s]
 73%|███████▎  | 124059648/170498071 [00:12<00:04, 9478166.18it/s] 
 73%|███████▎  | 125075456/170498071 [00:13<00:05, 8655163.92it/s]
 74%|███████▍  | 126287872/170498071 [00:13<00:04, 9454623.65it/s]
 75%|███████▍  | 127565824/170498071 [00:13<00:04, 10275821.03it/s]
 75%|███████▌  | 128679936/170498071 [00:13<00:04, 9359271.99it/s] 
 76%|███████▌  | 129892352/170498071 [00:13<00:04, 10005134.14it/s]
 77%|███████▋  | 130940928/170498071 [00:13<00:04, 8661423.25it/s] 
 78%|███████▊  | 132186112/170498071 [00:13<00:04, 9556489.33it/s]
 78%|███████▊  | 133398528/170498071 [00:13<00:03, 10179632.29it/s]
 79%|███████▉  | 134479872/170498071 [00:14<00:03, 9053953.22it/s] 
 80%|███████▉  | 135626752/170498071 [00:14<00:03, 9620322.16it/s]
 80%|████████  | 136904704/170498071 [00:14<00:03, 10393682.05it/s]
 81%|████████  | 138018816/170498071 [00:14<00:03, 9078843.53it/s] 
 82%|████████▏ | 139231232/170498071 [00:14<00:03, 9809915.73it/s]
 82%|████████▏ | 140279808/170498071 [00:14<00:03, 8856672.50it/s]
 83%|████████▎ | 141524992/170498071 [00:14<00:02, 9688614.65it/s]
 84%|████████▎ | 142770176/170498071 [00:14<00:02, 10406938.77it/s]
 85%|████████▍ | 144080896/170498071 [00:15<00:02, 11027237.69it/s]
 85%|████████▌ | 145358848/170498071 [00:15<00:02, 11464534.95it/s]
 86%|████████▌ | 146538496/170498071 [00:15<00:02, 11417382.19it/s]
 87%|████████▋ | 147718144/170498071 [00:15<00:01, 11467558.89it/s]
 87%|████████▋ | 148897792/170498071 [00:15<00:02, 9689819.11it/s] 
 88%|████████▊ | 150077440/170498071 [00:15<00:02, 9427562.29it/s]
 89%|████████▉ | 151322624/170498071 [00:15<00:01, 10055870.00it/s]
 89%|████████▉ | 152371200/170498071 [00:15<00:01, 9235629.51it/s] 
 90%|█████████ | 153452544/170498071 [00:16<00:02, 8437022.91it/s]
 91%|█████████ | 154337280/170498071 [00:16<00:01, 8307480.25it/s]
 91%|█████████ | 155418624/170498071 [00:16<00:01, 7834149.03it/s]
 92%|█████████▏| 156532736/170498071 [00:16<00:01, 8511268.94it/s]
 93%|█████████▎| 157810688/170498071 [00:16<00:01, 9571853.06it/s]
 93%|█████████▎| 158826496/170498071 [00:16<00:01, 9432659.33it/s]
 94%|█████████▍| 159940608/170498071 [00:16<00:01, 9859691.35it/s]
 94%|█████████▍| 160956416/170498071 [00:16<00:01, 8890826.83it/s]
 95%|█████████▌| 162168832/170498071 [00:16<00:00, 9715547.00it/s]
 96%|█████████▌| 163446784/170498071 [00:17<00:00, 10442010.43it/s]
 96%|█████████▋| 164528128/170498071 [00:17<00:00, 9931063.29it/s] 
 97%|█████████▋| 165806080/170498071 [00:17<00:00, 10699374.78it/s]
 98%|█████████▊| 166920192/170498071 [00:17<00:00, 10368457.48it/s]
 99%|█████████▊| 168067072/170498071 [00:17<00:00, 10638501.55it/s]
 99%|█████████▉| 169312256/170498071 [00:17<00:00, 11148137.01it/s]
100%|█████████▉| 170459136/170498071 [00:17<00:00, 9529530.07it/s] 
100%|██████████| 170498071/170498071 [00:17<00:00, 9591546.00it/s]
Extracting ./data/cifar-10-python.tar.gz to ./data
Files already downloaded and verified
import matplotlib.pyplot as plt
import numpy as np

# functions to show an image


def imshow(img):
    img = img / 2 + 0.5     # unnormalize
    npimg = img.numpy()
    plt.imshow(np.transpose(npimg, (1, 2, 0)))
    plt.show()


# get some random training images
dataiter = iter(trainloader)
images, labels = next(dataiter)

# show images
imshow(torchvision.utils.make_grid(images))
# print labels
print(' '.join(f'{classes[labels[j]]:5s}' for j in range(batch_size)))

truck cat   dog   truck

Creating a DataLoader

A DataLoader is an iterable feeding data to a model. When we train a model, we run it for each element of the DataLoader in a for loop:

for i in data_loader:
    <some model>