TensorFlow还为keras提供什么?


16

我知道keras充当TensorFlow的高级接口。

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

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

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

Answers:


15

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

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

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

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

9

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

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


5

正如您所说,Keras包含所有功能,但是开箱即用,它仅在CPU上运行。通过插入TensorFlow或CNTK(我个人更喜欢)这样的后端,您可以释放GPU的功能,从而极大地加速某些ML工作负载,尤其是DL工作负载。如果您没有独立的GPU,则好处是微不足道的。

在大多数情况下,您实际上可以设置后端而不管它,而完全在Keras中工作,甚至可以将后端换成另一个并比较性能。因此,除非您想直接在较低级别进行编码,否则无需学习TF的细节。


5

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

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

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


5

每个初学者都有此查询。看来Keras可以用更少的代码来解决基本功能,例如数据输入,模型创建,训练,评估。

但是,当您从头开始开发ML模型时,您意识到可以在NN中编程很多数学,并且tensorflow库提供了许多功能和控制,使这些概念变得实用。学习的数学方面可以很容易地可视化,并可以使用使用tf进行的NN进行学习。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.