keras 与 tensorflow.python.keras - 使用哪一个?

Posted

技术标签:

【中文标题】keras 与 tensorflow.python.keras - 使用哪一个?【英文标题】:keras vs. tensorflow.python.keras - which one to use? 【发布时间】:2018-07-31 07:16:41 【问题描述】:

哪一种是推荐的(或更面向未来的)使用 Keras 的方法?

各自的优缺点是什么?

我想除了保存一个pip install 步骤和写tensorflow.python.keras 而不是keras 之外,还有更多的区别。

【问题讨论】:

【参考方案1】:

tensorflow.python.keras 只是一个 keras 包,在 tensorflow 包内有一个后端。这使您可以通过安装 pip install tensorflow 来开始使用 keras。

keras 包包含完整的 keras 库,支持三个后端:tensorflow、theano 和 CNTK。如果你甚至想在后端之间切换,你应该选择keras 包。这种方法也更灵活,因为它允许独立于 tensorflow 安装 keras 更新(这可能不容易更新,例如,因为下一个版本可能需要不同版本的 CUDA 驱动程序),反之亦然。出于这个原因,我更喜欢将keras 安装为另一个包。

在 API 方面,目前没有区别,但 keras 未来可能会更紧密地集成到 tensorflow 中。所以有可能在 keras 中会有 tensorflow-only 功能,但即使在这种情况下,使用 keras 包也不是一个障碍。

更新

从 Keras 2.3.0 版本开始,Francois Chollet 宣布用户应该改用 tf.keras 而不是普通的 Keras。因此,所有用户都应更改为 tf.keras 而不是 keras

【讨论】:

哪一个是最新的? IE。最先取得的最新进展在哪里?在 Keras 或 tf.keras 中? 并非所有内容都在tf.keras 中,某些功能仍在tf.python.keras. 中,就像所有vis_utilsload_weights_from_hdf5_group_by_name 一样。【参考方案2】:

2019-10 小更新:

Keras 团队通过release of version 2.3.0 宣布了以下内容:

这也是多后端 Keras 的最后一个主要版本。展望未来,我们建议用户考虑将其 Keras 代码切换到 TensorFlow 2.0 中的 tf.keras。它实现了相同的 Keras 2.3.0 API(因此切换应该像更改 Keras 导入语句一样容易),但它对 TensorFlow 用户有许多优势,例如支持急切执行、分发、TPU 训练以及通常更好的集成介于低级 TensorFlow 和高级概念(如层和模型)之间。它也得到了更好的维护。

未来的开发将集中于 tf.keras。在接下来的 6 个月内,我们将继续维护多后端 Keras,但我们只会合并错误修复。 API 更改不会被移植。

所以现在,tf.keras 似乎是要走的路。

【讨论】:

以上是关于keras 与 tensorflow.python.keras - 使用哪一个?的主要内容,如果未能解决你的问题,请参考以下文章

tensorflow与对应的keras版本

AttributeError: module 'tensorflow.python.keras.backend' has no attribute 'get_graph'

AttributeError:模块'tensorflow_core.python.keras.api._v2.keras.activations'没有属性'swish'

ModuleNotFoundError:没有名为“tensorflow.python.keras.engine.base_layer_v1”的模块

AttributeError:模块“tensorflow.python.keras.backend”没有属性“get_graph”

无法克隆对象 <tensorflow.python.keras.wrappers.scikit_learn.KerasClassifier 对象