模型转换
转换工具有两种:命令行工具和Python API
TF2.0对模型转换工具发生了非常大的变化,推荐大家使用Python API进行转换,命令行工具只提供了基本的转化功能。转换后的原模型为 FlatBuffers
格式。 FlatBuffers
原来主要应用于游戏场景,是谷歌为了高性能场景创建的序列化库,相比Protocol Buffer有更高的性能和更小的大小等优势,更适合于边缘设备部署。
转换方式有两种:Float格式和Quantized格式
为了熟悉两种方式我们都会使用,针对Float格式的,先使用命令行工具 tflite_convert
,其跟随TensorFlow一起安装(见 一般安装步骤 )。
在终端执行如下命令:
- tflite_convert -h
输出结果如下,即该命令的使用方法:
- usage: tflite_convert [-h] --output_file OUTPUT_FILE
- (--saved_model_dir SAVED_MODEL_DIR | --keras_model_file KERAS_MODEL_FILE)
- --output_file OUTPUT_FILE
- Full filepath of the output file.
- --saved_model_dir SAVED_MODEL_DIR
- Full path of the directory containing the SavedModel.
- --keras_model_file KERAS_MODEL_FILE
- Full filepath of HDF5 file containing tf.Keras model.
在 TensorFlow模型导出 中,我们知道TF2.0支持两种模型导出方法和格式SavedModel和Keras Sequential。
SavedModel导出模型转换:
- tflite_convert --saved_model_dir=saved/1 --output_file=mnist_savedmodel.tflite
Keras Sequential导出模型转换:
- tflite_convert --keras_model_file=mnist_cnn.h5 --output_file=mnist_sequential.tflite
到此,已经得到两个TensorFlow Lite模型。因为两者后续操作基本一致,我们只处理SavedModel格式的,Keras Sequential的转换可以按类似方法处理。