코세라 앤드류 응 AI 강의 리뷰

[인공지능 강의 리뷰] 10 - 브로드캐스팅(Broadcating in Python)

파요요요 2022. 5. 16. 22:07
파이썬에서의 브로드 캐스팅

브로드캐스팅(Broadcasting)은

파이썬 라이브러리 NumPy가 산술 연산 중에 다른 모양의 배열을 처리하는 방법입니다.

넘파이 공식 홈페이지 자료
 

만약, 배열 a(3)와 b(1)를 곱한다고 생각해 봅시다.

배열의 개수가 다르기에, 원래라면 연산할 수 없습니다.

하지만 브로드캐스팅(BroadCasting)을 통하여,

2가 복사되어 곱해져 result가 계산되었습니다.

(실제로는 복사되지 않았습니다. 계산상으로만 복사된 것입니다.)


넘파이 공식 홈페이지 자료
 

브로드 캐스팅(BroadCasting)을 사용한 아래와 그러지 않은 위를 비교해 보면,

아래쪽이 훨씬 더 효율적인 메모리 사용이 가능합니다.


넘파이 공식 홈페이지 자료

위와 같이, 행이 아닌 열에도 브로드캐스팅(BroadCasting)은 활용됩니다.

하지만, 파이썬에서 배열(행렬)을 계산할 때 브로드 캐스팅(BoardCasting)이 항상 이뤄지는 건 아닙니다.

위의 그림과 같이,

후행 차원이 맞지 않는다면 브로드 캐스팅(BoardCasting)이 이뤄지지 않고 오류가 뜹니다.

--> 위 자료에서의 후행 차원은 열의 개수를 뜻함


 
넘파이 공식 홈페이지 자료
넘파이 공식 홈페이지 자료

브로드 캐스팅(BoardCasting)이 꼭 세로 방향으로만 이뤄지는 건 아닌데,

위 자료처럼, np.newaxis로 새로운 축을 삽입시켜,

가로, 세로 2방향에서 브로드 캐스팅(BoardCasting)이 일어나는 경우도 있습니다.

--> 위의 그림 같은 경우, a의 후행(열의 개수)이 b의 후행(열의 개수)의 공약수 관계여야 합니다.

이외에도, 여러 가지 경우의 수가 많지만, 여기까지 간략하게 알아보고 강의 내용으로 돌아가 봅시다.

반응형

브로드캐스티이 사용되는 예시

위의 자료는 실제 여러 음식들의 영양소에 따른 칼로리 수치를 나타낸 데이터입니다.

A를 3 * 4 배열(행렬)이라고 하고,

percentage를 구하기 위해, 100A를 cal.reshape(1,4)로 나눠봅시다

--> reshape()는 행렬을 전치시킨다는 의미입니다.

실제 프로그래밍 결과

실제 프로그래밍 결과,

브로드 캐스팅(BroadCasting)을 통해, 위와 같은 결과가 나온 걸 확인할 수 있습니다!


처음 보았던 블록 그림의 내용을 숫자로 표현하면 , 위와 같습니다!


브로드 캐스팅의 일반적인 원칙

특별한 경우가 아닌 이상, 

m * n 행렬(=배열) 1 * n 행렬이 연산된다면, 결과는 m * n 행렬로 나오고

m * n 행렬이 연산되어도, 결과는 m * n 행렬로 나옵니다.

--> 위에서 언급했듯이,

전치(Transpose)를 사용하여 브로드 캐스트가 2개의 방향으로 되는 경우,

결과가 위와 같이 안 나오게 되는데, 다음 글에서 퀴즈를 풀어볼 때 다시 언급하겠습니다.


이상으로, 2주 차 강의가 끝났습니다.

다음 시간부터는 2주 차 강의 내용을 활용하여, 퀴즈와 프로그래밍 과제를 해봅시다!

이 내용들은 모두 coursera에서 앤드루 응 교수님의 강의를 요약정리 및 쉽게 재 풀이하여 적은 글이며,

내용에는 생략되거나 변형된 부분이 많으니 직접 강의를 들어보시는 걸 추천드립니다!

이 글은 상업적 목적이 아닌, 한국에서 인공지능을 배우고 싶은 분들을 위해 적은 교육적 목적에서 작성하였습니다.

반응형