深度学习神经网络 MNIST手写数据辨识 2 测试程序

测试相对来说比较简单了。为了间隔性我们每隔5秒打印一次测试结果。导入时间模块和其他模块:

import time #为了延迟
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
import mnist_forward2
import mnist_backward2
TEST_INTERVAL_SECS = 5 #程序循环间隔时间

恢复计算图。接下来的事情就是从模型中恢复计算图了:

with tf.Graph().as_default() as g: #复现计算图

占位和恢复前向传播就先不说了,我们要恢复的是滑动平均类设置的参数(和训练的时候不同,训练是负责训练,而这里要恢复的参数是要使用网络)

        #实例化滑动平均的计算对象
        ema = tf.train.ExponentialMovingAverage(mnist_backward2.MOVING_AVERAGE_DECAY)
        ema_restore = ema.variables_to_restore()
        saver = tf.train.Saver(ema_restore)

我们生成计算准确性的计算图:

        correct_prediction = tf.equal(tf.argmax(y,1),tf.argmax(y_,1))
        accuracy = tf.reduce_mean(tf.cast(correct_prediction,tf.float32))

然后开始计算:注意该计算图首先判断路径下是否有模型文件,然后判断是否加载了模型,如果模型正确加载,就可以使用模型进行测试了。如果模型没有正确加载,就直接输出并返回。

        while True:
            with tf.Session() as sess:
                ckpt = tf.train.get_checkpoint_state(mnist_backward2.MODEL_SAVE_PATH)
                if ckpt and ckpt.model_checkpoint_path: #先判断是否有模型
                    saver.restore(sess,ckpt.model_checkpoint_path) #恢复模型到当前会话
                    global_step = ckpt.model_checkpoint_path.split('/')[-1].split('-')[-1]
                    accuracy_score = sess.run(accuracy,feed_dict={x:mnist.test.images,y_:mnist.test.labels})
                    print("After "+str(global_step) + " training step(s),test accuracy = "+ accuracy_score)

                else:
                    print('No checkpoint file found')
                    return
            time.sleep(TEST_INTERVAL_SECS)

注意每次测试都要休息5秒。

发布了132 篇原创文章 · 获赞 167 · 访问量 7114

猜你喜欢

转载自blog.csdn.net/tiao_god/article/details/104613302