← 문제 목록/Xavier Uniform + Gain (PyTorch-style) [medium]
문제 해설

Xavier Uniform + Gain (PyTorch-style) [medium]

신경망 · medium

preview

Xavier Uniform + Gain [medium]

v1 Xavier 는 Normal. 실무(PyTorch torch.nn.init.xavier_uniform_)는 uniform + gain 이 표준:

WijU(a,a),a=gain6fan_in+fan_outW_{ij} \sim \mathcal{U}(-a, a), \quad a = \text{gain} \cdot \sqrt{\frac{6}{\text{fan\_in} + \text{fan\_out}}}

Uniform 분산 =(2a)2/12=a2/3= (2a)^2 / 12 = a^2/3 이므로:

std(W)=a/3=gain2fan_in+fan_out\text{std}(W) = a / \sqrt{3} = \text{gain} \cdot \sqrt{\frac{2}{\text{fan\_in} + \text{fan\_out}}}

Normal 버전과 같은 표준편차를 갖도록 설계됨.

gain 값

PyTorch 권장:

  • linear, sigmoid: gain = 1
  • tanh: gain = 5/3 ≈ 1.667
  • relu: gain = √2 ≈ 1.414
  • leaky_relu(a): gain = √(2/(1+a²))

과제

함수 xavier_uniform_init(fan_in, fan_out, seed, gain=1.0) 를 완성하세요.

  • 반환 shape (fan_in, fan_out).
  • rng.uniform(-a, a, ...) 사용, a = gain · sqrt(6/(fi+fo)).

테스트 케이스

#이름검증
1shape (fan_in, fan_out)
2범위 |W| ≤ a모든 원소 bound
3평균 ≈ 0큰 size 샘플
4std ≈ a/√3
5gain=2 → 범위·std 2배
6시드 재현성
7다른 시드 → 다른 W
코드 작성
Loading...
실행 결과

코드를 작성하고 Run 을 눌러보세요.