3

在 Stack Overflow 社区的帮助下,我开始了解 TensorFlow 的“高级”API 的复杂性,Estimator. 我,也许是愚蠢地认为,如果 TensorFlow 和 TensorFlow JS 相处融洽,很可能是通过EstimatorAPI...

所以在这个Colab中,我有一个简单的自定义Estimator,它被简单地连接起来,以便像.train_and_evaluate工作这样的方法,并且在“训练”之后Estimator通过export_savedmodel.

现在,假设我想继续通过 TensorFlow js 在浏览器中使用这个经过训练的模型。

幸运的是,有一个关于如何为 TensorFlow JS转换 a 的指南:saved_model

tensorflowjs_converter \
    --input_format=tf_saved_model \
    --output_node_names='MobilenetV1/Predictions/Reshape_1' \
    --saved_model_tags=serve \
    /mobilenet/saved_model \
    /mobilenet/web_model

虽然论点有描述......

  • --output_node_names输出节点的名称,以逗号分隔。
  • --saved_model_tags 仅适用于 SavedModel 转换,要加载的 MetaGraphDef 的标签,以逗号分隔的格式。默认服务。
  • --signature_name 仅适用于 TensorFlow Hub 模块转换,签名加载。默认为默认值。请参阅https://www.tensorflow.org/hub/common_signatures/

对于Colab中的演示估算器,我不确定应该用什么替换这些。

为什么?对于初学者来说,best_model使用 的导出器serving_input_receiver_fn在通过加载时具有不同的输出

from tensorflow.contrib import predictor
predict_fn = predictor.from_saved_model('<exported_location>')

比从

estimator.predict(lambda: predict_input_fn(pred_features), yield_single_examples=False)

即前者输出的预测特征特征的关键是后者的“输出”和“标签”。

哪个,原谅我的小咆哮,为什么没有Estimator办法加载导出的模型?

所以:

  1. 我的“ output_node_names”是什么?

  2. 因为这是一个 SavedModel,tags我需要什么?

我将不胜感激任何指导。

4

0 回答 0