딥러닝 실습(1) - 선형회귀

2020. 1. 29. 13:16딥러닝

중학교 때 배웠던 직선의 방정식

x값 1개, y값 1개씩 있을 경우

import tensorflow as tf

#x,y 데이터 값
data = [[2,81], [4,93], [6, 91], [8, 97]]
x_data = [x_row[0] for x_row in data]
y_data = [y_row[1] for y_row in data]

print(x_data)
print(y_data)

#변수 선언
#기울기 : a - 0~10 사이의 임의의 값
#y 절편 : b - 0~100 사이의 임의의 값
#seed? 
a = tf.Variable(tf.random_uniform([1], 0, 10, dtype=tf.float64, seed = 0))
b = tf.Variable(tf.random_uniform([1], 0, 100, dtype=tf.float64, seed = 0))

#그래프 선언
#y에 대한 일차 방정식
y = a * x_data +  b

#텐서플로우 rmse(Root Mean Square Error, 평균 제곱근 편차) 함수
rmse = tf.sqrt(tf.reduce_mean(tf.square(y - y_data)))

learning_rate = 0.01
gradient_descent = tf.train.GradientDescentOptimizer(learning_rate).minimize(rmse)

with tf.Session() as sess:
    #변수 초기화
    sess.run(tf.global_variables_initializer())
    #2001번 실행
    for step in range(10001):
        sess.run(gradient_descent)
        #100번마다 결과 출력
        if step % 100 == 0:
            print("Epoch : %.f, RMSE = %.04f, 기울기 a = %.4f, y 절편 b = %.4f" % (step, sess.run(rmse), sess.run(a), sess.run(b)))

 

기울기는 2.3, y 절편은 79에 가까워짐