我尝试了一个使用Tensorflow宽深模型的实验。我遵循https://github.com/tensorflow/models/tree/master/official/wide_deep上的所有说明。
来自模型存储库(adult.data and train.data
)的输入数据集相同。我训练了模型并保存了它。 (\tmp\saved_model_dir\147856923
目录)。之后,从保存的模型目录中冻结saved_model.pb
图。我得到了frozen_graph.pb
。现在,我想使用此frozon_graph.pb
进行推断。
在代码中,我能够打开图形并能够获得输入和输出张量操作,但是我不确定如何将输入馈入推理,这基本上是一个csv文件,作为feature_dict。
或简而言之,“我想通过使用frozon_graph.pb文件在宽而深的模型中进行推理”。
import os
import sys
import numpy as np
import tensorflow as tf
import argparse
from google.protobuf import text_format
from official.wide_deep import census_dataset
parser = argparse.ArgumentParser()
parser.add_argument('--data_dir', type=str,help='Directory for input ',required=True)
parser.add_argument('--graph', type=str,help='File name for graph',required=True)
args = parser.parse_args()
graph = tf.Graph()
graph_def = tf.GraphDef()
file_ext = os.path.splitext(args.graph)[1]
with open(args.graph, "rb") as f:
if file_ext == ".pbtxt":
text_format.Merge(f.read(), graph_def)
else:
graph_def.ParseFromString(f.read())
with graph.as_default():
tf.import_graph_def(graph_def)
for op in graph.get_operations():
print(op.name)
input_name = "input_example_tensor"
input_tensor = graph.get_tensor_by_name("import/" + input_name + ":0")
output_name = "head/predictions/logistic"
output_tensor = graph.get_tensor_by_name("import/" + output_name + ":0")
test_file = os.path.join(args.data_dir, census_dataset.EVAL_FILE)
dataset = census_dataset.input_fn(test_file, 1, False, 40)
print(dataset)
with tf.Session(graph=graph) as sess:
"""here I am confused to how pass the feature list"""
predict = output_tensor.eval(feed_dict={input_tensor[0]:dataset})
print("scores on testing data: %".format(predict))