선형회귀(Linear Regression) 구현하기
텐서플로 버전 확인
import tensorflow as tf
tf.__version__
2.3.0
2버전대(2.*.*) 가 아닌 1버전이 설치가 되어있으면, 삭제후 재설치 해줍니다.
!pip uninstall tensorflow
!pip install tensorflow
필요 모듈 설정
import tensorflow as tf
import numpy as np
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
경사 하강법 알고리즘(GradienTape : 자동 미분 API) 사용
with tf.GradientTape() as tape:
hypothesis = w * x_data + b
diff = tf.square(hypothesis - y_data)
cost = tf.reduce_mean(diff)
경사 하강법에 따른 변수 업데이트
w_grad, b_grad = tape.gradient(cost, [w, b])
w.assign_sub(learning_rate * w_grad)
b.assign_sub(learning_rate * b_grad)
풀코드
import tensorflow as tf
import numpy as np
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]))
learning_rate = 0.001
for i in range(50001):
with tf.GradientTape() as tape:
hypothesis = w * x_data + b
cost = tf.reduce_mean(tf.square(hypothesis - y_data))
new_w, new_b = tape.gradient(cost, [w, b])
w.assign_sub(learning_rate * new_w)
b.assign_sub(learning_rate * new_b)
if i % 500 == 0:
print(f'Step : {i}, Cost : {int(cost)}, Weight : {w.numpy()[0]}, Bias : {b.numpy()[0]}')
temp_x = 18.
print()
print(f"x가 {temp_x} 일 때, y의 예측값 :", int(w * temp_x + b))
반응형
'AI > Tensorflow' 카테고리의 다른 글
텐서플로 - Tensorflow 2버전 : 다중 선형 회귀 구현 (0) | 2020.08.27 |
---|---|
텐서플로 - Tensorflow 2버전 : 선형 회귀 구현(with Keras) (0) | 2020.08.27 |
텐서플로 - Tensorflow 1버전 : 선형 회귀 구현 (0) | 2020.08.27 |
텐서플로 - Tensorflow 1 버전 사용하기 (in 구글 코랩) (0) | 2020.08.27 |
텐서플로 - TF 1.*버전 vs 2.*버전 (0) | 2020.08.26 |