Zacznij terazZacznij za darmo

Inicjalizacja i aktywacje

Niestabilne gradienty (zanikające lub eksplodujące) to problem, który często pojawia się podczas trenowania głębokich sieci neuronowych. W tym i kolejnym ćwiczeniu rozbudujesz architekturę modelu zbudowanego do zadania klasyfikacji jakości wody, aby zwiększyć jego odporność na te problemy.

W pierwszym kroku ulepszysz inicjalizację wag, stosując strategię inicjalizacji He (Kaiming). W tym celu wywołasz odpowiednią funkcję inicjalizującą z modułu torch.nn.init, który został zaimportowany jako init. Następnie zaktualizujesz funkcje aktywacji – zamienisz domyślną ReLU na często skuteczniejszą ELU.

To ćwiczenie jest częścią kursu

Głębokie uczenie z PyTorch – poziom średnio zaawansowany

Zobacz kurs

Instrukcje do ćwiczenia

  • Wywołaj inicjalizator He (Kaiming) na atrybucie wag drugiej warstwy, fc2, analogicznie do tego, jak zostało to zrobione dla fc1.
  • Wywołaj inicjalizator He (Kaiming) na atrybucie wag trzeciej warstwy, fc3, uwzględniając inną funkcję aktywacji użytą w ostatniej warstwie.
  • Zaktualizuj funkcje aktywacji w metodzie forward(), zastępując relu przez elu.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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
Edytuj i uruchom kod