1. Nerual Network Basics(Quiz)
- y hat은 input x가 주어졌을 때 y = 1일 확률이다.
- logistic loss는 y와 y hat 값이 주어지면 공식을 통해 그 값을 구할 수 있다.
- boradcasting은 두 행렬의 사이즈 중 일치하는 것을 제외한 나머지 중 큰 것을 기준으로 삼아 확장해주는 기능이다.
- X의 차원은 열 개수 x 행 개수로 구해진다.
- for-loop를 vectorize할 때는 matrix의 size를 고려하여 쉽게 구할 수 있다.
2. Python Basics with Numpy
- sigmoid 구현하기
- np.exp 함수를 이용하여 sigmoid 함수를 정의할 수 있다.
- parameter에 vector가 들어오면 각 원소에 대해 함수를 적용하여 vector를 반환한다.
- sigmoid derivative
- sigmoid를 미분하면 𝜎′(𝑥) = 𝜎(𝑥) (1−𝜎(𝑥)) 가 된다. 이를 그대로 구현하면 된다.
- reshape
- 3차원으로 입력되는 r,g,b image를 (n, 1) 사이즈로 reshape 해야 한다.
이때 (image.shpae[0] * image.shape[1] * image.shape[2] , 1 ) size로 만들어주면 된다.
- 3차원으로 입력되는 r,g,b image를 (n, 1) 사이즈로 reshape 해야 한다.
- normalize
- np.linalg.norm 함수를 이용하여 norm을 정의할 수 있다.
parameter에는 norm의 적용을 받을 벡터, axis = 1(각 행별-가로-로 적용), keepdims=True(shape 유지)가 있다. - 기존의 벡터를 norm으로 나눠주면 정규화된다.
- np.linalg.norm 함수를 이용하여 norm을 정의할 수 있다.
- softmax
- softmax는 벡터 x에 exp를 취하는 것으로 시작한다.
각 원소에 대해 exp가 적용되었으면, 각 원소를 분자로, 벡터의 총합을 분모로 삼아 정의하면 된다.
이때도 axis = 1, keepdims = True로 설정한다.
- softmax는 벡터 x에 exp를 취하는 것으로 시작한다.
- vectorization
- for-loop 대신 built-in function을 사용하면 처리 시간을 상당히 줄일 수 있다.
대용량의 data를 처리할 때 유용하고 필수적인 스킬이다.
- for-loop 대신 built-in function을 사용하면 처리 시간을 상당히 줄일 수 있다.
- L1 loss function
- yhat에서 y를 뺀 것에 절댓값을 취하여 총합을 구하면 된다.
- L2 loss function
- yhat에서 y를 뺀 것을 제곱하여 총합을 구하면 된다.
3. Logistic Regression with a Neural Network Mindset
- train,test,num_px 정의하기
- 입력.shape[1] 로 정의할 수 있다.
- train,test set flatten 해주기
- reshape(.shape[0],-1).T 형태로 변형한다.
- sigmoid 정의하기
- np.exp 함수를 이용하여 함수를 정의할 수 있다.
- w,b 초기화하기
- np.zeros(shape=(dim,1)), 0.0 으로 초기화할 수 있다.
- sigmoid 함수 사용하기
- 위에서 정의한 sigmoid에 np.dot(w.T,X) + b 를 매개변수로 준다.
- cost 정의하기
- np.sum 함수와 np.log 함수를 이용하여 cost의 정의대로 구현한다.
- dw,db
- sigmoid와 log를 미분한 결과에 알맞게 변수들을 입력하면 된다.
- gard, cost
- propagate에서 반환되는 grads와 cost를 unpacking하면 된다.
- w,b update
- 기존의 w와 b에 learning rate와 dw,db(미분값)를 반복해서 빼준다.
- Y_prediction
- sigmoid로 정의된 A의 결과가 0.5 초과일 경우 1을, 그렇지 않은 경우 0을 저장한다.
나머지 내용들은 optional 과제들이다.
출처: Coursera, Neural Networks and Deep Learning, DeepLearning.AI
'Neural Networks and Deep Learning > 2주차' 카테고리의 다른 글
Python and Vectorization(2) (0) | 2022.10.03 |
---|---|
Python and Vectorization(1) (0) | 2022.10.03 |
Logistic Regression as a Neural Network(2) (0) | 2022.10.02 |
Logistic Regression as a Neural Network(1) (0) | 2022.10.02 |