我已经使用tensorflowjs-converter导出了预训练的deeplab v3模型。我找到了output_node_name,并使用以下命令来量化和导出模型
tensorflowjs_converter --input_format=tf_frozen_model --output_node_names='SemanticPredictions' --quantization_bytes 1 --saved_model_tags=serve frozen_inference_graph.pb deeplab_web_model_quant
模型已导出,我具有以下目录结构
-rw-rw-r-- 1 ubuntu ubuntu 4194304 Jan 28 20:41 group1-shard1of10
-rw-rw-r-- 1 ubuntu ubuntu 4194304 Jan 28 20:41 group1-shard2of10
-rw-rw-r-- 1 ubuntu ubuntu 4194304 Jan 28 20:41 group1-shard3of10
-rw-rw-r-- 1 ubuntu ubuntu 4194304 Jan 28 20:41 group1-shard4of10
-rw-rw-r-- 1 ubuntu ubuntu 4194304 Jan 28 20:41 group1-shard5of10
-rw-rw-r-- 1 ubuntu ubuntu 4194304 Jan 28 20:41 group1-shard6of10
-rw-rw-r-- 1 ubuntu ubuntu 4194304 Jan 28 20:41 group1-shard7of10
-rw-rw-r-- 1 ubuntu ubuntu 4194304 Jan 28 20:41 group1-shard8of10
-rw-rw-r-- 1 ubuntu ubuntu 4194304 Jan 28 20:41 group1-shard9of10
-rw-rw-r-- 1 ubuntu ubuntu 3257567 Jan 28 20:41 group1-shard10of10
-rw-rw-r-- 1 ubuntu ubuntu 94668 Jan 28 20:41 weights_manifest.json
-rw-rw-r-- 1 ubuntu ubuntu 263831 Jan 28 20:41 tensorflowjs_model.pb
因此,我将此目录传输压缩到本地,并使用以下内容加载导出的模型
const model = await tf.loadFrozenModel(
'http://localhost:8080/tensorflowjs_model.pb',
'http://localhost:8080/weights_manifest.json');
我收到一个奇怪的错误,像这样:
graph_executor.ts:382 Uncaught (in promise) Error: The dict provided in model.execute(dict) has the keys [], but is missing the required keys: [ImageTensor].
at e.checkInput (graph_executor.ts:382)
at e.execute (graph_executor.ts:148)
at e.execute_ (frozen_model.ts:204)
at e.predict (frozen_model.ts:155)
at HTMLButtonElement.runButton.onclick (index.js:13)
我对这个ImageTensor的内容进行了更深入的研究。它在模型中列为输入张量名称。但是,在导出时只能指定output_node_names。反正有调试吗?我不知道如何进行操作,因为错误消息显示得很少。
谢谢您的帮助。
答案 0 :(得分:0)
FrozenModel中的预测方法具有以下特征:
predict(
inputs: tfc.Tensor|tfc.Tensor[]|tfc.NamedTensorMap,
config?: tfc.ModelPredictConfig): tfc.Tensor
|tfc.Tensor[]|tfc.NamedTensorMap
在调用预报方法时,您需要提供输入张量作为第一个参数,该值应对应于您的python模型的ImageTensor定义。