본문 바로가기
머신러닝

[실습] 모두의딥러닝 - tensorflow로 간단한 linear regression을 구현해보자!

by 박정률 2017. 2. 10.

지난시간에 학습했던 linear regression을 실습해보겠습니다!

우리의 최종목표는 cost 값을  minimize 하는 W,b 값을 구하는 것입니다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# -*- coding: utf-8 -*-
# 한글주석 사용을 위한 명령어
import tensorflow as tf
 
x_data = [1,2,3]
y_data = [1,2,3]
#training data입니다
 
= tf.Variable(tf.random_uniform([1],-1.0,1.0))
= tf.Variable(tf.random_uniform([1],-1.0,1.0))
 
#variable 로 지정해야 나중에  업데이트할 수 있다
 
hypothesis = W * x_data + b
 
cost = tf.reduce_mean(tf.square(hypothesis - y_data))
#reduce_mean 은 평균을 구하는 것
#지금은 계산하지않고 operation 만 설정해놓는다
 
a  = tf.Variable(0.1)
optimizer = tf.train.GradientDescentOptimizer(a)
train = optimizer.minimize(cost)
#위 세줄은 블랙박스로써 minimize 를 사용하는구나 라고 알아만두자
init = tf.initialize_all_variables()
#init 를 Session을 만든 다음에 실행을 한번 시켜줘야 합니다 안하면 에러발생
sess = tf.Session()
sess.run(init)
 
for step in xrange(2001):
    sess.run(train)
    if step % 20 == 0:
        print step, sess.run(cost), sess.run(W), sess.run(b)
        #각 스텝, cost, W, b 값을 20번의 step마다 출력합니다
        # cost는 0에 W 는 1에 b는 0에 수렴하는 것을 알 수있다
cs



placeholder 변수에 값을 넣어주지 않고 타입만 정해 둔 후 실행 직전에 값을 대입한다.

이전에는 placeholder 를 쓰지않고 linear regression 을 구현했는데 placeholder를 사용하면 이제는 모델을 재활용 할 수있습니다!

전에 학습했던 model 을 이용해서 X:5 일 때의 Y 값을 구하고싶다면 이 때 placeholder 라면 재사용이 가능하다!


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# -*- coding: utf-8 -*-
# 한글주석 사용을 위한 명령어
import tensorflow as tf
 
x_data = [1.,2.,3.]
y_data = [1.,2.,3.]
 
= tf.Variable(tf.random_uniform([1],-1.0,1.0))
= tf.Variable(tf.random_uniform([1],-1.0,1.0))
 
#variable 로 지정하야 나중에 업데이트할 수 있다
= tf.placeholder(tf.float32)
= tf.placeholder(tf.float32)
# 아직 x,y 를 정하지 않고 실행 시에 지정한다
hypothesis = W * X + b
 
cost = tf.reduce_mean(tf.square(hypothesis - Y))
#reduce_mean 은 평균을 구하는 것
#지금은 계산하지않고 operation 만 설정해놓는다
 
a  = tf.Variable(0.1)
optimizer = tf.train.GradientDescentOptimizer(a)
train = optimizer.minimize(cost)
#위 세줄은 블랙박스로써 minimize 를 사용하는구나 라고 알아만두자
init = tf.initialize_all_variables()
#init 를 Session을 만든 다음에 실행을 한번 시켜줘야 합니다 안하면 에러발생
sess = tf.Session()
sess.run(init)
 
for step in xrange(2001):
    sess.run(train, feed_dict = {X:x_data, Y :y_data})
    if step % 20 == 0:
        print step, sess.run(cost, feed_dict={X:x_data, Y:y_data}), sess.run(W), sess.run(b)
        #각 스텝, cost, W, b 값을 20번의 step마다 출력합니다
        # cost는 0에 W 는 1에 b는 0에 수렴하는 것을 알 수있다
 
print sess.run(hypothesis, feed_dict = {X:5})
print sess.run(hypothesis, feed_dict={X:2.5})
cs

이전 training data를 바탕으로  X : 2.5 , 5 일 때에 대한 Y값을 구할 수 있었습니다!