模型转换概述

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

转换工作流

根据机器学习模型的内容,将 TensorFlow 模型转换为 TensorFlow Lite 格式可能需要采用几种方法。作为该过程的第一步,您应该评估模型以确定是否可以直接转换。此评估确定模型的内容是否基于其使用的 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 模型(由 .tflite 文件扩展名标识的优化 FlatBuffer 格式)。您可以加载 SavedModel 或直接转换您在代码中创建的模型。

转换器采用 3 个主要标志(或选项)来为您的模型自定义转换

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

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

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

高级转换

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

后续步骤

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