首页 > 解决方案 > Tensorflow Keras 模型和估计器有什么区别?

问题描述

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

标签: tensorflowkerastensorflow-estimator

解决方案


背景

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

Keras类似于 Estimators API,因为它抽象了深度学习模型组件,例如层、激活函数和优化器,以使开发人员更容易使用。它是一个模型级库,不处理低级操作,这是张量操作库后端的工作。Keras支持三个后端——TensorflowTheanoCNTK

在1.4.0 版(2017 年 11 月 2 日)之前,Keras 不是 TensorFlow 的一部分。现在,当您使用tf.keras(或谈论“Tensorflow Keras”)时,您只是使用带有 Tensorflow 后端的 Keras 接口来构建和训练您的模型。

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

分配

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

Tensorflow Keras Guide中,它说:

Estimators API 用于为分布式环境训练模型。

Tensorflow Estimators Guide中,它说:

您可以在本地主机或分布式多服务器环境上运行基于 Estimator 的模型,而无需更改模型。此外,您可以在 CPU、GPU 或 TPU 上运行基于 Estimator 的模型,而无需重新编码模型。

预制估算器

虽然 Keras 提供了使构建模型更容易的抽象,但您仍然需要编写代码来构建模型。借助 Estimators,Tensorflow 提供了Pre-made Estimators,这些模型可以立即使用,只需插入超参数即可。

预制 Estimator 与您使用scikit-learn. 例如,tf.estimator.LinearRegressor来自 Tensorflow 的 from 类似于sklearn.linear_model.LinearRegressionfrom scikit-learn

与其他 TensorFlow 工具集成

Tensorflow 提供了一个名为TensorBoard的可视化工具,可帮助您可视化图表和统计数据。通过使用 Estimator,您可以轻松保存摘要以使用 Tensorboard 进行可视化。

将 Keras 模型转换为 Estimator

要将 Keras 模型迁移到 Estimator,请使用该tf.keras.estimator.model_to_estimator方法。


推荐阅读