Začněte nyníZačněte zdarma

Inicializace a aktivační funkce

Nestabilní gradienty – ať už mizející, nebo explodující – jsou jednou z častých překážek při trénování hlubokých neuronových sítí. V tomto a v následujícím cvičení rozšíříš architekturu modelu, který jsi sestavil/a pro klasifikaci pitnosti vody, aby byl vůči těmto problémům odolnější.

Prvním krokem je vylepšení inicializace vah pomocí He (Kaimingovy) inicializační strategie. K tomu zavoláš příslušnou inicializační funkci z modulu torch.nn.init, který je pro tebe importován jako init. Následně aktualizuješ aktivační funkce – místo výchozího ReLU použiješ často výkonnější ELU.

Toto cvičení je součástí kurzu

Intermediate Deep Learning with PyTorch

Zobrazit kurz

Pokyny k cvičení

  • Zavolej He (Kaimingův) inicializátor na atribut weight druhé vrstvy, fc2, stejným způsobem jako u fc1.
  • Zavolej He (Kaimingův) inicializátor na atribut weight třetí vrstvy, fc3, a přitom zohledni jinou aktivační funkci použitou v poslední vrstvě.
  • V metodě forward() nahraď aktivační funkce relu za elu.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

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
Upravit a spustit kód