728x90
반응형
multi-variable linear regression
x의 값이 여러개이면 위와 같이 여러번 곱해주면 된다.
하지만 단점이 있다.
값이 100, 1000 ... 너무 많아지면 연산이 매우 복잡해진다.
우리는 이러한 문제를 Matrix를 이용하여 해결할 수 있다.
기본 원리는 아래와 같다.
Matrix를 사용하면 n개를 편하게 연산할 수 있다.
※ 주의사항
tensorflow 계산할 때는 H(x) = XW로 해주자!
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 30 31 32 33 34 35 36 37 38 39 40 41 | # Lab 4 Multi-variable linear regression 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] # placeholders for a tensor that will be always fed. 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/loss function cost = tf.reduce_mean(tf.square(hypothesis - Y)) # MInimize. Need a very small learning rate for this data set optimizer = tf.train.GradientDescentOptimizer(learning_rate=1e-5) train = optimizer.minimize(cost) # Launch the grapph in a session. sess = tf.Session() # Initializes global variables in the graph. 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) |
위에 복잡하게 나열한 것을 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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | # Lab 4 Multi-variable linear regression 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.]] # placeholders for a tensor that will be always fed. 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 hypothesis = tf.matmul(X, W) + b # Simplified cost/loss function cost = tf.reduce_mean(tf.square(hypothesis - Y)) # Minimize optimizer = tf.train.GradientDescentOptimizer(learning_rate=1e-5) train = optimizer.minimize(cost) # Launch the graph in a session. sess = tf.Session() # Initializes global variables in the graph. 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) |
반응형
'Study > Machine&Deep Learning' 카테고리의 다른 글
[ML] Logistic Classification (0) | 2018.05.20 |
---|---|
[ML] TensorFlow로 파일에서 데이터 읽어오기 (2) | 2018.05.16 |
[ML] Linear Regression의 cost 최소화 (0) | 2018.05.08 |
[ML] Linear Regression의 Hypothesis와 cost (0) | 2018.05.04 |
[ML] 기본적인 Machine Learning의 용어와 개념 (0) | 2018.05.04 |
댓글