您在 TensorFlow Lite 中使用的机器学习 (ML) 模型最初是使用 TensorFlow 核心库和工具构建和训练的。在使用 TensorFlow 核心构建模型后,您可以将其转换为更小、更有效的 ML 模型格式,称为 TensorFlow Lite 模型。本部分提供了将 TensorFlow 模型转换为 TensorFlow Lite 模型格式的指导。
转换工作流
根据机器学习模型的内容,将 TensorFlow 模型转换为 TensorFlow Lite 格式可能需要采用几种方法。作为该过程的第一步,您应该评估模型以确定是否可以直接转换。此评估确定模型的内容是否基于其使用的 TensorFlow 操作获得标准 TensorFlow Lite 运行时环境的支持。如果您的模型使用超出支持集的操作,您可以选择重构模型或使用高级转换技术。
下图显示了转换模型的高级步骤。
图 1。TensorFlow Lite 转换工作流。
以下部分概述了使用 TensorFlow Lite 评估和转换模型的过程。
输入模型格式
您可以将转换器与以下输入模型格式配合使用
- SavedModel(推荐):以一组文件形式保存在磁盘上的 TensorFlow 模型。
- Keras 模型:使用高级 Keras API 创建的模型。
- Keras H5 格式:Keras API 支持的 SavedModel 格式的轻量级替代方案。
- 由具体函数构建的模型:使用低级 TensorFlow API 创建的模型。
您可以将 Keras 和具体函数模型都保存为 SavedModel,并使用推荐路径进行转换。
如果您有 Jax 模型,可以使用 TFLiteConverter.experimental_from_jax
API 将其转换为 TensorFlow Lite 格式。请注意,此 API 在处于实验模式时可能会发生更改。
转换评估
在尝试转换模型之前,评估模型是一个重要的步骤。在评估时,您需要确定模型的内容是否与 TensorFlow Lite 格式兼容。您还应该确定模型是否适合在移动和边缘设备上使用,具体来说,要考虑模型使用的数据大小、硬件处理要求以及模型的总体大小和复杂性。
对于许多模型,转换器应该可以开箱即用。但是,TensorFlow Lite 内置算子库支持 TensorFlow 核心算子子集,这意味着某些模型在转换为 TensorFlow Lite 之前可能需要执行其他步骤。此外,TensorFlow Lite 支持的某些操作出于性能原因而限制了使用要求。请参阅算子兼容性指南,以确定您的模型是否需要重构才能进行转换。
模型转换
TensorFlow Lite 转换器采用 TensorFlow 模型并生成 TensorFlow Lite 模型(由 .tflite
文件扩展名标识的优化 FlatBuffer 格式)。您可以加载 SavedModel 或直接转换您在代码中创建的模型。
转换器采用 3 个主要标志(或选项)来为您的模型自定义转换
- 兼容性标志允许您指定转换是否应允许自定义算子。
- 优化标志允许您指定转换期间要应用的优化类型。最常用的优化技术是训练后量化。
- 元数据标志允许您向转换后的模型添加元数据,这使得在设备上部署模型时更容易创建特定于平台的包装器代码。
您可以使用Python API或命令行工具转换模型。请参阅转换 TF 模型指南,了解在模型上运行转换器的分步说明。
通常,您会将模型转换为标准 TensorFlow Lite 运行时环境 或 TensorFlow Lite(Beta 版)的 Google Play 服务运行时环境。某些高级用例需要自定义模型运行时环境,这需要在转换过程中执行其他步骤。有关更多指导,请参阅 Android 概览中的 高级运行时环境 部分。
高级转换
如果您在模型上运行转换器时遇到 错误,则很可能是遇到操作器兼容性问题。并非所有 TensorFlow 操作都受 TensorFlow Lite 支持。您可以通过重构模型或使用高级转换选项来解决这些问题,这些选项允许您创建修改后的 TensorFlow Lite 格式模型和该模型的自定义运行时环境。
- 请参阅 模型兼容性概览,以了解有关 TensorFlow 和 TensorFlow Lite 模型兼容性注意事项的更多信息。
- 模型兼容性概览下的主题涵盖了重构模型的高级技术,例如 选择操作器指南。
- 有关操作和限制的完整列表,请参阅 TensorFlow Lite 操作页面。