← 문제 목록/EmbeddingBag (padding + aggregation) [medium]
문제 해설

EmbeddingBag (padding + aggregation) [medium]

신경망 · medium

preview

EmbeddingBag [medium]

v1 lookup 은 인덱스를 벡터로 변환만 함. 실제로 가변 길이 시퀀스를 하나의 벡터로 집계해야 할 때가 많음 — 이게 EmbeddingBag (PyTorch nn.EmbeddingBag).

배경

  • NLP: 문장을 한 벡터로 (BoW + embedding)
  • 추천: 유저의 시청 이력을 한 벡터로
  • 각 row 마다 길이가 다르니 padding 으로 맞춘 뒤 padding 을 집계에서 제외.

수식

input: idx shape (B, L), 각 원소는 단어 ID, padding_idx 는 무시할 값.

  • mode='sum': outb=l:idxb,lpadEidxb,l\text{out}_b = \sum_{l: \text{idx}_{b,l} \neq \text{pad}} E_{\text{idx}_{b,l}}
  • mode='mean': 위 합을 non-padding 개수로 나눔
  • mode='max': non-padding 위치들의 element-wise max

전부 padding 인 row → 0 벡터.

과제

함수 embedding_bag(E, idx, padding_idx=0, mode='mean') 를 완성하세요.

  • E shape (V, D), idx shape (B, L).
  • 반환: shape (B, D).

테스트 케이스

#이름검증
1shape (B, D)
2mode='sum' 정확non-pad 합
3mode='mean' 정확non-pad 평균
4mode='max' 정확non-pad max
5all-padding row → 0
6padding_idx 벡터값 무관E[pad] 변경해도 출력 불변
7단일 token row = lookup
코드 작성
Loading...
실행 결과

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