微信扫码下载

编辑推荐

  浅入深地讲解Keras与TensorFlow深度学习类神经网络
  使用实际的数据集配合范例程序代码介绍各种深度学习算法,并示范如何进行数据预处理、训练数据、建立模型和预测结果

内容简介

  《TensorFlow+Keras深度学习人工智能实践应用》提供安装、上机操作指南,同时辅以大量范例程序介绍TensorFlow+Keras深度学习方面的知识。《TensorFlow+Keras深度学习人工智能实践应用》分9部分,共21章,内容主要包括基本概念介绍、TensorFlow与Keras的安装、KerasMNIST手写数字识别、KerasCIFAR-10照片图像物体识别、Keras多层感知器预测泰坦尼克号上旅客的生存概率、使用KerasMLP、RNN、LSTM进行IMDb自然语言处理与情感分析、以TensorFlow张量运算仿真神经网络的运行、TensorFlowMNIST手写数字识别、使用GPU大幅加快深度学习训练。
  TensorFlow+Keras深度学习方面的知识不需要具备高等数学模型、算法等专业知识,读者只需要具备基本的Python程序设计能力,按照《TensorFlow+Keras深度学习人工智能实践应用》的步骤循序渐进地学习,就可以了解深度学习的基本概念,进而实际运用深度学习的技术。

作者简介

  林大贵,从事IT行业多年,在系统设计、网站开发、数字营销、商业智慧、大数据、机器学习等领域具有丰富的实战经验。

目录

第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.1TensorFlow架构图23
3.2TensorFlow简介24
3.3TensorFlow程序设计模式26
3.4Keras介绍27
3.5Keras程序设计模式28
3.6Keras与TensorFlow比较29
3.7结论30
第4章在Windows中安装TensorFlow与Keras31
4.1安装Anaconda32
4.2启动命令提示符35
4.3建立TensorFlow的Anaconda虚拟环境37
4.4在Anaconda虚拟环境安装TensorFlow与Keras40
4.5启动JupyterNotebook42
4.6结论48
第5章在LinuxUbuntu中安装TensorFlow与Keras49
5.1安装Anaconda50
5.2安装TensorFlow与Keras52
5.3启动JupyterNotebook53
5.4结论54
第6章KerasMNIST手写数字识别数据集55
6.1下载MNIST数据56
6.2查看训练数据58
6.3查看多项训练数据images与label60
6.4多层感知器模型数据预处理62
6.5features数据预处理62
6.6label数据预处理64
6.7结论65
第7章Keras多层感知器识别手写数字66
7.1Keras多元感知器识别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章KerasCIFAR-10图像识别数据集108
9.1下载CIFAR-10数据109
9.2查看训练数据111
9.3查看多项images与label112
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使用PandasDataFrame读取数据并进行预处理140
11.3使用PandasDataFrame进行数据预处理142
11.4将DataFrame转换为Array143
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.1Keras自然语言处理介绍163
13.2下载IMDb数据集167
13.3读取IMDb数据169
13.4查看IMDb数据172
13.5建立token173
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.12RNN模型介绍193
14.13使用KerasRNN模型进行IMDb情感分析195
14.14LSTM模型介绍197
14.15使用KerasLSTM模型进行IMDb情感分析199
14.16结论200
第15章TensorFlow程序设计模式201
15.1建立“计算图”202
15.2执行“计算图”204
15.3TensorFlowplaceholder206
15.4TensorFlow数值运算方法介绍207
15.5TensorBoard208
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章TensorFlowMNIST手写数字识别数据集227
17.1下载MNIST数据228
17.2查看训练数据229
17.3查看多项训练数据images与labels232
17.4批次读取MNIST数据234
17.5结论235
第18章TensorFlow多层感知器识别手写数字236
18.1TensorFlow建立多层感知器辨识手写数字的介绍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.10TensorBoard268
19.11结论270
第20章TensorFlowGPU版本的安装271
20.1确认显卡是否支持CUDA273
20.2安装CUDA274
20.3安装cuDNN278
20.4将cudnn64_5.dll存放的位置加入Path环境变量281
20.5在Anaconda建立TensorFlowGPU虚拟环境283
20.6安装TensorFlowGPU版本285
20.7安装Keras286
20.8结论286

