본문 바로가기

Programming Project/Tensorflow Tutorials

Tensorflow 튜토리얼 02 - Liner Regression and How to minimize cost LAB


투명한 기부를 하고싶다면 이 링크로 와보세요! 🥰 (클릭!)

바이낸스(₿) 수수료 평생 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는 잘 수렴해부린다~