In [1]:
import tensorflow as tf

In [2]:
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)


Extracting MNIST_data/train-images-idx3-ubyte.gz
Extracting MNIST_data/train-labels-idx1-ubyte.gz
Extracting MNIST_data/t10k-images-idx3-ubyte.gz
Extracting MNIST_data/t10k-labels-idx1-ubyte.gz

In [3]:
learning_rate = 0.01
training_epochs = 25
batch_size = 100
display_step =1

x = tf.placeholder(tf.float32, [None, 784])
y = tf.placeholder(tf.float32, [None, 10])

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

pred = tf.nn.softmax(tf.matmul(x, W) + b)

cost = tf.reduce_mean(-tf.reduce_sum(y * tf.log(pred), reduction_indices=1))
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)

init = tf.global_variables_initializer()

In [5]:
with tf.Session() as sess:
    sess.run(init)
    
    for epoch in range(training_epochs):
        avg_cost = 0
        total_batch = int(mnist.train.num_examples/batch_size)
        for i in range(total_batch):
            batch_xs, batch_ys = mnist.train.next_batch(batch_size)
            _, c = sess.run([optimizer, cost], feed_dict={x:batch_xs, y:batch_ys})
            avg_cost += c / total_batch
        
        if (epoch+1) % display_step == 0:
            print("Epoch:", "%04d" %(epoch+1), "cost=", "{:.9f}".format(avg_cost))
            
    print("Optimization Finished!")
    
    correct_prediction = tf.equal(tf.argmax(pred, 1), tf.argmax(y,1))
    accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
    print("Accuracy:", accuracy.eval({x:mnist.test.images[:3000],
                                      y:mnist.test.labels[:3000]}))


Epoch: 0001 cost= 1.183976856
Epoch: 0002 cost= 0.665388088
Epoch: 0003 cost= 0.552835703
Epoch: 0004 cost= 0.498673769
Epoch: 0005 cost= 0.465541827
Epoch: 0006 cost= 0.442598672
Epoch: 0007 cost= 0.425587697
Epoch: 0008 cost= 0.412172420
Epoch: 0009 cost= 0.401452602
Epoch: 0010 cost= 0.392427859
Epoch: 0011 cost= 0.384765175
Epoch: 0012 cost= 0.378138547
Epoch: 0013 cost= 0.372444235
Epoch: 0014 cost= 0.367294936
Epoch: 0015 cost= 0.362726896
Epoch: 0016 cost= 0.358616320
Epoch: 0017 cost= 0.354850831
Epoch: 0018 cost= 0.351414102
Epoch: 0019 cost= 0.348307403
Epoch: 0020 cost= 0.345438611
Epoch: 0021 cost= 0.342765692
Epoch: 0022 cost= 0.340246241
Epoch: 0023 cost= 0.337944193
Epoch: 0024 cost= 0.335769319
Epoch: 0025 cost= 0.333688716
Optimization Finished!
Accuracy: 0.887333