新智元报道
编辑:金磊
李沐大神《动手学深度学习》中文版发布了!与当前其它深度学习教科书相比,本教科书更加注重交互式的学习体验。新智元值此之际,与人民邮电出版社合作开展免费赠书活动!
深度学习在短短几年之内便让世界大吃一惊。
它非常有力地推动了计算机视觉、自然语言处理、自动语音识别、强化学习和统计建模等多个领域的快速发展。
随着这些领域的不断进步,人们现在可以制造自动驾驶的汽车,基于短信、邮件甚至电话的自动回复系统,以及在围棋中击败最优秀人类选手的软件。这些由深度学习带来的新工具也正产生着广泛的影响。
与此同时,深度学习也给它的使用者们带来了独一无二的挑战:任何单一的应用都汇集了各学科的知识。
具体来说,应用深度学习需要同时理解:
问题的动机和特点;将大量不同类型神经网络层通过特定方式组合在一起的模型背后的数学原理;在原始数据上拟合极复杂的深层模型的优化算法;有效训练模型、避免数值计算陷阱以及充分利用硬件性能所需的工程技能;为解决方案挑选合适的变量(超参数)组合的经验。
这就为读者学习深度学习(尤其是在选择学习书目的过程中)带来了一定的挑战。
近期,由MXNet创始人李沐大神、AstonZhang等人所著的交互式深度学习书籍《动手学深度学习》出版了!
相信很多人早在去年年底便已拜读过这本书的在线预览版。而此次出版、线上出售的是中文版教科书!
新智元值此之际,非常荣幸与人民邮电出版社合作开展赠书活动,回馈新智元新老读者——免费赠送10本《动手学深度学习》!
(具体活动参与、赠送方式见文末)
为什么要选择《动手学深度学习》?
目前市面上有关深度学习介绍的书籍大多可分两类,一类侧重方法介绍,另一类侧重实践和深度学习工具的介绍。
本书同时覆盖方法和实践
本书不仅从数学的角度阐述深度学习的技术与应用,还包含可运行的代码,为读者展示如何在实际中解决问题。
为了给读者提供一种交互式的学习体验,《动手学深度学习》不但提供免费的教学视频和讨论区,而且提供可运行的Jupyter记事本文件,充分利用Jupyter记事本能将文字、代码、公式和图像统一起来的优势。
这样不仅直接将数学公式对应成实际代码,而且可以修改代码、观察结果并及时获取经验,从而带给读者全新的、交互式的深度学习的学习体验。
适合哪些人群阅读?
本书面向希望了解深度学习,特别是对实际使用深度学习感兴趣的大学生、工程师和研究人员。
本书不要求读者有任何深度学习或者机器学习的背景知识,读者只需具备基本的数学和编程知识,如基础的线性代数、微分、概率及Python编程知识。
本书的附录中提供了书中涉及的主要数学知识,供读者参考。
与其它深度学习教科书相比,有何独具匠心的特点?
目前,一些有关深度学习的教科书不断问世,那么《动手学深度学习》与这些教科书有何区别呢?
与Goodfellow《深度学习》相比
在近期不断问世的深度学习教科书中,最为著名的要数Goodfellow、Bengio和Courville的《深度学习》。该书梳理了深度学习背后的众多概念与方法,是一本极为优秀的教材。
然而,这类资源并没有将概念描述与实际代码相结合,以至于有时会令读者对如何实现它们感到毫无头绪。
与吴恩达的深度学习课程相比
在知乎中,李沐老师表达了与吴恩达的深度学习课程相比的区别:
我们不仅介绍深度学习模型,而且提供简单易懂的代码实现。我们不是通过幻灯片来讲解,而是通过解读代码,实际动手调参数和跑实验来学习。我们使用中文。不管是教材、直播,还是论坛。(虽然在美国呆了5至6年,事实上我仍然对一边听懂各式口音的英文一边理解内容很费解)。Andrew的课程目前免费版本只能看视频,而我们不仅仅直播教学,而且提供练习题,提供大家交流的论坛,并鼓励大家在GitHub上参与到课程的改进。希望能与大家更近距离的进行交流。
除了这些以外,商业课程提供者们虽然制作了众多的优质资源,但它们的付费门槛依然令不少用户望而生畏。
包含代码、数学、网页、讨论的统一资源
我们在年7月启动了写作这本书的项目。当时我们需要向用户解释ApacheMXNet在那时的新接口Gluon。不幸的是,我们并没有找到任何一个资源可以同时满足以下几点需求:
包含较新的方法和应用,并不断更新;广泛覆盖现代深度学习技术并具有一定的技术深度;既是严谨的教科书,又是包含可运行代码的生动的教程。
那时,我们在博客和GitHub上找到了大量的演示特定深度学习框架(例如用TensorFlow进行数值计算)或实现特定模型(例如AlexNet、ResNet等)的示例代码。这些示例代码的一大价值在于提供了教科书或论文往往省略的实现细节,比如数据的处理和运算的高效率实现。如果不了解这些,即使能将算法倒背如流,也难以将算法应用到自己的项目中去。此外,这些示例代码还使得用户能通过观察修改代码所导致的结果变化而快速验证想法、积累经验。因此,我们坚信动手实践对于学习深度学习的重要性。然而可惜的是,这些示例代码通常侧重于如何实现给定的方法,却忽略了有关算法设计的探究或者实现细节的解释。虽然在像Distill这样的网站和某些博客上出现了一些有关算法设计和实现细节的讨论,但它们常常缺少示例代码,并通常仅覆盖深度学习的一小部分。
另外,我们欣喜地看到了一些有关深度学习的教科书不断问世,其中最著名的要数Goodfellow、Bengio和Courville的《深度学习》。该书梳理了深度学习背后的众多概念与方法,是一本极为优秀的教材。然而,这类资源并没有将概念描述与实际代码相结合,以至于有时会令读者对如何实现它们感到毫无头绪。除了这些以外,商业课程提供者们虽然制作了众多的优质资源,但它们的付费门槛依然令不少用户望而生畏。
正因为这样,深度学习用户,尤其是初学者,往往不得不参考来源不同的多种资料。例如,通过教科书或者论文来掌握算法及其相关数学知识,阅读线上文档学习深度学习框架的使用方法,然后寻找感兴趣的算法在这个框架上的实现并摸索如何将它应用到自己的项目中去。如果你正亲身经历这一过程,你可能会感到痛苦:不同来源的资料有时难以相互一一对应,即便能够对应也可能需要花费大量的精力。例如,我们需要将某篇论文公式中的数学变量与某段网上实现中的程序变量一一对应,并在代码中找到论文可能没交代清楚的实现细节,甚至要为运行不同的代码安装不同的运行环境。
针对以上存在的痛点,我们正在着手创建一个为实现以下目标的统一资源:
所有人均可在网上免费获取;提供足够的技术深度,从而帮助读者实际成为深度学习应用科学家:既理解数学原理,又能够实现并不断改进方法;包含可运行的代码,为读者展示如何在实际中解决问题。这样不仅直接将数学公式对应成实际代码,而且可以修改代码、观察结果并及时获取经验;允许我们和整个社区不断快速迭代内容,从而紧跟仍在高速发展的深度学习领域;
由包含有关技术细节问答的论坛作为补充,使大家可以相互答疑并交换经验。
这些目标往往互有冲突:公式、定理和引用最容易通过LaTeX进行管理和展示,代码自然应该用简单易懂的Python描述,而网页本身应该是一堆HTML及配套的CSS和JavaScript。此外,我们希望这个资源可以作为可执行代码、实体书以及网站。然而,目前并没有任何工具可以完美地满足以上所有需求。
因此,我们不得不自己来集成这样的一个工作流。我们决定在GitHub上分享源代码并允许提交编辑,通过Jupyter记事本来整合代码、公式、文本、图片等,使用Sphinx作为渲染引擎来生成不同格式的输出,并使用Discourse作为论坛。虽然我们的系统尚未完善,但这些选择在互有冲突的目标之间取得了较好的折中。这很可能是使用这种集成工作流发布的第一本书。
名家推荐
来自学术界
这是一本及时且引人入胜的书。它不仅提供了深度学习原理的全面概述,还提供了具有编程代码的详细算法,此外,还提供了计算机视觉和自然语言处理中有关深度学习的最新介绍。如果你想钻研深度学习,请研读这本书!
——韩家炜,ACM院士、IEEE院士、美国伊利诺伊大学香槟分校计算机系AbelBliss教授
这是对机器学习文献的一个很受欢迎的补充,重点是通过集成Jupyter记事本实现的动手经验。深度学习的学生应该能体会到,这对于熟练掌握这一领域是非常宝贵的。
——BernhardSchlkopf,ACM院士、德国国家科学院院士、德国马克斯普朗克研究所智能系统院院长
这本书基于MXNet框架来介绍深度学习技术,书中代码可谓“所学即所用”,为喜欢通过Python代码进行学习的读者了解、接触深度学习技术提供了很大的便利。
——周志华,ACM院士、IEEE院士、AAAS院士、南京大学计算机科学与技术系主任
这是一本基于ApacheMXNet的深度学习实战书籍,可以帮助读者快速上手并掌握使用深度学习工具的基本技能。本书的几个作者都在机器学习领域有着非常丰富的经验。他们不光有大量的工业界实践经验,也有非常高的学术成就,所以对机器学习领域的前沿算法理解深刻。这使得作者们在提供优质代码的同时,也可以把最前沿的算法和概念深入浅出地介绍给读者。这本书可以帮助深度学习实践者快速提升自己的能力。
——张潼,香港科技大学计算机科学与数学教授
来自工业界
虽然业界已经有不错的深度学习方面的书籍,但都不够紧密结合工业界的应用实践。我认为《动手学深度学习》是最适合工业界研发工程师学习的,因为这本书把算法理论、应用场景、代码实例都完美地联系在一起,引导读者把理论学习和应用实践紧密结合,知行合一,在动手中学习,在体会和领会中不断深化对深度学习的理解。因此我毫无保留地向广大的读者强烈推荐《动手学深度学习》。
——余凯,地平线公司创始人、首席执行官
强烈推荐这本书!它其实远不只是一本书:它不仅讲解深度学习背后的数学原理,更是一个编程工作台与记事本,让读者可以一边动手学习一边收到反馈,它还是个开源社区平台,让大家可以交流。作为在AI学术界和工业界都长期工作过的人,我特别赞赏这种手脑一体的学习方式,既能增强实践能力,又可以在解决问题中锻炼独立思考和批判性思维。
作者们是算法工程兼强的业界翘楚,他们能奉献出这样的一本好的开源书,为他们点赞!
——漆远,蚂蚁金服副总裁、首席人工智能科学家
作者简介
阿斯顿·张(AstonZhang)
亚马逊应用科学家,美国伊利诺伊大学香槟分校计算机科学博士,统计学和计算机科学双硕士。他专注于机器学习的研究,并在数个顶级学术会议发表过论文。他担任过NeurIPS、ICML、KDD、WWW、WSDM、SIGIR、AAAI等学术会议的程序委员或审稿人以及FrontiersinBigData期刊的编委。
李沐(MuLi)
亚马逊首席科学家(PrincipalScientist),加州大学伯克利分校客座助理教授,美国卡内基梅隆大学计算机系博士。他专注于分布式系统和机器学习算法的研究。他是深度学习框架MXNet的作者之一。他曾任机器学习创业公司MarianasLabs的CTO和百度深度学习研究院的主任研发架构师。他在理论、机器学习、应用和操作系统等多个领域的顶级学术会议(包括FOCS、ICML、NeurIPS、AISTATS、CVPR、KDD、WSDM、OSDI)上发表过论文。
[德]亚历山大J.斯莫拉(AlexanderJ.Smola)
亚马逊副总裁/杰出科学家,德国柏林工业大学计算机科学博士。他曾在澳大利亚国立大学、美国加州大学伯克利分校和卡内基梅隆大学任教。他发表了超过篇学术论文,并著有5本书,其论文及书被引用超过10万次。他的研究兴趣包括深度学习、贝叶斯非参数、核方法、统计建模和可扩展算法。
[美]扎卡里C.立顿(ZacharyC.Lipton)
亚马逊副总裁/杰出科学家,德国柏林工业大学计算机科学博士。他曾在澳大利亚国立大学、美国加州大学伯克利分校和卡内基梅隆大学任教。他发表了超过篇学术论文,并著有5本书,其论文及书被引用超过10万次。他的研究兴趣包括深度学习、贝叶斯非参数、核方法、统计建模和可扩展算法。
《动手学深度学习》目录
对本书的赞誉
前言
如何使用本书
资源与支持
主要符号表
第1章 深度学习简介1
1.1 起源2
1.2 发展4
1.3 成功案例6
1.4 特点7
小结8
练习8
第2章 预备知识9
2.1 获取和运行本书的代码9
2.1.1 获取代码并安装运行环境9
2.1.2 更新代码和运行环境11
2.1.3 使用GPU版的MXNet11
小结12
练习12
2.2 数据操作12
2.2.1 创建NDArray12
2.2.2 运算14
2.2.3 广播机制16
2.2.4 索引17
2.2.5 运算的内存开销17
2.2.6 NDArray和NumPy相互变换18
小结19
练习19
2.3 自动求梯度19
2.3.1 简单例子19
2.3.2 训练模式和预测模式20
2.3.3 对Python控制流求梯度20
小结21
练习21
2.4 查阅文档21
2.4.1 查找模块里的所有函数和类21
2.4.2 查找特定函数和类的使用22
2.4.3 在MXNet网站上查阅23
小结24
练习24
第3章 深度学习基础25
3.1 线性回归25
3.1.1 线性回归的基本要素25
3.1.2 线性回归的表示方法28
小结30
练习30
3.2 线性回归的从零开始实现30
3.2.1 生成数据集30
3.2.2 读取数据集32
3.2.3 初始化模型参数32
3.2.4 定义模型33
3.2.5 定义损失函数33
3.2.6 定义优化算法33
3.2.7 训练模型33
小结34
练习34
3.3 线性回归的简洁实现35
3.3.1 生成数据集35
3.3.2 读取数据集35
3.3.3 定义模型36
3.3.4 初始化模型参数36
3.3.5 定义损失函数37
3.3.6 定义优化算法37
3.3.7 训练模型37
小结38
练习38
3.4 softmax回归38
3.4.1 分类问题38
3.4.2 softmax回归模型39
3.4.3 单样本分类的矢量计算表达式40
3.4.4 小批量样本分类的矢量计算表达式40
3.4.5 交叉熵损失函数41
3.4.6 模型预测及评价42
小结42
练习42
3.5 图像分类数据集(Fashion-MNIST)42
3.5.1 获取数据集42
3.5.2 读取小批量44
小结45
练习45
3.6 softmax回归的从零开始实现45
3.6.1 读取数据集45
3.6.2 初始化模型参数45
3.6.3 实现softmax运算46
3.6.4 定义模型46
3.6.5 定义损失函数47
3.6.6 计算分类准确率47
3.6.7 训练模型48
3.6.8 预测48
小结49
练习49
3.7 softmax回归的简洁实现49
3.7.1 读取数据集49
3.7.2 定义和初始化模型50
3.7.3 softmax和交叉熵损失函数50
3.7.4 定义优化算法50
3.7.5 训练模型50
小结50
练习50
3.8 多层感知机51
3.8.1 隐藏层51
3.8.2 激活函数52
3.8.3 多层感知机55
小结55
练习55
3.9 多层感知机的从零开始实现56
3.9.1 读取数据集56
3.9.2 定义模型参数56
3.9.3 定义激活函数56
3.9.4 定义模型56
3.9.5 定义损失函数57
3.9.6 训练模型57
小结57
练习57
3.10 多层感知机的简洁实现57
3.10.1 定义模型58
3.10.2 训练模型58
小结58
练习58
3.11 模型选择、欠拟合和过拟合58
3.11.1 训练误差和泛化误差59
3.11.2 模型选择59
3.11.3 欠拟合和过拟合60
3.11.4 多项式函数拟合实验61
小结65
练习65
3.12 权重衰减65
3.12.1 方法65
3.12.2 高维线性回归实验66
3.12.3 从零开始实现66
3.12.4 简洁实现68
小结70
练习70
3.13 丢弃法70
3.13.1 方法70
3.13.2 从零开始实现71
3.13.3 简洁实现73
小结74
练习74
3.14 正向传播、反向传播和计算图74
3.14.1 正向传播74
3.14.2 正向传播的计算图75
3.14.3 反向传播75
3.14.4 训练深度学习模型76
小结77
练习77
3.15 数值稳定性和模型初始化77
3.15.1 衰减和爆炸77
3.15.2 随机初始化模型参数78
小结78
练习79
3.16 实战Kaggle比赛:房价预测79
3.16.1 Kaggle比赛79
3.16.2 读取数据集80
3.16.3 预处理数据集81
3.16.4 训练模型82
3.16.5 k折交叉验证82
3.16.6 模型选择83
3.16.7 预测并在Kaggle提交结果84
小结85
练习85
第4章 深度学习计算86
4.1 模型构造86
4.1.1 继承Block类来构造模型86
4.1.2 Sequential类继承自Block类87
4.1.3 构造复杂的模型88
小结89
练习90
4.2 模型参数的访问、初始化和共享90
4.2.1 访问模型参数90
4.2.2 初始化模型参数92
4.2.3 自定义初始化方法93
4.2.4 共享模型参数94
小结94
练习94
4.3 模型参数的延后初始化95
4.3.1 延后初始化95
4.3.2 避免延后初始化96
小结96
练习97
4.4 自定义层97
4.4.1 不含模型参数的自定义层97
4.4.2 含模型参数的自定义层98
小结99
练习99
4.5 读取和存储99
4.5.1 读写NDArray99
4.5.2 读写Gluon模型的参数
小结
练习
4.6 GPU计算
4.6.1 计算设备
4.6.2 NDArray的GPU计算
4.6.3 Gluon的GPU计算
小结
练习
第5章 卷积神经网络
5.1 二维卷积层
5.1.1 二维互相关运算
5.1.2 二维卷积层
5.1.3 图像中物体边缘检测
5.1.4 通过数据学习核数组
5.1.5 互相关运算和卷积运算
5.1.6 特征图和感受野
小结
练习
5.2 填充和步幅
5.2.1 填充
5.2.2 步幅
小结
练习
5.3 多输入通道和多输出通道
5.3.1 多输入通道
5.3.2 多输出通道
5.3.3 1×1卷积层
小结
练习
5.4 池化层
5.4.1 二维最大池化层和平均池化层
5.4.2 填充和步幅
5.4.3 多通道
小结
练习
5.5 卷积神经网络(LeNet)
5.5.1 LeNet模型
5.5.2 训练模型
小结
练习
5.6 深度卷积神经网络(AlexNet)
5.6.1 学习特征表示
5.6.2 AlexNet
5.6.3 读取数据集
5.6.4 训练模型
小结
练习
5.7 使用重复元素的网络(VGG)
5.7.1 VGG块
5.7.2 VGG网络
5.7.3 训练模型
小结
练习
5.8 网络中的网络(NiN)
5.8.1 NiN块
5.8.2 NiN模型
5.8.3 训练模型
小结
练习
5.9 含并行连结的网络(GoogLeNet)
5.9.1 Inception块
5.9.2 GoogLeNet模型
5.9.3 训练模型
小结
练习
5.10 批量归一化
5.10.1 批量归一化层
5.10.2 从零开始实现
5.10.3 使用批量归一化层的LeNet
5.10.4 简洁实现
小结
练习
5.11 残差网络(ResNet)
5.11.1 残差块
5.11.2 ResNet模型
5.11.3 训练模型
小结
练习
5.12 稠密连接网络(DenseNet)
5.12.1 稠密块
5.12.2 过渡层
5.12.3 DenseNet模型
5.12.4 训练模型
小结
练习
第6章 循环神经网络
6.1 语言模型
6.1.1 语言模型的计算
6.1.2 n元语法
小结
练习
6.2 循环神经网络
6.2.1 不含隐藏状态的神经网络
6.2.2 含隐藏状态的循环神经网络
6.2.3 应用:基于字符级循环神经网络的语言模型
小结
练习
6.3 语言模型数据集(歌词)
6.3.1 读取数据集
6.3.2 建立字符索引
6.3.3 时序数据的采样
小结
练习
6.4 循环神经网络的从零开始实现
6.4.1 one-hot向量
6.4.2 初始化模型参数
6.4.3 定义模型
6.4.4 定义预测函数
6.4.5 裁剪梯度
6.4.6 困惑度
6.4.7 定义模型训练函数
6.4.8 训练模型并创作歌词
小结
练习
6.5 循环神经网络的简洁实现
6.5.1 定义模型
6.5.2 训练模型
小结
练习
6.6 通过时间反向传播
6.6.1 定义模型
6.6.2 模型计算图
6.6.3 方法
小结
练习
6.7 门控循环单元(GRU)
6.7.1 门控循环单元
6.7.2 读取数据集
6.7.3 从零开始实现
6.7.4 简洁实现
小结
练习
6.8 长短期记忆(LSTM)
6.8.1 长短期记忆
6.8.2 读取数据集
6.8.3 从零开始实现
6.8.4 简洁实现
小结
练习
6.9 深度循环神经网络
小结
练习
6.10 双向循环神经网络
小结
练习
第7章 优化算法
7.1 优化与深度学习
7.1.1 优化与深度学习的关系
7.1.2 优化在深度学习中的挑战
小结
练习
7.2 梯度下降和随机梯度下降
7.2.1 一维梯度下降
7.2.2 学习率
7.2.3 多维梯度下降
7.2.4 随机梯度下降
小结
练习
7.3 小批量随机梯度下降
7.3.1 读取数据集
7.3.2 从零开始实现
7.3.3 简洁实现
小结
练习
7.4 动量法
7.4.1 梯度下降的问题
7.4.2 动量法
7.4.3 从零开始实现
7.4.4 简洁实现
小结
练习
7.5 AdaGrad算法
7.5.1 算法
7.5.2 特点
7.5.3 从零开始实现
7.5.4 简洁实现
小结
练习
7.6 RMSProp算法
7.6.1 算法
7.6.2 从零开始实现
7.6.3 简洁实现
小结
练习
7.7 AdaDelta算法
7.7.1 算法
7.7.2 从零开始实现
7.7.3 简洁实现
小结
练习
7.8 Adam算法
7.8.1 算法
7.8.2 从零开始实现
7.8.3 简洁实现
小结
练习
第8章 计算性能
8.1 命令式和符号式混合编程
8.1.1 混合式编程取两者之长
8.1.2 使用HybridSequential类构造模型
8.1.3 使用HybridBlock类构造模型
小结
练习
8.2 异步计算
8.2.1 MXNet中的异步计算
8.2.2 用同步函数让前端等待计算结果
8.2.3 使用异步计算提升计算性能
8.2.4 异步计算对内存的影响
小结
练习
8.3 自动并行计算
8.3.1 CPU和GPU的并行计算
8.3.2 计算和通信的并行计算
小结
练习
8.4 多GPU计算
8.4.1 数据并行
8.4.2 定义模型
8.4.3 多GPU之间同步数据
8.4.4 单个小批量上的多GPU训练
8.4.5 定义训练函数
8.4.6 多GPU训练实验
小结
练习
8.5 多GPU计算的简洁实现
8.5.1 多GPU上初始化模型参数
8.5.2 多GPU训练模型
小结
练习
第9章 计算机视觉
9.1 图像增广
9.1.1 常用的图像增广方法
9.1.2 使用图像增广训练模型
小结
练习
9.2 微调
热狗识别
小结
练习
9.3 目标检测和边界框
边界框
小结
练习
9.4 锚框
9.4.1 生成多个锚框
9.4.2 交并比
9.4.3 标注训练集的锚框
9.4.4 输出预测边界框
小结
练习
9.5 多尺度目标检测
小结
练习
9.6 目标检测数据集(皮卡丘)
9.6.1 获取数据集
9.6.2 读取数据集
9.6.3 图示数据
小结
练习
9.7 单发多框检测(SSD)
9.7.1 定义模型
9.7.2 训练模型
9.7.3 预测目标
小结
练习
9.8 区域卷积神经网络(R-CNN)系列
9.8.1 R-CNN
9.8.2 FastR-CNN
9.8.3 FasterR-CNN
9.8.4 MaskR-CNN
小结
练习
9.9 语义分割和数据集
9.9.1 图像分割和实例分割
9.9.2 PascalVOC2语义分割数据集
小结
练习
9.10 全卷积网络(FCN)
9.10.1 转置卷积层
9.10.2 构造模型
9.10.3 初始化转置卷积层
9.10.4 读取数据集
9.10.5 训练模型
9.10.6 预测像素类别
小结
练习
9.11 样式迁移
9.11.1 方法
9.11.2 读取内容图像和样式图像
9.11.3 预处理和后处理图像
9.11.4 抽取特征
9.11.5 定义损失函数
9.11.6 创建和初始化合成图像
9.11.7 训练模型
小结
练习
9.12 实战Kaggle比赛:图像
分类(CIFAR-10)
9.12.1 获取和整理数据集
9.12.2 图像增广
9.12.3 读取数据集
9.12.4 定义模型
9.12.5 定义训练函数
9.12.6 训练模型
9.12.7 对测试集分类并在Kaggle
提交结果
小结
练习
9.13 实战Kaggle比赛:狗的品种
识别(ImageNetDogs)
9.13.1 获取和整理数据集
9.13.2 图像增广
9.13.3 读取数据集
9.13.4 定义模型
9.13.5 定义训练函数
9.13.6 训练模型
9.13.7 对测试集分类并在Kaggle提交结果
小结
练习
第10章 自然语言处理
10.1 词嵌入(word2vec)
10.1.1 为何不采用one-hot向量
10.1.2 跳字模型
10.1.3 连续词袋模型
小结
练习
10.2 近似训练
10.2.1 负采样
10.2.2 层序softmax
小结
练习
10.3 word2vec的实现
10.3.1 预处理数据集
10.3.2 负采样
10.3.3 读取数据集
10.3.4 跳字模型
10.3.5 训练模型
10.3.6 应用词嵌入模型
小结
练习
10.4 子词嵌入(fastText)
小结
练习
10.5 全局向量的词嵌入(GloVe)
10.5.1 GloVe模型
10.5.2 从条件概率比值理解GloVe模型
小结
练习
10.6 求近义词和类比词
10.6.1 使用预训练的词向量
10.6.2 应用预训练词向量
小结
练习
10.7 文本情感分类:使用循环神经网络
10.7.1 文本情感分类数据集
10.7.2 使用循环神经网络的模型
小结
练习
10.8 文本情感分类:使用卷积神经网络(textCNN)
10.8.1 一维卷积层
10.8.2 时序最大池化层
10.8.3 读取和预处理IMDb数据集
10.8.4 textCNN模型
小结
练习
10.9 编码器-解码器(seq2seq)
10.9.1 编码器
10.9.2 解码器
10.9.3 训练模型
小结
练习
10.10束搜索
10.10.1 贪婪搜索
10.10.2 穷举搜索
10.10.3 束搜索
小结
练习
10.11 注意力机制
10.11.1 计算背景变量
10.11.2 更新隐藏状态
10.11.3 发展
小结
练习
10.12 机器翻译
10.12.1 读取和预处理数据集
10.12.2 含注意力机制的编码器-解码器
10.12.3 训练模型
10.12.4 预测不定长的序列
10.12.5 评价翻译结果
小结
练习
附录A数学基础
附录B 使用Jupyter记事本
附录C使用AWS运行代码
附录DGPU购买指南
附录E如何为本书做贡献
附录Fd2lzh包索引
附录G中英文术语对照表
参考文献
索引
赠书方式
读者在