Tensorflow2016. 9. 28. 17:00


Tensorflow에서 제공하는 기본 데이터셋인 MNIST로 가볍게 돌려볼 수 있는 튜토리얼을 제공하고 있습니다.


이것을 통해서 간단하게 Tensorflow로 ML을 돌려볼 수 있는데, 대략 이런 함수들이 있구나 이렇게 흘러가는구나 정도는 가볍게 알수 있는 쉬운 예제인 것 같습니다.


일단 모라도 작성해서 돌려보고 결과가 나오는 것을 봐야 아! 걸음마를 땠구나 하는 기분이 들기 때문에, 직접 한번 작성해보고 실행을 해보는 것이 좋은 것 같습니다.


Tensorflow 튜토리얼 문서 바로가기



test1.py

import tensorflow as tf


# MNIST 데이터 불러오기
from tensorflow.examples.tutorials.mnist import input_data
mnistData = input_data.read_data_sets("MNIST_data/", one_hot=True)

# 28*28 image data features
x = tf.placeholder(tf.float32, [None, 784])

# theta
W = tf.Variable(tf.zeros([784,10]))

# bias term
b = tf.Variable(tf.zeros([10]))

# h(x) using softmax
y = tf.nn.softmax(tf.matmul(x, W) + b)

# prediction values
y_ = tf.placeholder(tf.float32, [None, 10])

# Cost function
cross_entropy = tf.reduce_mean(- tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))

# Gradient descent
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)

# 모든 변수 초기화

init = tf.initialize_all_variables()

# Session 생성

sess = tf.Session()

sess.run(init)

# training
for i in range(1000):
batch_xs, batch_ys = mnistData.train.next_batch(100)
sess.run(train_step, feed_dict={x: batch_xs, y_:batch_ys})

# training 결과 확인

correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
print(sess.run(accuracy, feed_dict={x: mnistData.test.images, y_: mnistData.test.labels}))


튜토리얼에서 사용한 full source 입니다.


실행을 시켜보면 아래와 같이 약 92%의 정확도가 나옵니다.

92%면 대단한데~ 하고 있을때 튜토리얼 문서에서는 심하게 구린 결과라고 말하고 있습니다...ㅜㅜ





Posted by 대소니

댓글을 달아 주세요