Tensorflow Keras模型和Estimator之间有什么区别?

d4n*_*yll 41 keras tensorflow tensorflow-estimator

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

d4n*_*yll 55

背景

Estimators API已添加到版本1.1中的Tensorflow,并提供了对较低级别Tensorflow核心操作的高级抽象.它适用于Estimator实例,它是TensorFlow对完整模型的高级表示.

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

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指南中可以看出:

Estimators API用于分布式环境的训练模型.

Tensorflow Estimators指南中可以看出:

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

预制估算器

虽然Keras提供了使模型更容易构建的抽象,但您仍然需要编写代码来构建模型.通过Estimators,Tensorflow提供预制估算器,这些模型可以直接使用,只需插入超参数即可.

预制估算器与您的工作方式类似scikit-learn.例如,tf.estimator.LinearRegressor来自Tensorflow的类似于sklearn.linear_model.LinearRegressionfrom scikit-learn.

与其他Tensorflow工具集成

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

将Keras模型转换为Estimator

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

  • 在分布式训练方面,Keras API 实际上比 Estimator API 得到更多支持。您可以在这里阅读更多信息:https://www.tensorflow.org/guide/distributed_training。 (6认同)
  • PS:Keras确实可以处理低级别的操作,但这不是很标准。它的后端(`import keras.backend as K`)包含许多包装在后端函数周围的函数。它们旨在用于自定义层,自定义指标,自定义损失函数等。 (4认同)
  • 我同意@hwaxxer。您需要更新 Tensorflow 2 的答案。 (2认同)