作者|Orhan Gazi Yalçın 编译|VK 来源|Towards Datas Science
如果你看看不同的教程,搜索,花大量时间研究关于TensorFlow的Stack Overflow,你可能已经意识到有很多不同的方法来构建神经网络模型。
这一直是TensorFlow面临的问题。这就像是TensorFlow试图找到通往光明的深度学习环境的道路。由于TensorFlow是目前市场上最成熟的深度学习库,这基本上是你能得到的最好的。
Keras-TensorFlow的关系
背景
TensorFlow发展成为一个深度学习平台并不是一夜之间发生的。最初,TensorFlow将自己推销为一个符号数学库,用于跨一系列任务的数据流编程。因此,TensorFlow最初提供的主张并不是一个纯粹的机器学习库。目标是创建一个高效的数学库,以便在这种高效结构上构建的自定义机器学习算法能够在短时间内以高精度进行训练。
然而,用低级api重复地从头构建模型并不是很理想。因此,谷歌的工程师弗兰•库伊斯-克里特开发了Keras,作为一个独立的高层次的深度学习库。虽然Keras已经能够运行在不同的库之上,比如TensorFlow, Microsoft Cognitive Toolkit, Theano 或 PlaidML,但是TensorFlow过去和现在仍然是人们使用Keras的最常见的库。
现状
在看到了模型构建过程中的混乱之后,TensorFlow团队宣布Keras将成为在tensorflow2.0中构建和训练模型的核心高级API。另一种高级API,Estimator api
Estimator API和Keras API
现在,让我们回到问题上来:有很多不同的方法,人们使用TensorFlow来构建他们的模型。这个问题的主要原因是TensorFlow未能采用单一模型API。
在1.x版本中,对于生产级项目,模型构建API是Estimator API。但是,随着最近的变化,keras api几乎赶上了Estimator API。最初,Estimator API具有更高的可伸缩性,允许分布式,并且具有方便的跨平台功能。然而,现在Estimator API的大部分优点都已被消除,因此,很快Keras API将很可能成为构建TensorFlow模型的唯一标准API。
因此,在本文中,我们将只关注在TensorFlow中构建模型的Keras API方法,其中有三种:
使用Sequential API
使用Functional API
模型子类化
我将直接将它们与相应的模型构建代码