keras 和 tf.keras 有什么区别?

What is the difference between keras and tf.keras?

我正在学习 TensorFlow 和 Keras。想试试https://www.amazon.com/Deep-Learning-Python-Francois-Chollet/dp/1617294438/,好像是用Keras写的

将代码转换为 tf.keras 是否相当简单?

我更感兴趣的不是代码的可移植性,而是两者之间的真正区别。

此时 tensorflow 几乎完全采用了 keras API 并且有一个很好的理由 - 它简单、易于使用且易于学习,而 "pure" tensorflow 带有很多样板代码。是的,您可以毫无问题地使用 tf.keras,尽管您可能需要在代码中重新导入。例如

from keras.layers.pooling import MaxPooling2D

会变成:

from tensorflow.keras.layers import MaxPooling2D

tf.keras 和 keras 之间的区别是 Tensorflow 特定于框架的增强。

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

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

在 Tensorflow 2.0 中,tf.keras 将是默认值,我强烈建议使用 tf.keras

开始工作

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

Keras:Keras 是 high-level(易于使用)API,由 Google AI Developer/Researcher 构建,弗朗索瓦·肖莱。用 Python 编写,能够 运行 在 TensorFlow、CNTK 或 Theano 等后端引擎之上。

TensorFlow:同样由 Google 开发的库,用于深度学习开发者社区,使深度学习应用程序可访问和使用 public .开源并可在 GitHub.

上使用

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

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

随着 Keras 2.3.0 的发布,

  • Keras 的第一个版本与 tf.keras
  • 同步
  • 支持其他 multi-backend 引擎的最后一个主要版本
  • 最重要的是,展望未来,建议将代码从 keras 切换到 Tensorflow2.0 和 tf.keras 包。

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

也就是说, 处处改变

来自

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

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

并在 requirements.txt、

tensorflow==2.3.0

*免责声明:如果您使用的是旧版本的 Keras,它可能会产生冲突。在那种情况下做 pip uninstall keras