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_utils
和load_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 - 使用哪一个?的主要内容,如果未能解决你的问题,请参考以下文章
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 对象