从冻结图到tflite模型的模型转换期间,“ input_tensor_name”应该是什么?

时间:2020-08-12 13:31:53

标签: tensorflow deep-learning tensorflow-lite tf-lite

我使用Deeplab官方Github页面上提供的python脚本,使用自己的数据集训练了语义分割模型。 培训和测试都进展顺利。

然后我使用export_model.py通过以下命令将模型导出到冻结图:

python3 export_model.py \
   --model_variant="xception_65" \
   --crop_size=354 \
   --crop_size=354 \
   --atrous_rates=6 \
   --atrous_rates=12 \
   --atrous_rates=18 \
   --output_stride=16 \
   --checkpoint_path=model.ckpt-1000 \
   --export_path=frozen_inference_graph_354X354.pb

这也成功。现在,我想使用convert_to_tflite.py将冻结的图转换为tflite。该脚本有2个我不理解的输入参数:“ input_tensor_name ”和“ output_tensor_name ”。我应该为“ output_tensor_name ”保留默认值“ ArgMax:0 ”。 “ input_tensor_name ”的值应该是什么?

python3 convert_to_tflite.py \
   --quantized_graph_def_path=frozen_inference_graph_354X354.pb \
   --output_tflite_path=model.tflite \
   --input_tensor_name="?" \
   --output_tensor_name="?"

我找不到与此有关的任何文档。预先感谢!

1 个答案:

答案 0 :(得分:1)

您需要查看文档,尤其是quantize降价文档。

在该文档中,您可以找到有效的--input_tensor_name=MobilenetV2/MobilenetV2/input:0

您需要通过修改参数--quantize_delay_step

来使用文档中显示的策略之一训练量化模型。

为了进行训练,可能您至少需要tensorflow == 1.15.3。参见this issue

如果执行上述所有操作,则冻结图将具有带有指定名称的有效输入张量。您可以使用Netron搜索特定的节点名称来进行检查。最后,使用convert_to_tflite.py脚本创建tflite模型