Kom igångKom igång gratis

Initialisering och aktivering

Instabila gradienter – antingen försvinnande eller exploderande – är ett vanligt problem vid träning av djupa neurala nätverk. I den här och nästa övning bygger du vidare på den modellarkitektur du skapade för klassificering av vattenrenhet, och gör den mer robust mot dessa problem.

Som ett första steg förbättrar du viktinitaliseringen med He (Kaiming)-strategin. För att göra det anropar du rätt initialiserare från modulen torch.nn.init, som redan har importerats som init. Därefter uppdaterar du aktiveringsfunktionerna från standardalternativet ReLU till den ofta bättre ELU.

Den här övningen är en del av kursen

Fördjupad djupinlärning med PyTorch

Visa kurs

Övningsinstruktioner

  • Anropa He (Kaiming)-initialiseraren på viktattributet för det andra lagret, fc2, på samma sätt som det görs för fc1.
  • Anropa He (Kaiming)-initialiseraren på viktattributet för det tredje lagret, fc3, och ta hänsyn till den aktiveringsfunktion som används i det sista lagret.
  • Uppdatera aktiveringsfunktionerna i metoden forward() från relu till elu.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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
Redigera och kör kod