我可以将 tensorflow inception pb 模型转换为 tflite 模型吗?
Posted
技术标签:
【中文标题】我可以将 tensorflow inception pb 模型转换为 tflite 模型吗?【英文标题】:Can I convert the tensorflow inception pb model to tflite model? 【发布时间】:2018-09-03 14:23:28 【问题描述】:我看到了转换tensorflow pb模型的指南,只给了mobilenet模型
https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/lite#step-2-model-format-conversion
所以我的问题是,
如果是,我在哪里可以获得检查点 (ckpt) 文件?我在https://github.com/tensorflow/models/tree/master/research/slim/nets 中找不到它们的初始模型。
我错过了什么吗?
【问题讨论】:
你得到答案了吗? 【参考方案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 不支持 Inception v3 中使用的一些 TF 命令(decodejpeg、expand_dims),因为它们通常不必被手机上的模型采用(这些任务直接在应用程序代码中完成)。因此,您必须使用 TF Lite 定义要挂钩到图表的位置。
如果不使用 input_array,您可能会收到以下错误消息:
标准 TensorFlow Lite 运行时不支持模型中的某些运算符。如果您有他们的自定义实现,您可以使用 --allow_custom_ops 禁用此错误。以下是您需要自定义实现的运算符列表:DecodeJpeg、ExpandDims。
希望能帮到你。我只是在努力转换重新训练的图表。
【讨论】:
您是否将重新训练的图转换为 tflite?以上是关于我可以将 tensorflow inception pb 模型转换为 tflite 模型吗?的主要内容,如果未能解决你的问题,请参考以下文章
tensorflow系列:如何使用inception resnet v2网络
将预训练的 inception_resnet_v2 与 Tensorflow 结合使用
TensorFlow slim inception resnet v2 推理
Tensorflow学习(练习)—下载骨骼图像识别网络inception数据集