我可以将tensorflow初始pb模型转换为tflite模型吗?

时间:2018-03-25 09:54:35

标签: tensorflow tensorflow-lite

我看到转换tensorflow pb模型的指南,仅给出了mobilenet模型

https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/lite#step-2-model-format-conversion

所以我的问题是,我可以将tensorflow初始pb模型转换为tflite模型吗?

如果是,我在哪里可以获得检查点(ckpt)文件?我在https://github.com/tensorflow/models/tree/master/research/slim/nets的初始模型中找不到它们。

我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

是的,您还应该能够将初始模型转换为TFLITE。如果图形尚未冻结,则只需要检查点。如果图形已经冻结(我假设),您应该能够使用以下命令转换它:

bazel run --config=opt //tensorflow/contrib/lite/toco:toco -- \
--input_file=**/path/to/your/graph.pb** \
--output_file=**/path/to/your/output.tflite** \
--input_format=TENSORFLOW_GRAPHDEF \
--output_format=TFLITE \
--inference_type=FLOAT \
--input_shape=1,299,299,3 \
--input_array=**your_input** \
--output_array=**your_final_tensor**

(您必须使用适用于您的案例的参数替换星号之间的文本;例如--inputs = Mul)

请注意--inputs = Mul TFLITE(decodejpeg,expand_dims)不支持Inception v3中使用的一些TF命令,因为它们通常不必由移动电话上的模型采用(这些任务直接在应用程序代码中完成)。因此,您必须使用TF Lite定义要挂钩到图形的位置。

如果不使用input_array,您可能会收到以下错误消息:

  

标准TensorFlow Lite运行时不支持模型中的某些运算符。如果您有自定义实现,则可以使用--allow_custom_ops禁用此错误。以下是您需要自定义实现的运算符列表:DecodeJpeg,ExpandDims。

我希望我能帮助你。我只是在努力转换重新训练的图形。