ROKO
[coursera] Neural Networks and Deep Learning: Week 2-2 본문
[coursera] Neural Networks and Deep Learning: Week 2-2
RO_KO 2024. 6. 29. 07:54Vectorization
for loop 병목현상을 효과적으 해결하는 skill이다.
보통 GPU를 활용해 병렬처리를 하는데 jupyter notebook은 기본적으로 CPU에서 돌아간다. 그럼에도 vectorization이 효과가 있는 이유는 CPU, GPU 모두 SIMD (single instruction multiple data) instruction이라는 병렬 명령어를 지원하기 때문이다. 따라서 많은 데이터를 처리하는 경우 numpy를 적극 사용하는것을 추천한다.
자세한 실험들은 아래 링크에서 확인하자.
https://tech.kakao.com/posts/349
logistic regression에서 vector form을 적용하면
\( Z = w^T X + b \)
\( A = \sigma (Z) \)
이처럼 쉽게 표현 할 수 있다.
broadcasting
https://jakevdp.github.io/PythonDataScienceHandbook/02.05-computation-on-arrays-broadcasting.html
python, numpy 에서는 효율적인 vector 연산을 위해 broadcasting을 제공한다.
broadcasting은 유용하지만 그 기능으로 인한 dimenstion mismatch problem을 일으킬 확률이 높다.
import numpy as np
a = np.random.randn(5)
print(np.dot(a, a.T)
직관적으로 outer product 가 될것 같지만 실제 연산은 inner product가 된다. 이는 1-darray가 column이나 row vector로 일관성있게 인식되지 않기 때문이다. 따라서 정확한 shape을 정해주는 것이 좋다.
# column vector
a = np.random.randn(5,1)
# row vector
a = np.random.randn(1,5)
# check dimenstion
assert(a,shape==(5,1))
'Artificial Intelligence > Deep Learning' 카테고리의 다른 글
[coursera] Neural Networks and Deep Learning: Week 4 (0) | 2024.06.29 |
---|---|
[coursera] Neural Networks and Deep Learning: Week 3 (0) | 2024.06.29 |
[coursera] Neural Networks and Deep Learning: Week 2-1 (0) | 2024.06.29 |
[coursera] Neural Networks and Deep Learning: Week 1 (0) | 2024.06.28 |