问题来源
网上查询了各种资料,也看了tensorflow lite官网转换模型的章节,不是这里错就是那里搞不定.
最后终于通过两次转换将keras生成的h5文件转换成了tflite文件.遂记录之以备来日查看或做前车之鉴.
注意事项
1. 环境
我所使用的环境是ubuntu 18.04 + python3.6 + tensorflow-gpu1.9 + keras 2.2.0
整个python虚拟环境使用conda进行创建
不保证其他tensorflow版本能够按照步骤成功,特别是tensorflow2.x版本改了一些api
貌似win10有些命令不能用或包缺失,所以windows系统也不能保证成功
2. h5模型
保存模型时不能只保存权重[model.save_weights()],要使用model.save()把模型结构也保存下来
3. tflite_convert工具
从TensorFlow 1.9开始,命令行工具tflite_convert作为Python包的一部分随之安装
translated from : https://tensorflow.google.cn/lite/convert/cmdline_examples
转换
1. h5文件转换为pb文件
谷歌推荐的保存模型的方式是保存模型为 PB 文件,它具有语言独立性,可独立运行,封闭的序列化格式,任何语言都可以解析它,它允许其他语言和深度学习框架读取、继续训练和迁移 TensorFlow 的模型。
它的主要使用场景是实现创建模型与使用模型的解耦, 使得前向推导 inference的代码统一。
另外的好处是保存为 PB 文件时候,模型的变量都会变成固定的,导致模型的大小会大大减小,适合在手机端运行。
还有一个就是,真正离线测试使用的时候,pb格式的数据能够保证数据不会更新变动,就是不会进行反馈调节啦。
abstract from : https://blog.csdn.net/fu6543210/article/details/80343345
使用keras_to_tensorflow.py文件在命令行中转换
1.1 获取keras_to_tensorflow.py文件
从github仓库克隆代码
git clone http://www.github.com/amir-abdi/keras_to_tensorflow.git
1.2 转到keras_to_tensorflow目录
cd ./keras_to_tensorflow
1.3使用keras_to_tensorflow.py进行转换
python keras_to_tensorflow.py --input_model=[h5文件目录] --output_model=[待生成的p