Tensorflow Keras 模型和 Tensorflow Estimators 都能够训练神经网络模型并使用它们来预测新数据。它们都是位于低级核心 TensorFlow API 之上的高级 API。那么我什么时候应该使用其中一种而不是另一种呢?
正如
@jaromir
指出的那样 - 估计器已被弃用并且从 Tensorflow 2.16 开始不可用。请改用 Keras API。来自文档:
以下是2018年的原始答案。警告: TensorFlow 2.15 包含
tf-estimator
包的最终版本。估算器在 TensorFlow 中不可用 2.16 或之后。有关如何转换估算器的更多信息,请参阅迁移指南。
Keras 与 Estimators API 类似,它抽象了层、激活函数和优化器等深度学习模型组件,以方便开发人员使用。它是一个模型级库,不处理低级操作,这是张量操作库或后端的工作。 Keras 支持三种后端 - Tensorflow、Theano 和 CNTK。
Keras 直到发布 1.4.0(2017 年 11 月 2 日)才成为 Tensorflow 的一部分。现在,当您使用 tf.keras
(或谈论“Tensorflow Keras”)时,您只需使用 Keras 接口与 Tensorflow 后端来构建和训练您的模型。
因此,Estimator API 和 Keras API 都提供了高于低级核心 Tensorflow API 的高级 API,您可以使用其中任何一个来训练模型。但在大多数情况下,如果您使用 Tensorflow,您会出于下面列出的原因而希望使用 Estimators API。
分布
来自
Tensorflow Keras Guide,它说:
Estimators API 用于训练《Tensorflow 估算器指南》您可以在本地主机或分布式环境的模型。
分布式多服务器环境上运行基于估算器的模型,而无需更改模型。此外,您可以在 CPU、GPU 或 TPU 上运行基于 Estimator 的模型,而无需重新编码模型。
预制估算器
,您只需插入超参数即可直接使用这些模型。 预制估算器与您使用
的方式类似。例如,Tensorflow 中的
tf.estimator.LinearRegressor
与
sklearn.linear_model.LinearRegression
中的 scikit-learn
类似。与其他 Tensorflow 工具集成
的可视化工具,可帮助您可视化图形和统计数据。通过使用估算器,您可以轻松保存摘要,以便使用 Tensorboard 进行可视化。 将 Keras 模型转换为估计器
tf.keras.estimator.model_to_estimator
方法。