tensorflow - TensorFlow 1.1+ 中 Keras 和 tf.keras 有什么区别?

标签 tensorflow keras

现在 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/

相关文章:

python - 从生成器训练 keras 模型,获取每个时期的反馈并利用早期停止算法

python - 如何将 tf.keras.layers.layer 分配给一个类而不初始化它?

tensorflow - 最大池化和平均池化的混合

python - pip 找不到tensorflow-gpu 2.0-alpha

python - 在 Swift 和 Pythonkit 中使用 Python 模块

python - Actor 评论家政策损失为零(没有改善)

python - 自定义纪元循环中的 Keras 回调

python - 使用 TensorFlow 模型时图像分类的准确性没有提高

machine-learning - Keras:引入批量标准化后 NaN 训练损失

python - 使用 Tensorflow 后端时,如何打印 Keras 的 SGD 优化器变体的中间状态