티스토리 뷰

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)+#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)

cs


출력을 해보면 y_data의 값에 거의 근접한 값이 나오는 것을 볼 수 있다.







-------------------------------------

이 글은

https://hunkim.github.io/ml/, https://gist.github.com/haje01/202ac276bace4b25dd3f, http://pythonkim.tistory.com/8 

의 내용을 보고 정리한 글입니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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
글 보관함