Warstwy ukryte i parametry

Wprowadzenie do uczenia głębokiego z PyTorch

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

Układanie warstw za pomocą nn.Sequential()

# Create network with three linear layers
model = nn.Sequential(

nn.Linear(n_features, 8),
nn.Linear(8, 4), nn.Linear(4, n_classes)
)
  • Dane wejściowe są przekazywane przez warstwy liniowe
  • Warstwy wewnątrz nn.Sequential() są warstwami ukrytymi
Wprowadzenie do uczenia głębokiego z PyTorch

Układanie warstw za pomocą nn.Sequential()

# Create network with three linear layers
model = nn.Sequential(
    nn.Linear(n_features, 8), # n_features represents number of input features
    nn.Linear(8, 4),
    nn.Linear(4, n_classes) # n_classes represents the number of output classes  
)
  • Dane wejściowe są przekazywane przez warstwy liniowe
  • Warstwy wewnątrz nn.Sequential() są warstwami ukrytymi
  • n_features i n_classes są określone przez zbiór danych
Wprowadzenie do uczenia głębokiego z PyTorch

Dodawanie warstw

Ilustracja sieci neuronowej z dwiema warstwami ukrytymi

Wprowadzenie do uczenia głębokiego z PyTorch

Dodawanie warstw

Ilustracja sieci neuronowej z czterema warstwami ukrytymi

Wprowadzenie do uczenia głębokiego z PyTorch

Dodawanie warstw

Ilustracja sieci neuronowej z czterema warstwami ukrytymi

Wprowadzenie do uczenia głębokiego z PyTorch

Dodawanie warstw

Ilustracja sieci neuronowej z czterema warstwami ukrytymi

Wprowadzenie do uczenia głębokiego z PyTorch

Dodawanie warstw

# Create network with three linear layers
model = nn.Sequential(
    nn.Linear(10, 18),
    nn.Linear(18, 20),
    nn.Linear(20, 5)
)
Wprowadzenie do uczenia głębokiego z PyTorch

Dodawanie warstw

# Create network with three linear layers
model = nn.Sequential(
    nn.Linear(10, 18), # Takes 10 features and outputs 18
    nn.Linear(18, 20),
    nn.Linear(20, 5)
)
  • Wejście 10 ➡ wyjście 18 ➡ wyjście 20 ➡ Wyjście 5
Wprowadzenie do uczenia głębokiego z PyTorch

Dodawanie warstw

# Create network with three linear layers
model = nn.Sequential(
    nn.Linear(10, 18),
    nn.Linear(18, 20), # Takes 18 and outputs 20
    nn.Linear(20, 5)
)
  • Wejście 10 ➡ wyjście 18 ➡ wyjście 20 ➡ Wyjście 5
Wprowadzenie do uczenia głębokiego z PyTorch

Dodawanie warstw

# Create network with three linear layers
model = nn.Sequential(
    nn.Linear(10, 18),
    nn.Linear(18, 20),
    nn.Linear(20, 5) # Takes 20 and outputs 5
)
  • Wejście 10 ➡ wyjście 18 ➡ wyjście 20 ➡ Wyjście 5
Wprowadzenie do uczenia głębokiego z PyTorch

Warstwy składają się z neuronów

$$

  • W pełni połączone, gdy każdy neuron łączy się ze wszystkimi neuronami poprzedniej warstwy

Ilustracja warstwy wejściowej i wyjściowej ze strzałkami łączącymi warstwy

Wprowadzenie do uczenia głębokiego z PyTorch

Warstwy składają się z neuronów

$$

  • W pełni połączone, gdy każdy neuron łączy się ze wszystkimi neuronami poprzedniej warstwy

$$

  • Neuron w warstwie liniowej:

Ilustracja warstwy wejściowej i wyjściowej ze strzałkami łączącymi warstwy oraz zaznaczonym neuronem wyjściowym

Wprowadzenie do uczenia głębokiego z PyTorch

Warstwy składają się z neuronów

