투명한 기부를 하고싶다면 이 링크로 와보세요! 🥰 (클릭!)
바이낸스(₿) 수수료 평생 20% 할인받는 링크로 가입하기! 🔥 (클릭!)
들어가기에 앞서, 모두를 위한 딥러닝 시즌 2 lab 03 슬라이드를 바탕으로 작성한 글임을 밝힙니다 후후..
우상단의 cost function을 파이썬으로 구현 해보면 위와 같다.
cost를 정의대로 구한 모습을 볼 수 있다. (linear regression의 b (bias)는 생략)
np.linspace는 시작 , 끝을 지정하고, (-3 , 5) num은 몇개로 나누는지를 말 해 준다. (15개로 나눔)
그러면 오른쪽과 같은 cost값의 변화를 볼 수 있다.
cost값이 1일때 제일 작고 1에서 멀어질수록 늘어나는걸 볼 수 있다.
그래프는 이렇다.
구현을 텐서플로우로 해보자.
코드가 위와같이 바뀐다.
cost가 weight에 따라 어떻게 바뀌는지 cost_values에 저장해서 한번 출력 해 보자.
아래와 같은 결과가 나온다.
-3.000| 74.66667
-2.429| 54.85714
-1.857| 38.09524
-1.286| 24.38095
-0.714| 13.71429
-0.143| 6.09524
0.429| 1.52381
1.000| 0.00000
1.571| 1.52381
2.143| 6.09524
2.714| 13.71429
3.286| 24.38095
3.857| 38.09524
4.429| 54.85714
5.000| 74.66667
코드는 아래와 같다. (tf 버전 2.0 사용)
import numpy as np
import tensorflow as tf
X = np.array([1,2,3])
Y = np.array([1,2,3])
def cost_func(W,X,Y):
hypothesis = X*W
return tf.reduce_mean(tf.square(hypothesis-Y))
W_values = np.linspace(-3,5,num=15)
cost_values = []
for feed_W in W_values:
curr_cost = cost_func(feed_W,X,Y)
cost_values.append(curr_cost)
print("{:6.3f}|{:10.5f}".format(feed_W, curr_cost))
지난번에도 본 gradient descent를 tf 코드로 옮긴 것이다.
기존의 cost 함수를 미분한 후 실질적으로 update하는 식을 자세하게 적은 부분이라고 보면 된다.
alpha 는 learning rate이라고 볼 수 있다.
이를 적용시켜서 tf로 학습시키는걸 살펴보면 아래 사진과 같이 할 수 있다.
(ppt에서 데이터 선언시 x_data y_data라고 해놓고 저 for loop안에서는 X랑 Y라고 썼으니까 잘 고쳐 쓰자)
tf.Variable은 tf tensor선언을 하는 (tensorflow 내의 변수같은 역할) 명령이고
tf.random_normal 은 random number [1]모양으로 (한개짜리로) -100에서 100 사이로(?) 만들라는 명령이다.
그리고 그 아래는 직관적인 일반적인 연산들이다.
결과는 아래와 같이 나온다.
w와 cost는 잘 수렴해부린다~