지난시간에 학습했던 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입니다 W = tf.Variable(tf.random_uniform([1],-1.0,1.0)) b = 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.] W = tf.Variable(tf.random_uniform([1],-1.0,1.0)) b = tf.Variable(tf.random_uniform([1],-1.0,1.0)) #variable 로 지정하야 나중에 업데이트할 수 있다 X = tf.placeholder(tf.float32) Y = 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값을 구할 수 있었습니다!
'머신러닝' 카테고리의 다른 글
[실습] 모두의딥러닝 - multi-variable linear regression을 TensorFlow에서 구현해버리기 (0) | 2017.02.15 |
---|---|
[실습] 모두의딥러닝 - linear regression의 cost 최소화의 Tensorflow를 구현해보자! (0) | 2017.02.15 |
[실습] 모두의딥러닝 - tensorflow의 기본 및 설치방법 (0) | 2017.01.23 |
[강의]시즌1 딥러닝의기본 - Multi-variable linear regression (1) | 2017.01.20 |
[강의]시즌1 딥러닝의기본 - Linear Regression의 cost 최소화 알고리즘 (0) | 2017.01.20 |