classification model¶
In [1]:
import tensorflow as tf
import numpy as np
In [2]:
# [털, 날개]
x_data = np.array([
[0, 0],
[1, 0],
[1, 1],
[0, 0],
[0, 0],
[0, 1]
])
# [기타, 포유류, 조류]
y_data = np.array([
[1, 0, 0], # 기타
[0, 1, 0], # 포유류
[0, 0, 1], # 조류
[1, 0, 0], # 기타
[1, 0, 0], # 기타
[0, 0, 1] # 조류
])
# [0, 0] -> [1, 0, 0] # 털x, 날개x -> 기타
# [1, 0] -> [0, 1, 0] # 털o, 날개x -> 포유류
# [1, 1] -> [0, 0, 1] # 털o, 날개o -> 조류
# [0, 0] -> [1, 0, 0] # 털x, 날개x -> 기타
# [0, 0] -> [1, 0, 0] # 털x, 날개x -> 기타
# [0, 1] -> [0, 0, 1] # 털x, 날개o -> 조류
In [3]:
X = tf.placeholder(tf.float32)
Y = tf.placeholder(tf.float32)
# weith와 bias 설정
W = tf.Variable(tf.random_uniform([2, 3], -1., 1.)) # 입력, 출력
b = tf.Variable(tf.zeros([3]))
L = tf.add(tf.matmul(X, W), b)
L = tf.nn.relu(L)
# 출력값을 softmax 함수를 이용하여 다듬어줌
# softmax는 결과값들을 전체 합이 1이 되도록 만들어줌 ==> 확률로 해석 가능
model = tf.nn.softmax(L)
cost function¶
- one-hot encoding을 이용한 대부분의 모델에서는 cross-entropy를 사용
$E(w,\quad b)\quad =\quad -\sum _{ n=1 }^{ N } \left\{ { t_{ n }logy_{ n }+(1-t_{ n })log(1-y_{ n }) } \right\} $
In [4]:
cost =tf.reduce_mean(-tf.reduce_sum(Y*tf.log(model) + (1-Y)*tf.log(1 - model), axis=1))
modeling¶
In [5]:
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.001).minimize(cost)
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)
for step in range(1000):
sess.run(optimizer, feed_dict={X:x_data, Y:y_data})
if (step+1) % 50 == 0:
print("{}, {}".format(step+1,
sess.run(cost, feed_dict={X:x_data, Y:y_data})))
In [6]:
sess.run(model, feed_dict={X:x_data})
Out[6]:
In [7]:
prediction = tf.argmax(model, axis=1)
target = tf.argmax(Y, axis=1)
print("prediction: {}".format(sess.run(prediction, feed_dict={X:x_data})))
print("ground_truth: {}".format(sess.run(target, feed_dict={Y:y_data})))
accuracy¶
In [8]:
is_correct = tf.equal(prediction, target)
# tf.cast : True, False -> 1, 0
accuracy = tf.reduce_mean(tf.cast(is_correct, tf.float32))
print("accuracy: {:.3f}".format(sess.run(accuracy, feed_dict= {X:x_data, Y:y_data})))
In [9]:
from IPython.core.display import display, HTML
display(HTML("<style> .container{width:100% !important;}</style>"))
'Deep_Learning' 카테고리의 다른 글
06.tensorboard01_example (0) | 2018.12.09 |
---|---|
05.deep_neural_net_Costfun2 (0) | 2018.12.09 |
04.deep_neural_net_Costfun1 (0) | 2018.12.09 |
02.linear_regression (0) | 2018.12.09 |
01.tesnsor_and_graph (0) | 2018.12.09 |