模型转换概述

您在 TensorFlow Lite 中使用的机器学习 (ML) 模型最初是使用 TensorFlow 核心库和工具构建和训练的。在使用 TensorFlow 核心构建模型后,您可以将其转换为更小、更高效的 ML 模型格式,称为 TensorFlow Lite 模型。本节提供有关将 TensorFlow 模型转换为 TensorFlow Lite 模型格式的指南。

转换工作流程

将 TensorFlow 模型转换为 TensorFlow Lite 格式可以采用几种路径,具体取决于 ML 模型的内容。作为该过程的第一步,您应该评估您的模型以确定它是否可以被直接转换。此评估确定模型的内容是否由基于其使用的 TensorFlow 运算的标准 TensorFlow Lite 运行时环境支持。如果您的模型使用不支持的运算,您可以选择重构模型或使用高级转换技术。

下图显示了转换模型的高级步骤。

TFLite conversion workflow

图 1. TensorFlow Lite 转换工作流程。

以下部分概述了评估和转换模型以供 TensorFlow Lite 使用的过程。

输入模型格式

您可以将转换器与以下输入模型格式一起使用

您可以将 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 模型(一种经过优化的FlatBuffer 格式,由.tflite 文件扩展名标识)。您可以加载 SavedModel 或直接转换在代码中创建的模型。

转换器接受 3 个主要标志(或选项),用于为您的模型定制转换

  1. 兼容性标志 允许您指定转换是否应该允许自定义运算符。
  2. 优化标志 允许您指定在转换期间要应用的优化类型。最常用的优化技术是训练后量化
  3. 元数据标志 允许您向转换后的模型添加元数据,这使得在设备上部署模型时更容易创建特定于平台的包装代码。

您可以使用Python API命令行 工具转换您的模型。请参阅转换 TF 模型 指南,了解在模型上运行转换器的分步说明。

通常,您会为标准 TensorFlow Lite 运行时环境 或 TensorFlow Lite 的Google Play 服务运行时环境(Beta 版)转换您的模型。某些高级用例需要自定义模型运行时环境,这需要在转换过程中执行额外的步骤。请参阅 Android 概述的高级运行时环境 部分,以获取更多指导。

高级转换

如果您在模型上运行转换器时遇到错误,则很可能是您遇到了运算符兼容性问题。并非所有 TensorFlow 操作都受 TensorFlow Lite 支持。您可以通过重构模型或使用允许您创建修改后的 TensorFlow Lite 格式模型和该模型的自定义运行时环境的高级转换选项来解决这些问题。

下一步

  • 请参阅转换 TF 模型 指南,快速开始转换您的模型。
  • 请参阅优化概述,以获取有关如何使用训练后量化 等技术优化转换后的模型的指导。
  • 请参阅添加元数据概述,了解如何向模型添加元数据。元数据为其他用途提供了模型的描述以及代码生成器可以利用的信息。