$$

  • W pełni połączone, gdy każdy neuron łączy się ze wszystkimi neuronami poprzedniej warstwy

$$

  • Neuron w warstwie liniowej:
    • Wykonuje operację liniową z użyciem wszystkich neuronów poprzedniej warstwy

Ilustracja warstwy wejściowej i wyjściowej ze strzałkami łączącymi warstwy, zaznaczonym neuronem wyjściowym i wyróżnionymi strzałkami

Wprowadzenie do uczenia głębokiego z PyTorch

Warstwy składają się z neuronów

$$

  • W pełni połączone, gdy każdy neuron łączy się ze wszystkimi neuronami poprzedniej warstwy

$$

  • Neuron w warstwie liniowej:
    • Wykonuje operację liniową z użyciem wszystkich neuronów poprzedniej warstwy
    • Ma N+1 parametrów: N od wejść i 1 dla obciążenia

N+1

Wprowadzenie do uczenia głębokiego z PyTorch

Parametry i pojemność modelu

  • Więcej warstw ukrytych = więcej parametrów = wyższa pojemność modelu

$$

Blok kodu dla sieci dwuwarstwowej

Wprowadzenie do uczenia głębokiego z PyTorch

Parametry i pojemność modelu

  • Więcej warstw ukrytych = więcej parametrów = wyższa pojemność modelu

$$

Blok kodu dla sieci dwuwarstwowej

$$

Ręczne obliczanie parametrów:

  • Pierwsza warstwa ma 4 neurony, każdy neuron ma 8+1 parametrów. 9 razy 4 = 36 parametrów
Wprowadzenie do uczenia głębokiego z PyTorch

Parametry i pojemność modelu

  • Więcej warstw ukrytych = więcej parametrów = wyższa pojemność modelu

$$

Blok kodu dla sieci dwuwarstwowej

$$

Ręczne obliczanie parametrów:

  • Pierwsza warstwa ma 4 neurony, każdy neuron ma 8+1 parametrów. 9 razy 4 = 36 parametrów
Wprowadzenie do uczenia głębokiego z PyTorch

Parametry i pojemność modelu

  • Więcej warstw ukrytych = więcej parametrów = wyższa pojemność modelu

$$

Blok kodu dla sieci dwuwarstwowej

$$

Ręczne obliczanie parametrów:

  • Pierwsza warstwa ma 4 neurony, każdy neuron ma 8+1 parametrów. 9 razy 4 = 36 parametrów
  • Druga warstwa ma 2 neurony, każdy neuron ma 4+1 parametrów. 5 razy 2 = 10 parametrów
Wprowadzenie do uczenia głębokiego z PyTorch

Parametry i pojemność modelu

  • Więcej warstw ukrytych = więcej parametrów = wyższa pojemność modelu

$$

Blok kodu dla sieci dwuwarstwowej

$$

Ręczne obliczanie parametrów:

  • Pierwsza warstwa ma 4 neurony, każdy neuron ma 8+1 parametrów. 9 razy 4 = 36 parametrów
  • Druga warstwa ma 2 neurony, każdy neuron ma 4+1 parametrów. 5 razy 2 = 10 parametrów
  • 36 + 10 = 46 parametrów do nauczenia
Wprowadzenie do uczenia głębokiego z PyTorch

Parametry i pojemność modelu

  • Więcej warstw ukrytych = więcej parametrów = wyższa pojemność modelu

$$

Blok kodu dla sieci dwuwarstwowej

$$

Użycie PyTorch:

  • .numel(): zwraca liczbę elementów w tensorze
total = 0
for parameter in model.parameters():
    total += parameter.numel()
print(total)
46
Wprowadzenie do uczenia głębokiego z PyTorch

Balansowanie złożoności i wydajności

Równowaga między złożonością a wydajnością

Wprowadzenie do uczenia głębokiego z PyTorch

Czas na ćwiczenia!

Wprowadzenie do uczenia głębokiego z PyTorch

Preparing Video For Download...