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

对于整个tensorflow2.0框架,tensorflow Keras模型和Tensorflow Estimators都能够训练神经网络模型并使用它们来预测新的数据。 它们都是TensorFlow 的高级API。 那么什么时候应该用一个来代替另一个呢?,它们两者的区别是什么?又有什么联系?工程实战中怎么区分二者的使用?

参考:https://stackoverflow.com/questions/51455863/whats-the-difference-between-a-tensorflow-keras-model-and-estimator

Background:

Estimators API是在版本1.1中添加到Tensorflow中的,它提供了对较低级别Tensorflow核心操作的高级抽象。 它与Estimator实例一起使用,该实例是TensorFlow对完整模型的高级表示。
Keras与Estimators API相似之处在于,它抽象化了深度学习模型组件,如层 layers, 激活函数activation functions 和优化器optimizers,使开发人员更容易使用。 它是一个模型级别的库,不处理低级操作,低级操作是张量操作库或后端的工作。 Keras支持三个后端--Tensorflow,Theano和CNTK。
Keras在版本1.4.0(2017年11月2日)之前不属于Tensorflow的一部分,直到版本1.4.0,Keras才是Tensorflow的一部分。现在,当您使用tf.Keras(或者谈论'Tensorflow Keras')时,您只需使用Keras接口和Tensorflow后端来构建和训练您的模型。

因此,Estimator API和Keras API都在低级核心Tensorflow API之上提供了更高级的API,您可以使用其中任何一个来训练您的模型。

estimator跟keras一样是tf代码的封装,可以让大家避免写重复的代码。其中estimator是1.0中比较流行的。keras则是2.0主推的。学习estimator的原因则在于 1. estimator 1.0中就有,平台支持比较成熟。比如在google内部的分布式平台上keras还没有支持,只能转成estimator来运行。2. 很多代码是用estimator写的,学习estimator可以让大家更轻松看懂这些代码。

summary:

联系: keras和estimator都属于对模型的封装,都会封装模型的训练流程的代码。都有分布式的支持,还有dataset的支持

区别:estimator在1.0中就有,主要的封装抽象在模型训练流程,需要自行定义模型结构。keras则对层次的模型训练流程都进行的抽象。当然,也可以使用keras对层次的封装来定义模型结构送到estimator中去使用。

实战中:如果是tf1.0, 建议使用estimator,2.0以上建议使用keras API

### TensorFlow Estimator 概念 TensorFlow 的 `tf.estimator` 是一个高级 API,用于构建训练机器学习模型。该接口简化了许多常见的建模任务,包括但不限于: - 训练 (`train`) - 评估 (`evaluate`) - 预测 (`predict`) - 导出 (`export`) 这些功能被封装在一个统一的框架中,使得开发者能够更专注于模型的设计而不是基础设施的搭建[^3]。 ### TensorFlow Estimator 主要特性 #### 统一的工作流程 通过使用预定义的 Estimators 或者自定义 Estimators 来创建模型,可以遵循一致的方法来进行实验、调整超参数以及部署到生产环境中去。 #### 支持分布式训练 Estimator API 特别适合于大规模的数据处理场景,在多台机器组成的集群上运行时表现良好,这有助于加速模型收敛过程并提高效率。 #### 易于扩展 对于那些想要深入定制自己模型结构的研究人员来说,可以通过继承 BaseEstimator 类来自行编写更加复杂的逻辑;而对于大多数应用场景,则可以直接调用现成的各种高层组件完成工作。 ### 实际应用案例展示 下面是一个简单的例子展示了如何基于 Keras 构造一个两层全连接神经网络,并将其转换为 Estimator 形式以便进一步操作: ```python import tensorflow as tf model = tf.keras.Sequential([ tf.keras.layers.Dense(10, activation='softmax'), tf.keras.layers.Dense(10, activation='softmax') ]) model.compile( optimizer=tf.keras.optimizers.RMSprop(0.001), loss='categorical_crossentropy', metrics=['accuracy'] ) estimator = tf.keras.estimator.model_to_estimator(keras_model=model) ``` 这段代码首先建立了一个标准的Keras序列化模型,接着编译这个模型指定了优化器、损失函数及评价指标,最后一步则是将此 Keras 模型转化为 Estimator 对象以供后续使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值