Delen via


De gegevens voorbereiden

Opmerking

Voor meer functionaliteit kan PyTorch ook worden gebruikt met DirectML in Windows.

In de vorige fase van deze zelfstudie hebben we PyTorch op uw computer geïnstalleerd. Nu gebruiken we deze om onze code in te stellen met de gegevens die we gaan gebruiken om ons model te maken.

Open een nieuw project in Visual Studio.

  1. Open Visual Studio en kies create a new project.

Nieuw Visual Studio-project maken

  1. Typ Python en selecteer Python Application deze in de zoekbalk als uw projectsjabloon.

Nieuwe Python-app maken

  1. In het configuratievenster:
  • Geef uw project een naam. Hier noemen we het PyTorchTraining.
  • Kies de locatie van uw project.
  • Als u VS2019 gebruikt, zorg er dan voor dat Create directory for solution is ingeschakeld.
  • Als u VS 2017 gebruikt, zorg ervoor dat Place solution and project in the same directory niet is aangevinkt.

Uw nieuwe Python-app configureren

Druk create om uw project te maken.

Een Python-interpreter maken

Nu moet u een nieuwe Python-interpreter definiëren. Dit moet het PyTorch-pakket bevatten dat u onlangs hebt geïnstalleerd.

  1. Navigeer naar de selectie van de interpreter en selecteer Add environment:

Selectie van Python-interpreter

  1. Selecteer Add environmenten kies Existing environmentin het Anaconda3 (3.6, 64-bit) venster. Dit omvat het PyTorch-pakket.

Een nieuwe Python-omgeving configureren

Als u het nieuwe Python-interpreter- en PyTorch-pakket wilt testen, voert u de volgende code in voor het PyTorchTraining.py bestand:

from __future__ import print_function 

import torch 

x=torch.rand(2, 3) 

print(x) 

De uitvoer moet een willekeurige 5x3-tensor zijn die vergelijkbaar is met de onderstaande.

Uw nieuwe Python-interpreter testen

Opmerking

Bent u geïnteresseerd in meer informatie? Bezoek de officiële website van PyTorch.

De gegevensset laden

U gebruikt de PyTorch-klasse torchvision om de gegevens te laden.

De Torchvision-bibliotheek bevat verschillende populaire gegevenssets, zoals Imagenet, CIFAR10, MNIST, enzovoort, modelarchitecturen en algemene afbeeldingstransformaties voor Computer Vision. Dat maakt het laden van gegevens in PyTorch heel eenvoudig.

CIFAR10

Hier gebruiken we de CIFAR10 gegevensset om het model voor afbeeldingsclassificatie te bouwen en te trainen. CIFAR10 is een veelgebruikte gegevensset voor machine learning-onderzoek. Het bestaat uit 50.000 trainingsafbeeldingen en 10.000 testafbeeldingen. Ze zijn allemaal van grootte 3x32x32, wat betekent dat 3-kanaals kleurenafbeeldingen van 32 x 32 pixels groot zijn.

De afbeeldingen zijn onderverdeeld in 10 klassen: 'vliegtuig' (0), 'auto' (1), 'vogel' (2), 'kat' (3) , 'herten' (4), 'hond' (5), 'kikker' (6), 'paard' (7), 'schip' (8), 'vrachtwagen' (9).

U volgt drie stappen om de CIFAR10 gegevensset in PyTorch te laden en te lezen:

  • Definieer transformaties die moeten worden toegepast op de afbeelding: Als u het model wilt trainen, moet u de afbeeldingen transformeren naar Tensors van genormaliseerd bereik [-1,1].
  • Maak een exemplaar van de beschikbare gegevensset en laad de gegevensset: als u de gegevens wilt laden, gebruikt u de torch.utils.data.Dataset klasse: een abstracte klasse voor het weergeven van een gegevensset. De gegevensset wordt alleen lokaal gedownload wanneer u de code voor het eerst uitvoert.
  • Open de gegevens met behulp van de DataLoader. Als u de toegang tot de gegevens wilt krijgen en de gegevens in het geheugen wilt plaatsen, gebruikt u de torch.utils.data.DataLoader klasse. DataLoader in PyTorch verpakt een gegevensset en biedt toegang tot de onderliggende gegevens. Deze wrapper bevat batches met afbeeldingen volgens de gedefinieerde batchgrootte.

U herhaalt deze drie stappen voor zowel trainings- als testsets.

  1. Open de PyTorchTraining.py file code in Visual Studio en voeg de volgende code toe. Hiermee worden de drie bovenstaande stappen verwerkt voor de trainings- en testdatasets van de CIFAR10-dataset.
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')

De eerste keer dat u deze code uitvoert, wordt de CIFAR10 gegevensset naar uw apparaat gedownload.

CIFAR10 gegevensset downloaden

Volgende stappen

Nu de gegevens klaar zijn, is het tijd om ons PyTorch-model te trainen