💻 개인공부 💻/머신러닝, 딥러닝

[ Tensorflow 예제 ] Linear Regression의 cost최소화의 Tensorflow 구현

공대생 배기웅 2020. 12. 17. 16:02
반응형

Linear Regression 첫 번째 예시

소스코드 설명

import tensorflow.compat.v1 as tf
print(tf.__version__)
# 텐서플로우 사용하기 위해 import
tf.disable_v2_behavior()
import matplotlib.pyplot as plt
# 그래프를 그래기 위해 import

x =[1,2,3]
y =[1,2,3]
w = tf.placeholder(tf.float32)
# 입력값x와 출력값y를 선언, w는 float(실수) 형태의 변수로 정의해줌

# 선형모델이 w*x라고 가정
hypothesis = w*x

# cost함수 정의
cost = tf.reduce_mean(tf.square(hypothesis - y))

#launch the graph in a session
sess = tf.Session()

sess.run(tf.global_variables_initializer())
#initializes global variables in the graph

w_val = []
cost_val = []
# 그래프를 그리기 위한 변수 w_val과 cost_val을 배열의 형태로 선언

# for문을 이용하여 x값이 -30일때부터 50일때까지 그래프 그림
for i in range(-30,50):
    feed_w = i*0.1
    # feed_w를 for문이 끝날 때마다 0.1씩 곱해줌. (-3 ~ 5)
    curr_cost, curr_w= sess.run([cost,w], feed_dict = {w: feed_w})
    w_val.append(curr_w)
    cost_val.append(curr_cost)
    
plt.plot(w_val, cost_val)
# 그래프의 x값과 y값 변수를 정의

plt.show()
# 그래프 출력

 

실행결과

 

 

 

Linear Regression 두 번째 예시 (when w= -3.0)

소스코드 설명

import tensorflow.compat.v1 as tf
print(tf.__version__)
tf.disable_v2_behavior()
# 텐서플로우 사용하기 위해 import

x = [1,2,3]
y = [1,2,3]
w = tf.Variable(-3.0)
# y = w*x 라는 식의 변수를 위와 같이 정의, w의 초기값은 -3

hypothesis = w*x
# 가설식 정의

cost = tf.reduce_mean(tf.square(hypothesis - y))
# cost함수 정의

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

sess = tf.Session()
#launch the graph in a session

sess.run(tf.global_variables_initializer())
#initializes global variables in the graph

for step in range(100):
    print(step, sess.run(w))
    sess.run(train)

실행 결과

 

 

 

 

참고자료

Kim Sung's Lecture

728x90
반응형