我没有必要认为冰冻的图表不利于服务,至少我不明白为什么会这样,但那可能只是我自己。我会尽力帮忙,但不能保证什么。
1)冻结图基本上是一个转换的savedModel,所有的权重都设置为常量而不是变量,因此是不可处理的。这意味着你应该在某个地方有一个savedModel。
2)如果没有,让我们先将冻结的图形加载到会话中,然后再对其进行转换。
def load_frozen_model(path_to_model):
path_to_model = check_path(path_to_model, mode="frozen")
with tf.gfile.GFile(path_to_model, "rb") as f:
graph_def = tf.GraphDef()
graph_def.ParseFromString(f.read())
with tf.Session() as sess:
tf.import_graph_def(graph_def, name="")
return sess
builder = tf.saved_model.builder.SavedModelBuilder(saved_model_path="non existing
folder")
session = load_frozen_model("path/to/something.pb")
# create tensorboard logs, run with $ tensorboard --log_dir path_to_log_folder
# check for the names of the input and output you need.
tf.summary.FileWriter(path_to_existing_folder, session.graph)
input_tensor = session.graph.get_tensor_by_name("name_you_need:0")
output_tensor = session.graph.get_tensor_by_name("name_you_need:0")
input_tensor_info = tf.saved_model.utils.build_tensor_info(input_tensor )
output_tensor_info = tf.saved_model.utils.build_tensor_info(output_tensor )
signature = tf.saved_model.signature_def_utils.build_signature_def(
inputs={'input_image': input_tensor_info},
outputs={'final_result': output_tensor_info},
method_name=tf.saved_model.signature_constants.PREDICT_METHOD_NAME)
# save as SavedModel
builder.add_meta_graph_and_variables(session,
[tf.saved_model.tag_constants.SERVING],
signature_def_map={'serving_default':
signature})
builder.save()
3)可以通过执行以下操作加载保存的模型:
def load_saved_model(path_to_model):
with tf.Session() as sess:
tf.saved_model.loader.load(sess, [tag_constants.SERVING], path_to_model)
return sess
4)我不太清楚这个错误“details:”在signature:images中找不到输入张量别名。期望在集合{inputs}.'}“中的输入应该是抱怨的,但可能是您没有正确定义签名,或者您没有正确指定输入。
如果我没有提供你想要的答案,那我很抱歉,但我想这可能是你的问题。不过,我对那些http错误一无所知,也不知道如何为您的模型提供服务器服务,我通常倾向于使用其他东西。
如果你遇到错误,我们可以一起调试,我只是写了这段代码,没有在你的模型上测试。