더북(TheBook)

2.3.2 브로드캐스팅

앞서 살펴본 단순한 덧셈 구현인 naive_add는 동일한 크기의 랭크-2 텐서만 지원합니다. 하지만 이전에 보았던 Dense 층에서는 랭크-2 텐서와 벡터를 더했습니다. 크기가 다른 두 텐서가 더해질 때 무슨 일이 일어날까요?

모호하지 않고 실행 가능하다면 작은 텐서가 큰 텐서의 크기에 맞추어 브로드캐스팅(broadcasting)됩니다. 브로드캐스팅은 두 단계로 이루어집니다.

1. 큰 텐서의 ndim에 맞도록 작은 텐서에 (브로드캐스팅 축이라고 부르는) 축이 추가됩니다.

2. 작은 텐서가 새 축을 따라서 큰 텐서의 크기에 맞도록 반복됩니다.

구체적인 예를 살펴보겠습니다. X의 크기는 (32, 10)이고 y의 크기는 (10,)라고 가정합시다.

import numpy as np

X = np.random.random((32, 10)) 
y = np.random.random((10,)) 

X는 크기가 (32, 10)인 랜덤한 행렬입니다.

y는 크기가 (10,)인 랜덤한 벡터입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.