TensorFlow机器学习(原书第2版)
上QQ阅读APP看书,第一时间看更新

2.10 把所有综合到一起:TensorFlow系统架构和API

我们还没有深入研究TensorFlow的全部内容——本书的其余部分是关于这些主题的,但是我已经说明了它的核心组件以及它们之间的接口。这些组件和它们之间的接口构成了TensorFlow架构,如图2.9所示。

图2.9 TensorFlow系统架构和API。到目前为止,我们已经在会话、工具、模型表示和训练上花了很多时间。本书的后面部分逐步探索数学、称为卷积神经网络(CNN)的复杂的面部识别模型、优化和系统的其余部分

TensorFlow 2版本的代码清单包含了新的特性,包括默认即刻执行以及优化器和训练的更新包名。新版本代码在Python 3中运行良好,如果你尝试运行了它们,我欢迎得到你的反馈!你可以在https://github.com/chrismattmann/MLwithTensorFlow2ed/tree/master/TFv2获取TensorFlow 2版本的代码清单。

选择一个版本的框架来依赖和使用它之所以如此困难,是因为软件变化得太快。尽管概念、架构和系统本身都保持相同,并且在实际运行时也基本相似,但近两年内TensorFlow依然变化很大。从TensorFlow 1.0到TensorFlow 1.15.2——著名的TensorFlow 1.x的最后一个版本,TensorFlow已经发布了20多个版本。其中的一部分与1.x系统的突然变化有关,而另一部分则涉及更基本的架构理解,需要通过执行一些在每章结尾处给出建议的例子来掌握,在这一过程中遇到问题然后发现通过TensorFlow可以解决它们。正如谷歌应用AI主管兼TensorFlow大师Scott Penberthy在序中所言,追逐TensorFlow的版本并不是重点,当伟大的软件工程师围绕张量来改进脚手架时,细节、架构、清洗步骤、处理,以及评估技术将经受时间的考验。

跟上版本:TF2及以上

本书以TensorFlow 1.x系列以上的两个版本为标准。1.15版本是1.x系列发布的最新版本,它与Python 3兼容良好。在第7章和第19章,你会遇到一些Python 2的示例,这时需要TensorFlow的1.14版本。

此外,在本书编写期间,一个完整的基于TensorFlow 2的清单和代码已经发布(详见附录)。你将注意到,在清单中的TensorFlow 2代码有85%~90%是相同的。主要原因是数据的清洗、收集、准备和评估代码是完全可重用的,因为它使用了附带的ML库,如Scikit和Matplotlib。

今天,TensorFlow 2.0吸引了大量的关注。但是,比起追逐最新版本(最新版本相比1.x版本有一些根本性的变化),我更希望传递一些独立于版本的核心的理解,以及机器学习的基础和概念,它们使得TensorFlow如此特别。本书的出版很大程度是因为那许多的不眠之夜,我蹒跚在机器学习概念(如构建模型、评估、张量的数学计算)之中,而它们构成了TensorFlow的核心元素。

其中的一些概念如图2.9所示。在本章中,我们已经花了大量时间来讨论会话的作用,如何表示张量和图,以及如何训练模型并将其保存到磁盘和恢复。但是我还没有介绍如何进行预测,如何构建更复杂的图(例如回归、分类、CNN和RNN),以及如何在GB和TB级别的数据上运行TensorFlow。这些任务都可以通过TensorFlow实现,因为谷歌和开发者们花了大量的时间来思考大规模机器学习面临的所有挑战。

这些挑战在TensorFlow架构中是一个灰盒子,这是说它是一个易于使用的编程语言API,并拥有大量文档和支持。如果还有问题没有解决,这就是我要做的。所有的灰盒子都将在本书的其余部分涉及,这种服务感觉怎么样?