← 문제 목록/외적 (Outer Product)
문제 해설

외적 (Outer Product)

NumPy 기초 · easy

preview

외적 (Outer Product)

두 1D 벡터를 곱해 행렬을 만드는 연산. 내적 (xy\mathbf{x} \cdot \mathbf{y}, 2번) 과 반대로 차원을 늘립니다.

[xy]ij=xiyj[\mathbf{x} \otimes \mathbf{y}]_{ij} = x_i \, y_j

Shape: x\mathbf{x}(M,), y\mathbf{y}(N,) 이면 결과는 (M, N).

어디에 쓰이나

  • 그래디언트 계산: 선형층의 weight gradient LW=δx\frac{\partial L}{\partial W} = \delta \otimes x
  • 공분산 행렬: xxx x^\top (자기 외적)
  • 낮은 rank 근사
  • 주의 메커니즘(attention)의 scoring 구조

과제

함수 outer(x, y) 를 완성하세요.

  • 두 1D 배열 → (M, N) 행렬.
  • x[:, None] * y[None, :] 브로드캐스팅이 가장 깔끔.
  • np.outer 직접 사용 금지.

테스트 케이스

#이름검증
1shape (M, N)
2구체값[1, 2] ⊗ [3, 4, 5][[3,4,5],[6,8,10]]
3스케일outer(2x, y) = 2 outer(x, y)
4반대 외적outer(y, x) = outer(x, y).T
5np.outer 일치
6np.outer 사용 금지소스에 np.outer 없음
코드 작성
Loading...
실행 결과

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