Background
- 두 행렬 A, B가 있을 때, 행렬간 연산을 수행하기 위해서는 두 행렬의 크기가 서로 맞아야 한다.
Broadcasting이란?
- 더 작은 array가 larger array로 “broadcast” 됨으로써 계산 가능한 shape을 가지게 된다!
- 자동적으로 (데이터를 복사하지 않고서) 동일한 크기로 확장
- Example
import torch
# Vector + scalar
m1 = torch.FloatTensor([1, 2])
m2 = torch.FloatTensor([3]) # 1 x 2 로 broadcasting
print(m1 + m2) # output : tensor([5., 5.])
# 2 x 1 Vector + 1 x 2 Vector
m1 = torch.FloatTensor([1, 2]) # 2 x 2 로 broadcasting
m2 = torch.FloatTensor([[3], [4]]) # 2 x 2 로 broadcasting
print(m1 + m2) # output : tensor([[4., 5.], [5., 6.]])
주의할 점
- 연산 조건을 검사하지 않기 때문에, 내가 의도한대로 계산이 되지 않을 수 있음