Tensorflow - 如何冻结 SavedModel 中的 .pb 以用于 TensorFlowInferenceInterface 中的推理?

Gen*_*337 6 python android tensorflow

根据这个答案,我可以MetaGraph从 a 中提取SavedModel,然后冻结MetaGraph's GraphDef,然后在其freeze_graph.py上运行脚本GraphDef.pb在 Android 中使用。我的问题:我究竟如何提取MetaGraph(然后是它的GraphDef)?因为tf.saved_model.loader.load(sess, [tag_constants.SERVING], <model_path>)返回 aMetaGraphDef而不是 a MetaGraph

Gen*_*337 2

我刚拿到。事实证明,在删除我从 获得的 Tensorflow 版本conda并将其替换为来自 的版本后pip,我可以这样做:

from tensorflow.python.tools import freeze_graph
from tensorflow.python.saved_model import tag_constants

input_saved_model_dir = "F:/python_machine_learning_codes/estimator_exported_model/1509418513"
output_node_names = "softmax_tensor"
input_binary = False
input_saver_def_path = False
restore_op_name = None
filename_tensor_name = None
clear_devices = False
input_meta_graph = False
checkpoint_path = None
input_graph_filename = None
saved_model_tags = tag_constants.SERVING

freeze_graph.freeze_graph(input_graph_filename, input_saver_def_path,
                            input_binary, checkpoint_path, output_node_names,
                              restore_op_name, filename_tensor_name,
                              output_graph_filename, clear_devices, "", "", "",
                              input_meta_graph, input_saved_model_dir,
                            saved_model_tags)
Run Code Online (Sandbox Code Playgroud)

from 的内容conda-forge不完整,即使安装了pip,我也必须复制freeze_graph.pysaved_model_utilsfrom的内容tensorflow-master。另外,上面的代码大部分是从freeze_graph_test.py.