NumPy 기초·연습 문제

배치 내적

문제 설명PROBLEM

preview

배치 내적 (Batch Dot Product)

2번 의 응용. 한 번에 한 쌍이 아니라 여러 쌍의 내적을 동시에 계산합니다. 실제 ML 파이프라인에선 이게 기본:

  • 배치로 들어온 임베딩 벡터들 간 내적
  • attention 의 Q·K 각 위치별 계산
  • Siamese 네트워크 쌍별 점수

(XY)i=xiyi=j=1DXijYij(X \cdot Y)_i = \mathbf{x}_i^\top \mathbf{y}_i = \sum_{j=1}^{D} X_{ij} Y_{ij}

X,YX, Y 는 shape (N, D) — 결과는 shape (N,).

팁: axis=1

2D 배열에서 "행별로 합치기"는 axis=1. np.sum(X * Y, axis=1) 만 있으면 끝.

과제

함수 batch_dot(X, Y) 를 완성하세요.

  • X, Y shape (N, D). 반환: shape (N,).
  • 루프 없이 NumPy 연산.

테스트 케이스

#이름검증
1shape (N,)입력 (5, 3) → 출력 (5,)
2원소별 일치각 i에서 result[i] == X[i] @ Y[i]
3직교 쌍 → 0단위행렬 순열 입력
4대칭batch_dot(X, Y) == batch_dot(Y, X)
5루프 없이for/while 금지
개념 노트와 실수 포인트

NumPy 기초

  • ⚠️ axis 헷갈림: axis=0 은 행을 가로질러 → 열별 결과, axis=1행별 결과.
  • 브로드캐스팅: shape 를 뒤에서부터 맞춤(1 또는 같은 크기).
  • 반복문 대신 벡터화 연산. @(행렬곱) 와 *(요소곱) 구분.