[정리] 모두를 위한 딥러닝 05 - Logistic Classification by 김성훈
강의 웹사이트 : http://hunkim.github.io/ml/
Lec = 강의 / Lab = 실습
지금까지는 결과값 Y 가 숫자였는데, 이번 강의에서는 0 또는 1 이렇게 둘 중 하나인 경우를 살펴본다.
병에 걸렸는지 여부, 시험을 통화할 수 있는지 여부 등에 이용할 수 있다.
이를 나타내려면 단순히 직선 그래프로는 안되고 0 또는 1 에 수렴해야 하는데, 이때 사용되는 함수는 아래와 같다.
시그모이드 (하이퍼볼릭 탄젠트 tanh 파란색 점선) 함수로 나타낼 수 있다.
로그 함수로 나타낼 수도 있다.
여기에서 빨간색이 X 축이라면 Y 값은 0 또는 1 에 수렴하는 그래프가 된다. 오 ~
이를 파이썬으로 구현하면 아래와 같다.
x_data = [[1, 2], [2, 3], [3, 1], [4, 3], [5, 3], [6, 2]]
y_data = [[0], [0], [0], [1], [1], [1]]
# placeholders for a tensor that will be always fed.
X = tf.placeholder(tf.float32, shape=[None, 2])
Y = tf.placeholder(tf.float32, shape=[None, 1])
W = tf.Variable(tf.random_normal([2, 1]), name='weight')
b = tf.Variable(tf.random_normal([1]), name='bias')
# Hypothesis using sigmoid: tf.div(1., 1. + tf.exp(tf.matmul(X, W)))
hypothesis = tf.sigmoid(tf.matmul(X, W) + b)
# cost/loss function
cost = -tf.reduce_mean(Y * tf.log(hypothesis) + (1 - Y) * tf.log(1 - hypothesis))
train = tf.train.GradientDescentOptimizer(learning_rate=0.01).minimize(cost)
# Accuracy computation
# True if hypothesis>0.5 else False
predicted = tf.cast(hypothesis > 0.5, dtype=tf.float32)
accuracy = tf.reduce_mean(tf.cast(tf.equal(predicted, Y), dtype=tf.float32))
# Launch graph
with tf.Session() as sess:
# Initialize TensorFlow variables
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)
# Accuracy report
h, c, a = sess.run([hypothesis, predicted, accuracy],
feed_dict={X: x_data, Y: y_data})
print("\nHypothesis: ", h, "\nCorrect (Y): ", c, "\nAccuracy: ", a)
소스코드 : https://github.com/hunkim/DeepLearningZeroToAll
'Tech > 머신러닝' 카테고리의 다른 글
keras 실행 에러 - MKL_THREADING_LAYER=GNU or Failed to import pydot (0) | 2018.01.29 |
---|---|
KCD 2018 - 한국 커뮤니티 데이 - 케라스 이야기 (0) | 2018.01.29 |
[정리] 모두를 위한 딥러닝 04 - Multi-Variable Linear Regression (0) | 2018.01.16 |
[맥 MACOS] 딥러닝 개발환경 만들기 - TensorFlow + Jupyter 설치 (2) | 2018.01.14 |
[정리] 모두를 위한 딥러닝 03 - cost 줄이기 (0) | 2018.01.11 |