2

我有一个用 tf.estimator 训练的模型,它在训练后被导出,如下所示

 serving_input_fn = tf.estimator.export.build_raw_serving_input_receiver_fn(
feature_placeholders)
 classifier.export_savedmodel(
r'./path/to/model/trainedModel', serving_input_fn)

这给了我一个saved_model.pb和一个包含权重文件的.data文件夹。我可以使用重新加载保存的模型

predictor = tf.contrib.predictor.from_saved_model(r'./path/to/model/trainedModel')

我想在 android 上运行这个模型,这需要模型的.pb格式。如何冻结此预测器以在 android 平台上使用?

4

1 回答 1

0

我没有部署到 Android,因此您可能需要稍微自定义步骤,但这就是我这样做的方式:

  1. <tensorflow_root_installation>/python/tools/freeze_graph.py使用参数运行--input_saved_model_dir=<path_to_the_savedmodel_directory>--output_node_names=<full_name_of_the_output_node>(您可以从中获取输出节点的名称graph.pbtxt,尽管这不是最舒服的方式),--output_graph=frozen_model.pb

  2. (可选)<tensorflow_root_installation>/python/tools/optimize_for_inference.py使用足够的参数运行。或者,您可以查找Graph Transform Tool并有选择地应用优化。

在第 1 步结束时,您将拥有一个没有任何变量的冻结模型,然后您可以将其部署到 Android。

于 2018-03-05T13:28:37.757 回答