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

Jak*_*old 35 keras tensorflow

既然TensorFlow 1.1支持Keras API tf.contrib.keras,如果我打算使用带有TF后端的Keras,我应该使用哪一个?

tf.contrib.keras版本以任何方式比普通Keras分布有什么不同?(想到TF特定的内部数据结构优化).如果我使用其中一种,那么将Keras和TensorFlow Core一起使用会有什么好处吗?

或者tf.contrib.keras只是与Keras相同的代码库的副本,但在不同的命名空间下?

P-G*_*-Gn 29

tf.keras(以前tf.contrib.keras)是专门用/ for tensorflow实现的keras 2的实现.它托管在tensorflow repo上,并且具有与官方repo不同的代码库(tf-keras分支中的最后一次提交可以追溯到2017年5月).

根据经验,如果您的代码使用任何特定于张量流的代码,请说明tf.data.*提供输入或tf.summary.*在张量板中进行可视化,只需使用即可tf.keras.(有些人甚至可能会建议不要使用TF的参考Keras实现,因为它与此工具包偶尔会出现问题).

另一方面,如果您计划主动维护与框架无关的代码,则使用keras自己的软件包是您唯一的选择.

如果您不太关心与框架无关但不使用特定于张流的代码,我可能会建议您继续tf.keras使用特定于tensorflow的代码,尤其是.tf.data在我看来,这是一个改变游戏规则的人.

  • “我认为这是改变游戏规则的tf.data”-您能否进一步详细说明? (3认同)

小智 12

Keras最好被理解为API规范,而不是特定的代码库.实际上,将会有两个独立的Keras规范实现:内部TensorFlow,可用作tf.keras,用纯TensorFlow编写,与所有TensorFlow功能深度兼容,外部多后端支持Theano和TensorFlow(可能在未来甚至更多的后端).

https://blog.keras.io/introducing-keras-2.html


小智 -4

如果有两个 github 存储库,您将如何将拉取请求同步到 tf.keras 和此存储库?是否会有人将一个存储库中的更改应用到另一个存储库中?

代码库会有所不同,因此无需复制拉取请求。对于 API 更改,您可以向 API 规范本身发送 PR,并且 API 规范的更改将在所有代码库中复制。

https://github.com/fchollet/keras/issues/5299#issuecomment-278166426

  • 但这并不能真正回答问题。如果我想使用TF后端,具体应该“import tf.contrib.keras”还是“import keras”? (5认同)
  • 还是感觉很迷茫。如果 API 同步,这是否意味着这两个库对于最终用户来说是相同的? (2认同)