PDF 物理页索引 230
文件中的第 231 页 · 印刷页码:214
应该尽可能使用最高层级的API。较高级别的API更易于使用,虽然不如底层API那么灵活。建议先从最高级API入手,让所有组件正常运作起来。如果你希望在某些特定的建模方面更加灵活一些,则可以选择下一个级别。每个级别都是使用低级API构建的,因此降低层级是没问题的。
TensorFlow由以下两个组件组成:
图协议(graph protocol)缓冲区。
●执行(分布式)图的运行环境(runtime)。
这两个组件类似于Python代码和Python编译器。正如在多个平台上实现了Python编译器,从而可以执行Python代码,TensorFlow可以在不同的硬件平台(TPU、CPU和GPU)上运行图。
8.1.1 tf.estimator API
tf.estimator是最常用的API。我们可以使用它来完成机器学习中的大部分任务。当然,我们也可以使用较低层级(原生)的TensorFlowAPI,但使用tf.estimator会大大减少代码量。tf.estimator与scikit-learnAPI兼容。正如前面提到的,scikit-learn是热门的开源机器学习库,它是基于Python的。目前全球有超过10万名用户在使用scikit-learn。以下是用tf.estimator实现的线性分类程序(伪代码):
8.1.2 Pandas 速成
Pandas是Python的一个开源数据分析的库,它广泛用在TensorFlow代码中。Pandas提供的数据结构Series和DataFrame极大地简化了数据分析过程中的一些烦琐操作。Series是一维数组,比如我们先引入Pandas API库,然后创建一个Series对象:
Series就是一个一维数组,每个数据对应一个索引值。上述例子的索引值和数据就是:
人工智能与大数据技术导论
214
PDF 物理页索引 231
文件中的第 232 页 · 印刷页码:215
DataFrame是二维数据结构,即数据是以行和列的表格方式排列,就像数据库中的表(Table)。可以将DataFrame理解为由一个个Series组成的,每个Series都有一个名字(也可以看作字典结构),比如:
结果如下,索引是从0开始的整数。可以比作数据库表中的行号。
我们也可以直接把一个CSV文件中的数据导入数据帧中。CSV是一种通用的、相对简单的文件格式,在表格类型的数据中用途很广泛,很多关系型数据库都支持这种类型文件的导入导出,Excel 也能和CSV文件之间转换。CSV是 Comma-SeparatedValues(逗号分隔值)的简称,有时也称为字符分隔值,因为分隔字符也可以不是逗号。其文件是以纯文本形式存储表格数据的。CSV文件由任意数目的记录组成,记录间以某种换行符分隔。每条记录由字段组成,字段间的分隔符是其他字符或字符串,最常见的是逗号或制表符。下面这个例子就是把一个包含部分加州房屋数据的CSV文件装载到一个数据帧对象上:
上面的describe()函数用来显示DataFrame对象的统计信息,比如:
该函数给出了最小值、最大值、平均值、标准差等值。如果我们只想显示前面几行数据,则可以使用head()函数。head(n)返回前n行。若没指定,则要显示的元素的默认数量为5:
结果为:
第8章 TensorFlow
215
PDF 物理页索引 232
文件中的第 233 页 · 印刷页码:216
人工智能与大数据技术导论
Pandas有强大的绘图功能。比如,我们可以使用hist()方法绘制直方图,用于分析某列的值的分布。
8.1.3 必要的 Python 知识
你有两种方法进行TensorFlow编码。一种是使用谷歌公司的在线环境(Colaboratory平台)。针对在线环境,我们只需要编写代码和执行即可,本章中的代码和结果都来自谷歌公司的在线开发环境。另一种是安装TensorFlow的本地开发环境。无论是哪种环境,对于TensorFlow编码,你都需要掌握一些Python知识。本节阐述怎么安装Python和TensorFlow本地开发环境,然后对Python语法做一些简述,以方便读者阅读本书的代码。
- 本地安装
在百度上搜索“Anaconda 官网下载”,打开下载地址 https://www.anaconda.com/download/,如图8-3所示。
216
PDF 物理页索引 233
文件中的第 234 页 · 印刷页码:217
下载后,执行EXE程序,就可以开始安装了,如图8-4所示。
单击Next按钮后,就正式进入了安装过程,如图8-5所示。
第8章 TensorFlow
217
PDF 物理页索引 234
文件中的第 235 页 · 印刷页码:218
安装结束的界面如图8-6所示。
- 安装TensorFlow
在开始菜单中找到Anaconda,单击 Anaconda Prompt 进入控制台(见图8-7),输入condainstall tensorflow下载和安装 TensorFlow,如图8-8所示。
人工智能与大数据技术导论
218
PDF 物理页索引 235
文件中的第 236 页 · 印刷页码:219
输入y来安装,并下载安装包,如图8-9所示。
最后完成整个安装。输入condalist验证TensorFlow已经安装上了,如图8-10所示。
8.2 第一个 TensorFlow 程序
下面我们来看第一个TensorFlow程序。“#”部分是程序的注释,说明该部分程序的功能。为了方便读者查看中间代码的输出结果,我们把输出结果直接放在该代码的后面。
第8章 TensorFlow
219
PDF 物理页索引 236
文件中的第 237 页 · 印刷页码:220
第一个TensorFlow代码的功能是使用加州1990年的房屋销售数据来训练一个线性回归模型,从而可以预测房屋中位价。
8.2.1 装载数据
装载数据代码如下:
结果如图 8-11 所示。
人工智能与大数据技术导论
220
PDF 物理页索引 237
文件中的第 238 页 · 印刷页码:221
8.2.2 探索数据
在训练模型之前,对数据进行一些探索性分析。
结果如图8-12所示。
8.2.3 训练模型
我们使用TensorFlowEstimatorAPI的LinearRegressor线性模型。这个API完成模型的训练、评估和预测。
结果如图8-13所示。
在TensorFlow中需指定特征数据的类型,主要分为2种:Categorical和Numerical。
第8章 TensorFlow
221
PDF 物理页索引 238
文件中的第 239 页 · 印刷页码:222
结果如图8-14所示。
为了让测试数据导入TensorFlow的LinearRegressor,下面我们定义一个输入函数,这个函数把Pandas特征数据转换为一个NumPy数组字典,然后基于这些数据使用TensorFlow的DatasetAPI来构建一个数据集。在输入函数中还指定了在模型训练时的批处理大小、是否预先打乱数据、重复的次数等。最后,这个输入函数为这个数据集构建一个迭代,并返回下一批的数据给LinearRegressor。输入函数代码如下:
222
PDF 物理页索引 239
文件中的第 240 页 · 印刷页码:223
下面调用linear\_regressor的train()函数来训练模型。训练步骤为100步:
上面的lambda作为一个表达式,封装了my\_input\_fn()。
在上面的例子中,出现了2个超参数。
●steps:训练迭代的个数。每一步计算一批数据的误差,基于这个误差来修改模型的权重值(修改一次)。
batch size:一步中所使用的样本数量(样本的选择是随机的),比如SGD批处理大小为1。
简单来说,上述两个数字的乘积是已训练样本的总数。
8.2.4 评估模型
在模型训练后,我们就可以使用一些数据来评估这个模型。下面定义一个预测函数:
第8章 TensorFlow
223