通过上一遍文章,我们能够得到比较简单的mnist训练模型。
在根目录的save文件夹下有四个文件,保存的是训练模型,文件具体内容自行查找资料,我们加载模型时,只需定义出save文件夹下的路径即可
下面代码包含:
一:从测试集中随机挑选出两张图像用于显示并且识别
二:加载训练模型
import tensorflow as tf
#加载mnist库,从在测试集中挑选要测试的图片
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
import pylab#用于画图,很方便
########################################################################
pylab.mpl.rcParams['font.sans-serif'] = ['SimHei'] # 若不添加,中文无法在图中显示
# import matplotlib
# matplotlib.rcParams['axes.unicode_minus']=False # 若不添加,无法在图中显示负号
###########################################################################
tf.reset_default_graph()#可以清空默认图里所有的节点。
#输入测试数据
x = tf.placeholder(tf.float32, [None, 784]) #测试图片
#权重和偏置
W = tf.Variable(tf.random_normal([784, 10]))
b = tf.Variable(tf.zeros([10]))
#构建模型
pred = tf.nn.softmax(tf.matmul(x, W) + b) # Softmax分类
#保存或者打开模型
saver = tf.train.Saver()
#保存或者打开模型的路径
model_path = "save/model"
###############################################################################
#启动会议
with tf.Session() as sess:
#变量初始化
sess.run(tf.global_variables_initializer())
#打开训练好的模型
saver.restore(sess, model_path)
#测试模型
#从测试集中随机取2张图片,图片赋给batch_xs,对应的标签赋给batch_ys
batch_xs,batch_ys = mnist.test.next_batch(2)
#output为2张图片通过softmax得到的最大概率对应的标签
output = tf.argmax(pred, 1)
#正式运行,先X输入2张测试图片,再output得到2张图片概率最大对应的标签并赋给outputval
#最后pred得到2张图片再0-9上各自的概率
outputval, predv = sess.run([output, pred], feed_dict={x: batch_xs})
print(outputval, predv)
#######################################################################
print(batch_xs.shape)
pylab.subplot(121)
im = batch_xs[0]
im = im.reshape(-1, 28)#把原本在mnist中为一行的数据变成二维的28列矩阵,-1:不用指定具体为多少行
pylab.title('该图片中的数字为:'+ str(outputval[0]))
pylab.imshow(im)
pylab.subplot(122)
im = batch_xs[1]
im = im.reshape(-1, 28)
pylab.title('该图片中的数字为:' + str(outputval[1]))
pylab.imshow(im)
pylab.show()
结果: