벡터화
일반적으로 평소에 코딩할 때 for문을 정말 자주 사용하는데, 딥러닝의 구현에 있어서는 for문의 사용은 코드 실행을 느려지게 만들 수 있다. numpy 내장함수를 사용하게 되면 for문을 사용할 때보다 훨씬 빨라질 수 있다. 그렇기 때문에 일단 for문을 쓰고 싶다면 그 공식을 쓰지 않고 numpy 내장 함수를 사용할 수 있는지 먼저 확인을 해야함
만약 코드를 벡터화하지 않는다면, 위와 같이 Z = wx + b를 구현하기 위하여 z = 0으로 초기화시킨 후 for문을 반복적으로 계산해야한다.
반면, 코드를 벡터화했을 경우에는 파이썬의 라이브러리 함수를 통해 위와 같이 간단하게 한 줄로 표현가능하다.
위 코드는 로지스틱 회귀의 도함수를 구하는 코드이다.
위 코드에서는 for문이 2번 나타난다. (노란색 형광펜 표시한 두 부분)
먼저 표시된 것 중 두 번째 for문을 없애기 위해서는 dw_1, dw_2 등을 0으로 초기화하는 대신
초기화하는 부분을 지우고 dw를 벡터로 만들어야한다.
=> dw를 np.zeros((n_x, 1))로 지정하여 n_x차원의 벡터로 만든다. 그러면 두 번째 for문인 해당 3줄을 쓰는 대신, 벡터 연산인 dw += x^(i) * dz(i) 로 바꿀 수 있다. 또한 맨 아랫줄 dw1, dw2에 대한 식을 아예 dw /= m 으로 바꿀 수 있다.
이렇게 두 개의 for문을 하나로 줄일 수 있게된다. 이런 식으로 벡터화는 다양한 방법으로 딥러닝에서 많은 도움이 된다.
※ 앤드류 응 교수의 딥러닝 강의를 듣고 정리했습니다.
'자습 > 딥러닝' 카테고리의 다른 글
[딥러닝] 벡터화2 (0) | 2021.02.06 |
---|---|
[딥러닝] 비지도학습 (0) | 2021.02.06 |
[딥러닝] 순환신경망(RNN) (0) | 2021.02.06 |
[딥러닝] 활성화 함수 (0) | 2021.02.06 |
[딥러닝] 딥러닝을 위한 자주 쓰이는 파이썬 문법 참고 (0) | 2021.02.06 |