In [1]:
import sys; print('Python \t\t{0[0]}.{0[1]}'.format(sys.version_info))
import tensorflow as tf; print('Tensorflow \t{}'.format(tf.__version__))
In [2]:
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
In [3]:
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("../mnist-data/", one_hot=True)
In [4]:
mnist.train.images.shape
Out[4]:
In [5]:
plt.figure(figsize=(15,5))
for i in list(range(10)):
plt.subplot(1, 10, i+1)
pixels = mnist.test.images[i+100]
pixels = pixels.reshape((28, 28))
plt.imshow(pixels, cmap='gray_r')
plt.show()
In [6]:
import tflearn as tfl
In [7]:
# Building slp network
network = tfl.input_data(shape=[None, 784], name='input')
network = tfl.fully_connected(network, 10, activation='softmax')
network = tfl.regression(network, optimizer='adam', learning_rate=0.01,
loss='categorical_crossentropy', name='target')
# Training
model = tfl.DNN(network, tensorboard_verbose=0, tensorboard_dir="./tensorboard/tfl")
model.fit({'input': mnist.train.images}, {'target': mnist.train.labels}, n_epoch=10,
validation_set=({'input': mnist.test.images}, {'target': mnist.test.labels}),
snapshot_step=500, show_metric=True, run_id='slp_mnist')
In [8]:
# evaluation
model.evaluate(mnist.test.images, mnist.test.labels)
Out[8]:
In [9]:
# test item #100 is a "six"
pixels = mnist.test.images[100]
result = model.predict([pixels])
dict(zip(range(10), result[0]))
Out[9]:
In [10]:
def test_render(pixels, result, truth):
#pixels, result and truth are np vectors
plt.figure(figsize=(10,5))
plt.subplot(1, 2, 1)
pixels = pixels.reshape((28, 28))
plt.imshow(pixels, cmap='gray_r')
plt.subplot(1, 2, 2)
#index, witdh
ind = np.arange(len(result))
width = 0.49
plt.barh(ind,result, width, color='orange', edgecolor='k', hatch="/")
plt.barh(ind+width,truth,width, color='g', edgecolor='k')
plt.yticks(ind+width, range(10))
plt.margins(y=0)
plt.show()
In [11]:
import random
i = random.randint(0,mnist.test.images.shape[0])
pixels = mnist.test.images[i]
truth = mnist.test.labels[i]
result = model.predict([pixels])[0]
test_render(pixels, result, truth)
In [ ]: