In [1]:
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import matplotlib
%matplotlib inline
import input_data
import numpy
In [2]:
# Import MINST data
import input_data
mnist = input_data.read_data_sets("/tmp/data/", one_hot=True)
In [3]:
import tensorflow as tf
In [4]:
# Parameters
learning_rate = 0.001
training_epochs = 15
batch_size = 100
display_step = 1
In [5]:
# Network Parameters
n_hidden_1 = 256 # 1st layer num features
n_hidden_2 = 256 # 2nd layer num features
n_input = 784 # MNIST data input (img shape: 28*28)
n_classes = 10 # MNIST total classes (0-9 digits)
In [6]:
# tf Graph input
x = tf.placeholder("float", [None, n_input])
y = tf.placeholder("float", [None, n_classes])
In [ ]:
In [7]:
# Store layers weight & bias
weights = {
'h1': tf.Variable(tf.random_normal([n_input, n_hidden_1])),
'h2': tf.Variable(tf.random_normal([n_hidden_1, n_hidden_2])),
'out': tf.Variable(tf.random_normal([n_hidden_2, n_classes]))
}
biases = {
'b1': tf.Variable(tf.random_normal([n_hidden_1])),
'b2': tf.Variable(tf.random_normal([n_hidden_2])),
'out': tf.Variable(tf.random_normal([n_classes]))
}
In [17]:
sess = tf.Session()
summary_writer = tf.train.SummaryWriter('./log/', sess.graph)
sess.run(tf.initialize_all_variables())
In [18]:
layer1 = tf.nn.relu(tf.add(tf.matmul(x, weights['h1']),biases['b1']))
layer2 = tf.nn.relu(tf.add(tf.matmul(layer1,weights['h2']),biases['b2']))
output = tf.add(tf.matmul(layer2,weights['out']),biases['out'])
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(output,y))
optimizer = tf.train.GradientDescentOptimizer(learning_rate=learning_rate).minimize(cost)
# tf.summary.scalar('cost', cost)
# merged = tf.merge_all_summaries()
In [25]:
cost_records = []
for _ in range(100):
for i in range(mnist.train.num_examples/batch_size):
images , labels = mnist.train.next_batch(batch_size)
# tf.image_summary('input', images, 10)
cost_value,_ = sess.run([cost,optimizer],feed_dict={x:images,y:labels})
cost_records.append(cost_value)
# print sess.run(cost,feed_dict={x:mnist.test.images,y:mnist.test.labels})
print sess.run(tf.reduce_mean(tf.cast(tf.equal(tf.arg_max(output,1),tf.arg_max(y,1)) ,'float')) ,
feed_dict={x:mnist.test.images,y:mnist.test.labels})
In [26]:
plt.axis([0, len(cost_records), 0, 20])
plt.plot(cost_records)
plt.show()
In [ ]: