将使用tf.estimator训练和保存的模型转换为.pb

问题描述 投票:2回答:1

我有一个用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平台上冻结此预测器?

tensorflow tensorflow-serving tensorflow-estimator
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。

© www.soinside.com 2019 - 2024. All rights reserved.