在 Stack Overflow 社区的帮助下,我开始了解 TensorFlow 的“高级”API 的复杂性,Estimator
. 我,也许是愚蠢地认为,如果 TensorFlow 和 TensorFlow JS 相处融洽,很可能是通过Estimator
API...
所以在这个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
办法加载导出的模型?
所以:
我的“
output_node_names
”是什么?因为这是一个 SavedModel,
tags
我需要什么?
我将不胜感激任何指导。