第21章使用GPU加快TensorFlow与Keras训练287
21.1启动TensorFlowGPU环境288
21.2测试GPU与CPU执行性能293
21.3超出显卡内存的限制296
21.4以多层感知器的实际范例比较CPU与GPU的执行速度297
21.5以CNN的实际范例比较CPU与GPU的执行速度299
21.6以KerasCifarCNN的实际范例比较CPU与GPU的执行速度302
21.7结论304
附录A《TensorFlow+Keras深度学习人工智能实践应用》范例程序的下载与安装说明305
A.1在Windows系统中下载与安装范例程序306
A.2在UbuntuLinux系统中下载与安装范例程序310


精彩书摘

  1.多层感知器模型的介绍
  为了能够识别MNIST手写数字图像,我们将建立如图7-1所示的多层感知器模型。
  图7-1
  2.多层感知器的训练与预测
  建立如图7-2所示的多层感知器模型后,必须先训练模型才能够进行预测(识别)这些
  手写数字。
  TensorFlow+Keras深度学习人工智能实践应用
  68
  训练(Training)
  数据预处理训练
  Features
  多层感知器模型
  739
  Label
  预测(Predict)
  数据预处理
  训练完成
  Features多层感知器模型
  预测结果
  0~9的数字
  预测
  图7-2
  以多层感知器模型识别MNIST数字图像可分为训练与预测。
  训练
  MNIST数据集的训练数据共60000项,经过数据预处理后会产生Features(数字图像特
  征值)与Label(数字真实的值),然后输入多层感知器模型进行训练,训练完成的模型就可
  以作为下一阶段预测使用。
  预测
  输入数字图像,预处理后会产生Features(数字图像特征值),使用训练完成的多层感知
  器模型进行预测,最后产生预测结果是0~9的数字。
  3.建立多层感知器模型的步骤
  多层感知器识别MNIST数据集中的手写数字的步骤说明如图7-3所示。
  图7-3
  第7章Keras多层感知器识别手写数字
  69
  7.2进行数据预处理
  有关读取MNIST数据集数据并且进行数据预处理的详细介绍可参考第6章。
  导入所需模块。
  读取MNIST数据。
  将features(数字图像特征值)使用reshape转换。
  下面的程序代码将原本28×28的数字图像以reshape转换成784个Float数。
  将features(数字图像特征值)标准化。
  将features(数字图像特征值)标准化可以提高模型预测的准确度,并且更快收敛。
  label(数字真实的值)以One-HotEncoding进行转换。
  使用np_utils.to_categorical将训练数据与测试数据的label进行One-HotEncoding转换。
  7.3建立模型
  我们将建立下列多层感知器模型,输入层(x)共有784个神经元,隐藏层(h)共有
  256个神经元,输出层(y)共有10个神经元,如图7-4所示。我们将使用下面的程序代码
  TensorFlow+Keras深度学习人工智能实践应用
  70
  建立多层感知器模型。
  图7-4
  1.导入所需模块
  2.建立Sequential模型
  建立一个线性堆叠模型,后续只需要使用model.add()方法将各个神经网络层加入模型
  即可。
  3.建立“输入层”与“隐藏层”
  以下程序代码将“输入层”与“隐藏层”加入模型,使用model.add方法加入Dense神
  经网络层。Dense神经网络层的特色是:所有的上一层与下一层的神经元都完全连接。
  建立Dense神经网络层需输入表7-1中的参数。
  表7-1建立Dense神经网络层所需参数
  参数参数说明
  units=256定义“隐藏层”神经元个数为256
  input_dim=784
  设置“输入层”神经元个数为784(因为原本28×28的二维图像,以
  reshape转换为一维的向量,也就是784个Float数)
  kernel_initializer='normal'
  使用normaldistribution正态分布的随机数来初始化weight(权重)和
  bias(偏差)
  activation定义激活函数为relu
  第7章Keras多层感知器识别手写数字
  71
  4.建立“输出层”
  使用下面的程序代码建立“输出层”,使用model.add方法加入Dense神经网络层,共有
  10个神经元,对应0~9十个数字。并且使用softmax激活函数进行转换,softmax可以将神经
  元的输出转换为预测每一个数字的概率。
  建立“输出层”输入表7-2中的参数。
  表7-2建立“输出层”所需参数
  参数参数说明
  units=10定义“输出层”神经元个数为10
  kernel_initializer='normal'使用normaldistribution正态分布的随机数来初始化weight与bias
  activation定义激活函数为softmax
  以上建立Dense神经网络层不需要设置input_dim,因为Keras会自动按照上一层的units
  是256个神经元,设置这一层的input_dim为256个神经元。
  5.查看模型的摘要
  我们可以使用下列指令来查看模型的摘要。
  执行后屏幕显示界面如图7-5所示。
  输出层共10个神经元
  隐藏层共256个神经元
  ……

