[실습] Softmax Classification

# [x1, x2, x3, x4] - 4개의 Element 가 있는 데이터
x_data = [[1, 2, 1, 1], [2, 1, 3, 2], [3, 1, 3, 4], [4, 1, 5, 5], [1, 7, 5, 5], 
                [1, 2, 5, 6], [1, 6, 6, 6], [1, 7, 7, 7]]
# 여러 개의 class가 있기 때문에 0 1 2 로 보고 One hot encoding 방식을 사용해서 해당하는 거만 1로 표시한다.
y_data = [[0, 0, 1], [0, 0, 1], [0, 0, 1], [0, 1, 0], [0, 1, 0], [0, 1, 0], [1, 0, 0], [1, 0, 0]]

X = tf.placeholder("float", [None, 4])
Y = tf.placeholder("float", [None, 3])
nb_classes = 3 #클래스의 개수

#X 4개, Y 3개
W = tf.Variable(tf.random_normal([4, nb_classes]), name='weight')
#b는 Y와 같다.
b = tf.Variable(tf.random_normal([nb_classes]), name='bias')

# tf.nn.softmax computes softmax activations
# softmax = exp(logits) / reduce_sum(exp(logits), dim)
hypothesis = tf.nn.softmax(tf.matmul(X, W) + b)

#Cross entropy cost/loss
cost = tf.reduce_mean(-tf.reduce_sum(Y * tf.log(hypothesis), axis=1))
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.1).minimize(cost)

#Launch graph
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    if step % 200 == 0:
      print(step, sess.run(cost, feed_dict={X: x_data, Y: y_data}))

Test & one - hot encoding (출력)

hypothesis = tf.nn.softmax(tf.matmul(X, W) + b)

# Testing & one-hot encoding
a = sess.run(hypothesis, feed_dict={X: [[1, 11, 7, 9]]})
print(a, sess.run(tf.arg_max(a, 1))) 
# [[ 1.38904958e-03 9.98601854e-01 9.06129117e-06 ]] [1] 
# ... arg_max 를 하게 되면 ㅔ일 큰 값인 두번째를 선택해서 1을 돌려준다.(인덱스)

print('-------------------')

b = sess.run(hypothesis, feed_dict={X: [[1, 3, 4, 3]]})
print(b, sess.run(tf.arg_max(b, 1)))

print('-------------------')

c = sess.run(hypothesis, feed_dict={X: [[1, 1, 0, 1]]})
print(c, sess.run(tf.arg_max(c, 1)))

print('-------------------')

all = sess.run(hypothesis, feed_dict={X: [[1, 11, 7, 9], [1, 3, 4, 3], [1, 1, 0, 1]]})
print(all, sess.run(tf.arg_max(all, 1)))
#[[ 1.38904e-03 9.986018e-01 9.0612911e-06 ]
# [ 9.3119204e-01 6.29020557e-02 5.905895e-03 ]
# [ 1.27327e-08 3.341129e-04 9.9966e-01 ]]
# [1 0 2]

print('-------------------')

results for ""

    No results matching ""