본문 바로가기
IT/머신러닝

[section_3_lab] Gradient descent algorithm 실습

by 빨강자몽 2018. 11. 8.

Gradient descent algorithm 실습

  • 코드1을 간략하게 코드2로 표현할 수 있다.
# 코드 1

# learning_rate : w를 얼만큼씩 옮길것인지
learning_rate = 0.1
# cost funtion을 미분한 수식
gradient = tf.reduce_mean((W * X - Y) * X)
# 다음으로 이동 될 w값 -> descent에 저장
descent = W - learning_rate * gradient
# w를 descent로 update
update = W.assign(descent)


# 코드 2


# Minimize: Gradient Descent Magic

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

train = optimizer.minimize(cost)


# -*- coding: utf-8 -*-
import tensorflow as tf
# input x, y
x_data = [1, 2, 3]
y_data = [1, 2, 3]

# simplify h(x) -> h(x) = wx
# variable(trainalbe) w
W = tf.Variable(tf.random_normal([1]), name='weight')
# placeholder(변수) X, Y
X = tf.placeholder(tf.float32)
Y = tf.placeholder(tf.float32)

# simplify h(x)
hypothesis = X * W

# cost/loss function
cost = tf.reduce_sum(tf.square(hypothesis - Y))

# learning_rate : w를 얼만큼씩 옮길것인지
learning_rate = 0.1
# cost funtion을 미분한 수식
gradient = tf.reduce_mean((W * X - Y) * X)
# 다음으로 이동 될 w값 -> descent에 저장
descent = W - learning_rate * gradient
# w를 descent로 update
update = W.assign(descent)

# sess 생성
sess = tf.Session()
# variable 생성한다.
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))