神经网络训练完成后需要样本来验证神经网络的性能,或者说使用神经网络的分类功能。需要加载你当前训练完成后神经网络的权重对样本进行计算,输出一个理想的结果。
首先需要将需要验证的图像转换成为神经网络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去读取图像数据,否则会卡死,我也不知道怎么回事。。