先看上一篇训练mnist数据集训练
测试的过程中,主要是加载模型,获取变量的过程。
我们只要获取输入变量x,预测变量pred即可进行数据预测
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets('./data/',one_hot=True)
test_data = mnist.test.images
test_labels = mnist.test.labels
print(test_data[10:12].shape)
print(test_labels[10:12].shape)
print(test_labels[10:12])
“”“
(2, 784)
(2, 10)
[[1. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]]
”“”
begin,end = 100,106
data_set = test_data[begin:end]
print(begin,end)
#加载计算图
saver = tf.train.import_meta_graph("./model/model.ckpt.meta")
with tf.Session() as sess:
#加载模型中的数据
saver.restore(sess,"./model/model.ckpt")
#获得变量,注意后面的变量名称,和训练中的一一对应。
x_input = tf.get_default_graph().get_tensor_by_name("input-x:0")
#y_input = tf.get_default_graph().get_tensor_by_name("input-y:0")
#获得预测的变量
y_output = tf.get_default_graph().get_tensor_by_name("Add_2:0")
#acc_name = tf.get_default_graph().get_tensor_by_name("Mean_1:0")
#acc = sess.run(acc_name,feed_dict={x_input:test_data[10:100], y_input:test_labels[10:100]})
#print("test_acc is {}".format(acc))
#计算前向传播,对pred传入一个x,即可得到预测值,再与labels进行比较即可
acc = sess.run(y_output,feed_dict={x_input:data_set})
nums = tf.argmax(acc,1)
t = sess.run(nums)
print(t)
"""
(10, 12)
INFO:tensorflow:Restoring parameters from ./model/model.ckpt
[0 6]
"""
由上得到在测试数据集中第10-11个图像经过预测得到的是 0和6
下面看一下标签中的数据是否为0和6
import matplotlib.pyplot as plt
length = end -begin
#每一个数据是784维的,要转变成(28,28),下面是一起把所有的数据都转变
img = data_set.reshape(end - begin, 28, 28)
print(img[0].shape)
print("image show pred value")
for j in range(img.shape[0]):
plt.subplot("1{}{}".format(length,j+1)),plt.imshow(img[j])
plt.show()
print("this is labels value")
print(t)