解密TensorFlow API:tf.Keras、Estimators及Low级API常见问题解答

作者:API传播员 · 2026-01-10 · 阅读时间:5分钟

您是否对选择使用哪种 TensorFlow 构建 API,并探讨它们的组合方式。通过这篇文章,您将了解这些 API 的最佳实践,并找到一些常见问题的答案。

TensorFlow 团队一直致力于开发易于使用的 API,而 TensorFlow 本身也在快速发展。本文涵盖了 TensorFlow 1.12 的当前状态以及 TensorFlow 2.0 的未来趋势。


TensorFlow 的灵活性与复杂性

自 2015 年底开源以来,TensorFlow 已成为最受欢迎的开发人员。其灵活性体现在以下几个方面:

  • 高级 API 和低级 API 的选择:可以使用高级 API(如 tf.Keras 或 Estimators)快速构建模型,也可以通过低级 API 获得更大的控制权。
  • 多语言支持:支持使用 Swift 等语言编写代码。
  • 多平台部署:支持在 CPU、GPU 或 TPU 上训练模型,并可部署到移动设备(如安卓/iOS)、网页、树莓派等多种平台。

然而,正是这种灵活性也带来了架构上的复杂性。许多用户(无论是初学者还是专家)经常会提出类似以下的问题:

  • tf.Keras 和其他高级 API 有何区别?我应该选择哪一个?
  • tf.Keras 和 Estimators 有什么不同?
  • 高级 API 和低级 API 应该如何选择?
  • 热切执行(Eager Execution)在其中扮演什么角色?

接下来,我们将从低级到高级,逐步解析 TensorFlow 的模型构建 API。


TensorFlow 模型构建 API 概述

tf.Keras:推荐的高级 API

TensorFlow 2.0 推出了 tf.Keras,作为官方推荐的高级 API,取代了早期的 tf.layers。以下是使用 tf.Keras 的一些注意事项:

  • 不再需要单独安装 Keras,因为它已成为 TensorFlow 的一部分。
  • 不需要再为 Keras 配置后端(如 TensorFlow、Theano 或 CNTK),直接使用 TensorFlow 即可。

正确的安装和导入方式如下:

$ pip install --upgrade tensorflow
import tensorflow as tf
from tensorflow import keras

使用 tf.Keras 创建模型的三种方式

  1. Sequential API:通过简单的顺序模型定义和训练。例如,使用约 10 行代码即可完成图像分类任务。
  2. 功能性 API:适用于更复杂的模型结构,例如多输入多输出模型。
  3. 模型子类化:通过继承 tf.keras.Model 类来自定义模型结构。

更多关于 tf.Keras 的教程和示例,请参考 TensorFlow 官方文档


Estimators:简化机器学习流程的高级 API

Estimators 是 TensorFlow 提供的另一种高级 API,旨在通过封装训练、评估、预测和导出服务的步骤来简化机器学习流程。根据模型函数的不同,Estimators 分为两类:

  1. 预制 Estimator:内置模型函数,例如 DNN 分类器、线性分类器等,适合不需要自定义模型的场景。
  2. 自定义 Estimator:需要用户自己定义模型函数,适合更复杂或特定需求的场景。

建议在编写自定义 Estimator 之前,先尝试使用预制 Estimator,看看是否能满足需求。

自定义 Estimator 的创建方式

目前,有以下三种方式可以定义自定义 Estimator 的模型:

  1. 使用 Keras 定义模型,然后将其转换为 Estimator。
  2. 使用 TensorFlow Hub 中的模块,这是一个可复用的机器学习模块库。
  3. 使用低级 API(如 tf.keras.layers)编写模型函数。

低级 API:更大的控制权

低级 API 提供了对 TensorFlow 核心组件(如 Tensors、Graphs 和 Sessions)的直接访问。虽然学习曲线较陡,但它为用户提供了更大的灵活性和控制权。


热切执行(Eager Execution)

热切执行是 TensorFlow 的一项重要功能,使得调试和开发更加直观。启用热切执行后,您无需创建图或调用 session.run(),即可直接运行操作。启用方式如下:

import tensorflow as tf
tf.compat.v1.enable_eager_execution()

热切执行的优缺点

  • 优点:更易于调试,代码更加直观。
  • 缺点:性能可能低于静态图模式,因为无法利用全局优化。

为提高性能,可以使用 tf.function 将 Python 函数转换为 TensorFlow 图。例如:

@tf.function
def train_step(inputs):

# 定义训练步骤
    ...

此外,TensorFlow 2.0 默认启用了热切执行模式,并引入了 Autograph 功能,实现热切模式与静态图模式之间的无缝转换。


总结

TensorFlow 提供了从低级到高级的多种 API,满足不同用户的需求。对于大多数用户,推荐使用 tf.Keras 作为模型构建的首选工具,而 Estimators 则适合需要快速构建和部署的场景。对于需要更大灵活性的用户,可以选择低级 API

随着 TensorFlow 2.0 的发布,热切执行模式已成为默认设置,使得 TensorFlow 更加易用和高效。无论您是初学者还是资深开发者,都可以根据需求选择适合的 API,从而充分发挥 TensorFlow 的强大功能。


原文链接: https://medium.com/google-developer-experts/demystify-the-tensorflow-apis-57d2b0b8b6c0