TensorFlow.js转换冻结模型失败:输入格式参数无效报错
解决TensorFlow.js转换器
tf_frozen_model输入格式报错问题 刚遇到这个报错我太熟悉了——这是因为你当前使用的TensorFlow.js转换器(tfjs-converter)版本已经移除了tf_frozen_model这个输入格式选项,取而代之的是用更通用的tf_saved_model来处理冻结模型,或者你也可以降级到旧版本继续使用原参数。下面分两种方案给你解决:
方案1:用新版本转换器转换冻结模型(推荐)
新版本的tfjs-converter把冻结模型的处理整合到了tf_saved_model格式中,只需要额外指定模型的输入输出节点名称即可。步骤如下:
- 首先确认你的冻结模型的输入、输出节点名称。如果不知道,可以用TensorFlow的
saved_model_cli工具查看,或者通过TensorBoard可视化模型结构来获取。 - 执行以下转换命令(替换成你自己的路径和节点名):
tensorflowjs_converter \ --input_format=tf_saved_model \ --input_node_names="your_input_node_name" \ --output_node_names="your_output_node_name" \ ./path/to/your/frozen_model.pb \ ./path/to/output/tfjs_model_folder
方案2:降级到支持tf_frozen_model的旧版本
如果你习惯用原来的参数格式,可以安装1.x系列的tfjs-converter旧版本(比如1.7.4,这是最后几个支持该参数的版本之一):
npm install -g @tensorflow/tfjs-converter@1.7.4
安装完成后,就可以用你原来的命令结构了:
tensorflowjs_converter \ --input_format=tf_frozen_model \ --input_node_names="your_input_node_name" \ --output_node_names="your_output_node_name" \ ./path/to/your/frozen_model.pb \ ./path/to/output/tfjs_model_folder
额外提示
官方现在更推荐使用SavedModel格式作为转换源,因为冻结模型是较旧的TensorFlow模型格式,后续的兼容性可能会越来越差,所以优先考虑方案1会更稳妥。
内容的提问来源于stack exchange,提问作者Eric Peter
相关产品推荐
相关产品推荐

