티스토리 뷰
ML (Machine Learning)
[딥러닝 기본 09] Lab 04_1 - multi-variable linear regression을 tensorflow에서 구현하기
Nero :) 2017. 5. 31. 12:08모두를 위한 머신러닝 / 딥러닝 김성훈 교수님 강의를 듣고 정리한 내용입니다.
@ x1, x2, x3 (출석, 퀴즈, 중간)를 통해 Y(기말)를 예측
- data set
@ TensorFlow
- Matrix를 사용하지 않은 예제 (이런식으로 하면 안됨)
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
import tensorflow as tf
# 학습 데이터
x1_data = [73., 93., 89., 96., 73.]
x2_data = [80., 88., 91., 98., 66.]
x3_data = [75., 93., 90., 100., 70.]
y_data = [152., 185., 180., 196., 142.]
# placeholder
x1 = tf.placeholder(tf.float32)
x2 = tf.placeholder(tf.float32)
x3 = tf.placeholder(tf.float32)
Y = tf.placeholder(tf.float32)
w1 = tf.Variable(tf.random_normal([1]), name='weight1')
w2 = tf.Variable(tf.random_normal([1]), name='weight2')
w3 = tf.Variable(tf.random_normal([1]), name='weight3')
b = tf.Variable(tf.random_normal([1]), name='bias')
# Hypothesis
hypothesis = x1 * w1 + x2 * w2 + x3 * w3 + b
# cost / loss function
cost = tf.reduce_mean(tf.square(hypothesis - Y))
# Minimize : gradient descent
optimizer = tf.train.GradientDescentOptimizer(learning_rate=1e-5)
train = optimizer.minimize(cost)
# 세션 준비 및 초기화
sess = tf.Session()
sess.run(tf.global_variables_initializer())
for step in range(2001):
cost_val, hy_val, _ = sess.run([cost, hypothesis, train],
feed_dict={x1: x1_data, x2: x2_data, x3: x3_data, Y: y_data})
if step % 10 == 0:
print(step, "cost: ", cost_val, "\nPrediction:\n", hy_val)
# 2000 cost: 1.29522
# Prediction:
# [ 150.25749207 185.29418945 180.15109253 197.58331299 141.0925293 ]
- Matrix 사용 예제
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
import tensorflow as tf
# 학습 데이터
# x_data shape = [5, 3]
# y_data shape = [5, 1]
x_data = [[73., 80., 75.],
[93., 88., 93.],
[89., 91., 90.],
[96., 98., 100.],
[73., 66., 70.]]
y_data = [[152.],
[185.],
[180.],
[196.],
[142.]]
# placeholder : shape 주의!!
X = tf.placeholder(tf.float32, shape=[None, 3])
Y = tf.placeholder(tf.float32, shape=[None, 1])
W = tf.Variable(tf.random_normal([3, 1]), name='weight')
b = tf.Variable(tf.random_normal([1]), name='bias')
# Hypothesis : Matrix 이용
hypothesis = tf.matmul(X, W) + b
# cost / loss function
cost = tf.reduce_mean(tf.square(hypothesis - Y))
# Minimize : gradient descent
optimizer = tf.train.GradientDescentOptimizer(learning_rate=1e-5)
train = optimizer.minimize(cost)
# 세션 준비 및 초기화
sess = tf.Session()
sess.run(tf.global_variables_initializer())
for step in range(2001):
cost_val, hy_val, _ = sess.run([cost, hypothesis, train], feed_dict={X: x_data, Y: y_data})
if step % 10 == 0:
print(step, "cost: ", cost_val, "\nPrediction:\n", hy_val)
# 2000 cost: 0.784948
# Prediction:
# [[ 150.69198608]
# [ 185.04780579]
# [ 180.29139709]
# [ 197.24359131]
# [ 141.23834229]]
'ML (Machine Learning)' 카테고리의 다른 글
[딥러닝 기본 11] Lec 05_1 - logistic classification의 가설 함수 정의 (0) | 2017.05.31 |
---|---|
[딥러닝 기본 10] Lab 04_2 - tensorflow로 파일에서 데이터 읽어오기 (1) | 2017.05.31 |
[딥러닝 기본 08] Lec 04 - multi-variable linear regression (0) | 2017.05.30 |
[딥러닝 기본 07] Lab 03 - linear regression의 cost 최소화의 tensorflow 구현 (0) | 2017.05.30 |
[딥러닝 기본 06] Lec 03 - linear regression의 cost 최소화 알고리즘의 원리 설명 (0) | 2017.05.30 |
댓글