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

第2章
TensorFlow必备知识

本章内容
  • 理解TensorFlow的工作流程
  • 使用Jupyter创建交互式notebook
  • 使用TensorBoard可视化算法

在实现机器学习算法之前,让我们先熟悉一下如何使用TensorFlow。你将立即着手编写简单的代码!本章将介绍TensorFlow的一些基本优势,你会相信它是机器学习库的首选。在继续学习之前,请按照附录中的步骤说明进行逐步安装,然后返回这里。

试想一下,当我们使用Python写代码而没有便捷的计算库时会发生什么。这就像使用一部新的智能手机而不安装任何App,功能是有的,但如果你有合适的工具,你会更高效。

假设你是一个私人企业主,正在跟踪产品的销售流。你的库存中包含100种物品,你用名为price的向量表示每种物品的价格。另一个名为amount的100维向量表示每种物品的库存数量。你可以编写清单2.1所示的Python代码块来计算销售出所有产品的收入。请记住,这段代码没有导入任何库。

清单2.1 不使用库计算两个向量的内积

对计算两个向量的内积(也称为点积)来说,这样的代码太多了。如果你仍然缺少TensorFlow和它的朋友,比如Numerical Python(NumPy)库,那么想象一下,做一些更复杂的事情(比如解线性方程或计算两个向量之间的距离)需要多少代码。

在安装TensorFlow库时,还需要安装一个众所周知的鲁棒的Python库——NumPy,它可以简化Python中的数学运算。使用没有库(NumPy和TensorFlow)的Python就像使用没有自动对焦模式的相机。当然,你获得了更多的灵活性,但你也很容易犯粗心的错误。(需要说明的是,我们并不反对摄影师对光圈、快门和iso进行微操作——也就是所谓的“手动”旋钮来拍照。)机器学习很容易出错,所以让我们的“相机”保持“自动对焦”,并使用TensorFlow来帮助将烦琐的软件开发自动化。

下面的代码片段展示了如何使用NumPy简洁地编写同样的计算内积代码:

Python是一种简洁的语言。幸运的是,本书没有一页又一页的神秘代码。另一方面,Python语言的简洁也意味着每行代码背后都发生了很多事情,在本章中你应该仔细研究这一点。你会发现这是TensorFlow的核心主题,作为Python的附加库,它很好地平衡了封装和细节。TensorFlow封装了很多复杂操作(如“自动对焦”),但也允许你在想要手动干预时可以转动那些神奇的可配置旋钮。

机器学习算法需要很多数学运算。通常,一个算法归结为简单函数的组合,迭代直到收敛。当然,你可以使用任何标准编程语言来执行这些计算,但是拥有可维护性和高性能的代码的秘诀是使用一个编写良好的库,例如TensorFlow(它支持Python、C++、Java-Script、Go和Swift)。

提示 各个函数的API的细节文档可见:https://www.tensorflow.org/api_docs

你将在本章学习的技能是面向使用TensorFlow进行计算,因为机器学习依赖于数学公式。通过对例子和代码清单的学习,你将能够使用TensorFlow完成任意的任务,如做大数据的统计和使用TensorFlow等[像NumPy和Matplotlib(用于可视化)],来理解为什么你的机器学习算法给出这样的决策,并提供可解释性的结果。这里的重点完全是如何使用TensorFlow而不是机器学习,机器学习是我们将在后面的章节中讨论的。这听起来是个温和的开始,对吧?

在本章的后面,你将使用TensorFlow的重要特性,这对机器学习是必不可少的。这些特性包括将计算表示为数据流图、设计和执行的分离、部分子图计算和自动微分。不多啰唆,让我们来编写我们的第一个TensorFlow代码!