模型转换概览

与 TensorFlow Lite 搭配使用的机器学习 (ML) 模型最初是使用 TensorFlow 核心库和工具构建和训练的。使用 TensorFlow Core 构建模型后,您可以将其转换为更小、更高效的机器学习模型格式,称为 TensorFlow Lite 模型。本部分介绍了如何将 TensorFlow 模型转换为 TensorFlow Lite 模型格式。

转化工作流程

将 TensorFlow 模型转换为 TensorFlow Lite 格式可能需要几种路径,具体取决于机器学习模型的内容。作为该过程的第一步,您应该评估您的模型,以确定它是否可以直接转换。此评估会根据模型使用的 TensorFlow 操作,确定标准 TensorFlow Lite 运行时环境是否支持模型的内容。如果您的模型使用受支持集合之外的操作,您可以选择重构模型或使用高级转换技术。

下图显示了转换模型的简要步骤。

TFLite 转换工作流程

图 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(Beta 版)的 Google Play 服务运行时环境。某些高级用例需要自定义模型运行时环境,这需要在转换过程中执行额外的步骤。如需更多指导,请参阅 Android 概览的高级运行时环境部分。

高级转化

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

后续步骤

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