TensorFlow estimator加载pb模型预测TfRecord中的样本
最近在上一个模型,需要测试模型输出与线上server predict值的一致性,模型用到了高级API estimator
以及tf record格式的数据,很多地方还不是很熟悉。为了测一致性我构造了一个只有一条样本的数据,然后想在本地加载模型export出来的pb格式文件,再load 数据输出预测值。在我的场景下是要捞模型某一层的数据,具体实现如下:
def predict_with_modelpb(self, flags_obj, filenames):
"""
filenames: 要读取的文件名list
"""
if len(filenames) == 0:
tf.logging.error("can not find any input files!")
return None
print(filenames)
# 要加载的pb模型路径
export_dir = "./model-local/export/saved_model/1584341279"
self.data_reader = DataReader(None, flags_obj.feature_config_path)
with tf.Graph().as_default(), tf.Session(config=tf.ConfigProto(allow_soft_placement=True)) as session:
coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(sess=session, coord=coord)
tf.saved_model.loader.load(session, ["serve"], export_dir)
tf.get_default_graph()
# 从模型结构output中获取输出层name
y = session.graph.get_tensor_by_name('bn4_1/LeakyRelu:0')
# 从tf record中读取数据
options = tf.python_io.TFRecordOptions(tf.python_io.TFRecordCompressionType.GZIP)
filename_queue = tf.train.string_input_producer([filenames[0]], )
reader = tf.TFRecordReader(name='example_reader', options=options)
_, serialized_example = reader.read(filename_queue)
feature_dict = self.data_reader.build_example