선형회귀(Linear Regression) 구현하기

 

텐서플로 1버전 확인 하기

import tensorflow as tf
tf.__version__

1.15.0

X, Y 샘플 데이터 입력

x_data = [11,12,13,14,15,16,17]
y_data = [148, 154, 170, 165, 175, 183, 190]

변수 선언, 가중치(기울기) W, 편향(절편), 학습률(learning_rate)

w = tf.Variable(tf.random_normal([1]))
b = tf.Variable(tf.random_normal([1]))
learning_rate = 0.001

변수 x, y 정의

x = tf.placeholder(tf.float32)
y = tf.placeholder(tf.float32)

예측값을 구할 가설(Hypothese) 설정, (1차 방정식 만들기)

H = w * x + b

Cost (loss) 함수식 작성

diff = tf.square(H - y)
cost = tf.reduce_mean(diff)

경사 하강법 알고리즘 선언

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

설정한 변수에 대한 초기화 함수 설정(init)

init = tf.global_variables_initializer()

세션을 생성하여 init (Variable)을 아래와 같이 초기화

sess = tf.Session()
sess.run(init)

설정한 모델을 5만번 가량 학습 500번째마다, step, cost, Weight, Bias 출력

for i in range(50001) :
  sess.run(train, feed_dict={x : x_data, y : y_data})
  if i % 500 == 0 :
    print(i, sess.run(cost, feed_dict={x : x_data, y : y_data}), sess.run(w), sess.run(b))

예측할 x (18)의 값을 넣어서 y 값 확인

print(sess.run(H, feed_dict={x : [18]}))

풀코드

import tensorflow as tf

x_data = [11,12,13,14,15,16,17]
y_data = [148, 154, 170, 165, 175, 183, 190]

w = tf.Variable(tf.random_normal([1]))
b = tf.Variable(tf.random_normal([1]))

x = tf.placeholder(tf.float32)
y = tf.placeholder(tf.float32)
learning_rate = 0.001

H = w * x + b

diff = tf.square(H - y)
cost = tf.reduce_mean(diff)

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

init = tf.global_variables_initializer()

sess = tf.Session()
sess.run(init)

for i in range(50001) :
  sess.run(train, feed_dict={x : x_data, y : y_data})
  if i % 500 == 0 :
      print(f'Step : {i}, Cost : {sess.run(cost, feed_dict={x : x_data, y : y_data})}, Weight : {sess.run(w)[0]}, Bias : {sess.run(b)[0]}')

temp_x = 18.9
print()
print(f" x 가 {temp_x} 일 때, y의 예측값 :", int(sess.run(H, feed_dict={x : [temp_x]})[0]))

예상 오류

AttributeError: module 'tensorflow' has no attribute 'random_normal'

만약 이런 오류가 뜬다면, 텐서플로 2버전이 설치 되어있을 것입니다.

import tensorflow as tf
tf.__version__

를 통해 버전을 확인 후, 1버전으로 재설치를 해줍니다.

!pip uninstall tensorflow
!pip install tensorflow==1.15

 

반응형

+ Recent posts