개요(Abstract)
아래의 내용은 hunkim님의 모두를 위한 머신러닝/딥러닝 강의에서 tensorFlow 사용 예제를 R로 변경한 내용이다.
아래의 내용은 hunkim님의 모두를 위한 머신러닝/딥러닝 강의에서 tensorFlow 사용 예제를 R로 변경한 내용이다.
hunkim님의 강좌 주소는 http://hunkim.github.io/ml/ 이다.
아래의 내용은 Logistic (Regression) Classification 수업에 있는 python 코드를 R로 변경한 것이다.
언어에 맞게 문법을 변경하고, 코드 흐름은 python에서 사용하는 부분과 같다. 아주 쉽게 R로 변환할 수 있었다.
언어에 맞게 문법을 변경하고, 코드 흐름은 python에서 사용하는 부분과 같다. 아주 쉽게 R로 변환할 수 있었다.
아래의 R 코드에서 주석 처리된 부분은 tensorFlow를 python에서 사용하는 코드이다.
# import tensorflow as tf library(tensorflow) # python 코드 # x_data = [[1, 2], # [2, 3], # [3, 1], # [4, 3], # [5, 3], # [6, 2]] # y_data = [[0], # [0], # [0], # [1], # [1], # [1]] x_data <- cbind(c(1, 2, 3, 4, 5, 5), c(2, 3, 1, 3,3, 2)) y_data <- c(0, 0, 0, 1, 1, 1) y_data <- as.matrix(y_data) # X = tf.placeholder(tf.float32, shape=[None, 2]) # Y = tf.placeholder(tf.float32, shape=[None, 1]) X = tf$placeholder(tf$float32, shape=list(NULL, 2)) Y = tf$placeholder(tf$float32, shape=list(NULL, 1)) # W = tf.Variable(tf.random_normal([2, 1]), name="weight") # b = tf.Variable(tf.random_normal([1]), name="bias") W = tf$Variable(tf$random_normal(shape = shape(2L, 1L)), name="weight") b = tf$Variable(tf$random_normal(shape = shape(1L)), name="bias") # Hypothesis using sigmoid: tf.div(1., 1. + tf.exp(tf.matmul(X, W))) # hypothesis = tf.sigmoid(tf.matmul(X, W) + b) hypothesis = tf$sigmoid(tf$matmul(X, W) + b) # cost = -tf.reduce_mean(Y * tf.log(hypothesis) + (1 - Y) * tf.log(1 - hypothesis)) cost = -tf$reduce_mean(Y * tf$log(hypothesis) + (1 - Y) * tf$log(1 - hypothesis)) # train = tf.train.GradientDescentOptimizer(learning_rate=0.01).minimize(cost) train = tf$train$GradientDescentOptimizer(learning_rate=0.01)$minimize(cost) # predicted = tf.cast(hypothesis > 0.5, dtype=tf.float32) # accuracy = tf.reduce_mean(tf.cast(tf.equal(predicted, Y), dtype=tf.float32)) predicted = tf$cast(hypothesis > 0.5, dtype=tf$float32) accuracy = tf$reduce_mean(tf$cast(tf$equal(predicted, Y), dtype=tf$float32)) # with tf.Session() as sess: # sess.run(tf.global_variables_initializer()) # # for step in range(10001): # cost_val, _ = sess.run([cost, train], feed_dict={X: x_data, Y: y_data}) # # if step%200 == 0: # print(step, cost_val) sess <- tf$Session() sess$run(tf$global_variables_initializer()) for (step in 1:10001 ) { # train은 반환값이 없어 NULL이 리턴됨 # rst.run = sess$run(train, dict(X=x_data, Y=y_data)) rst.run = sess$run(list(cost, train), dict(X=x_data, Y=y_data)) if (step %% 200 == 0) { # rst.run[[1]]은 cost cat(step, "-", sess$run(W), sess$run(b), rst.run[[1]], "\n") } } # 결과 확인 부 # h, c, a = sess.run([hypothesis, predicted, accuracy], feed_dict={X: x_data, Y: y_data}) # print("\nHypothesis: ", h, "\nCorrect (Y): ", c, "\nAccuracy: ", a) rst.run <- sess$run(list(hypothesis, predicted, accuracy), dict(X = x_data, Y = y_data)) names(rst.run) <- c("hypothesis", "predicted", "accuracy") (rst.run) sess$close() print("END OF CODE")
댓글 없음:
댓글 쓰기