
7번 softmax-v1 는 1D 벡터에만 작동했죠. 실전에선 배치 처리 가 필수 — (N, C) shape 로그릿 행렬의 각 행을 독립적으로 확률 분포로 바꿔야 합니다.
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).| # | 이름 | 검증 |
|---|---|---|
| 1 | shape 보존 | (4, 3) → (4, 3) |
| 2 | axis=1 행 합 = 1 | result.sum(axis=1) ≈ 1 |
| 3 | axis=0 열 합 = 1 | result.sum(axis=0) ≈ 1 |
| 4 | 극단값 안정 | 큰 입력 (1e3)에서도 유한 |
| 5 | 1D-softmax-v1 와 일치 | 1행짜리 2D → 해당 행이 1D softmax-v1 |
코드를 작성하고 Run 을 눌러보세요.