Search

PyTorch Broadcasting Semantics

PyTorch operation은 계산 상의 편의를 위해 broadcasting (브로드캐스팅)을 지원한다. (Numpy와 비슷하게)

Broadcasting 이란?

Tensor 끼리 서로 같은 size로 expand 되는 기능.

General Semantics

Broadcastable
두 tensor가 broadcastable 하기 위해서는 아래 두 규칙을 만족해야 한다.
1.
각 tensor가 1개 이상의 dimension을 가져야 한다.
2.
두 tensor의 shape이 뒤에서부터 세었을 때 size가
a.
동일하거나
b.
또는 둘 중 하나가 1이거나
c.
또는 둘 중 하나가 없어야 한다.
예시 code
Operation
두 tensor x와 y가 broadcastable 하면, 결과적으로 아래와 같이 계산된다.
Dimension length 맞추기
xy의 dimension의 수 (number of dimension)가 같지 않다면, 즉 len(x.shape) ≠ len(y.shape)) 이라면, dimension의 숫자가 적은 부분에 1을 추가한다.
Operation 후의 dimension size는 각 size의 max에 해당한다.
예시 code

Reference