TensorFlow 还为 keras 提供了什么?

数据挖掘 喀拉斯 张量流
2021-10-09 01:02:31

我知道 keras 是 TensorFlow 的高级接口。

但在我看来,keras 可以自己完成许多功能(数据输入、模型创建、训练、评估)。

此外,TensorFlow 的一些功能可以直接移植到 keras(例如,可以在 keras 中使用 tf 度量或损失函数)。

我的问题是,TensorFlow 提供了哪些无法在 keras 中复制的功能?

4个回答

深度学习框架在 2 个抽象级别上运行:

  • 较低级别:这是 Tensorflow、MXNet、Theano 和 PyTorch 等框架所在的位置。这是实现数学运算(如广义矩阵-矩阵乘法)和神经网络原语(如卷积运算)的级别。
  • 更高级别:这是 Keras 等框架所在的位置。在这个级别,较低级别的原语用于实现神经网络抽象,如层和模型。通常,在此级别上还实现了其他有用的 API,例如模型保存和模型训练。

您无法比较 Keras 和 TensorFlow,因为它们处于不同的抽象级别。我也想借此机会分享一下我使用 Keras 的经验:

  • 我不同意 Keras 仅对基本的深度学习工作有用。Keras 是一个编写精美的 API。API 的功能特性可以完全帮助您,并为您提供更多奇特的应用程序。Keras 不会阻止访问较低级别的框架。
  • Keras 产生了更加可读和简洁的代码。
  • Keras 模型序列化/反序列化 API、回调和使用 Python 生成器的数据流非常成熟。
  • Keras 已被宣布为 TensorFlow 的官方高级抽象。

如果您在 keras 中使用 TensorFlow 作为后端,它们或多或少共享相同的功能。通过keras.backend你可以访问 TensorFlow 函数,同时通过tf.keras你可以通过 TensorFlow 访问 keras 的整个 API。

既然是这种情况,我建议您坚持使用 keras,如果您发现缺少某些内容(例如度量或损失函数),您可以通过 TensorFlow 导入它。

正如您所说,Keras 包含所有功能,但开箱即用,它只在 CPU 上运行。通过插入 TensorFlow 或 CNTK(我个人更喜欢)之类的后端,您可以释放 GPU 的强大功能,它可以极大地加速一些 ML 工作负载,尤其是 DL 工作负载。如果您没有独立的 GPU,那么好处是微乎其微的。

在实践中,大多数时候你可以只设置你的后端并忘记它,完全在 Keras 中工作,甚至将你的后端换成另一个并比较性能。所以没有必要学习TF的细节,除非你想直接在较低的层次上编码。

鉴于 TensorFlow 通常是一个比 Keras 更底层的库,您会发现它提供了额外的灵活性和改进的性能(尽管相对较小,主要取决于您如何编写代码)。我想说,如果您正在研究或开发新型神经网络,那么 TensorFlow 的知识将非常有用。除此之外,您应该对 Keras 没问题,尽管如果您将 TensorFlow 用作后端,了解 TensorFlow 的工作原理仍然会有所帮助。

然而,不久前我读到 Keras 和 TensorFlow 将变得更加集成,这将使您的生活更轻松。

显然这只是我个人的观点,因此我想为您指出一些额外的文章,以便您自己阅读。 这个关于 Kaggle的讨论很好地概述了参数以及何时使用哪个参数。关于这个主题的中等帖子。