Keras和TensorFlow——你更钟爱哪一种呢?
我应该用Keras 还是TensorFlow来做我的项目呢?TensorFlow好还是Keras更好?我该把时间花在研究TensorFlow身上吗?还是Keras?
以上都是我常在收件箱、社交媒体、甚至与深层学习的研究人员、实践者和工程师的亲自交谈中听到的问题。
我甚至收到一些与我的书《用Python进行计算机视觉的深度学习》相关的问题,读者问我为什“仅仅”涵盖Keras——关于TensorFlow呢?
真不幸,因为这是一个错误的问题。
截至2017年中期,Keras实际上被完全采纳并融入了TensorFlow。这个TensorFlow+Keras的集成意味着你可以:
- 使用Keras的易用接口定义模型
- 如果需要(1)特定的TensorFlow功能或(2)需要实现Keras不支持但TensorFlow支持的自定义特性,那么可以下拉到TensorFlow中。
简而言之:
可以将TensorFlow代码直接插入到Keras模型或训练管道序列中!
别误会我的意思。我并不是说,对于某些应用程序,您不需要了解一点TensorFlow——如果您正在执行新颖的研究并且需要定制实现,则尤其如此。我只是说如果在做这些事时:
- 刚刚开始学习深度学习
- 试图决定为下一个项目使用哪一个库
- 想知道Keras或TensorFlow哪个“更好”
就会感觉得到了。
别担心,做就是了。我的建议是使用Keras启动,然后为您需要的任何特定功能下拉到TensorFlow。
在今天的文章中,我将向您展示如何训练(1)使用严格Keras的神经网络和(2)使用直接构建到TensorFlow库中的Keras+TensorFlow集成(带有定制特性)的模型。
要了解更多关于Keras vs. Tensorflow,继续阅读!
Keras和TensorFlow——哪一个更好,我应该学习哪一个?
在今天教程的剩余部分中,我将继续讨论Keras vs.TensorFlow的论点以及它是如何提出错误的问题的。
我们将会实现一个卷积神经网络(CNN),使用标准keras模块和直接刻入到TensorFlow中的tf.keras模块。
我们将在示例数据集上训练这些CNN,然后检查结果——正如您将发现的,Keras和TensorFlow和谐地生活在一起。
也许最重要的是,你会明白为什么Keras vs. TensorFlow的论点不再有意义。
如果你问“Keras vs. TensorFlow”,这本身就不是一个问题
图1:“我应该使用KARAS还是Tensorflow?“
询问是否应该使用Keras还是TensorFlow是错误的问题——事实上,这个问题甚至不再有意义。尽管自从TensorFlow宣布将把Keras集成到官方的TensorFlow发行版已经超过一年了,我仍然惊讶于许多深层学习实践者不知道他们可以通过tf.keras子模块访问Keras。
更重要的是,Keras+TensorFlow集成是无缝的,允许您将原始TensorFlow代码直接放入Keras模型中。
使用TensorFlow中的Keras给你最好的两个世界:
- 您可以使用Keras提供的简单、直观的API来创建模型。
- Keras API本身类似于Scikit-learn,可以说是机器学习API的“金标准”。
- Keras API是模块化的,Python式的,超级简单易用。
- 当需要自定义层实现、更复杂的损失函数等时,可以下拉到TensorFlow,并自动将代码与Keras模型集成。
在过去的几年里,深度学习的研究者、实践者和工程师常常不得不选择:
- 我是否使用易用性,但可能更难定制Keras库?
- 或者我是否利用了相当困难的TensorFlow API,编写了一个数量级的更多代码,更不用说使用不太容易遵循的API来工作?
幸运的是,我们不再需要选择了。
如果你发现自己处于这样的境地:“我应该用Keras 还是TensorFlow呢?”“退后一步——你问错了问题——你可以同时拥有两个。
结语
给大家送一波福利:人工智能学习资料,有意向的可以加我V,回复:【学习资料】来领取整理好100G的学习资料