为什么 Keras 需要 TensorFlow 作为后端?

数据挖掘 喀拉斯 张量流
2021-09-18 00:41:34

为什么 Keras 需要 TensorFlow 引擎?我没有得到关于我们为什么需要 Keras 的正确方向。我们可以使用 TensorFlow 构建神经网络模型,但为什么大多数人使用 Keras 和 TensorFlow 作为后端?

4个回答

在其历史背景下理解时,这更有意义。这些是按时间顺序排列的事件:

Keras(CNTK、MxNet)后来支持了其他后端,但它们从来没有受到太大的关注。

时间流逝,Tensorflow 和 Keras 之间的重叠越来越大。Tensorflow 最终复制了 Keras 中的许多功能(除了 Tensorflow 中的多个 API 也有很大的重叠)。

  • September 2017Theano已停产
  • November 2017 Keras 与 Tensorflow 捆绑tf.keras. 从现在开始,有两种不同的 Keras:一种与 Tensorflow 捆绑在一起,另一种支持多个后端引擎。两者都由同一个人维护,并在 API 级别保持同步。

在某个时候,Tensorflow 2.0 的路线图已经确定,选择追求像PyTorch这样的命令式模型。领导 Tensorflow API 重构的人是 François Chollet。这种重构包括对功能的重组以避免重复。

现在,您的问题的答案:Tensorflow 是最常用的 Keras 后端,因为它是唯一一个拥有相关用户群且正在积极开发中的后端,此外,唯一积极开发和维护的 Keras 版本是使用 Tensorflow 的版本.

所以,总结一下:

  1. 在 Keras 开始的时候,和 Tensorflow 的重叠很小。Tensorflow 有点难用,Keras 简化了很多。
  2. 后来,Tensorflow 加入了许多类似于 Keras 的功能。Keras 变得不那么必要了。
  3. 然后,除了多后端版本之外,Keras 还与 Tensorflow 捆绑在一起。多年来,他们的分界线越来越模糊。
  4. 多后端 Keras 版本已停产。现在唯一的 Keras 是与 Tensorflow 捆绑在一起的。

更新:Keras 和 Tensorflow 之间的关系最好用一个例子来理解:

Keras 和 Tensorflow 之间的依赖关系是 Keras 内部的,它不会暴露给使用 Keras 的程序员。例如,在 Keras 的源码中,有一个卷积层的实现这个实现调用包keras.backend实际运行卷积计算根据 Keras 配置文件,此后端设置为使用 Tensorflow后端实现keras.backend.tensorflow_backend.py这个 Keras 文件只是调用 Tensorflow 来计算卷积

更新 2:时间线中的新重要事件:

  • August 2021: Tensorflow 2.6.0不再包含Keras 。Keras 现在拥有自己的 PIP 包 ( keras) 并存在于自己的github 存储库中。

Keras 是一个应用程序编程接口 (API)。它是一个可以支持多后端的单一接口,这意味着程序员可以编写一次 Keras 代码,并且可以在各种神经网络框架(例如 TensorFlow、CNTK 或 Theano)中执行。

TensorFlow 2.0 是从 Keras 2.3.0 开始的建议后端

让我们回到这里的基础。

不使用后端(例如 Tensorflow)是不可能只使用 Keras 的,因为 Keras只是一个扩展,可以让机器学习程序的读写变得更容易创建模型所需的所有实际计算都没有在 Keras 中实现,这就是为什么您需要使用后端库才能工作的原因。

当您在 Keras 中创建模型时,实际上您仍在使用 Tensorflow 创建模型,Keras只是让编码变得更容易。

另外:将其视为抽象层。

Keras 提供了构建和思考神经网络的好方法和直观的方法,但您必须了解计算机不是这样接受命令的。将这种复杂性隐藏在 Tensorflow 背后,让我们能够自然地思考构建神经网络,而不是实现背后的所有细节。

(总的来说,这就是 python 如此受欢迎的原因,因为它抽象了复杂性,让你更自然、更直观地思考和写下解决方案)