Udostępnij przez


Przygotowywanie danych

Uwaga / Notatka

W celu zwiększenia funkcjonalności można również używać biblioteki PyTorch z językiem DirectML w systemie Windows.

Na poprzednim etapie tego samouczka zainstalowano narzędzie PyTorch na maszynie. Teraz użyjemy go do skonfigurowania kodu z danymi, których użyjemy do utworzenia modelu.

Otwórz nowy projekt w programie Visual Studio.

  1. Otwórz program Visual Studio i wybierz pozycję create a new project.

Tworzenie nowego projektu programu Visual Studio

  1. Na pasku wyszukiwania wpisz Python i wybierz jako Python Application szablon projektu.

Tworzenie nowej aplikacji w języku Python

  1. W oknie konfiguracji:
  • Nadaj projektowi nazwę. Tutaj nazywamy to PyTorchTraining.
  • Wybierz lokalizację projektu.
  • Jeśli używasz programu VS2019, upewnij się, że Create directory for solution jest zaznaczone.
  • Jeśli używasz VS 2017, upewnij się, że Place solution and project in the same directory nie jest zaznaczone.

Konfigurowanie nowej aplikacji w języku Python

Naciśnij create , aby utworzyć projekt.

Tworzenie interpretera języka Python

Teraz musisz zdefiniować nowy interpreter języka Python. Musi to obejmować ostatnio zainstalowany pakiet PyTorch.

  1. Przejdź do zaznaczenia interpretera i wybierz pozycję Add environment:

Wybór interpretera języka Python

  1. Add environment W oknie wybierz pozycję Existing environment, a następnie wybierz pozycję Anaconda3 (3.6, 64-bit). Obejmuje to pakiet PyTorch.

Konfigurowanie nowego środowiska języka Python

Aby przetestować nowy interpreter języka Python i pakiet PyTorch, wprowadź następujący kod do PyTorchTraining.py pliku:

from __future__ import print_function 

import torch 

x=torch.rand(2, 3) 

print(x) 

Dane wyjściowe powinny być losowym tensorem 5x3 podobnym do poniższego.

Testowanie nowego interpretera języka Python

Uwaga / Notatka

Chcesz dowiedzieć się więcej? Odwiedź oficjalną stronę internetową PyTorch.

Ładowanie zestawu danych

Do załadowania danych użyjesz klasy PyTorch torchvision .

Biblioteka Torchvision zawiera kilka popularnych zestawów danych, takich jak Imagenet, CIFAR10, MNIST itp., architektury modeli i typowe przekształcenia obrazów na potrzeby przetwarzania obrazów. To sprawia, że ładowanie danych w narzędziu PyTorch jest dość łatwe.

CIFAR10

W tym miejscu użyjemy zestawu danych CIFAR10 do skompilowania i wytrenowania modelu klasyfikacji obrazów. CIFAR10 jest powszechnie używanym zestawem danych do badań uczenia maszynowego. Składa się z 50 000 obrazów treningowych i 10 000 obrazów testowych. Wszystkie z nich mają rozmiar 3x32x32, co oznacza 3-kanałowe obrazy kolorów 32x32 pikseli w rozmiarze.

Obrazy są podzielone na 10 klas: "samolot" (0), "samochód" (1), "ptak" (2), "kot" (3) , "jelenie" (4), "pies" (5), "żaba" (6), "koń" (7), "statek" (8), "ciężarówka" (9).

Wykonasz trzy kroki, aby załadować i odczytać zestaw danych CIFAR10 w narzędziu PyTorch:

  • Zdefiniuj przekształcenia, które mają zostać zastosowane do obrazu: aby wytrenować model, należy przekształcić obrazy w tensory znormalizowanego zakresu [-1,1].
  • Utwórz wystąpienie dostępnego zestawu danych i załaduj zestaw danych: aby załadować dane, użyjesz torch.utils.data.Dataset klasy — klasy abstrakcyjnej do reprezentowania zestawu danych. Zestaw danych zostanie pobrany lokalnie tylko przy pierwszym uruchomieniu kodu.
  • Uzyskaj dostęp do danych przy użyciu modułu DataLoader. Aby uzyskać dostęp do danych i umieścić je w pamięci, użyjesz torch.utils.data.DataLoader klasy . Moduł DataLoader w narzędziu PyTorch opakowuje zestaw danych i zapewnia dostęp do danych bazowych. Ten wrapper będzie przechowywać partie obrazów zgodnie z określonym rozmiarem partii.

Te trzy kroki będą powtarzane zarówno dla zestawów treningowych, jak i testowych.

  1. Otwórz plik PyTorchTraining.py file w programie Visual Studio i dodaj następujący kod. Realizuje trzy wymienione wyżej kroki dla zbiorów danych treningowych i testowych z zestawu danych CIFAR10.
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')

Przy pierwszym uruchomieniu tego kodu zestaw danych CIFAR10 zostanie pobrany na urządzenie.

pobieranie zestawu danych CIFAR10

Dalsze kroki

Gdy dane będą gotowe do użycia, nadszedł czas, aby wytrenować nasz model PyTorch