Sdílet prostřednictvím


Příprava dat

Poznámka:

Pro větší funkčnost lze PyTorch použít také s DirectML ve Windows.

V předchozí fázi tohoto kurzu jsme nainstalovali na váš počítač PyTorch. Teď ho použijeme k nastavení kódu s daty, která použijeme k vytvoření modelu.

Otevřete nový projekt v aplikaci Visual Studio.

  1. Otevřete Visual Studio a zvolte create a new project.

Vytvoření nového projektu sady Visual Studio

  1. Na panelu hledání zadejte Python a vyberte Python Application jako šablonu projektu.

Vytvoření nové aplikace v Pythonu

  1. V okně konfigurace:
  • Pojmenujte projekt. Tady tomu říkáme PyTorchTraining.
  • Zvolte umístění projektu.
  • Pokud používáte VS2019, zkontrolujte, jestli Create directory for solution je zaškrtnuté.
  • Pokud používáte VS 2017, ujistěte se, že Place solution and project in the same directory není zaškrtnuto.

Konfigurace nové aplikace v Pythonu

Stisknutím create vytvoříte projekt.

Vytvoření interpreta Pythonu

Teď musíte definovat nový interpret Pythonu. To musí zahrnovat balíček PyTorch, který jste nedávno nainstalovali.

  1. Přejděte na výběr interpreta a vyberte Add environment:

Výběr interpreta Pythonu

  1. V okně Add environment vyberte Existing environmenta zvolte Anaconda3 (3.6, 64-bit). To zahrnuje balíček PyTorch.

Konfigurace nového prostředí Pythonu

Pokud chcete otestovat nový interpret Pythonu a balíček PyTorch, zadejte do PyTorchTraining.py souboru následující kód:

from __future__ import print_function 

import torch 

x=torch.rand(2, 3) 

print(x) 

Výstup by měl být náhodný tensor 5x3 podobný následujícímu.

Otestování nového interpreta Pythonu

Poznámka:

Zajímá vás další informace? Navštivte oficiální stránky PyTorch.

Načtení datové sady

K načtení dat použijete třídu PyTorch torchvision .

Knihovna Torchvision obsahuje několik oblíbených datových sad, jako jsou Imagenet, CIFAR10, MNIST atd., architektury modelů a běžné transformace obrázků pro počítačové zpracování obrazu. Díky tomu je načítání dat v PyTorch poměrně snadné.

CIFAR10

V této části použijeme datovou sadu CIFAR10 k sestavení a trénování modelu klasifikace obrázků. CIFAR10 je široce používaná datová sada pro výzkum strojového učení. Skládá se z 50 000 trénovacích obrázků a 10 000 testovacích obrázků. Všechny jsou velikosti 3x32x32, což znamená, že jde o barevné obrazové kanály o velikosti 32x32 pixelů.

Obrázky jsou rozděleny na 10 tříd: „letadlo“ (0), „automobil“ (1), „pták“ (2), „kočka“ (3) , „srnec“ (4), „pes“ (5), „žába“ (6), „kůň“ (7), „loď“ (8), „nákladní auto“ (9).

Pokud chcete načíst a přečíst datovou sadu CIFAR10 v PyTorchu, postupujte podle tří kroků:

  • Definujte transformace, které se mají použít na obrázek: Chcete-li vytrénovat model, musíte transformovat obrázky na Tensory normalizovaného rozsahu [-1,1].
  • Vytvořte instanci dostupné datové sady a načtěte datovou sadu: K načtení dat použijete torch.utils.data.Dataset třídu – abstraktní třídu pro reprezentaci datové sady. Datová sada se stáhne místně pouze při prvním spuštění kódu.
  • Přístup k datům pomocí DataLoaderu K získání přístupu k datům a vložení dat do paměti použijete torch.utils.data.DataLoader třídu. DataLoader v PyTorch zabalí datovou sadu a poskytuje přístup k podkladovým datům. Tento obal bude obsahovat dávky obrázků podle definované velikosti dávky.

Tyto tři kroky zopakujete pro trénovací i testovací sady.

  1. Otevřete PyTorchTraining.py file v aplikaci Visual Studio a přidejte následující kód. Tím se zpracují tři výše uvedené kroky pro trénovací a testovací sady z datového souboru 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')

Při prvním spuštění tohoto kódu se datová sada CIFAR10 stáhne do vašeho zařízení.

stažení datové sady CIFAR10

Další kroky

Když jsou data připravena, je čas vytrénovat náš model PyTorch.