Aan de slagGa gratis aan de slag

Initialisatie en activatie

De problemen met onstabiele (vervaagende of exploderende) gradiënten komen vaak voor bij het trainen van diepe neurale netwerken. In deze en de volgende oefeningen breid je de modelarchitectuur uit die je bouwde voor de waterpotability-classificatietaak, zodat het model beter bestand is tegen die problemen.

Als eerste stap verbeter je de initialisatie van de gewichten met de He (Kaiming) initialisatiestrategie. Hiervoor roep je de juiste initializer aan uit de module torch.nn.init, die voor je is geïmporteerd als init. Vervolgens vervang je de activatiefuncties van de standaard ReLU naar de vaak betere ELU.

Deze oefening maakt deel uit van de cursus

Gevorderde Deep Learning met PyTorch

Cursus bekijken

Oefeninstructies

  • Roep de He (Kaiming) initializer aan voor het weight-attribuut van de tweede laag, fc2, op dezelfde manier als voor fc1.
  • Roep de He (Kaiming) initializer aan voor het weight-attribuut van de derde laag, fc3, rekening houdend met de andere activatiefunctie in de laatste laag.
  • Vervang in de methode forward() de activatiefuncties van relu naar elu.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

class Net(nn.Module):
    def __init__(self):
        super().__init__()
        self.fc1 = nn.Linear(9, 16)
        self.fc2 = nn.Linear(16, 8)
        self.fc3 = nn.Linear(8, 1)
        
        # Apply He initialization
        init.kaiming_uniform_(self.fc1.weight)
        ____(____)
        ____(____, ____)

    def forward(self, x):
        # Update ReLU activation to ELU
        x = nn.functional.relu(self.fc1(x))
        x = nn.functional.relu(self.fc2(x))
        x = nn.functional.sigmoid(self.fc3(x))
        return x
Code bewerken en uitvoeren