← 문제 목록/2D 소프트맥스 (axis 지정)
문제 해설

2D 소프트맥스 (axis 지정)

분류 기초 · easy

preview

2D 소프트맥스 (axis 지정)

7번 softmax-v1 는 1D 벡터에만 작동했죠. 실전에선 배치 처리 가 필수 — (N, C) shape 로그릿 행렬의 각 행을 독립적으로 확률 분포로 바꿔야 합니다.

softmax-v1(X,axis)ij=eXijk along axiseXik\text{softmax-v1}(X, \text{axis})_{ij} = \frac{e^{X_{ij}}}{\sum_{k \text{ along axis}} e^{X_{ik}}}

  • axis=1 → 각 행을 확률 분포로 (일반적).
  • axis=0 → 각 열을 확률 분포로.

수치 안정 트릭

1D 때와 동일. 축별 최댓값 을 빼고 지수 취하기:

x_shift = x - x.max(axis=axis, keepdims=True)
e = np.exp(x_shift)
return e / e.sum(axis=axis, keepdims=True)

keepdims=True 가 핵심 — 브로드캐스팅이 형태를 유지하게 해줍니다.

과제

함수 softmax-v1_2d(x, axis) 를 완성하세요.

  • x shape (N, C), axis 정수 (0 또는 1).
  • 반환: 같은 shape.
  • 축 따라 합 = 1.

테스트 케이스

#이름검증
1shape 보존(4, 3)(4, 3)
2axis=1 행 합 = 1result.sum(axis=1) ≈ 1
3axis=0 열 합 = 1result.sum(axis=0) ≈ 1
4극단값 안정큰 입력 (1e3)에서도 유한
51D-softmax-v1 와 일치1행짜리 2D → 해당 행이 1D softmax-v1
코드 작성
Loading...
실행 결과

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