[실습] Linear Regression Cost 최소화 알고리즘

소스 코드

matplotlib 설치 URL : http://matplotlib.org/users/installing.html

1,2,3이 X 값으로 주어지면 결과값이 1,2,3이 되는 데이터

Cost값을 배열로 만들어서 matplotlib을 이용해서 그림으로 그린다.

import tensorflow as tf  
import matplotlib.pyplot as plt  
X = [1, 2, 3]  
Y = [1, 2, 3]

W = tf.placeholder(tf.float32)  
hypothesis = X * W

cost = tf.reduce_mean(tf.square(hypothesis - Y))  
sess = tf.Session()  
sess.run(tf.global_variables_initializer())  
W_val = []  
cost_val = []  
for i in range(-30, 50):  
   feed_W = i * 0.1  
   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)  
plt.show()

Gradient-Descent 알고리즘 소스 코드(수동으로 cost를 minimize)

import tensorflow as tf
x_data = [1, 2, 3]
y_data = [1, 2, 3]

W = tf.Variable(tf.random_normal([1]), name='weight')
X = tf.placeholder(tf.float32)
Y = tf.placeholder(tf.float32)

hypothesis = X * W

cost = tf.reduce_sum(tf.square(hypothesis - Y))

learning_rate = 0.1
gradient = tf.reduce_mean((W * X - Y) * X)
descent = W - learning_rate * gradient
update = W.assign(descent)

sess = tf.Session()
sess.run(tf.global_variables_initializer())
for step in range(21):
   sess.run(update, feed_dict={X: x_data, Y: y_data})
   print(step, sess.run(cost, feed_dict={X: x_data, Y: y_data}), sess.run(W))

Gradient-Descent 알고리즘 소스 코드(수동 X)

처음에 5.0이라는 틀린 값을 넣고 돌린 코드

import tensorflow as tf

x_data = [1, 2, 3]
y_data = [1, 2, 3]

W = tf.Variable(5.0)
hypothesis = X * W
cost = tf.reduce_mean(tf.square(hypothesis - Y))
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.1)
train = optimizer.minimize(cost)

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

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

결과
0 5.0
1 1.2666
2 1.0177
3 1.0011
4 1.00001
5 1.0
6 1.0
...

results for ""

    No results matching ""