TensorFlow로 간단한 linear regression을 구현

2019. 5. 12. 22:06·머신러닝/모두를 위한 딥러닝

이전 게시물에서 배웠던 linear regression을 구현해볼 것이다.

 

Tensor Flow가 구현하기 위해 기본이 되는 3가지 를 거칠 것이다.

 

  1. 그래프를 빌드한다.

  2. 세션을 통해 그래프를 실행을 시킨다

  3. 그에 해당하는 값을 돌려준다.

1. 그래프 구현

H(x) = W(x) + b를 Tensorflow로 표현한 것이다.

# X and Y data
x_train = [1, 2, 3]
y_train = [1, 2, 3]

W = tf.Variable(tf.random_normal([1]), name="weight")
b = tf.Variable(tf.random_normal([1]), name="bias")

# Our hypothesis XW+b
hypothesis = x_train * W + b

여기서 tf.Variable은 변수를 생성하는 것이다. tf.random_normal은 정규분포로부터의 난수 값을 반환하는 것이다.

그다음으로는 hyporthesis를 만들어 준 것이다.

 

이제 Cost Function을 Tensor flow로 구현해 볼 것이다.

 

cost = tf.reduce_mean(tf.square(hypothesis - y_train))

tf.square는 제곱해주는 것이고 tf.reduce_mean 은 평균 내주는 것이라 생각하면 된다.

 

이제 Cost를 minimize 해야 하는 것이다. GradientDescent라는 minimize 하는 방법 중에 하나이다.

train = tf.train.GradientDescentOptimizer(learning_rate=0.01).minimize(cost)

이것이 선언했던 w와 b를 조정해서 스스로 minimize 하게 된다.

이 부분은 지금으로서는 매직이라고 생각하고 있는다.

 

2. 세션을 만들고 그래프를 실행시켜준다.

# Launch the graph in a session.
with tf.Session() as sess:
    # Initializes global variables in the graph.
    sess.run(tf.global_variables_initializer())

    # Fit the line
    for step in range(2001):
        _, cost_val, W_val, b_val = sess.run([train, cost, W, b])

        if step % 20 == 0:
            print(step, cost_val, W_val, b_val)

그래프를 실행하기 전 반드시 tf.global_variables_initializer()로 초기화를 해줘야 한다.

그리고 sess.run을 통해 train을 실행시킨다. 2001번 학습하여 20번에 1번씩 Cost, w, b을 보기로 한다.

 

3. 값을 돌려준다.

첫 번째 값은 0~2000은 학습을 몇 번 했는지를 나타내 주고 두 번째 값은 Cost의 값을 나타내며 학습할수록 굉장히 적은 값으로 수렴을 하게 되고 세 번째 값은 w값으로 1로 수렴이 되고 네 번째 값은 b는 0에 가까운 값으로 수렴하게 된다.

 

그리고 이것 말고도 처음에 데이터를 던져주지 않고 placeholders로 feed_dict로 값을 받을 수도 있다.

X = tf.placeholder(tf.float32, shape=[None])
Y = tf.placeholder(tf.float32, shape=[None])
...
    for step in range(2001):
        _, cost_val, W_val, b_val = sess.run(
            [train, cost, W, b], feed_dict={X: [1, 2, 3], Y: [1, 2, 3]}
        )
        if step % 20 == 0:
            print(step, cost_val, W_val, b_val)

결과는 전과 동일하다.

 

공부한 사이트:https://www.youtube.com/watch?v=mQGwjrStQgg&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=5

'머신러닝 > 모두를 위한 딥러닝' 카테고리의 다른 글

multi-variable linear regression  (0) 2019.05.15
Linear Regression 의 cost 최소화의 TensorFlow 구현  (0) 2019.05.14
Linear Regression의 cost 최소화 알고리즘의 원리  (0) 2019.05.13
Linear Regression의 Hypothesis 와 cost  (0) 2019.05.11
머신러닝이란?  (0) 2019.05.10
'머신러닝/모두를 위한 딥러닝' 카테고리의 다른 글
  • Linear Regression 의 cost 최소화의 TensorFlow 구현
  • Linear Regression의 cost 최소화 알고리즘의 원리
  • Linear Regression의 Hypothesis 와 cost
  • 머신러닝이란?
dev.JJ
dev.JJ
Software Programming
  • dev.JJ
    끊임없이 생각하자
    dev.JJ
  • 전체
    오늘
    어제
    • 분류 전체보기 (43)
      • 서버 개발(생각과 구현) (14)
      • 머신러닝 (24)
        • 신경망 첫걸음 (2)
        • 모두를 위한 딥러닝 (12)
        • 딥러닝을 이용한 자연어처리 입문 (9)
        • AI 프로젝트 (1)
      • 수학 (5)
        • 기초 선형대수학 (4)
        • 기초수학 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    ML
    프로젝트
    코로나 바이러스 예측
    수학
    머신러닝
    ai
    벡터
    자연어처리
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dev.JJ
TensorFlow로 간단한 linear regression을 구현
상단으로

티스토리툴바