模型转换

转换工具有两种:命令行工具和Python API

TF2.0对模型转换工具发生了非常大的变化,推荐大家使用Python API进行转换,命令行工具只提供了基本的转化功能。转换后的原模型为 FlatBuffers 格式。 FlatBuffers 原来主要应用于游戏场景,是谷歌为了高性能场景创建的序列化库,相比Protocol Buffer有更高的性能和更小的大小等优势,更适合于边缘设备部署。

转换方式有两种:Float格式和Quantized格式

为了熟悉两种方式我们都会使用,针对Float格式的,先使用命令行工具 tflite_convert ,其跟随TensorFlow一起安装(见 一般安装步骤 )。

在终端执行如下命令:

  1. tflite_convert -h

输出结果如下,即该命令的使用方法:

  1. usage: tflite_convert [-h] --output_file OUTPUT_FILE
  2. (--saved_model_dir SAVED_MODEL_DIR | --keras_model_file KERAS_MODEL_FILE)
  3. --output_file OUTPUT_FILE
  4. Full filepath of the output file.
  5. --saved_model_dir SAVED_MODEL_DIR
  6. Full path of the directory containing the SavedModel.
  7. --keras_model_file KERAS_MODEL_FILE
  8. Full filepath of HDF5 file containing tf.Keras model.

TensorFlow模型导出 中,我们知道TF2.0支持两种模型导出方法和格式SavedModel和Keras Sequential。

SavedModel导出模型转换:

  1. tflite_convert --saved_model_dir=saved/1 --output_file=mnist_savedmodel.tflite

Keras Sequential导出模型转换:

  1. tflite_convert --keras_model_file=mnist_cnn.h5 --output_file=mnist_sequential.tflite

到此,已经得到两个TensorFlow Lite模型。因为两者后续操作基本一致,我们只处理SavedModel格式的,Keras Sequential的转换可以按类似方法处理。