import tensorflow as tf
from tensorflow.python.platform import gfile
import numpy as np
import time
(x_train, y_train),(x_test, y_test) = tf.keras.datasets.mnist.load_data()
config = tf.ConfigProto()
sess = tf.Session(config=config)
with gfile.FastGFile('lenet5.pb', 'rb') as f:
graph_def = tf.GraphDef()
graph_def.ParseFromString(f.read())
sess.graph.as_default()
tf.import_graph_def(graph_def, name='')
opname = [tensor.name for tensor in tf.get_default_graph().as_graph_def().node]
print(opname)
# 获取输入tensor
x = tf.get_default_graph().get_tensor_by_name("input_1:0") # 不知道输入名时通过节点名查,一般情况下是每一个节点tf.get_default_graph().as_graph_def().node[0].name,名字构成后有个:0
print("input:", x)
# 获取预测tensor
pred = tf.get_default_graph().get_tensor_by_name("dense_1/Softmax:0") # tf.get_default_graph().as_graph_def().node[-1].name,有可能不是是最后一一个
print(pred)
start = time.time()
for tx,ty in zip(x_test,y_test):
pre = sess.run(pred, feed_dict={x:tx.reshape(1,28,28,1)/255}) # 预测直接run输出,传入输入
pre = np.argmax(pre)
# print("Test Case: " + str(ty))
# print("Prediction: " + str(pre))
print(time.time()-start)