ПочатиПочніть безкоштовно

Ініціалізація та активації

Проблеми нестабільних градієнтів (що зникають або вибухають) часто виникають під час тренування глибоких нейронних мереж. У цій та наступних вправах ви розширите архітектуру моделі, яку збудували для задачі класифікації придатності води до пиття, щоб зробити її стійкішою до цих проблем.

Як перший крок, ви покращите ініціалізацію ваг, використавши стратегію He (Kaiming). Для цього потрібно викликати відповідний ініціалізатор з модуля torch.nn.init, який уже імпортовано для вас як init. Далі ви заміните функції активації з типових ReLU на часто кращі ELU.

Ця вправа є частиною курсу

Середній рівень Deep Learning з PyTorch

Переглянути курс

Інструкції до вправи

  • Викличте ініціалізатор He (Kaiming) для атрибута ваг другого шару fc2, так само, як це зроблено для fc1.
  • Викличте ініціалізатор He (Kaiming) для атрибута ваг третього шару fc3, з урахуванням відмінної функції активації у фінальному шарі.
  • Оновіть функції активації у методі forward() з relu на elu.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

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
Редагувати та запускати код