-
패스트캠퍼스 챌린지 - 41일차2022년 패스트캠퍼스 챌린지/한번에끝내는딥러닝|인공지능초격차패키지 2022. 3. 5. 21:24
강의 내용 Review
📍배운내용📍
- Broadcast
- 규칙, 실제 동작방법
- 예제소스코드
👉강의내용👈
Part3. 딥러닝/인공지능의 이해
Ch 02_딥러닝 개발 준비
Broadcast
- Broadcasting은 넘파이가 산술 연산을 수행 할때 다른 모양의 배열로 작업할수있게 도와줌
- 더작은 배열과 큰 배열이 있을떄 작은 배열을 여러번 사용하여 연산하고 싶을때 사용함
- 각 행에 상수벡터를 바로 더하고 싶을떄 넘파이는 바로 가능
- 내부적으로 사용자가 모르게 broadcasting이 일어남
- 각 연산하고자 하는 값이 차원이 다를때 알아서 차원을 확장해서 다 더함
- ex) 한 넘파이의 형태가 (4,3)이고, 한 넘파이의 형태가 (3, )일때 브로드캐스팅이 일어나 연산을 함
- 규칙
- 연산하고자 하는 두 배열의 차원이 같지 않으면 두 모양이 같은 길이가 될때 까지 배열의 낮은 차원쪽에 1을 붙임
- 두배열의 차원에서 크기가 같거나 배열중 하나의 차원의 크기가 1인경우 차원에서 호환가능
- 배열은 모든 차원에서 호환되면 함께 broadcast 될수 있음
- broadcast후 각 배열은 두개의 입력 배열의 요소 모양 최대 개수와 동일한 모양을 가진것 처럼 동작
- 한배열의 크기가 1이고, 다른 배열의 크기가 1보다 큰 차원에서 첫번째 배열은 해당차원을 따라 복사된 것 처럼 작동함
- 실제 동작 방법
- 두 배열 A와 B의 형태와 모양을 봄
- 두 배열의 모양의 길이 가 같은지 확인함 -> len(A.shape) == len(B.shape)
- 같지 않으면 두 배열의 모양 길이가 같아질때까지 작은 쪽의 shape 앞에 1 을 추가함.
- shape이 1인 곳은 복사가 됨
- ex) (6,2) + (2, ) -> 두 배열의 모양의 길이가 같지 않음
- (6,2) + (1, 2) -> 두배열의 모양의 길이가 같아질떄까지 작은 쪽의 shape앞에 1을 붙임
- (6,2) + (6, 2) -> shape가 1인 부분에 큰 배열의 값을 복사해옴
예제 소스코드
x = np.array([1,2,3]).reshape(1,3) y = np.array([4,5]).reshape(1,2) print(x, x.shape) print(y, y.shape) ===== 결과 ===== [[1 2 3]] (1, 3) [[4 5]] (1, 2)
1. 첫번째 숫자는 서로 1로 맞음
2. 두번째 숫자는 서로 다름, 둘중에 하나가 1인지 봐야함
3. 하지만 1이 아니라서 연산안됨!
x = np.array([1,2,3,4,5,6,7,8,9,10,11,12]).reshape(6,2) y = np.array([1,2]).reshape(2) print(x, x.shape) print(y, y.shape) ===== 결과 ===== [[ 1 2] [ 3 4] [ 5 6] [ 7 8] [ 9 10] [11 12]] (6, 2) [1 2] (2,) [[ 2 4] [ 4 6] [ 6 8] [ 8 10] [10 12] [12 14]]
1. 실제 동작 방법 참고 연산가능!
공부사진
강의듣기 실습하기 41일차 후기
규칙이 아직 알쏭달쏭하다. 더열심히 봐서 브로드캐스트에 대해 익혀야한다.
앞으로 소스코드를 볼때 잘고려해서 보고 짜야겠다.
넘파이 튜토리얼은 끝났다. 시각화 그릭도 파이팅패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
'2022년 패스트캠퍼스 챌린지 > 한번에끝내는딥러닝|인공지능초격차패키지' 카테고리의 다른 글
패스트캠퍼스 챌린지 - 43일차 (0) 2022.03.07 패스트캠퍼스 챌린지 - 42일차 (0) 2022.03.06 패스트캠퍼스 챌린지 - 40일차 (0) 2022.03.04 패스트캠퍼스 챌린지 - 39일차 (0) 2022.03.03 패스트캠퍼스 챌린지 - 38일차 (1) 2022.03.02