Keras和tf.keras有什么区别?

17

你能具体说明一下吗?你需要转换哪些代码?看一下这个链接: https://dev59.com/Z7Lma4cB1Zd3GeqPWizF#54914559 - Sharky
4个回答

26

tf.keras和keras之间的区别在于Tensorflow对该框架进行了特定的增强。

keras是一个API规范,描述了深度学习框架应如何实现特定部分,与模型定义和训练有关。它是框架不可知的,并支持不同的后端(Theano、Tensorflow等)。

tf.keras是Keras API规范的Tensorflow特定实现。它为框架添加了对许多Tensorflow特定功能的支持,如:完美支持tf.data.Dataset作为输入对象,支持eager执行等。

在Tensorflow 2.0中,tf.keras将成为默认设置,我强烈建议您开始使用tf.keras进行工作。


Keras 2.3.0是Keras的最后一个多后端版本,开发将继续使用tf.keras https://github.com/keras-team/keras/releases/tag/2.3.0 - monolith

16

目前来看,TensorFlow几乎完全采用了Keras API,这是有很好的原因的 - 它简单易用、易学习,而“纯粹”的TensorFlow则带有大量样板代码。是的,您可以毫无问题地使用tf.keras,尽管您可能需要重新调整代码中的导入方式。例如

from keras.layers.pooling import MaxPooling2D

会变成:

from tensorflow.keras.layers import MaxPooling2D

2
那么,对于大多数代码来说,我需要做的唯一更改就是导入语句吗?(嗯,我想可能会有例外情况) - eugene
2
总的来说,是的,除非你已经导入了整个库并且必须查找你在哪里使用了它(即使在现代IDE中这也不是什么大问题)。 - Alexander Ejbekov

11

Keras与tf.keras之间的历史曲折而漫长。

Keras:Keras是由Google AI Developer / Researcher François Chollet开发的高级(易于使用)API。它用Python编写,可在后端引擎(如TensorFlow、CNTK或Theano)上运行。

TensorFlow:这是由Google开发的库,专门面向深度学习开发者社区,让公众可以轻松地创建和使用深度学习应用程序。它是开源的,并且可在GitHub上获得。

随着Keras v1.1.0的发布,Tensorflow成为默认的后端引擎。这意味着:如果您在系统上安装了Keras,则同时也安装了TensorFlow。

后来,在TensorFlow v1.10.0中,首次引入了tf.keras子模块。在TensorFlow中将Keras集成的第一步。

随着Keras 2.3.0版本的发布,

  • Keras首次与tf.keras同步发布。
  • Keras最后一个支持其他多后端引擎的重大发布。
  • 更重要的是,建议将代码从Keras切换到Tensorflow2.0和tf.keras包。

请参阅François Chollet的推文以使用tf.keras。

这意味着,需要到处修改代码。

from keras.models import Sequential
from keras.models import load_model

To

from tensorflow.keras.models import Sequential
from tensorflow.keras.models import load_model

在 requirements.txt 中,

tensorflow==2.3.0

*免责声明:如果您使用的是旧版本的Keras可能会出现冲突。这种情况下请使用pip uninstall keras 命令卸载。


0
我在我的安装中运行了以下内容:
>>> from tensorflow.python.keras import __version__ as tf_p_k_version
>>> from tensorflow.keras import __version__ as tf_k_version
>>> from keras import __version__ as k_version
>>> print(tf_p_k_version, tf_k_version, k_version)
2.6.0 2.11.0 2.11.0

我还使用grep命令搜索了Layer类的文档字符串,发现2.11版本的文档字符串并未安装在tensorflow中,而是在keras包中。

我的猜测是,如果存在keras,则tensorflow.keras实际上会导入keras,并且可能默认为tensorflow.python.keras(如果不存在keras)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接