← 문제 목록/GeM Pooling (Generalized Mean) [medium]
문제 해설

GeM Pooling (Generalized Mean) [medium]

신경망 · medium

preview

GeM (Generalized Mean) Pooling [medium]

v1 max, mean pool 은 양 극단. GeM (Radenović 2018) 은 하나의 파라미터 pp 로 그 사이를 매끄럽게 잇는다:

GeM(x)k=(1Nvalidl:mlxl,kp)1/p\text{GeM}(x)_k = \left( \frac{1}{N_{\text{valid}}} \sum_{l: m_l} x_{l,k}^p \right)^{1/p}

극한

  • p=1p = 1 → mean
  • pp \to \infty → max
  • p0+p \to 0^+ → geometric mean

p=3p = 3 이 이미지 retrieval 에서 가장 흔한 기본값. CNN feature map pooling 에 특히 효과적.

구현 주의

분수 제곱 xpx^p 가 음수 입력에서 문제 → max(x, eps) 로 클램프:

x_clip = np.maximum(x, eps)
num = ((x_clip ** p) * mask[..., None]).sum(axis=1)
cnt = mask.sum(axis=1, keepdims=True).clip(min=1.0)
return (num / cnt) ** (1.0 / p)

과제

함수 gem_pool(x, mask, p=3.0, eps=1e-6) 를 완성하세요.

  • x shape (B, L, d), mask (B, L) bool.
  • 반환: (B, d).

테스트 케이스

#이름검증
1shape (B, d)
2p=1 → masked mean (양수 입력)
3p → ∞ 극한 → masked max 접근p=100
4pad 값 무관
5p 증가 → 출력 증가 (monotone)양수 입력
6모든 값 동일 → 그 값c · 1 → c
7알려진 toy 값
코드 작성
Loading...
실행 결과

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