深度学习实战:基于TensorFlow 2和Keras(原书第2版)
定 价:149 元
丛书名:智能系统与技术丛书
- 作者:[意]安东尼奥·古利(Antonio Gulli),[印]阿米塔·卡普尔(Amita Kapoor),[美]苏吉特·帕尔(Sujit Pal)
- 出版时间:2021/8/1
- ISBN:9787111687719
- 出 版 社:机械工业出版社
- 中图法分类:TP18
- 页码:
- 纸张:胶版纸
- 版次:
- 开本:16开
本书简洁且全面地介绍了现代神经网络、人工智能和深度学习技术,专门为软件工程师和数据科学家设计。第1章逐步介绍神经网络的基础知识。第2章比较TensorFlow 1.x和TensorFlow 2.0编程模型。第3章重点介绍回归。第4章介绍卷积神经网络及其在图像处理中的应用。第5章讨论了CNN在图像、视频、音频和文本处理方面的高级应用。第6章重点介绍生成对抗网络。第7章介绍词嵌入。第8章介绍基本嵌入方法的各种扩展。第9章介绍自动编码器。第10章深入研究无监督学习模型。第11章重点介绍强化学习。第12章介绍AutoML。第13章介绍用于移动设备和物联网的TensorFlow的基础知识。第14章讨论了云环境以及如何利用它来训练和部署模型。第15章讨论了深度学习背后的数学。第16章介绍TPU。本书内容丰富,易于理解,示例具有代表性,是学习深度学习的绝佳指南。
本书围绕TensorFlow和Keras讲解神经网络和深度学习技术。在这个强大、受欢迎、可扩展的机器学习技术栈中,你将学习如何编写深度学习应用。TensorFlow是专业级应用选用的机器学习库,而Keras提供了一个简单且强大的Python API来访问TensorFlow。TensorFlow 2提供了完整的集成Keras,使高阶机器学习比以往任何时候都更加轻松便捷。本书还介绍了基于TensorFlow的神经网络,贯穿了主要的应用(回归、CNN、GAN、RNN、NLP),还涵盖了两个可用的示例应用,并深入探讨了生产环境下的TF、TF Mobile,以及TensorFlow与AutoML的结合使用。
本书简洁且全面地介绍了现代神经网络、人工智能和深度学习技术,专门为软件工程师和数据科学家设计。它是另外两本著作Deep Learning with Keras[1]和TensorFlow 1.x Deep Learning Cookbook[2]的延续。
本书目标
本书对过去几年中深度学习技术的演进做了概括,并给出了用Python写的数十种可运行的深度神经网络代码,它们都是用基于类Keras[1] API的模块化深度网络库TensorFlow 2.0实现的。
本书将循序渐进地介绍有监督学习算法,包括简单线性回归、经典多层感知器,以及更为复杂的深度卷积网络和生成对抗网络。本书还涵盖无监督学习算法,包括自编码器和生成网络,并对循环网络和长短期记忆网络进行详细解释。此外,本书还会对深度强化学习进行全面介绍,并涵盖深度学习加速器(GPU和TPU)、云开发以及在桌面系统、云服务、移动设备/物联网(IoT)和浏览器上的多环境部署。
实际应用包括将文本分类为预定义类别、语法分析、语义分析、文本合成以及词性标注。书中我们还会探讨图像处理,包括手写数字图像识别、图像分类以及具有相关图像注释的高级对象识别。
声音分析包括识别来自多个扬声器的离散语音。本书还介绍使用自编码器和GAN生成图像,使用强化学习技术构建能够自主学习的深度Q学习网络。实验是本书的精髓。每个网络都增加了多种变体,这些变体通过更改输入参数、网络形状、损失函数和优化算法来逐步提高学习性能。本书还提供在CPU、GPU和TPU上进行训练的对比。本书将介绍新领域AutoML,在该领域中,我们将学习如何高效和自动地构建深度学习模型。第15章专门介绍机器学习相关的数学知识。
机器学习、人工智能和深度学习寒武纪爆炸
人工智能(Artificial Intelligence,AI)为本书讨论的所有内容奠定了基础。机器学习(Machine Learning,ML)是AI的一个分支,而深度学习(Deep Learning,DL)又是ML中的一个子集。下面简要讨论本书中经常出现的这三个概念。
AI表示机器模仿人类通常表现出的智能行为的任何活动。更正式地说,这是一个研究领域,机器旨在复制认知能力,例如学习行为、与环境的主动交互、推理和演绎、计算机视觉、语音识别、问题求解、知识表示和感知。AI建立在计算机科学、数学和统计学以及心理学和其他研究人类行为的科学的基础上。建立AI有多种策略。在20世纪70年代和20世纪80年代,专家系统变得非常流行。这些系统的目标是通过用大量手动定义的if-then规则表示知识来解决复杂的问题。这种方法适用于非常特定的领域中的小问题,但无法扩展到较大的问题和多领域中。后来,AI越来越关注基于统计的方法。
ML是AI的一个子学科,它专注于教授计算机如何对特定任务进行学习而无须编程。ML背后的关键思想是可以创建从数据中学习并做出预测的算法。ML有三类:
有监督学习,向机器提供输入数据及期望输出,目的是从这些训练实例中学习,以使机器可以对从未见过的数据做出有意义的预测。
无监督学习,仅向机器提供输入数据,机器随后必须自己寻找一些有意义的结构,而无须外部监督或输入。
增强学习,机器充当代理,与环境交互。如果机器的行为符合要求,就会有奖励;否则,就会受到惩罚。机器试图通过学习相应地发展其行为来化奖励。
DL在2012年席卷全球。在那一年,ImageNet 2012挑战赛[3]发起,其目的是使用大型手工标记数据集的子集来预测照片的内容。名为AlexNet[4]的深度学习模型达到了15.3%的top-5错误率,这与早前的结果相比有了显著改进。根据《经济学人》 [5]的说法,突然之间,人们开始关注深度学习,不仅是在AI社区内部,而且是整个技术行业。 自2012年以来,我们看到了对ImageNet图像进行分类的多个模型的持续进展[5](见图1),错误率低于2%,优于5.1%的预计人为错误率。
那仅仅是开始。如今,DL技术已成功应用于异构领域,包括但不限于医疗保健、环境工程、绿色能源、计算机视觉、文本分析、多媒体、金融、零售、游戏、模拟、工业、机器人技术和自动驾驶汽车。在每一个领域中,DL技术都可以以一定的准确度解决问题,而这是以前的方法无法实现的。
毫无疑问,人们对DL的兴趣也在增加。有报告[9]显示,每20分钟就会有新的ML论文发表。机器学习论文的增长率约为每月3.5%,每年50%。在过去的三年中,我们好像生活在DL的寒武纪大爆炸中,arXiv上论文数量的增长速度超过了摩尔定律(见图2)。正如评论所说:这使你感到人们相信这是计算的未来价值的来源。
图1 ImageNet 2012上不同的深度学习模型实现的top-5准确度
图2 arXiv上ML论文数量似乎比摩尔定律增长更快(源自:https://www.kdnuggets.com/2018/12/deep-learning-major-advances-review.html)
arXiv是电子预印本的存储库,预印本尚未进行完整的同行评审。
深度学习模型的复杂性也在增加。ResNet-50是一种图像识别模型(参见第4章和第5章),具有约2600万个参数。每个参数都是用于微调模型的权重。Transformer、gpt-1、bert和gpt-2[7]都是自然语言处理模型(参见第8章),具备在文本上执行各种任务
前言
作者简介
审校者简介
第1章 基于TensorFlow 2.0的神经网络基础1
1.1 TensorFlow是什么1
1.2 Keras是什么3
1.3 TensorFlow 2.0有哪些重要的改动3
1.4 神经网络概述4
1.5 感知器5
1.6 多层感知器个神经网络示例6
1.6.1 感知器训练的问题及对策6
1.6.2 激活函数sigmoid函数7
1.6.3 激活函数tanh函数7
1.6.4 激活函数ReLU函数8
1.6.5 两个拓展激活函数ELU函数和LeakyReLU函数8
1.6.6 激活函数总结9
1.6.7 神经网络到底是什么9
1.7 示例识别手写数字10
1.7.1 独热编码10
1.7.2 在TensorFlow 2.0中定义一个简单的神经网络10
1.7.3 运行一个简单的TensorFlow 2.0神经网络并建立测试基线14
1.7.4 使用隐藏层改进TensorFlow 2.0的简单神经网络15
1.7.5 利用随机失活进一步改进Ten-sor Flow 2.0的简单神经网络18
1.7.6 测试TensorFlow 2.0的不同优化器19
1.7.7 增加epoch数24
1.7.8 控制优化器学习率25
1.7.9 增加内部隐藏神经元的数量25
1.7.10 增加批量计算的大小26
1.7.11 手写图识别实验总结26
1.8 正则化27
1.8.1 采用正则化以避免过拟合27
1.8.2 理解批量归一化28
1.9 Google ColabCPU、GPU和TPU29
1.10 情感分析31
1.11 超参数调谐和AutoML33
1.12 预测输出34
1.13 反向传播的实用概述34
1.14 我们学到了什么35
1.15 迈向深度学习方式35
1.16 参考文献36
第2章 TensorFlow 1.x与2.x37
2.1 理解TensorFlow 1.x37
2.1.1 TensorFlow 1.x计算图程序结构37
2.1.2 常量、变量和占位符的使用39
2.1.3 操作对象示例40
2.1.4 TensorFlow 2.x中的TensorFlow 1.x示例43
2.2 理解TensorFlow 2.x44
2.2.1 即刻执行44
2.2.2 AutoGraph45
2.2.3 Keras API的三种编程模型47
2.2.4 回调49
2.2.5 保存模型和权重50
2.2.6 使用tf.data.datasets训练50
2.2.7 tf.keras还是估算器53
2.2.8 不规则张量55
2.2.9 自定义训练55
2.2.10 TensorFlow 2.x中的分布式训练56
2.2.11 命名空间的改动59
2.2.12 1.x至2.x的转换59
2.2.13 高效使用TensorFlow 2.x59
2.3 TensorFlow 2.x生态系统60
2.4 Keras还是tf.keras61
2.5 小结62
第3章 回归64
3.1 什么是回归64
3.2 使用线性回归进行预测65
3.2.1 简单线性回归65
3.2.2 多线性回归68
3.2.3 多元线性回归68
3.3 TensorFlow Estimator69
3.3.1 特征列69
3.3.2 输入函数70
3.3.3 使用TensorFlow EstimatorAPI的MNIST70
3.4 使用线性回归预测房价71
3.5 分类任务和决策边界75
3.5.1 logistic回归75
3.5.2 MNIST数据集上的logistic回归76
3.6 小结80
3.7 参考文献80
第4章 卷积神经网络81
4.1 深度卷积神经网络81
4.1.1 局部感受野82
4.1.2 共享权重和偏差82
4.1.3 数学示例83
4.1.4 TensorFlow 2.x中的ConvNets83
4.1.5 池化层84
4.2 DCNN的示例LeNet85
4.2.1 TensorFlow 2.0中的LeNet代码85
4.2.2 理解深度学习的力量90
4.3 通过深度学习识别CIFAR-10图像91
4.3.1 用更深的网络提高CIFAR-10的性能93
4.3.2 用数据增强提高CIFAR-10的性能95
4.3.3 基于CIFAR-10预测97
4.4 用于大规模图像识别的超深度卷积网络98
4.4.1 基于VGG16神经网络识别猫100
4.4.2 使用tf.keras内置的VGG16 Net模块101
4.4.3 复用预建深度学习模型以提取特征102
4.5 小结103
4.6 参考文献103
第5章 高级卷积神经网络104
5.1 计算机视觉104
5.1.1 复杂任务的CNN组合104
5.1.2 用tf.keras-estimator模型对Fashion-MNIST分类111
5.1.3 在GPU上运行Fashion-MNISTtf.keras-estimator模型113
5.1.4 用于迁移学习的Deep Inception-v3 Net114
5.1.5 迁移学习:分类人和马117
5.1.6 基于tf.keras和TensorFlow Hub的Application Zoo120
5.1.7 其他CNN架构121
5.1.8 回答有关图像的问题124
5.1.9 风格迁移127
5.1.10 创建DeepDream网络129
5.1.11 查看深度网络学到的内容132
5.2 视频133
5.3 文本文件134
5.4 音频和音乐137
5.5 卷积运算小结141
5.5.1 基本卷积神经网络141
5.5.2 空洞卷积141
5.5.3 可分离卷积141
5.5.4 深度卷积142
5.5.5 深度可分离卷积142
5.6 胶囊网络142
5.6.1 CNN有什么问题142
5.6.2 Capsule网络有什么新功能143
5.7 小结144
5.8 参考文献144
第6章 生成对抗网络146
6.1 什么是GAN146
6.2 深度卷积GAN152
6.3 一些有趣的GAN架构161
6.3.1 SRGAN161
6.3.2 CycleGAN162
6.3.3 I