前言/序言

  前言
  近年来,人工智能(ArtificialIntelligence,AI)吸引了大众与媒体的目光,AlphaGo的成功更加让人工智能技术变得炙手可热,其实AI早已进入了我们的生活,如手机中的语音助理、人脸识别、影音平台每日的推荐等。然而,人工智能的发展才刚刚起步,未来人工智能的应用将会深入生活的每一个层面,也就是说未来一定是AI的时代。
  深度学习是人工智能中成长最快的领域,深度学习就是仿真人类神经网络的工作方式,常见的深度学习架构有深度神经网络(DNN)、卷积神经网络(CNN)、递归神经网络(RNN)等。深度学习特别适用于视觉识别、语音识别、自然语言处理、识别癌细胞等领域,目前已经取得非常好的效果。
  近年来,各大科技公司(如Google、Microsoft、Facebook、Amazon、Tesla等)都积极投入到深度学习领域进行研发。以Google公司为例,它在2014年以4亿美元并购了DeepMind公司。2016年,由DeepMind开发的人工智能围棋程序AlphaGo以4:1击败了世界级围棋冠军李世石,引起了网络与媒体的注目,让人们了解到深度学习的威力强大。
  TensorFlow最初由GoogleBrainTeam团队开发,Google使用TensorFlow进行研究及开发自身产品,并于2015年公开了它的源代码,所有的开发者都可以免费使用。Google的很多产品早就使用了机器学习或深度学习,例如Gmail过滤垃圾邮件、Google语音识别、图像识别、翻译等。
  TensorFlow功能强大,执行效率高,支持各种平台。但是,TensorFlow是比较底层的深度学习链接库,学习门槛高,对于从未接触过深度学习的初学者,如果一开始就学习TensorFlow,就要面对其特殊的“计算图”(computationalgraph)程序设计模式,还必须自行设计张量(Tensor)运算,可能会有很大的挫折感。
  所以《TensorFlow+Keras深度学习人工智能实践应用》先介绍Keras,这是以TensorFlow为底层的、高级的深度学习链接库,可以很容易地建立深度学习模型,进行训练并使用模型预测,对初学者而言学习门槛较低。等读者熟悉了深度学习模型后,再去学习TensorFlow就很轻松了。
  近年来,深度学习和人工智能技术快速发展的一个很重要的因素是,GPU提供了强大的并行运算架构,可以让深度学习训练比用CPU来进行要快数十倍。《TensorFlow+Keras深度学习人工智能实践应用》也特别介绍了GPU的安装与应用,读者只需要有NVIDIA显示适配器(显卡),然后按照《TensorFlow+Keras深度学习人工智能实践应用》的介绍依次安装CUDA、cuDNN、TensorFlowGPU版本与Keras,就可以使用GPU大幅加快深度学习的训练。
  林大贵


其他推荐