2.4.2 转换模型
TensorFlow Lite的目的是在各种设备上高效执行模型,这种高效部分源于在存储模型时,采用了一种特殊的格式。在TensorFlow Lite使用TensorFlow模型之前,必须转换成这种格式。
转换模型不仅减小了模型文件大小,还引入了不影响准确性的优化措施。开发人员可以在进行一些取舍的情况下,进一步减小模型文件大小,并提高执行速度。可以使用TensorFlow Lite转换器(Converter)选择要执行的优化措施。
注意:因为TensorFlow Lite支持部分TensorFlow运算符,所以并非所有模型都能转换。
通过使用转换器,可以将各种输入类型转换为模型。
1.TensorFlow Lite转换器
TensorFlow Lite转换器是一个将训练好的TensorFlow模型转换成TensorFlow Lite格式的工具,在里面引入了优化措施参数以实现更精确的设置。转换器以Python API的形式提供。例如,在下面的代码中,演示了将一个TensorFlow SavedModel转换成TensorFlow Lite格式的过程。
开发者可以用类似的方法转换TensorFlow 2.0模型,虽然也能用命令行进行转换,但是仍推荐用Python API进行转换。
2.转换选项
1)当转换TensorFlow 1.x模型时,可转换类型如下。
· SavedModel文件夹。
· FrozenGraphDef (通过freeze_graph.py生成的模型)。
· Keras HDF5模型。
· 从tf.Session得到的模型。
2)当转换为TensorFlow 2.x模型时,可转换类型如下。
· SavedModel文件夹。
· tf.keras模型。
· 具体函数(Concrete Functions):用户自定义函数。
可以将转换器配置为使用各种优化参数,这些优化措施可以提高性能,减少文件大小。
到目前为止,TensorFlow Lite仅支持一部分TensorFlow运算符,长期目标是将来能支持全部的TensorFlow运算符。
如果在需要转换的模型中含有不受支持的运算符,可以使用TensorFlow Select中包含的来自TensorFlow的运算符,但这会使得部署到设备上的二进制文件更大。