【问题标题】:Error Trying to Convert TensorFlow Saved Model to TensorFlow.js Model尝试将 TensorFlow 保存的模型转换为 TensorFlow.js 模型时出错
【发布时间】:2018-07-09 16:18:49
【问题描述】:

我已成功训练 DNNClassifier 对文本(来自在线讨论板的帖子)进行分类。我使用以下代码创建并保存了我的模型:

embedded_text_feature_column = hub.text_embedding_column(
    key="sentence",
    module_spec="https://tfhub.dev/google/nnlm-de-dim128/1")
feature_columns = [embedded_text_feature_column]
estimator = tf.estimator.DNNClassifier(
    hidden_units=[500, 100],
    feature_columns=feature_columns,
    n_classes=2,
    optimizer=tf.train.AdagradOptimizer(learning_rate=0.003))
feature_spec = tf.feature_column.make_parse_example_spec(feature_columns)
serving_input_receiver_fn = tf.estimator.export.build_parsing_serving_input_receiver_fn(feature_spec)
estimator.export_savedmodel(export_dir_base="/my/dir/base", serving_input_receiver_fn=serving_input_receiver_fn)

现在我想使用 tfjs-converter 将我保存的模型转换为与 JavaScript 版本的 TensorFlow tf.js 一起使用。

当我发出以下命令时:

tensorflowjs_converter --input_format=tf_saved_model --output_node_names='dnn/head/predictions/str_classes,dnn/head/predictions/probabilities' --saved_model_tags=serve /my/dir/base /my/export/dir

…我收到此错误消息:

ValueError:节点 'dnn/input_from_feature_columns/input_layer/sentence_hub_module_embedding/module_apply_default/embedding_lookup_sparse/embedding_lookup' 预计与未知节点 'dnn/input_from_feature_columns/input_layer/sentence_hub_module_embedding 位于同一位置

我认为我在保存模型时做错了什么。

保存估算器模型以便可以使用 tfjs-converter 进行转换的正确方法是什么?

The source code of my project can be found on GitHub.

【问题讨论】:

  • 目前看来,使用可用的库是不可能的。除了这个似乎来自冻结词嵌入的托管问题,tfjs-converter doesn't support all the ops in the graph。所以即使主 TF 库会冻结并恢复正确的图形,它仍然会包含一些不受支持的操作,例如 LookupTableFindV2StringToHashBucketFast。自述文件说要提交问题以让开发人员知道要支持哪些操作,但当前未在 repo 上启用问题。
  • Awww,太糟糕了......而且令人惊讶的是,因为他们在 tfjs 存储库中有一个词嵌入示例,imdb 电影评级的情感分析,与我正在做的几乎相同:@987654324 @

标签: javascript python tensorflow


【解决方案1】:

你可以试试这个,我认为这会奏效。只需在代码中输入您的输入格式即可。

tensorflowjs_converter --input_format keras \
                       path/to/my_model.h5 \
                       path/to/tfjs_target_dir

【讨论】:

  • 谢谢,我试试看
  • 运气好吗?我不断遇到 Unsupported Ops 错误。另外, input_format keras 在这里正确吗?认为它应该是从 estimator.export_savedmodel() 导出的 tf_saved_model。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-21
  • 1970-01-01
  • 2020-10-14
  • 2018-06-14
  • 2023-01-29
相关资源
最近更新 更多