2.3.2 브로드캐스팅
앞서 살펴본 단순한 덧셈 구현인 naive_add는 동일한 크기의 랭크-2 텐서만 지원합니다. 하지만 이전에 보았던 Dense 층에서는 랭크-2 텐서와 벡터를 더했습니다. 크기가 다른 두 텐서가 더해질 때 무슨 일이 일어날까요?
모호하지 않고 실행 가능하다면 작은 텐서가 큰 텐서의 크기에 맞추어 브로드캐스팅(broadcasting)됩니다. 브로드캐스팅은 두 단계로 이루어집니다.
1. 큰 텐서의 ndim에 맞도록 작은 텐서에 (브로드캐스팅 축이라고 부르는) 축이 추가됩니다.
2. 작은 텐서가 새 축을 따라서 큰 텐서의 크기에 맞도록 반복됩니다.
구체적인 예를 살펴보겠습니다. X의 크기는 (32, 10)이고 y의 크기는 (10,)라고 가정합시다.
import numpy as np = np.random.random((32, 10)) ➊ = np.random.random((10,)) ➋
➊ X는 크기가 (32, 10)인 랜덤한 행렬입니다.
➋ y는 크기가 (10,)인 랜덤한 벡터입니다.