ROKO

[coursera] Neural Networks and Deep Learning: Week 2-2 본문

Artificial Intelligence/Deep Learning

[coursera] Neural Networks and Deep Learning: Week 2-2

RO_KO 2024. 6. 29. 07:54
728x90

Vectorization

for loop 병목현상을 효과적으 해결하는 skill이다.

보통 GPU를 활용해 병렬처리를 하는데 jupyter notebook은 기본적으로 CPU에서 돌아간다. 그럼에도 vectorization이 효과가 있는 이유는 CPU, GPU 모두 SIMD (single instruction multiple data) instruction이라는 병렬 명령어를 지원하기 때문이다. 따라서 많은 데이터를 처리하는 경우 numpy를 적극 사용하는것을 추천한다.

 

자세한 실험들은 아래 링크에서 확인하자.

https://tech.kakao.com/posts/349

 

NumPy와 C++ Extensions의 성능 비교 - tech.kakao.com

파이썬은 놀라운 생산성을 발휘하는 언어입니다. 하지만 성능 문제는 늘 발목을 잡게...

tech.kakao.com

 

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

 

Computation on Arrays: Broadcasting | Python Data Science Handbook

We saw in the previous section how NumPy's universal functions can be used to vectorize operations and thereby remove slow Python loops. Another means of vectorizing operations is to use NumPy's broadcasting functionality. Broadcasting is simply a set of r

jakevdp.github.io

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))

 

 

728x90
Comments