现在 TensorFlow 1.1 支持 tf.contrib.keras
下的 Keras API,如果我打算将 Keras 与 TF 后端一起使用,我应该使用哪一个?
tf.contrib.keras
版本与常规 Keras 发行版有什么不同吗? (我想到了内部数据结构的 TF 特定优化)。如果我使用其中之一,同时使用 Keras 和 TensorFlow Core 有什么好处吗?
或者 tf.contrib.keras
只是与 Keras 相同的代码库的副本,但位于不同的命名空间下?
最佳答案
tf.keras
(以前的 tf.contrib.keras
)是 keras 2 的一个实现,专门使用/针对 TensorFlow 实现。它托管在tensorflow存储库上,并且具有与官方存储库不同的代码库(最后一次提交在 tf-keras
分支 dates back from May 2017 )。
根据经验,如果您的代码使用任何特定于 tensorflow 的代码,请在tf.data.*
中说出任何内容。用于提供输入或tf.summary.*
对于张量板中的可视化,使用 tf.keras
更简单。 (有些人甚至可能建议不要将引用 Keras 实现与 TF 一起使用,因为 occasional problems it has with this toolkit )。
另一方面,如果您打算主动维护与框架无关的代码,那么使用 keras 自己的包是您唯一的选择。
如果您不太关心与框架无关但不使用特定于 tensorflow 的代码,我可能建议使用 tf.keras
并开始使用特定于 tensorflow 的代码,尤其是。 tf.data
在我看来,这是一个游戏规则改变者。
编辑
我参加了 Chollet 关于 TF2 的演讲(无法在线找到录音),他在演讲中基本上说,对 TF 之外的框架的支持最终将下降,而 Keras 的 future 开发将完全发生在 tf.keras
中。 .
据我所知,这种情况已经发生,如 Keras' commit stream这几天瘦了。
这很有意义,因为到目前为止,唯一流行的深度学习框架是 pytorch,而 Keras 不支持它。让 Keras 代码与 tensorflow (它支持的唯一主要框架)“不可知”越来越没有意义。
所以今天,我的答案是使用 tf.keras
默认情况下,并为难以迁移的遗留项目保留 Keras ——这是 Keras 面向 future 的选择。
关于tensorflow - TensorFlow 1.1+ 中 Keras 和 tf.keras 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44068899/