tensorflow - Tensorflow Keras 模型和估计器有什么区别?
问题描述
Tensorflow Keras 模型和 Tensorflow Estimator 都能够训练神经网络模型并使用它们来预测新数据。它们都是位于低级核心 TensorFlow API 之上的高级 API。那么我什么时候应该使用其中一个呢?
解决方案
背景
Estimators API 在 1.1 版中被添加到 Tensorflow 中,并为较低级别的 Tensorflow 核心操作提供了高级抽象。它与 Estimator 实例一起使用,这是 TensorFlow 对完整模型的高级表示。
Keras类似于 Estimators API,因为它抽象了深度学习模型组件,例如层、激活函数和优化器,以使开发人员更容易使用。它是一个模型级库,不处理低级操作,这是张量操作库或后端的工作。Keras支持三个后端——Tensorflow、Theano和CNTK。
在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.LinearRegression
from scikit-learn
。
与其他 TensorFlow 工具集成
Tensorflow 提供了一个名为TensorBoard的可视化工具,可帮助您可视化图表和统计数据。通过使用 Estimator,您可以轻松保存摘要以使用 Tensorboard 进行可视化。
将 Keras 模型转换为 Estimator
要将 Keras 模型迁移到 Estimator,请使用该tf.keras.estimator.model_to_estimator
方法。
推荐阅读
- css - 如何为 Edge 浏览器设置特定的 css 属性?
- apache-spark - 无法使用 mongo db api 连接到 Azure Cosmos Db
- python - 在 django 中更新用户及其用户配置文件
- java - JAXB XML 适配器不与 XmlElements 注释类型一起使用
- git - 在 master 之上重新设置已合并的分支
- computer-vision - 为什么 ORB 的计算效率比 SURF 和 SIFT 高得多?
- c - 即使我释放了每个 malloc,结构和链表的动态数组中的内存泄漏
- reactjs - 反应:无法替换渲染()方法中的组件
- javascript - 在用户确认之前如何防止页面卸载?
- cordova - pouchdb 似乎在保存但不保存