PyTorch nn.init — 가중치 초기화 함수 모음

PyTorch nn.init — 가중치 초기화 함수 모음

torch.nn.init 은 텐서를 다양한 분포·규칙으로 초기화하는 함수들을 제공해요. 레이어를 만들고 나서 모델의 가중치·편향을 원하는 방식으로 채울 수 있어요.

자주 쓰는 초기화

  • xavier_uniform_ / xavier_normal_: 팬-인(fan-in)/팬-아웃(fan-out)에 맞춰 균일·정규 분포로 초기화. 시그모이드·탄젠트 계열 활성화에 좋아요.
  • kaiming_uniform_ / kaiming_normal_ (He 초기화): ReLU 계열 저하를 견디도록 설계된 초기화. ReLU 네트워크의 표준이에요.
  • orthogonal_: 직교 행렬로 초기화. RNN과 잔차 연결에 유리해요.
  • constant_ / zeros_ / ones_: 상수·0·1로 채우는 단순 초기화(편향에 자주 사용).
import torch.nn as nn
m = nn.Linear(64, 128)
nn.init.kaiming_uniform_(m.weight, a=5)   # He 초기화
nn.init.zeros_(m.bias)

사용 팁

  • 활성화 함수 성격(ReLU냐 tanh/sigmoid냐)에 맞는 초기화를 고르는 게 중요해요.
  • FanIn/FanOut은 RMSProp 같은 옵티마이저와 달리 초기 스케일을 결정할 때만 쓰여요.
  • 계층이 깊으면 He 초기화 + 배치정규화 조합이 안정적이에요.

더 알아보기