2.4 Keras还是tf.keras

另一个合理的问题是,你应该将Keras与TensorFlow一起用作后端,还是使用在TensorFlow中直接可用的tf.keras中的API。注意,Keras与tf.keras之间并没有1:1的对应关系。Keras并未实现tf.keras中的许多端点,而tf.keras不像Keras那样支持多个后端。那么,到底选择Keras还是tf.keras?我的建议是后者。tf.keras与Keras相比具有多个优点,包括本章中讨论的TensorFlow增强功能(即刻执行;对分布式训练的原生支持,包括基于TPU训练;以及对TensorFlow SavedModel交换格式的支持)。但是,如果你打算编写可在多个后端(包括Google TensorFlow、Microsoft CNTK、Amazon MXnet和Theano)上运行的高度可移植的代码,则推荐Keras。注意,Keras是一个独立的开源项目,其开发不依赖于TensorFlow。因此,Keras仍将在可预见的未来继续发展。注意,Keras 2.3.0(于2019年9月17日发布)是支持TensorFlow 2.0的多后端Keras的第1版。它保持与TensorFlow 1.14和1.13以及Theano和CNTK的兼容性。

让我们以新的比较结果来结束本章:Kaggle上每次竞赛的前5名团队使用的主流机器学习软件工具。图2-5是Francois Chollet于2019年4月初在Twitter上进行的一项调查(感谢Francois同意将其纳入本书!)。

084-01

图2-5 2019年Kaggle前5名团队使用的主流机器学习工具

本节中,我们已经看到了Keras和tf.keras之间的主要区别。