我有一个用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平台上使用?
答案 0 :(得分:0)
我没有部署到Android,所以您可能需要稍微自定义一些步骤,但这就是我这样做的方法:
使用参数y = -10
max(y, 0) -> 0
min(0, 10) -> 0
answer = 0 # -10 becomes 0
y = 3
max(y, 0) -> 3
min(3, 10) -> 3
answer = 3 # 3 becomes 3
y = 20
max(y, 0) -> 20
min(20, 10) -> 10
answer = 10 # 20 becomes 10
,<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
。或者,您可以查找Graph Transform Tool并有选择地应用优化。
在步骤1结束时,您已经拥有一个没有变量的冻结模型,然后您可以将其部署到Android。