Dela via


Förbered datan

Anmärkning

För större funktioner kan PyTorch också användas med DirectML i Windows.

I föregående steg i den här självstudien installerade vi PyTorch på datorn. Nu ska vi använda den för att konfigurera koden med de data som vi ska använda för att skapa vår modell.

Öppna ett nytt projekt i Visual Studio.

  1. Öppna Visual Studio och välj create a new project.

Skapa ett nytt Visual Studio-projekt

  1. I sökfältet skriver Python och väljer du Python Application som projektmall.

Skapa ny Python-app

  1. I konfigurationsfönstret:
  • Ge projektet ett namn. Här kallar vi det PyTorchTraining.
  • Välj platsen för projektet.
  • Om du använder VS2019 kontrollerar du att Create directory for solution är markerad.
  • Om du använder VS 2017 ska du se till att Place solution and project in the same directory är avmarkerad.

Konfigurera din nya Python-app

Tryck create för att skapa projektet.

Skapa en Python-tolk

Nu måste du definiera en ny Python-tolk. Detta måste inkludera PyTorch-paketet som du nyligen har installerat.

  1. Navigera till tolkalternativ och välj Add environment:

Val av Python-tolk

  1. I fönstret Add environment väljer du Existing environmentoch väljer Anaconda3 (3.6, 64-bit). Detta inkluderar PyTorch-paketet.

Konfigurera en ny Python-miljö

Om du vill testa den nya Python-tolken och PyTorch-paketet anger du följande kod i PyTorchTraining.py filen:

from __future__ import print_function 

import torch 

x=torch.rand(2, 3) 

print(x) 

Utdata bör vara en slumpmässig 5x3 tensor som liknar nedanstående.

Testa din nya Python-tolk

Anmärkning

Vill du veta mer? Besök PyTorchs officiella webbplats.

Läs in datauppsättningen

Du använder klassen PyTorch torchvision för att läsa in data.

Torchvision-biblioteket inkluderar flera populära dataset som Imagenet, CIFAR10, MNIST osv., modellarkitekturer och vanliga bildtransformationer för datorseende. Det gör datainläsningen i PyTorch ganska enkel.

CIFAR10

Här använder vi datauppsättningen CIFAR10 för att skapa och träna bildklassificeringsmodellen. CIFAR10 är en datauppsättning som används ofta för maskininlärningsforskning. Den består av 50 000 träningsbilder och 10 000 testbilder. Alla är av storlek 3x32x32, vilket innebär 3-kanals färgbilder med 32 x 32 bildpunkter i storlek.

Bilderna är uppdelade på 10 klasser: "flygplan" (0), "bil" (1), "fågel" (2), "katt" (3) , "hjort" (4), "hund" (5), "groda" (6), "häst" (7), "skepp" (8), "lastbil" (9).

Du följer tre steg för att läsa in och läsa CIFAR10 datauppsättningen i PyTorch:

  • Definiera omvandlingar som ska tillämpas på bilden: Om du vill träna modellen måste du transformera bilderna till Tensors med normaliserat intervall [-1,1].
  • Skapa en instans av den tillgängliga datamängden och läs in datauppsättningen: Om du vill läsa in data använder torch.utils.data.Dataset du klassen – en abstrakt klass för att representera en datauppsättning. Datauppsättningen laddas ned lokalt bara första gången du kör koden.
  • Få åtkomst till data med hjälp av DataLoader. För att få åtkomst till data och placera data i minnet använder torch.utils.data.DataLoader du klassen . DataLoader i PyTorch omsluter en datauppsättning och ger åtkomst till underliggande data. Den här förpackningen kommer att hålla grupper med bilder efter definierad batchstorlek.

Du upprepar de här tre stegen för både tränings- och testuppsättningar.

  1. PyTorchTraining.py file Öppna i Visual Studio och lägg till följande kod. Detta hanterar de tre ovanstående stegen för tränings- och testdatauppsättningarna från CIFAR10-datasättet.
from torchvision.datasets import CIFAR10
from torchvision.transforms import transforms
from torch.utils.data import DataLoader

# Loading and normalizing the data.
# Define transformations for the training and test sets
transformations = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
])

# CIFAR10 dataset consists of 50K training images. We define the batch size of 10 to load 5,000 batches of images.
batch_size = 10
number_of_labels = 10 

# Create an instance for training. 
# When we run this code for the first time, the CIFAR10 train dataset will be downloaded locally. 
train_set =CIFAR10(root="./data",train=True,transform=transformations,download=True)

# Create a loader for the training set which will read the data within batch size and put into memory.
train_loader = DataLoader(train_set, batch_size=batch_size, shuffle=True, num_workers=0)
print("The number of images in a training set is: ", len(train_loader)*batch_size)

# Create an instance for testing, note that train is set to False.
# When we run this code for the first time, the CIFAR10 test dataset will be downloaded locally. 
test_set = CIFAR10(root="./data", train=False, transform=transformations, download=True)

# Create a loader for the test set which will read the data within batch size and put into memory. 
# Note that each shuffle is set to false for the test loader.
test_loader = DataLoader(test_set, batch_size=batch_size, shuffle=False, num_workers=0)
print("The number of images in a test set is: ", len(test_loader)*batch_size)

print("The number of batches per epoch is: ", len(train_loader))
classes = ('plane', 'car', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck')

Första gången du kör den här koden laddas CIFAR10 datauppsättningen ned till enheten.

Nedladdning av CIFAR10-datauppsättningen

Nästa steg

När data är klara är det dags att träna vår PyTorch-modell