首页>参考读物>计算机科学与技术>人工智能

深度学习实战:基于TensorFlow 2和Keras(原书第2版)
作者 : [意] 安东尼奥·古利(Antonio Gulli) [印] 阿米塔·卡普尔(Amita Kapoor) [美] 苏吉特·帕尔(Sujit Pal) 著
译者 : 刘尚峰 刘冰 译
出版日期 : 2021-08-06
ISBN : 978-7-111-68771-9
定价 : 149.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 482
开本 : 16
原书名 : Deep Learning with TensorFlow 2 and Keras,Second Edition
原出版社: Packt Publishing Ltd.
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书简洁且全面地介绍了现代神经网络、人工智能和深度学习技术,专门为软件工程师和数据科学家设计。第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。本书内容丰富,易于理解,示例具有代表性,是学习深度学习的绝佳指南。

图书特色

图书前言

本书简洁且全面地介绍了现代神经网络、人工智能和深度学习技术,专门为软件工程师和数据科学家设计。它是另外两本著作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章),具备在文本上执行各种任务的能力。这些模型的参数从3.4亿个逐渐增加到15亿个(见图3)。近期,Nvidia声称自己能够在短短53分钟内训练出具有83亿个参数的已知最大模型。这项训练使Nvidia可以构建最强大的模型来处理文本信息(https://devblogs.nvidia.com/training-bert-with-gpus/)。

图3 多种深度学习模型的参数数量增长
除此之外,计算能力也在显著提升。GPU和TPU(参见第16章)是深度学习加速器,它们使得在较短时间内训练出大型模型成为可能。TPU3于2018年5月发布,计算能力约为360 TFLOPS(每秒万亿次浮点运算),是2017年5月发布的TPU2的两倍。一个完整的TPU3 pod可以提供100 PFLOPS(每秒千万亿次浮点运算)的机器学习性能,而TPU2 pod只能达到11.5 TFLOPS。
仅仅不到一年,每个pod就提升了10倍(见图4),从而可以更快地进行训练。

图4 TPU加速器性能(单位:PFLOPS)
然而,DL的增长不仅仅在于更高的准确度、更多的研究论文、更大的模型以及更快的加速器,在过去的四年中,还观察到了一些其他趋势。
第一,灵活的编程框架的使用率增加,例如Keras[1]、TensorFlow[2]、PyTorch[8]和fast.ai。这些框架在ML和DL社区中激增,并提供了一些令人印象深刻的结果,正如我们将在本书中看到的那样。根据2019年Kaggle的“State of the Machine Learning and Data Science ”,基于19 717位Kaggle(https://www.kaggle.com/)用户的回复,Keras和TensorFlow无疑是最受欢迎的选择(见图5)。TensorFlow 2.0是本书讨论的框架,该框架融合了Keras和TensorFlow 1.x的强大功能。

图5 深度学习框架使用率
第二,云上使用带有加速器(参见第16章)的托管服务(参见第12章)的可能性增加。这让数据科学家无须管理基础设施开销,而可以专注于ML问题。
第三,在更多异构系统中部署模型的能力不断增强:移动设备、物联网设备,甚至是台式机和笔记本电脑中通常使用的浏览器(参见第13章)。
第四,对如何使用越来越复杂的DL架构的理解加深,这些DL架构有稠密网络(参见第1章)、卷积网络(参见第4章和第5章)、生成对抗网络(参见第6章)、词嵌入(参见第7章)、循环网络(参见第8章)、自编码器(参见第9章)以及强化学习(参见第11章)等。
第五,新的AutoML技术的出现可以使不熟悉ML技术的领域专家轻松而有效地使用ML技术(参见第14章)。AutoML可以减轻为特定应用领域找到正确模型的负担,缩短模型微调以及确定作为ML模型输入的正确特征集(针对特定应用问题)的时间。
以上5个趋势在2019年达到顶峰,三位深度学习之父Yoshua Bengio、Geoffrey Hinton和Yann LeCun因为概念和工程方面的突破已使深度神经网络成为计算的重要组成部分而获得了图灵奖,ACM A. M. 图灵奖旨在奖励那些对计算机领域做出持久和重大技术贡献的个人(引自ACM网站:https://awards.acm.org/)。许多人认为该奖项是计算机科学的诺贝尔奖。
回顾过去的10年,DL对科学和工业界的贡献令人着迷和激动。有理由相信,今后DL的贡献会不断增加。的确,随着DL领域的不断发展,我们期望DL会提供更多令人兴奋和令人着迷的贡献。
本书旨在涵盖以上5个趋势,展示深度学习的“魔力”。我们将从简单的模型开始,然后逐步引入越来越复杂的模型。
本书读者对象
如果你是具有ML经验的数据科学家或对神经网络有所了解的AI程序员,那么你会发现本书是使用TensorFlow 2.0作为DL的实用切入点。如果你是对DL风潮感兴趣的软件工程师,那么你会发现本书是你扩展该主题知识的基础平台。本书要求读者具备Python的基本知识。
本书内容
本书的目的是讨论TensorFlow 2.0的特性和库,给出有监督和无监督机器学习模型的概述,并提供对深度学习和机器学习模型的全面分析。书中提供了有关云、移动设备和大型生产环境的切实可行的示例。
第1章将逐步介绍神经网络。你将学习如何在TensorFlow 2.0中使用tf.keras层来构建简单的神经网络模型。然后将讨论感知器、多层感知器、激活函数和稠密网络。最后将对反向传播进行直观介绍。
第2章将比较TensorFlow 1.x和TensorFlow 2.0编程模型。你将学习如何使用TensorFlow 1.x的较低级别的计算图API,以及如何使用tf.keras的较高级别的API。新功能将包括动态计算、AutoGraph、tf.Datasets和分布式训练。该章还将提供tf.keras与估算器(estimator)之间的简要比较,以及tf.keras与Keras之间的比较。
第3章将重点介绍最流行的ML技术:回归。你将学习如何使用TensorFlow 2.0估算器来构建简单模型和多回归模型。你将学习使用逻辑回归来解决多类分类问题。
第4章将介绍卷积神经网络(CNN)及其在图像处理中的应用。你将学习如何使用TensorFlow 2.0构建简单的CNN来识别MNIST数据集中的手写字符,以及如何对CIFAR图像进行分类。最后,你将了解如何使用预训练的网络,例如VGG16和Inception。
第5章将讨论CNN在图像、视频、音频和文本处理方面的高级应用。该章将详细讨论图像处理(迁移学习、DeepDream)、音频处理(WaveNet)和文本处理(情感分析、Q&A)的示例。
第6章将重点介绍生成对抗网络。我们将从第一个提出的GAN模型开始,并使用它来伪造MNIST字符。该章将使用深度卷积GAN来创建名人图像,将讨论SRGAN、InfoGAN和CycleGAN等各种GAN架构,涵盖一系列出色的GAN应用程序。最后,该章以用于转换冬季夏季图像的CycleGAN的TensorFlow 2.0实现结束。
第7章将描述什么是词嵌入,并特别参考两个传统的流行嵌入:Word2Vec和GloVe。该章将介绍这两个嵌入背后的核心思想,如何从你自己的语料库生成它们,以及如何在你自己的网络中将它们用于自然语言处理(NLP)应用程序。然后,该章将介绍基本嵌入方法的各种扩展,例如,使用字符三元统计模型代替单词(fastText),用神经网络(ELMO、Google Universal Sentence Encoder)替换静态嵌入来保留单词上下文,语句嵌入(InferSent、SkipThoughts),以及用预训练的语言模型进行嵌入(ULMFit、BERT)。
第8章将描述循环神经网络(RNN)的基本架构,以及它如何很好地适应序列学习任务(如NLP中的序列学习任务)。该章将涵盖各种类型的RNN、LSTM、门控循环单元(Gated Recurrent Unit,GRU)、peephole LSTM和双向LSTM,还将深入介绍如何将RNN用作语言模型。然后将介绍seq2seq模型,这是一种最初用于机器翻译的基于RNN的编码器-解码器架构。接下来将介绍注意力机制,以增强seq2seq架构的性能,最后将介绍Transformer架构(BERT、GPT-2),该架构来自论文“Attention is all you need”。
第9章将介绍自编码器,这是一类试图将输入重新创建为目标的神经网络。该章将涵盖各种自编码器,例如,稀疏自编码器和降噪自编码器。本章将训练降噪自编码器,以消除输入图像中的噪声。之后将演示如何使用自编码器来创建MNIST数字。最后,将介绍构建LSTM自编码器以生成句子向量所涉及的步骤。
第10章深入研究无监督学习模型。该章将涵盖聚类和降维所需的技术,例如,PCA、
k-均值和自组织图。该章将详细介绍玻尔兹曼机及其TensorFlow实现。涵盖的概念将扩展到构建受限玻尔兹曼机(Restricted Boltzmann Machine,RBM)。
第11章将重点介绍强化学习。从Bellman Ford等式开始,该章将涵盖折扣奖励以及折扣因子等概念。然后将解释基于策略和基于模型的强化学习。最后,将建立一个深度Q学习网络(Deep Q-learning Network,DQN)来玩Atari游戏。
第12章将讨论云环境以及如何利用它来训练和部署模型。该章将介绍为DL设置Amazon Web Services(AWS)所需的步骤,还将介绍为DL应用设置谷歌云平台所需的步骤以及如何为DL应用设置微软Azure。该章将包括各种云服务,使你可以直接在云上运行Jupyter Notebook。最后,该章将介绍TensorFlow Extended。
第13章将介绍用于移动设备和物联网的TensorFlow技术。首先将简要介绍TensorFlow Mobile,然后将更详细地介绍TensorFlow Lite。该章将讨论Android、iOS和Raspberry Pi(树莓派)应用程序的一些示例,以及部署预训练模型的示例,例如MobileNet v1、v2、v3(为移动和嵌入式视觉应用程序设计的图像分类模型)、用于姿势估计的PoseNet(估计图像或视频中人物姿势的视觉模型)、DeepLab分割(将语义标签(例如狗、猫、汽车)分配给输入图像中每个像素的图像分割模型)和MobileNet SSD对象检测(使用边框检测多个对象的图像分类模型)。该章将以一个联合学习的示例作为结尾,该联合学习示例是一种新的机器学习框架,分布在数百万个移动设备上。
第14章将介绍令人兴奋的领域—AutoML。该章将讨论自动数据准备、自动特征工程和自动模型生成,还将介绍AutoKeras和Google Cloud AutoML及其针对Tables、Vision、Text、Translation和Video的多种解决方案。
第15章将讨论深度学习相关的数学知识。该章将深入探讨进行深度学习时发生了什么。该章以有关深度学习编程和反向传播起源的简短历史开始,接下来介绍一些数学工具和推导过程,这有助于我们理解概念。该章的其余部分将详细介绍反向传播及其在CNN和RNN中的一些应用。
第16章将介绍TPU,TPU是Google开发的一种特殊芯片,用于超快速执行神经网络数学运算。在该章中,我们将比较三代TPU、边缘TPU与CPU和GPU。该章将包含使用TPU的代码示例。
软硬件准备
为了能够顺利地阅读各章,你将需要以下软件:
TensorFlow 2.0或更高版本
Matplotlib 3.0或更高版本
scikit-learn 0.18.1或更高版本
NumPy 1.15或更高版本
硬件要求如下:
32位或64位架构
2 GHz以上CPU
4 GB RAM
至少10 GB的可用硬盘空间
下载示例代码
本书的示例代码可以从http://www.packtpub.com通过个人账号下载,也可以访问华章图书官网http://www.hzbook.com,通过注册并登录个人账号下载。
排版约定
本书中使用以下排版约定。
代码体:表示文本、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟URL、用户输入和Twitter的内容,如下所示:“此外,我们将真实标签分别加载到Y_train和Y_test中并对它们执行独热编码。”
代码块及命令行如下:

粗体:表示新术语和重要单词。例如:“我们的简单网络开始时的准确度为92.22%,这意味着在100个字符中,不能正确识别的字符大约有8个。”
警告或重要提示。
提示和小技巧。
参考文献

上架指导

计算机\人工智能

封底文字

本书围绕TensorFlow和Keras讲解神经网络和深度学习技术。在这个强大、受欢迎、可扩展的机器学习技术栈中,你将学习如何编写深度学习应用。
TensorFlow是专业级应用选用的机器学习库,而Keras提供了一个简单且强大的Python API来访问TensorFlow。TensorFlow 2提供了完整的集成Keras,使高阶机器学习比以往任何时候都更加轻松便捷。
本书还介绍了基于TensorFlow的神经网络,贯穿了主要的应用(回归、CNN、GAN、RNN、NLP),还涵盖了两个可用的示例应用,并深入探讨了生产环境下的TF、TF Mobile,以及TensorFlow与AutoML的结合使用。
通过阅读本书,你将:
学习用TensorFlow 2和Keras API构建机器学习和深度学习系统。
学习使用回归分析这一流行的机器学习方法。
了解CNN及其对图像分类器等深度学习系统的重要性。
学习使用GAN创建适合现有模式的新数据。
探索可智能化处理时序序列输入的RNN,使用时序序列的一部分来正确阐释另一部分。
学习将深度学习应用于自然语言,并解析自然语言文本以生成合适的回应。
学习在云环境中训练模型,并将TF部署到实际场景中。
探索Google工具如何在不需要复杂建模的情况下自动执行简单的ML工作流程。

图书目录

前言
作者简介
审校者简介
第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 Colab—CPU、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 InfoGAN164
6.4 GAN的出色应用165
6.5 TensorFlow 2.0中的CycleGAN168
6.6 小结177
6.7 参考文献177
第7章 词嵌入178
7.1 词嵌入的起源和基本原理178
7.2 分布式表示179
7.3 静态嵌入180
7.3.1 Word2Vec181
7.3.2 GloVe183
7.4 使用gensim创建自己的嵌入184
7.5 使用gensim探索嵌入空间185
7.6 使用词嵌入检测垃圾短信188
7.6.1 获取数据188
7.6.2 准备待用数据189
7.6.3 构建嵌入矩阵190
7.6.4 定义垃圾短信分类器192
7.6.5 训练和评估模型193
7.6.6 运行垃圾短信检测器194
7.7 神经嵌入—不只是单词195
7.7.1 Item2Vec195
7.7.2 node2vec196
7.8 字符和子词嵌入201
7.9 动态嵌入201
7.10 句子和段落嵌入203
7.11 基于语言模型的嵌入205
7.11.1 使用BERT作为特征提取器207
7.11.2 微调BERT208
7.11.3 基于BERT命令行的分类209
7.11.4 把BERT作为自己网络的一部分210
7.12 小结213
7.13 参考文献214
第8章 循环神经网络217
8.1 基本的RNN单元218
8.1.1 时间反向传播219
8.1.2 梯度消失和梯度爆炸221
8.2 RNN单元变体221
8.2.1 长短期记忆网络221
8.2.2 门控循环单元223
8.2.3 peephole LSTM223
8.3 RNN变体224
8.3.1 双向RNN224
8.3.2 有状态RNN224
8.4 RNN拓扑结构225
8.4.1 一对多—学习生成文本226
8.4.2 多对一—情感分析232
8.4.3 多对多—POS标记238
8.5 编码器-解码器架构—seq2seq245
8.6 注意力机制255
8.7 Transformer架构261
8.8 小结264
8.9 参考文献265
第9章 自编码器267
9.1 自编码器简介267
9.2 香草自编码器269
9.2.1 TensorFlow Keras层—定义自定义层269
9.2.2 使用自编码器重构手写数字271
9.3 稀疏自编码器274
9.4 降噪自编码器276
9.5 堆栈自编码器279
9.5.1 用于去除图像噪声的卷积自编码器279
9.5.2 Keras自编码器示例—句子向量283
9.6 小结290
9.7 参考文献290
第10章 无监督学习292
10.1 主成分分析292
10.1.1 MNIST数据集上的PCA293
10.1.2 TensorFlow嵌入式API295
10.1.3 k-均值聚类296
10.1.4 TensorFlow 2.0中的k-均值297
10.1.5 k-均值的变体299
10.2 自组织图300
10.3 受限玻尔兹曼机306
10.3.1 使用RBM重建图像307
10.3.2 深度信念网络310
10.4 变分自编码器311
10.5 小结316
10.6 参考文献316
第11章 强化学习318
11.1 概述318
11.1.1 强化学习术语319
11.1.2 深度强化学习算法321
11.1.3 强化学习的成功案例324
11.2 OpenAI Gym概述324
11.3 深度Q网络328
11.3.1 CartPole的深度Q网络329
11.3.2 深度Q网络玩Atari游戏333
11.3.3 DQN变体336
11.4 深度确定性策略梯度339
11.5 小结340
11.6 参考文献340
第12章 TensorFlow和云服务342
12.1 云端深度学习342
12.1.1 微软Azure343
12.1.2 AWS344
12.1.3 谷歌云平台346
12.1.4 IBM云347
12.2 云端虚拟机348
12.2.1 亚马逊上的EC2348
12.2.2 谷歌云平台上的计算实例349
12.2.3 微软Azure上的虚拟机350
12.3 云端的Jupyter Notebook351
12.3.1 SageMaker351
12.3.2 Google Colaboratory351
12.3.3 微软Azure Notebook353
12.4 用于生产的TensorFlow Extended354
12.4.1 TFX管道354
12.4.2 TFX管道组件355
12.4.3 TFX库356
12.5 TensorFlow企业版357
12.6 小结357
12.7 参考文献357
第13章 用于移动设备和物联网的TensorFlow以及Tensor-Flow.js359
13.1 TensorFlow Mobile359
13.2 TensorFlow Lite359
13.2.1 量化360
13.2.2 FlatBuffer360
13.2.3 Mobile转换器361
13.2.4 移动优化解析器361
13.2.5 支持平台361
13.2.6 架构361
13.2.7 使用TensorFlow Lite362
13.2.8 应用程序的一个通用示例362
13.2.9 使用GPU和加速器363
13.2.10 应用程序示例363
13.3 TensorFlow Lite中的预训练模型365
13.3.1 图片分类366
13.3.2 物体检测367
13.3.3 姿势估计367
13.3.4 智能回复367
13.3.5 分割367
13.3.6 风格迁移367
13.3.7 文本分类367
13.3.8 问答368
13.3.9 使用移动GPU的注意事项368
13.4 边缘联合学习概述369
13.5 TensorFlow.js372
13.5.1 普通TensorFlow.js372
13.5.2 模型转换378
13.5.3 预训练模型378
13.5.4 Node.js379
13.6 小结380
13.7 参考文献380
第14章 AutoML简介382
14.1 什么是AutoML382
14.2 实现AutoML383
14.3 自动数据准备383
14.4 自动特征工程384
14.5 自动模型生成384
14.6 AutoKeras386
14.7 Google Cloud AutoML387
14.7.1 使用Cloud AutoML—Tables解决方案387
14.7.2 使用Cloud AutoML—Vision解决方案397
14.7.3 使用Cloud AutoML— Text Classfication解决方案405
14.7.4 使用Cloud AutoML—Translation解决方案408
14.7.5 使用Cloud AutoML—Video Intelligence Classifi-cation解决方案413
14.7.6 费用419
14.8 将Google AutoML集成到Kaggle419
14.9 小结420
14.10 参考文献420
第15章 深度学习相关的数学知识422
15.1 历史422
15.2 数学工具422
15.2.1 随处可见的导数和梯度423
15.2.2 梯度下降424
15.2.3 链式法则424
15.2.4 一些微分规则425
15.2.5 矩阵运算425
15.3 激活函数425
15.3.1 sigmoid函数的导数426
15.3.2 tanh函数的导数426
15.3.3 ReLU函数的导数427
15.4 反向传播427
15.4.1 前向步骤429
15.4.2 反向步骤429
15.4.3 反向传播的局限性434
15.4.4 交叉熵及其导数435
15.4.5 批量梯度下降、随机梯度下降和小批量436
15.5 关于反向传播和卷积的思考437
15.6 关于反向传播和RNN的思考438
15.7 关于TensorFlow和自动区分的说明440
15.8 小结440
15.9 参考文献441
第16章 张量处理单元442
16.1 CPU、GPU与TPU442
16.1.1 CPU和GPU442
16.1.2 TPU443
16.2 三代TPU和边缘TPU444
16.2.1 第一代TPU444
16.2.2 第二代TPU447
16.2.3 第三代TPU447
16.2.4 边缘TPU448
16.3 TPU性能448
16.4 如何在Colab中使用TPU449
16.4.1 检查TPU是否可用450
16.4.2 用tf.data加载数据450
16.4.3 建立模型并将其加载到TPU中451
16.5 使用预训练的TPU模型453
16.6 使用TensorFlow 2.1和夜间版455
16.7 小结456
16.8 参考文献457

教学资源推荐
作者: [奥]迪特尔·施马尔斯蒂格(Dieter Schmalstieg) [美]托比亚斯·霍勒尔(Tobias Höllerer) 著
作者: 周昌乐 著
作者: (澳) Michael Negnevitsky 著
参考读物推荐
作者: 赵志为 闵革勇 著
作者: [美]克里斯·马特曼(Chris Mattmann) 著
作者: [加]约翰·赫尔(John C. Hull) 著
作者: 蒋杰 刘煜宏 陈鹏 郑礼雄等著