Vectorizing Logistic Regression
m개의 훈련 샘플이 있을 때, 아래의 값을 계산해야 한다. 정방향 전파 단계를 실행하기 위해선 (m개의 훈련 샘플에 대한 예측값 계산) for문 없이 계산하는 방법이 있다. X는 훈련 입력을 열로 쌓은 행렬이다. n_x행 m열 행렬이다. 이는 X가 (n_x,m) 차원 행렬이라는 것이다. 먼저, z^(1),z^(2),z^(3) 등을 한 단계 혹은 한 줄의 코드로 계산하는 법이다. 행 벡터이기도 한, (1,m) 행렬을 만든다. 여기에 z^(1),z^(2)에서 z^(m)까지 동시에 계산할 것이다. 이를 w^T X와 b로 이루어진 벡터의 합으로 표현될 수 있다. b로 이루어진 이것은 (1,m)벡터 혹은 (1,m)행렬이다. m차원 행 벡터이다. w^T에 x^(1), x^(2)부터 x^(m)로 이루어진 행렬을 곱하..
2024. 3. 25.
Vectorization
백터화는 간단히 말하면, 코드에서 for문을 없애는 일종의 예술과 같다. 딥러닝 알고리즘에서는 큰 데이터 세트를 학습시킬 때가 많은데, for문이 아닌, 벡터화를 통해 더 빠르게 실행하는 것이 가능하다. 예시) 로지스틱 회귀에서는 z = w^Tx + b를 계산해야 한다.i w는 열 벡터이고, x도 마찬가지이다. w와 x는 모두 R^(n_x)의 차원을 가진 벡터이다. 벡터화되지 않은 구현일 때엔 w^Tx를 계산하기 위해, z=0와 i가 1부터 n_x까지 일 때, z+=w[i]*x[i]를 하고, 마지막에 z+=b를 할 수 있다. 이는 벡터화되지 않은 구현으로 느리다. 그에 반해, 벡터화된 구현은 w^Tx를 직접 계산한다. 파이썬이나 NumPy에서 명령어는 np.dot(w,x)이다. z= np.dot(w,x)..
2024. 3. 25.