Verborgen lagen en parameters

Introductie tot Deep Learning met PyTorch

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

Lagen stapelen met 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)
)
  • Input gaat door de lineaire lagen
  • Lagen binnen nn.Sequential() zijn verborgen lagen
Introductie tot Deep Learning met PyTorch

Lagen stapelen met 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  
)
  • Input gaat door de lineaire lagen
  • Lagen binnen nn.Sequential() zijn verborgen lagen
  • n_features en n_classes worden bepaald door de dataset
Introductie tot Deep Learning met PyTorch

Lagen toevoegen

Illustratie van een neuraal netwerk met twee verborgen lagen

Introductie tot Deep Learning met PyTorch

Lagen toevoegen

Illustratie van een neuraal netwerk met vier verborgen lagen

Introductie tot Deep Learning met PyTorch

Lagen toevoegen

Illustratie van een neuraal netwerk met vier verborgen lagen

Introductie tot Deep Learning met PyTorch

Lagen toevoegen

Illustratie van een neuraal netwerk met vier verborgen lagen

Introductie tot Deep Learning met PyTorch

Lagen toevoegen

# Create network with three linear layers
model = nn.Sequential(
    nn.Linear(10, 18),
    nn.Linear(18, 20),
    nn.Linear(20, 5)
)
Introductie tot Deep Learning met PyTorch

Lagen toevoegen

# 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)
)
  • Input 10 ➡ output 18 ➡ output 20 ➡ Output 5
Introductie tot Deep Learning met PyTorch

Lagen toevoegen

# 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)
)
  • Input 10 ➡ output 18 ➡ output 20 ➡ Output 5
Introductie tot Deep Learning met PyTorch

Lagen toevoegen

# 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
)
  • Input 10 ➡ output 18 ➡ output 20 ➡ Output 5
Introductie tot Deep Learning met PyTorch

Lagen bestaan uit neuronen

$$

  • Volledig verbonden wanneer elke neuron koppelt aan alle neuronen in de vorige laag

Een illustratie van een input- en outputlaag met pijlen tussen de lagen

Introductie tot Deep Learning met PyTorch

Lagen bestaan uit neuronen

$$

  • Volledig verbonden wanneer elke neuron koppelt aan alle neuronen in de vorige laag

$$

  • Een neuron in een lineaire laag:

Een illustratie van een input- en outputlaag met pijlen tussen de lagen en een cirkel om één outputneuron

Introductie tot Deep Learning met PyTorch

Lagen bestaan uit neuronen

$$

  • Volledig verbonden wanneer elke neuron koppelt aan alle neuronen in de vorige laag

$$

  • Een neuron in een lineaire laag:
    • Voert een lineaire operatie uit met alle neuronen uit de vorige laag

Een illustratie van een input- en outputlaag met pijlen tussen de lagen, met een cirkel om één outputneuron en gemarkeerde pijlen

Introductie tot Deep Learning met PyTorch

Lagen bestaan uit neuronen

$$

  • Volledig verbonden wanneer elke neuron koppelt aan alle neuronen in de vorige laag

$$

  • Een neuron in een lineaire laag:
    • Voert een lineaire operatie uit met alle neuronen uit de vorige laag
    • Heeft N+1 parameters: N van de inputs en 1 voor de bias

N+1

Introductie tot Deep Learning met PyTorch

Parameters en modelcapaciteit

  • Meer verborgen lagen = meer parameters = hogere modelcapaciteit

$$

Codeblok voor een netwerk met twee lagen

Introductie tot Deep Learning met PyTorch

Parameters en modelcapaciteit

  • Meer verborgen lagen = meer parameters = hogere modelcapaciteit

$$

Codeblok voor een netwerk met twee lagen

$$

Handmatig parameters tellen:

  • Eerste laag heeft 4 neuronen, elk neuron heeft 8+1 parameters. 9 keer 4 = 36 parameters
Introductie tot Deep Learning met PyTorch

Parameters en modelcapaciteit

  • Meer verborgen lagen = meer parameters = hogere modelcapaciteit

$$

Codeblok voor een netwerk met twee lagen

$$

Handmatig parameters tellen:

  • Eerste laag heeft 4 neuronen, elk neuron heeft 8+1 parameters. 9 keer 4 = 36 parameters
Introductie tot Deep Learning met PyTorch

Parameters en modelcapaciteit

  • Meer verborgen lagen = meer parameters = hogere modelcapaciteit

$$

Codeblok voor een netwerk met twee lagen

$$

Handmatig parameters tellen:

  • Eerste laag heeft 4 neuronen, elk neuron heeft 8+1 parameters. 9 keer 4 = 36 parameters
  • Tweede laag heeft 2 neuronen, elk neuron heeft 4+1 parameters. 5 keer 2 = 10 parameters
Introductie tot Deep Learning met PyTorch

Parameters en modelcapaciteit

  • Meer verborgen lagen = meer parameters = hogere modelcapaciteit

$$

Codeblok voor een netwerk met twee lagen

$$

Handmatig parameters tellen:

  • Eerste laag heeft 4 neuronen, elk neuron heeft 8+1 parameters. 9 keer 4 = 36 parameters
  • Tweede laag heeft 2 neuronen, elk neuron heeft 4+1 parameters. 5 keer 2 = 10 parameters
  • 36 + 10 = 46 leerbare parameters
Introductie tot Deep Learning met PyTorch

Parameters en modelcapaciteit

  • Meer verborgen lagen = meer parameters = hogere modelcapaciteit

$$

Codeblok voor een netwerk met twee lagen

$$

Met PyTorch:

  • .numel(): geeft het aantal elementen in de tensor terug
total = 0
for parameter in model.parameters():
    total += parameter.numel()
print(total)
46
Introductie tot Deep Learning met PyTorch

Complexiteit en efficiëntie balanceren

Balans tussen complexiteit en efficiëntie

Introductie tot Deep Learning met PyTorch

Laten we oefenen!

Introductie tot Deep Learning met PyTorch

Preparing Video For Download...