Tensorflow Keras 模型和估算器有什么区别?

问题描述 投票:0回答:2

Tensorflow Keras 模型和 Tensorflow Estimators 都能够训练神经网络模型并使用它们来预测新数据。它们都是位于低级核心 TensorFlow API 之上的高级 API。那么我什么时候应该使用其中一种而不是另一种呢?

tensorflow keras tensorflow-estimator
2个回答
88
投票

正如

@jaromir
指出的那样 - 估计器已被弃用并且从 Tensorflow 2.16 开始不可用。请改用 Keras API。来自文档

警告: TensorFlow 2.15 包含 tf-estimator

 包的最终版本。估算器在 TensorFlow 中不可用
2.16 或之后。有关如何转换估算器的更多信息,请参阅
迁移指南

以下是2018年的原始答案。


背景

Estimators API 在 1.1 版中添加到 Tensorflow,并为较低级别的 Tensorflow 核心操作提供高级抽象。它与 Estimator 实例配合使用,这是 TensorFlow 对完整模型的高级表示。

Keras 与 Estimators API 类似,它抽象了层、激活函数和优化器等深度学习模型组件,以方便开发人员使用。它是一个模型级库,不处理低级操作,这是张量操作库后端的工作。 Keras 支持三种后端 - TensorflowTheanoCNTK

Keras 直到

发布 1.4.0(2017 年 11 月 2 日)才成为 Tensorflow 的一部分。现在,当您使用 tf.keras

(或谈论“Tensorflow Keras”)时,您只需使用 Keras 接口与 Tensorflow 后端来构建和训练您的模型。

因此,Estimator API 和 Keras API 都提供了高于低级核心 Tensorflow API 的高级 API,您可以使用其中任何一个来训练模型。但在大多数情况下,如果您使用 Tensorflow,您会出于下面列出的原因而希望使用 Estimators API。

分布

您可以使用 Estimators API 跨多个服务器进行分布式训练,但不能使用 Keras API。

来自

Tensorflow Keras Guide,它说:

Estimators API 用于训练

分布式环境的模型。

《Tensorflow 估算器指南》

中写道:

您可以在本地主机或
分布式多服务器

环境上运行基于估算器的模型,而无需更改模型。此外,您可以在 CPU、GPU 或 TPU 上运行基于 Estimator 的模型,而无需重新编码模型。

预制估算器

虽然 Keras 提供的抽象使构建模型变得更加容易,但您仍然需要编写代码来构建模型。通过估算器,Tensorflow 提供了

预制估算器

,您只需插入超参数即可直接使用这些模型。 预制估算器与您使用

scikit-learn

 的方式类似。例如,Tensorflow 中的 
tf.estimator.LinearRegressor
sklearn.linear_model.LinearRegression
中的
scikit-learn
类似。
与其他 Tensorflow 工具集成

Tensorflow 提供了一个名为

TensorBoard

的可视化工具,可帮助您可视化图形和统计数据。通过使用估算器,您可以轻松保存摘要,以便使用 Tensorboard 进行可视化。 将 Keras 模型转换为估计器

要将 Keras 模型迁移到 Estimator,请使用

tf.keras.estimator.model_to_estimator

 方法。


-2
投票

下面来自张量流

doc

之一的描述提到了这一点: ” Estimators API 用于训练分布式环境的模型。这针对的是行业用例,例如对可以导出模型进行生产的大型数据集的分布式训练。 ”

© www.soinside.com 2019 - 2024. All rights reserved.