Ініціалізація та активації
Проблеми нестабільних градієнтів (що зникають або вибухають) часто виникають під час тренування глибоких нейронних мереж. У цій та наступних вправах ви розширите архітектуру моделі, яку збудували для задачі класифікації придатності води до пиття, щоб зробити її стійкішою до цих проблем.
Як перший крок, ви покращите ініціалізацію ваг, використавши стратегію 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