本书提供安装、上机操作指南,同时辅以大量范例程序介绍TensorFlow Keras深度学习方面的知识。本书分9部分,共21章,内容主要包括基本概念介绍、TensorFlow 与 Keras 的安装、Keras MNIST手写数字识别、Keras CIFAR-10照片图像物体识别、Keras多层感知器预测泰坦尼克号上旅客的生存概率、使用Keras MLP、RNN、LSTM进行IMDb自然语言处理与情感分析、以TensorFlow张量运算仿真神经网络的运行、TensorFlow MNIST手写数字识别、使用GPU大幅加快深度学习训练。
TensorFlow Keras深度学习方面的知识不需要具备高等数学模型、算法等专业知识,读者只需要具备基本的Python程序设计能力,按照本书的步骤循序渐进地学习,就可以了解深度学习的基本概念,进而实际运用深度学习的技术。
浅入深地讲解Keras与TensorFlow深度学习类神经网络使用实际的数据集配合范例程序代码介绍各种深度学习算法,并示范如何进行数据预处理、训练数据、建立模型和预测结果
前
言
近年来,人工智能(Artificial Intelligence,AI)吸引了大众与媒体的目光,AlphaGo的成功更加让人工智能技术变得炙手可热,其实AI早已进入了我们的生活,如手机中的语音助理、人脸识别、影音平台每日的推荐等。然而,人工智能的发展才刚刚起步,未来人工智能的应用将会深入生活的每一个层面,也就是说未来一定是AI的时代。
深度学习是人工智能中成长最快的领域,深度学习就是仿真人类神经网络的工作方式,常见的深度学习架构有深度神经网络(DNN)、卷积神经网络(CNN)、递归神经网络(RNN)等。深度学习特别适用于视觉识别、语音识别、自然语言处理、识别癌细胞等领域,目前已经取得非常好的效果。
近年来,各大科技公司(如Google、Microsoft、Facebook、Amazon、Tesla等)都积极投入到深度学习领域进行研发。以Google公司为例,它在2014年以4亿美元并购了DeepMind公司。2016年,由DeepMind开发的人工智能围棋程序AlphaGo以4:1击败了世界级围棋冠军李世石,引起了网络与媒体的注目,让人们了解到深度学习的威力强大。
TensorFlow最初由Google Brain Team团队开发,Google使用TensorFlow进行研究及开发自身产品,并于2015年公开了它的源代码,所有的开发者都可以免费使用。Google的很多产品早就使用了机器学习或深度学习,例如Gmail过滤垃圾邮件、Google语音识别、图像识别、翻译等。
TensorFlow功能强大,执行效率高,支持各种平台。但是,TensorFlow是比较底层的深度学习链接库,学习门槛高,对于从未接触过深度学习的初学者,如果一开始就学习TensorFlow,就要面对其特殊的计算图(computational graph)程序设计模式,还必须自行设计张量(Tensor)运算,可能会有很大的挫折感。
所以本书先介绍Keras,这是以TensorFlow为底层的、高级的深度学习链接库,可以很容易地建立深度学习模型,进行训练并使用模型预测,对初学者而言学习门槛较低。等读者熟悉了深度学习模型后,再去学习TensorFlow就很轻松了。
近年来,深度学习和人工智能技术快速发展的一个很重要的因素是,GPU提供了强大的并行运算架构,可以让深度学习训练比用CPU来进行要快数十倍。本书也特别介绍了GPU的安装与应用,读者只需要有NVIDIA显示适配器(显卡),然后按照本书的介绍依次安装CUDA、cuDNN、TensorFlow GPU版本与Keras,就可以使用GPU大幅加快深度学习的训练。
林大贵
目 录
第1章 人工智能、机器学习与深度学习简介 1
1.1 人工智能、机器学习、深度学习的关系 2
1.2 机器学习介绍 4
1.3 机器学习分类 4
1.4 深度学习简介 7
1.5 结论 8
第2章 深度学习的原理 9
2.1 神经传导的原理 10
2.2 以矩阵运算仿真神经网络 13
2.3 多层感知器模型 14
2.4 使用反向传播算法进行训练 16
2.5 结论 21
第3章 TensorFlow与Keras介绍 22
3.1
TensorFlow架构图 23
3.2
TensorFlow简介 24
3.3
TensorFlow程序设计模式 26
3.4
Keras介绍 27
3.5
Keras程序设计模式 28
3.6
Keras与TensorFlow比较 29
3.7 结论 30
第4章 在Windows中安装TensorFlow与Keras 31
4.1 安装Anaconda 32
4.2 启动命令提示符 35
4.3 建立TensorFlow的Anaconda虚拟环境 37
4.4 在Anaconda虚拟环境安装TensorFlow与Keras 40
4.5 启动Jupyter
Notebook 42
4.6 结论 48
第5章 在Linux Ubuntu中安装TensorFlow与Keras 49
5.1 安装Anaconda 50
5.2 安装TensorFlow与Keras 52
5.3 启动Jupyter
Notebook 53
5.4 结论 54
第6章 Keras MNIST手写数字识别数据集 55
6.1 下载MNIST数据 56
6.2 查看训练数据 58
6.3 查看多项训练数据images与label 60
6.4 多层感知器模型数据预处理 62
6.5
features数据预处理 62
6.6
label数据预处理 64
6.7 结论 65
第7章 Keras多层感知器识别手写数字 66
7.1
Keras多元感知器识别MNIST手写数字图像的介绍 67
7.2 进行数据预处理 69
7.3 建立模型 69
7.4 进行训练 73
7.5 以测试数据评估模型准确率 77
7.6 进行预测 78
7.7 显示混淆矩阵 79
7.8 隐藏层增加为1000个神经元 81
7.9 多层感知器加入DropOut功能以避免过度拟合 84
7.10
建立多层感知器模型包含两个隐藏层 86
7.11
结论 89
第8章 Keras卷积神经网络识别手写数字 90
8.1 卷积神经网络简介 91
8.2 进行数据预处理 97
8.3 建立模型 98
8.4 进行训练 101
8.5 评估模型准确率 104
8.6 进行预测 104
8.7 显示混淆矩阵 105
8.8
结论 107
第9章 Keras CIFAR-10图像识别数据集 108
9.1 下载CIFAR-10数据 109
9.2 查看训练数据 111
9.3 查看多项images与label 112
9.4 将images进行预处理 113
9.5 对label进行数据预处理 114
9.6 结论 115
第10章 Keras卷积神经网络识别CIFAR-10图像 116
10.1
卷积神经网络简介 117
10.2
数据预处理 118
10.3
建立模型 119
10.4
进行训练 123
10.5
评估模型准确率 126
10.6
进行预测 126
10.7
查看预测概率 127
10.8
显示混淆矩阵 129
10.9
建立3次的卷积运算神经网络 132
10.10
模型的保存与加载 135
10.11
结论 136
第11章 Keras泰坦尼克号上的旅客数据集 137
11.1
下载泰坦尼克号旅客数据集 138
11.2
使用Pandas DataFrame读取数据并进行预处理 140
11.3
使用Pandas DataFrame进行数据预处理 142
11.4
将DataFrame转换为Array 143
11.5
将ndarray特征字段进行标准化 145
11.6
将数据分为训练数据与测试数据 145
11.7
结论 147
第12章 Keras多层感知器预测泰坦尼克号上旅客的生存概率 148
12.1
数据预处理 149
12.2
建立模型 150
12.3
开始训练 152
12.4
评估模型准确率 155
12.5
加入《泰坦尼克号》电影中Jack与Rose的数据 156
12.6
进行预测 157
12.7
找出泰坦尼克号背后的感人故事 158
12.8
结论 160
第13章 IMDb网络电影数据集与自然语言处理 161
13.1
Keras自然语言处理介绍 163
13.2
下载IMDb数据集 167
13.3
读取IMDb数据 169
13.4
查看IMDb数据 172
13.5
建立token 173
13.6
使用token将影评文字转换成数字列表 174
13.7
让转换后的数字长度相同 174
13.8
结论 176
第14章 Keras建立MLP、RNN、LSTM模型进行IMDb情感分析 177
14.1
建立多层感知器模型进行IMDb情感分析 178
14.2
数据预处理 179
14.3
加入嵌入层 180
14.4
建立多层感知器模型 181
14.5
训练模型 182
14.6
评估模型准确率 184
14.7
进行预测 185
14.8
查看测试数据预测结果 185
14.9
查看《美女与野兽》的影评 187
14.10
预测《美女与野兽》的影评是正面或负面的 190
14.11
文字处理时使用较大的字典提取更多文字 192
14.12
RNN模型介绍 193
14.13
使用Keras RNN模型进行IMDb情感分析 195
14.14
LSTM模型介绍 197
14.15
使用Keras LSTM模型进行IMDb情感分析 199
14.16
结论 200
第15章 TensorFlow程序设计模式 201
15.1
建立计算图 202
15.2
执行计算图 204
15.3
TensorFlow placeholder 206
15.4
TensorFlow数值运算方法介绍 207
15.5
TensorBoard 208
15.6
建立一维与二维张量 211
15.7
矩阵基本运算 212
15.8
结论 214
第16章 以TensorFlow张量运算仿真神经网络的运行 215
16.1
以矩阵运算仿真神经网络 216
16.2
以placeholder传入X值 220
16.3
创建layer函数以矩阵运算仿真神经网络 222
16.4
建立layer_debug函数显示权重与偏差 225
16.5
结论 226
第17章 TensorFlow MNIST手写数字识别数据集 227
17.1
下载MNIST数据 228
17.2
查看训练数据 229
17.3
查看多项训练数据images与labels 232
17.4
批次读取MNIST数据 234
17.5
结论 235
第18章 TensorFlow多层感知器识别手写数字 236
18.1
TensorFlow建立多层感知器辨识手写数字的介绍 237
18.2
数据准备 239
18.3
建立模型 239
18.4
定义训练方式 242
18.5
定义评估模型准确率的方式 243
18.6
进行训练 244
18.7
评估模型准确率 249
18.8
进行预测 249
18.9
隐藏层加入更多神经元 250
18.10
建立包含两个隐藏层的多层感知器模型 251
18.11
结论 252
第19章 TensorFlow卷积神经网络识别手写数字 253
19.1
卷积神经网络简介 254
19.2
进行数据预处理 255
19.3
建立共享函数 256
19.4
建立模型 258
19.5
定义训练方式 264
19.6
定义评估模型准确率的方式 264
19.7
进行训练 265
19.8
评估模型准确率 266
19.9
进行预测 267
19.10
TensorBoard 268
19.11
结论 270
第20章 TensorFlow GPU版本的安装 271
20.1
确认显卡是否支持CUDA 273
20.2
安装CUDA 274
20.3
安装cuDNN 278
20.4
将cudnn64_5.dll存放的位置加入Path环境变量 281
20.5
在Anaconda建立TensorFlow GPU虚拟环境 283
20.6
安装TensorFlow GPU版本 285
20.7
安装Keras 286
20.8
结论 286
第21章 使用GPU加快TensorFlow与Keras训练 287
21.1
启动TensorFlow GPU环境 288
21.2
测试GPU与CPU执行性能 293
21.3
超出显卡内存的限制 296
21.4
以多层感知器的实际范例比较CPU与GPU的执行速度 297
21.5
以CNN的实际范例比较CPU与GPU的执行速度 299
21.6
以Keras Cifar CNN的实际范例比较CPU与GPU的执行速度 302
21.7
结论 304
附录A 本书范例程序的下载与安装说明 305
A.1 在Windows系统中下载与安装范例程序 306
A.2 在Ubuntu Linux系统中下载与安装范例程序 310