티스토리 뷰
Hypothesis using matrix
여러 개의 입력(variable, feature)을 가진 linear regression을 텐서플로우로 직접 구현해 보겠다.
데이터가 3개인 경우는
이렇게 나타낼 수 있다.
그럼 이처럼 데이터가 3개인 경우를 tensorflow로 직접 구현해 보자
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 | import tensorflow as tf x1_data=[73.,93.,89.,96.,73.] x2_data=[80.,88.,91.,96.,73.] x3_data=[75.,88.,91.,100.,70.] y_data=[152.,185.,180.,195.,142.] 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=x1*w1+x2*w2+x3*w3+b cost=tf.reduce_mean(tf.square(hypothesis-y)) 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) | cs |
출력을 해보면 y_data의 값에 거의 근접하게 나온다.
위 경우는 데이터가 3개였지만 만약 데이터가 백개, 천개 , 만개가 될 경우 일일이 코드에 다 써주기 힘들다. 따라서 우리는 행렬을 이용할 것이다.
matrix를 이용한 코드
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 | import tensorflow as tf x_data=[[73.,80.,75.],[93.,88.,93.], [89.,91.,90.],[96.,98.,100.],[73.,66.,70.]] y_data=[[152.],[185.],[180.],[196.],[142.]] 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="weiht") b=tf.Variable(tf.random_normal([1]),name="bias") hypothesis=tf.matmul(x,W)+b #matmul은 행렬곱을 뜻함 cost=tf.reduce_mean(tf.square(hypothesis-y)) 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%20==0: print(step, "cost ", cost_val,"\nprediction\n",hy_val) |
출력을 해보면 y_data의 값에 거의 근접한 값이 나오는 것을 볼 수 있다.
-------------------------------------
이 글은
https://hunkim.github.io/ml/, https://gist.github.com/haje01/202ac276bace4b25dd3f, http://pythonkim.tistory.com/8
의 내용을 보고 정리한 글입니다.
'AI > 딥러닝(sung kim)' 카테고리의 다른 글
Logistic(regression) classification : cost function & gradient decent (0) | 2018.06.06 |
---|---|
Logistic(regression) classification (1) | 2018.06.05 |
multi-variable linear regression (1) | 2018.05.22 |
Linear regression의 cost 최소화의 tensorflow 구현 (0) | 2018.05.19 |
Tensorflow로 간단한 linear regression을 구현 (0) | 2018.05.18 |
댓글