神经网络训练完成后需要样本来验证神经网络的性能,或者说使用神经网络的分类功能。需要加载你当前训练完成后神经网络的权重对样本进行计算,输出一个理想的结果。
首先需要将需要验证的图像转换成为神经网络batch的大小,比如说:我的神经网络输入的batch大小是10*224*224*3的,而我读入的图像是224*224*3大小的图像,那么我需要用numpy的concat函数将输入的图像转换成为10*224*224*3大小。
接下来需要加载训练中保存的神经网络模型和参数,用saver即可实现。然后定义你输入的节点和想要看的输出节点,然后run即可。
代码如下
- import numpy as np
- import tensorflow as tf
-
- img = load_image("data/cat.jpg")
- imgs = np.concatenate((img,img,img,img,img,img,img,img,img,img),axis=0)#此处将输入图像调整为神经网络的输入大小
- print(imgs)
- sess = tf.Session()
-
- new_saver = tf.train.import_meta_graph("/tmp/resnet_train/data/model.ckpt-51.meta")
- new_saver.restore(sess, "/tmp/resnet_train/data/model.ckpt-51")#将训练图和数据取出
-
- graph = tf.get_default_graph()
- prob_tensor = graph.get_tensor_by_name("prob:0")
- images = graph.get_tensor_by_name("images:0")#定义输入输出
- for op in graph.get_operations():
- print op.name
-
- #init = tf.initialize_all_variables()
- #sess.run(init)
- print "graph restored"
-
- batch = imgs.reshape((10, 224, 224, 3))
-
- feed_dict = {images: batch}
-
- prob = sess.run(prob_tensor, feed_dict=feed_dict)
-
- print_prob(prob[0])#输出判决结果
千万不要用tf去读取图像数据,否则会卡死,我也不知道怎么回事。。