
本书以实战为主,通过丰富的实战案例向读者介绍深度学习可应用和落地的项目,书中所有案例都基于Python+TensorFlow 2.5+Keras技术,可用于深度学习课程的实战训练。本书配套示例源码、PPT课件、思维导图、数据集、开发环境与答疑服务。
全书共分11章。第1章讲解深度学习的概念、流程、应用场景、模型分类和框架选择,第2~11章列举深度学习的项目实战案例,包括手写体识别、数据集分类、情感分类、文本情感分类、编码器、汉字拼音转换、中文文本分类、多标签文本分类、人脸检测、人脸识别、语音汉字转换。
本书内容详尽、案例丰富,是深度学习初学者必备的参考书,适合有基础、亟待提升自己技术水平的人工智能从业人员,也可作为高等院校和培训机构人工智能及相关专业的教材使用。
前 言
TensorFlow从诞生之初即为全球人工智能领域最受用户欢迎的人工智能开源框架,其见证了人工智能在全球的兴起,同时引领了全行业的研究方向,改变了人类处理问题、解决问题的方法和认知,带动了深度学习和人工智能领域的全面发展和成长壮大。TensorFlow的出现使得深度学习的学习门槛大大降低,不仅仅是数据专家,就连普通的程序设计人员,甚至于相关专业的学生,都可以用其来开发新的AI程序,而不需要深厚的算法理论和编程功底。
随着深度学习在各个领域获得巨大的成功,科研人员和从业者尝试使用深度学习去解决各种任务。但是由于种种原因,可能在某个应用领域有较高能力的人员,在使用TensorFlow解决其他项目问题时,需要一个示范性的解决方案;或者一个初学深度学习的学生,需要一个能够具有引导性的、可直接运行的深度学习代码去引导其入门。
本书就是基于上述想法,选用TensorFlow 2.5作为深度学习的框架,提供了多个Python深度学习项目代码供读者上机练习,通过分析实例代码、实现模型改进等形式,全面向读者介绍使用TensorFlow 2进行深度学习实战的核心技术和各方面涉及的相关知识,内容全面而翔实。
本书并不是一个简单的实战“例题”性书籍,本书在讲解和演示实例代码的过程中,对TensorFlow 2核心技术进行深入分析,重要内容均结合代码进行实战讲解,围绕深度学习基本原理也做了介绍。读者通过这些实例可以深入掌握深度学习和TensorFlow 2的相关内容,并能进一步提高使用深度学习技术解决问题的能力。
本书面向深度学习的初级和中级读者。通过本书的学习,读者能够掌握使用深度学习的基本体系和在TensorFlow 2框架下进行神经网络设计的技术要点,以及从模型的构建到应用程序的编写一整套的应用技巧。
本书特色
(1)重实践,讲原理。本书基于深度学习案例,先讲解理论基础,再逐步给出案例代码,从而帮助读者在学会理论的基础上实践代码。
(2)作者经验丰富,代码编写细腻。作者是长期奋战在科研和工业界的一线算法设计和程序编写人员,实战经验丰富,对代码中可能会出现的各种问题和“坑”有丰富的处理经验,使得读者能够少走弯路。
(3)对比多种应用方案,实战案例丰富。本书采用大量的实例,同时也提供了一些实现同类功能的其他解决方案,覆盖了使用TensorFlow 2进行深度学习开发中常用的知识。
示例源码、PPT课件、思维导图、数据集、开发环境下载与答疑服务
本书配套示例源码、PPT课件、思维导图、数据集、开发环境,需要使用微信扫描下面二维码下载,可按页面提示,把链接转发到自己的邮箱中下载。答疑邮箱参见下载资源。如果发现问题,请直接发送邮件至booksaga@163.com,邮件主题务必写上“深度学习案例精粹”。
本书内容及知识体系
本书的所有案例都基于Python+TensorFlow 2.5+Keras来实现,主要内容如下:
第1章详细介绍深度学习的基本内容以及主流框架的选择,并通过一个文本情感分类的示例介绍深度学习的基本过程和步骤,从而引导读者进入深度学习的大门。
第2章是深度学习的基础性实例。使用卷积神经网络去识别物体是深度学习一个经典内容,本章案例借助卷积神经网络算法,构建一个简单的CNN模型以进行MNIST数字识别。
第3章介绍ResNet的基本思想和内容,ResNet是一个具有里程碑性质的框架,它的出现标志着粗犷的卷积神经网络设计向着精确化和模块化的方向转化。ResNet本身的程序编写非常简单,但是其中蕴含的设计思想却是跨越性的。本章使用ResNet实现了CIFAR-100数据集的分类。
第4~7章是自然语言处理方面的案例,其中包括循环神经网络、图卷积模型以及预训练模型的使用。自然语言处理是深度学习在认知领域的一系列突破,通过不同示例代码的讲解,可以很好地引导读者在自然语言处理领域中应用深度学习技术。
第8章向读者介绍一个多标签文本分类的实例,目的是将前期所学的深度学习和自然语言处理的内容进行一个归纳和复习,加强读者对此部分的理解。
第9~10章是人脸识别案例。人脸识别是现代深度学习一个应用重点和趋势,通过分别介绍人脸检测和人脸识别的案例,抛砖引玉地介绍人脸识别的模型和理论。
第11章的语音识别是下一个深度学习应用的风口和方向。本章着重介绍语音识别的应用理论和实现方法,并带领读者完整实现一个语音文字转换的实战案例。此案例程可以作为学习示例使用,也可以作为实际应用的程序进行移植。
适合阅读本书的读者
? Python编程人员
? AI初学者
? 知识图谱初学者
? 深度学习初学者
? 自然语言处理初学者
? 高等院校人工智能及相关专业的师生
? 培训机构人工智能算法的学员
? 其他对智能化、自动化感兴趣的开发者
勘误和鸣谢
由于笔者的水平有限,加上TensorFlow版本的演进较快、编写时间跨度较长,在编写此书的过程中难免会出现疏漏的地方,恳请读者来信批评指正。
感谢出版社的所有编辑在本书编写和出版过程中提供的无私帮助和宝贵建议,正是由于他们的耐心和支持才让本书得以出版。感谢家人对笔者的支持和理解,这些给予笔者莫大的动力,让自己的努力更加有意义。
王晓华
2021年10月
目 录
第1章 深度学习与应用框架 1
1.1 深度学习的概念 1
1.1.1 何为深度学习 1
1.1.2 与传统的“浅层学习”的区别 3
1.2 案例实战:文本的情感分类 3
1.2.1 第一步:数据的准备 4
1.2.2 第二步:数据的处理 4
1.2.3 第三步:模型的设计 5
1.2.4 第四步:模型的训练 5
1.2.5 第五步:模型的结果和展示 6
1.3 深度学习的流程、应用场景和模型分类 7
1.3.1 深度学习的流程与应用场景 7
1.3.2 深度学习的模型分类 8
1.4 主流深度学习的框架对比 9
1.4.1 深度学习框架的选择 10
1.4.2 本书选择:Keras与TensorFlow 10
1.5 本章小结 11
第2章 实战卷积神经网络—手写体识别 12
2.1 卷积神经网络理论基础 12
2.1.1 卷积运算 12
2.1.2 TensorFlow中的卷积函数 14
2.1.3 池化运算 16
2.1.4 softmax激活函数 18
2.1.5 卷积神经网络原理 19
2.2 案例实战:MNIST手写体识别 21
2.2.1 MNIST数据集的解析 21
2.2.2 MNIST数据集的特征和标签 23
2.2.3 TensorFlow 2.X编码实现 25
2.2.4 使用自定义的卷积层实现MNIST识别 29
2.3 本章小结 32
第3章 实战ResNet—CIFAR-100数据集分类 33
3.1 ResNet理论基础 33
3.1.1 ResNet诞生的背景 34
3.1.2 模块工具的TensorFlow实现 37
3.1.3 TensorFlow高级模块layers 37
3.2 案例实战:CIFAR-100数据集分类 44
3.2.1 CIFAR-100数据集的获取 44
3.2.2 ResNet残差模块的实现 47
3.2.3 ResNet网络的实现 49
3.2.4 使用ResNet对CIFAR-100数据集进行分类 52
3.3 本章小结 53
第4章 实战循环神经网络GRU—情感分类 54
4.1 情感分类理论基础 54
4.1.1 复习简单的情感分类 54
4.1.2 什么是GRU 55
4.1.3 TensorFlow中的GRU层 57
4.1.4 双向GRU 58
4.2 案例实战:情感分类 59
4.2.1 使用TensorFlow自带的模型来实现分类 59
4.2.2 使用自定义的DPCNN来实现分类 63
4.3 本章小结 67
第5章 实战图卷积—文本情感分类 68
5.1 图卷积理论基础 69
5.1.1 “节点”“邻接矩阵”和“度矩阵”的物理意义 69
5.1.2 图卷积的理论计算 71
5.1.3 图卷积神经网络的传播规则 74
5.2 案例实战:Cora数据集文本分类 75
5.2.1 Cora数据集简介 75
5.2.2 Cora数据集的读取与数据处理 77
5.2.3 图卷积模型的设计与实现 78
5.2.4 图卷积模型的训练与改进 79
5.3 案例实战:基于图卷积的情感分类(图卷积前沿内容) 83
5.3.1 文本结构化处理的思路与实现 83
5.3.2 使用图卷积对文本进行分类实战 89
5.3.3 图卷积模型的改进 93
5.4 本章小结 95
第6章 实战自然语言处理—编码器 96
6.1 编码器理论基础 96
6.1.1 输入层—初始词向量层和位置编码器层 97
6.1.2 自注意力层 99
6.1.3 ticks和LayerNormalization 104
6.1.4 多头自注意力 105
6.2 案例实战:简单的编码器 108
6.2.1 前馈层的实现 108
6.2.2 编码器的实现 109
6.3 案例实战:汉字拼音转化模型 113
6.3.1 汉字拼音数据集处理 113
6.3.2 汉字拼音转化模型的确定 115
6.3.3 模型训练部分的编写 119
6.3.4 推断函数的编写 120
6.4 本章小结 121
第7章 实战BERT—中文文本分类 122
7.1 BERT理论基础 122
7.1.1 BERT基本架构与应用 123
7.1.2 BERT预训练任务与Fine-Tuning 124
7.2 案例实战:中文文本分类 127
7.2.1 使用Hugging Face获取BERT预训练模型 127
7.2.2 BERT实战文本分类 128
7.3 拓展:更多的预训练模型 133
7.4 本章小结 136
第8章 实战自然语言处理—多标签文本分类 137
8.1 多标签分类理论基础 137
8.1.1 多标签分类不等于多分类 137
8.1.2 多标签分类的激活函数—sigmoid 138
8.2 案例实战:多标签文本分类 139
8.2.1 第一步:数据的获取与处理 139
8.2.2 第二步:选择特征抽取模型 143
8.2.3 第三步:训练模型的建立 144
8.2.4 第四步:多标签文本分类的训练与预测 145
8.3 本章小结 148
第9章 实战MTCNN—人脸检测 149
9.1 人脸检测基础 150
9.1.1 LFW数据集简介 150
9.1.2 Dlib库简介 151
9.1.3 OpenCV简介 152
9.1.4 使用Dlib做出图像中的人脸检测 152
9.1.5 使用Dlib和OpenCV建立人脸检测数据集 156
9.2 案例实战:基于MTCNN模型的人脸检测 157
9.2.1 MTCNN模型简介 158
9.2.2 MTCNN模型的使用 160
9.2.3 MTCNN模型中的一些细节 167
9.3 本章小结 168
第10章 实战SiameseModel—人脸识别 169
10.1 基于深度学习的人脸识别模型 169
10.1.1 人脸识别的基本模型SiameseModel 170
10.1.2 SiameseModel的实现 171
10.1.3 人脸识别数据集的准备 173
10.2 案例实战:基于相似度计算的人脸识别模型 175
10.2.1 一种新的损失函数Triplet Loss 175
10.2.2 基于TripletSemiHardLoss的MNIST模型 178
10.2.3 基于TripletSemiHardLoss和SENET的人脸识别模型 184
10.3 本章小结 187
第11章 实战MFCC和CTC—语音转换 188
11.1 MFCC理论基础 188
11.1.1 MFCC 188
11.1.2 CTC 194
11.2 案例实战:语音汉字转换 197
11.2.1 第一步:数据集THCHS-30简介 197
11.2.2 第二步:数据集的提取与转化 198
11.3 本章小结 204
本书通过丰富的深度学习实战案例,向读者介绍深度学习可应用和落地的项目,包括手写体识别、数据集分类、情感分类、文本情感分类、编码器、汉字拼音转换、中文文本分类、多标签文本分类、人脸检测、人脸识别、语音汉字转换等。所有案例都基于Python+TensorFlow 2.5+Keras技术,可配套用于深度学习的实战训练。
王晓华,计算机专业讲师,研究方向为云计算、大数据与人工智能。著有《Spark MLlib机器学习实践》《TensorFlow深度学习应用实践》《OpenCV+TensorFlow深度学习与计算机视觉实战》《TensorFlow知识图谱实战》《TensorFlow人脸识别实战》《TensorFlow语音识别实战》《TensorFlow 2.0卷积神经网络实战》《Keras实战:基于TensorFlow2.2的深度学习实践》《TensorFlow深度学习从零开始学》《深度学习的数学原理与实现》等图书。