초기화와 활성화 함수
불안정한 그래디언트(소실 또는 폭주) 문제는 심층 신경망을 학습할 때 자주 마주치는 도전 과제예요. 이번 연습 문제와 다음 연습 문제에서는 수질 음용 가능성 분류 과제를 위해 만들었던 모델 아키텍처를 확장해, 이러한 문제에 더 강인하도록 만들어 보겠습니다.
첫 단계로 He(Kaiming) 초기화 전략을 사용해 가중치 초기화를 개선해 볼게요. 이를 위해 torch.nn.init 모듈에서 올바른 초기화 함수를 호출해야 하며, 이 모듈은 init으로 임포트되어 있어요. 다음으로 기본 ReLU 활성화 함수를, 종종 더 성능이 좋은 ELU로 업데이트하겠습니다.
이 연습은 강의의 일부입니다
PyTorch로 배우는 Intermediate Deep Learning
연습 안내
fc1에 적용된 방식과 유사하게, 두 번째 계층인fc2의 weight 속성에 He(Kaiming) 초기화를 호출하세요.- 최종 계층에서 사용되는 활성화 함수가 다름을 고려해, 세 번째 계층
fc3의 weight 속성에도 He(Kaiming) 초기화를 호출하세요. 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