动手学深度学习PyTorch版
链接:https://pan.baidu.com/s/1dayroSVEY-PLAodFN4UKCw?pwd=17kb
提取码:17kb

内容介绍
本书是《动手学深度学习》的重磅升级版本,选用PyTorch深度学习框架,旨在向读者交付更为便捷的有关深度学习的交互式学习体验。 本书重新修订《动手学深度学习》的所有内容,并针对技术的发展,新增注意力机制、预训练等内容。本书包含15章,*部分介绍深度学习的基础知识和预备知识,并由线性模型引出基础的神经网络——多层感知机;*部分阐述深度学习计算的关键组件、卷积神经网络、循环神经网络、注意力机制等大多数现代深度学习应用背后的基本工具;第三部分讨论深度学习中常用的优化算法和影响深度学习计算性能的重要因素,并分别列举深度学习在计算机视觉和自然语言处理中的重要应用。 本书同时覆盖深度学习的方法和实践,主要面向在校大学生、技术人员和研究人员。阅读本书需要读者了解基本的Python编程知识及预备知识中描述的线性代数、微分和概率等基础知识。
目录
对本书的赞誉
前言
译者简介
学习环境配置
资源与支持
主要符号表
第 1章引言1
1.1日常生活中的机器学习2
1.2机器学习中的关键组件3
1.2.1数据3
1.2.2模型4
1.2.3目标函数4
1.2.4优化算法5
1.3各种机器学习问题5
1.3.1监督学习5
1.3.2无监督学习11
1.3.3与环境互动11
1.3.4强化学习12
1.4起源13
1.5深度学习的发展15
1.6深度学习的成功案例16
1.7特点17
第 2章预备知识20
2.1数据操作20
2.1.1入门21
2.1.2运算符22
2.1.3广播机制23
2.1.4索引和切片24
2.1.5节省内存24
2.1.6转换为其他Python对象25
2.2数据预处理26
2.2.1读取数据集26
2.2.2处理缺失值26
2.2.3转换为张量格式27
2.3线性代数27
2.3.1标量28
2.3.2向量28
2.3.3矩阵29
2.3.4张量30
2.3.5张量算法的基本性质31
2.3.6降维32
2.3.7点积33
2.3.8矩阵-向量积33
2.3.9矩阵-矩阵乘法34
2.3.10范数35
2.3.11关于线性代数的更多信息36
2.4微积分37
2.4.1导数和微分37
2.4.2偏导数40
2.4.3梯度41
2.4.4链式法则41
2.5自动微分42
2.5.1一个简单的例子42
2.5.2非标量变量的反向传播43
2.5.3分离计算43
2.5.4Python控制流的梯度计算44
2.6概率44
2.6.1基本概率论45
2.6.2处理多个随机变量48
2.6.3期望和方差50
2.7查阅文档51
2.7.1查找模块中的所有函数和类51
2.7.2查找特定函数和类的用法52
第3章线性神经网络54
3.1线性回归54
3.1.1线性回归的基本元素54
3.1.2向量化加速57
3.1.3正态分布与平方损失58
3.1.4从线性回归到深度网络60
3.2线性回归的从零开始实现61
3.2.1生成数据集62
3.2.2读取数据集63
3.2.3初始化模型参数63
3.2.4定义模型64
3.2.5定义损失函数64
3.2.6定义优化算法64
3.2.7训练64
3.3线性回归的简洁实现66
3.3.1生成数据集66
3.3.2读取数据集66
3.3.3定义模型67
3.3.4初始化模型参数67
3.3.5定义损失函数68
3.3.6定义优化算法68
3.3.7训练68
3.4softmax回归69
3.4.1分类问题69
3.4.2网络架构70
3.4.3全连接层的参数开销70
3.4.4softmax运算71
3.4.5小批量样本的向量化71
3.4.6损失函数72
3.4.7信息论基础73
3.4.8模型预测和评估74
3.5图像分类数据集74
3.5.1读取数据集75
3.5.2读取小批量76
3.5.3整合所有组件76
3.6softmax回归的从零开始实现77
3.6.1初始化模型参数77
3.6.2定义softmax操作78
3.6.3定义模型78
3.6.4定义损失函数79
3.6.5分类精度79
3.6.6训练80
3.6.7预测82
3.7softmax回归的简洁实现83
3.7.1初始化模型参数83
3.7.2重新审视softmax的实现84
3.7.3优化算法84
3.7.4训练84
第4章多层感知机86
4.1多层感知机86
4.1.1隐藏层86
4.1.2*函数88
4.2多层感知机的从零开始实现92
4.2.1初始化模型参数92
4.2.2*函数93
4.2.3模型93
4.2.4损失函数93
4.2.5训练93
4.3多层感知机的简洁实现94
模型94
4.4模型选择、欠拟合和过拟合95
4.4.1训练误差和泛化误差96
4.4.2模型选择97
4.4.3欠拟合还是过拟合98
4.4.4多项式回归99
4.5权重衰减103
4.5.1范数与权重衰减103
4.5.2高维线性回归104
4.5.3从零开始实现104
4.5.4简洁实现106
4.6暂退法108
4.6.1重新审视过拟合108
4.6.2扰动的稳健性108
4.6.3实践中的暂退法109
4.6.4从零开始实现110
4.6.5简洁实现111
4.7前向传播、反向传播和计算图112
4.7.1前向传播113
4.7.2前向传播计算图113
4.7.3反向传播114
4.7.4训练神经网络115
4.8数值稳定性和模型初始化115
4.8.1梯度消失和梯度爆炸116
4.8.2参数初始化117
4.9环境和分布偏移119
4.9.1分布偏移的类型120
4.9.2分布偏移示例121
4.9.3分布偏移纠正122
4.9.4学习问题的分类法125
4.9.5机器学习中的公平、责任和透明度126
4.10实战Kaggle比赛:预测房价127
4.10.1下载和缓存数据集127
4.10.2Kaggle128
4.10.3访问和读取数据集129
4.10.4数据预处理130
4.10.5训练131
4.10.6K折交叉验证132
4.10.7模型选择133
4.10.8提交Kaggle预测133
第5章深度学习计算136
5.1层和块136
5.1.1自定义块138
5.1.2顺序块139
5.1.3在前向传播函数中执行代码139
5.1.4效率140
5.2参数管理141
5.2.1参数访问141
5.2.2参数初始化143
5.2.3参数绑定145
5.3延后初始化145
实例化网络146
5.4自定义层146
5.4.1不带参数的层146
5.4.2带参数的层147
5.5读写文件148
5.5.1加载和保存张量148
5.5.2加载和保存模型参数149
5.6GPU150
5.6.1计算设备151
5.6.2张量与GPU152
5.6.3神经网络与GPU153
第6章卷积神经网络155
6.1从全连接层到卷积155
6.1.1不变性156
6.1.2多层感知机的限制157
6.1.3卷积158
6.1.4“沃尔多在哪里”回顾158
6.2图像卷积159
6.2.1互相关运算159
6.2.2卷积层161
6.2.3图像中目标的边缘检测161
6.2.4学习卷积核162
6.2.5互相关和卷积162
6.2.6特征映射和感受野163
6.3填充和步幅164
6.3.1填充164
6.3.2步幅165
6.4多输入多输出通道166
6.4.1多输入通道167
6.4.2多输出通道167
6.4.31×1卷积层168
6.5汇聚层170
6.5.1*汇聚和平均汇聚170
6.5.2填充和步幅171
6.5.3多个通道172
6.6卷积神经网络(LeNet)173
6.6.1LeNet173
6.6.2模型训练175
第7章现代卷积神经网络178
7.1深度卷积神经网络(AlexNet)178
7.1.1学习表征179
7.1.2AlexNet181
7.1.3读取数据集183
7.1.4训练AlexNet183
7.2使用块的网络(VGG)184
7.2.1VGG块184
7.2.2VGG网络185
7.2.3训练模型186
7.3网络中的网络(NiN)187
7.3.1NiN块187
7.3.2NiN模型188
7.3.3训练模型189
7.4含并行连接的网络(GoogLeNet)190
7.4.1Inception块190
7.4.2GoogLeNet模型191
7.4.3训练模型193
7.5批量规范化194
7.5.1训练深层网络194
7.5.2批量规范化层195
7.5.3从零实现196
7.5.4使用批量规范化层的 LeNet197
7.5.5简明实现198
7.5.6争议198
7.6残差网络(ResNet)200
7.6.1函数类200
7.6.2残差块201
7.6.3ResNet模型202
7.6.4训练模型204
7.7稠密连接网络(DenseNet)205
7.7.1从ResNet到DenseNet205
7.7.2稠密块体206
7.7.3过渡层206
7.7.4DenseNet模型207
7.7.5训练模型207
第8章循环神经网络209
8.1序列模型209
8.1.1统计工具210
8.1.2训练212
8.1.3预测213
8.2文本预处理216
8.2.1读取数据集216
8.2.2词元化217
8.2.3词表217
8.2.4整合所有功能219
8.3语言模型和数据集219
8.3.1学习语言模型220
8.3.2马尔可夫模型与n元语法221
8.3.3自然语言统计221
8.3.4读取长序列数据223
8.4循环神经网络226
8.4.1无隐状态的神经网络227
8.4.2有隐状态的循环神经网络227
8.4.3基于循环神经网络的字符级语言模型228
8.4.4困惑度229
8.5循环神经网络的从零开始实现230
8.5.1独热编码231
8.5.2初始化模型参数231
8.5.3循环神经网络模型232
8.5.4预测232
8.5.5梯度截断233
8.5.6训练234
8.6循环神经网络的简洁实现237
8.6.1定义模型237
8.6.2训练与预测238
8.7通过时间反向传播239
8.7.1循环神经网络的梯度分析239
8.7.2通过时间反向传播的细节241
第9章现代循环神经网络244
9.1门控循环单元(GRU)244
9.1.1门控隐状态245
9.1.2从零开始实现247
9.1.3简洁实现248
9.2长短期记忆网络(LSTM)249
9.2.1门控记忆元249
9.2.2从零开始实现252
9.2.3简洁实现253
9.3深度循环神经网络254
9.3.1函数依赖关系255
9.3.2简洁实现255
9.3.3训练与预测255
9.4双向循环神经网络256
9.4.1隐马尔可夫模型中的动态规划256
9.4.2双向模型258
9.4.3双向循环神经网络的错误应用259
9.5机器翻译与数据集260
9.5.1下载和预处理数据集261
9.5.2词元化262
9.5.3词表263
9.5.4加载数据集263
9.5.5训练模型264
9.6编码器-解码器架构265
9.6.1编码器265
9.6.2解码器266
9.6.3合并编码器和解码器266
9.7序列到序列学习(seq2seq)267
9.7.1编码器268
9.7.2解码器269
9.7.3损失函数270
9.7.4训练271
9.7.5预测272
9.7.6预测序列的评估273
9.8束搜索275
9.8.1贪心搜索275
9.8.2穷举搜索276
9.8.3束搜索276
第 10章注意力机制278
10.1注意力提示278
10.1.1生物学中的注意力提示279
10.1.2查询、键和值280
10.1.3注意力的可视化280
10.2注意力汇聚:Nadaraya-Watson 核回归281
10.2.1生成数据集282
10.2.2平均汇聚282
10.2.3非参数注意力汇聚283
10.2.4带参数注意力汇聚284
10.3注意力评分函数287
10.3.1掩蔽softmax操作288
10.3.2加性注意力289
10.3.3缩放点积注意力290
10.4Bahdanau 注意力291
10.4.1模型291
10.4.2定义注意力解码器292
10.4.3训练293
10.5多头注意力295
10.5.1模型295
10.5.2实现296
10.6自注意力和位置编码298
10.6.1自注意力298
10.6.2比较卷积神经网络、循环神经网络和自注意力298
10.6.3位置编码299
10.7Transformer302
10.7.1模型302
10.7.2基于位置的前馈网络303
10.7.3残差连接和层规范化304
10.7.4编码器304
10.7.5解码器305
10.7.6训练307
第 11章优化算法311
11.1优化和深度学习311
11.1.1优化的目标311
11.1.2深度学习中的优化挑战312
11.2凸性315
11.2.1定义315
11.2.2性质317
11.2.3约束319
11.3梯度下降322
11.3.1一维梯度下降322
11.3.2多元梯度下降324
11.3.3自适应方法326
11.4随机梯度下降329
11.4.1随机梯度更新329
11.4.2动态学习率331
11.4.3凸目标的收敛性分析332
11.4.4随机梯度和有限样本333
11.5小批量随机梯度下降334
11.5.1向量化和缓存335
11.5.2小批量336
11.5.3读取数据集337
11.5.4从零开始实现337
11.5.5简洁实现340
11.6动量法341
11.6.1基础341
11.6.2实际实验345
11.6.3理论分析346
11.7AdaGrad算法348
11.7.1稀疏特征和学习率348
11.7.2预处理349
11.7.3算法350
11.7.4从零开始实现351
11.7.5简洁实现352
11.8RMSProp算法353
11.8.1算法353
11.8.2从零开始实现354
11.8.3简洁实现355
11.9Adadelta算法356
11.9.1算法356
11.9.2实现356
11.10Adam算法358
11.10.1算法358
11.10.2实现359
11.10.3Yogi360
11.11学习率调度器361
11.11.1一个简单的问题361
11.11.2学习率调度器363
11.11.3策略364
第 12章计算性能369
12.1编译器和解释器369
12.1.1符号式编程370
12.1.2混合式编程371
12.1.3Sequential的混合式编程371
12.2异步计算372
通过后端异步处理373
12.3自动并行375
12.3.1基于GPU的并行计算375
12.3.2并行计算与通信376
12.4硬件378
12.4.1计算机378
12.4.2内存379
12.4.3存储器380
12.4.4CPU381
12.4.5GPU和其他加速卡383
12.4.6网络和总线385
12.4.7更多延迟386
12.5多GPU训练388
12.5.1问题拆分388
12.5.2数据并行性390
12.5.3简单网络390
12.5.4数据同步391
12.5.5数据分发392
12.5.6训练392
12.6多GPU的简洁实现394
12.6.1简单网络394
12.6.2网络初始化395
12.6.3训练395
12.7参数服务器397
12.7.1数据并行训练397
12.7.2环同步(ring
synchronization)399
12.7.3多机训练400
12.7.4键-值存储402
第 13章计算机视觉404
13.1图像增广404
13.1.1常用的图像增广方法404
13.1.2使用图像增广进行训练408
13.2微调410
13.2.1步骤410
13.2.2热狗识别411
13.3目标检测和边界框415
边界框415
13.4锚框417
13.4.1生成多个锚框417
13.4.2交并比(IoU)419
13.4.3在训练数据中标注锚框420
13.4.4使用非极大值抑制预测
边界框424
13.5多尺度目标检测427
13.5.1多尺度锚框427
13.5.2多尺度检测429
13.6目标检测数据集430
13.6.1下载数据集430
13.6.2读取数据集431
13.6.3演示432
13.7单发多框检测(SSD)433
13.7.1模型433
13.7.2训练模型437
13.7.3预测目标439
13.8区域卷积神经网络(R-CNN)系列441
13.8.1R-CNN441
13.8.2Fast R-CNN442
13.8.3Faster R-CNN443
13.8.4Mask R-CNN444
13.9语义分割和数据集445
13.9.1图像分割和实例分割445
13.9.2Pascal VOC2012 语义分割数据集446
13.10转置卷积450
13.10.1基本操作450
13.10.2填充、步幅和多通道451
13.10.3与矩阵变换的联系452
13.11全卷积网络453
13.11.1构建模型454
13.11.2初始化转置卷积层455
13.11.3读取数据集456
13.11.4训练456
13.11.5预测457
13.12风格迁移458
13.12.1方法459
13.12.2阅读内容和风格图像460
13.12.3预处理和后处理460
13.12.4提取图像特征461
13.12.5定义损失函数461
13.12.6初始化图像463
13.12.7训练模型463
13.13实战 Kaggle竞赛:图像分类(CIFAR-10)464
13.13.1获取并组织数据集465
13.13.2图像增广 467
13.13.3读取数据集468
13.13.4定义模型468
13.13.5定义训练函数468
13.13.6训练和验证模型469
13.13.7在Kaggle上对测试集进行分类并提交结果469
13.14实战Kaggle竞赛:狗的品种识别(ImageNet Dogs)470
13.14.1获取和整理数据集471
13.14.2图像增广472
13.14.3读取数据集472
13.14.4微调预训练模型473
13.14.5定义训练函数473
13.14.6训练和验证模型474
13.14.7对测试集分类并在Kaggle提交结果475
第 14章自然语言处理:预训练476
14.1词嵌入(word2vec)477
14.1.1为何独热向量是一个糟糕的选择477
14.1.2自监督的word2vec477
14.1.3跳元模型477
14.1.4连续词袋模型478
14.2近似训练480
14.2.1负采样480
14.2.2层序softmax481
14.3用于预训练词嵌入的数据集482
14.3.1读取数据集482
14.3.2下采样483
14.3.3中心词和上下文词的提取484
14.3.4负采样485
14.3.5小批量加载训练实例486
14.3.6整合代码487
14.4预训练word2vec488
14.4.1跳元模型488
14.4.2训练489
14.4.3应用词嵌入491
14.5全局向量的词嵌入(GloVe)491
14.5.1带全局语料库统计的跳元模型492
14.5.2GloVe模型492
14.5.3从共现概率比值理解GloVe模型493
14.6子词嵌入494
14.6.1fastText模型494
14.6.2字节对编码495
14.7词的相似度和类比任务497
14.7.1加载预训练词向量497
14.7.2应用预训练词向量499
14.8来自Transformer的双向编码器表示(BERT)500
14.8.1从上下文无关到上下文敏感500
14.8.2从特定于任务到不可知任务501
14.8.3BERT:将ELMo与GPT结合起来501
14.8.4输入表示502
14.8.5预训练任务504
14.8.6整合代码506
14.9用于预训练BERT的数据集507
14.9.1为预训练任务定义辅助函数508
14.9.2将文本转换为预训练数据集509
14.10预训练BERT512
14.10.1预训练BERT512
14.10.2用BERT表示文本514
第 15章自然语言处理:应用515
15.1情感分析及数据集516
15.1.1读取数据集516
15.1.2预处理数据集517
15.1.3创建数据迭代器517
15.1.4整合代码518
15.2情感分析:使用循环神经网络518
15.2.1使用循环神经网络表示单个文本519
15.2.2加载预训练的词向量520
15.2.3训练和评估模型520
15.3情感分析:使用卷积神经网络521
15.3.1一维卷积522
15.3.2*时间汇聚层523
15.3.3textCNN模型523
15.4自然语言推断与数据集526
15.4.1自然语言推断526
15.4.2斯坦福自然语言推断(SNLI)数据集527
15.5自然语言推断:使用注意力530
15.5.1模型530
15.5.2训练和评估模型533
15.6针对序列级和词元级应用微调BERT535
15.6.1单文本分类535
15.6.2文本对分类或回归536
15.6.3文本标注537
15.6.4问答537
15.7自然语言推断:微调BERT538
15.7.1加载预训练的BERT539
15.7.2微调BERT的数据集540
15.7.3微调BERT541
附录A深度学习工具543
A.1使用Jupyter记事本543
A.1.1在本地编辑和运行代码543
A.1.2*选项545
A.2使用Amazon SageMaker546
A.2.1注册547
A.2.2创建SageMaker实例547
A.2.3运行和停止实例548
A.2.4更新Notebook548
A.3使用Amazon EC2实例549
A.3.1创建和运行EC2实例549
A.3.2安装CUDA553
A.3.3安装库以运行代码553
A.3.4远程运行Jupyter记事本554
A.3.5关闭未使用的实例554
A.4选择服务器和GPU555
A.4.1选择服务器555
A.4.2选择GPU556
A.5为本书做贡献558
A.5.1提交微小更改558
A.5.2大量文本或代码修改559
A.5.3提交主要更改559
参考文献562
作者介绍
作者简介: 阿斯顿·张(Aston Zhang),Amazon资历深厚的研究员,美国伊利诺伊大学香槟分校计算机科学博士,统计学和计算机科学双硕士。他专注于机器学习和自然语言处理的研究,荣获深度学习国际高水平学术会议ICLR杰出论文奖、ACM UbiComp杰出论文奖以及ACM SenSys高水平论文奖提名。他担任过EMNLP领域主席和AAAI程序委员。 [美]扎卡里·C. 立顿(Zachary C. Lipton),美国卡内基梅隆大学机器学习和运筹学助理教授,并在海因茨公共政策学院以及软件和社会系统系担任礼节性任命。他领导着近似正确机器智能(ACMI)实验室,研究涉及核心机器学习方法、其社会影响以及包括临床医学和自然语言处理在内的各种应用领域。他目前的研究重点包括处理各种因果结构下分布变化的稳健和自适应算法、*越预测为决策提供信息(包括应对已部署模型的战略响应)、医学诊断和预后预测、算法公平性和可解释性的基础。他是“Approximately Correct”博客的创立人,也是讽刺性漫画“Superheroes of Deep Learning”的合著者。 李沐(Mu Li),Amazon资历深厚的领衔研究员(Senior Principal Scientist),美国加利福尼亚大学伯克利分校、斯坦福大学客座助理教授,美国卡内基梅隆大学计算机系博士。他曾任机器学习创业公司Marianas Labs的CTO和百度深度学习研究院的主任研发架构师。他专注于机器学习系统和机器学习算法的研究。他在理论与应用、机器学习与操作系统等多个领域的高水平学术会议上发表过论文,被引用上万次。 [德]亚历山大·J. 斯莫拉(Alexander J. Smola),Amazon副总裁/杰出研究员,德国柏林工业大学计算机科学博士。他曾在澳大利亚国立大学、美国加利福尼亚大学伯克利分校和卡内基梅隆大学任教。他发表过*过300篇学术论文,并著有5本书,其论文及书被引用*过15万次。他的研究兴趣包括深度学习、贝叶斯非参数、核方法、统计建模和可扩展算法。 译者简介: 何孝霆(Xiaoting He),Amazon应用研究员,中国科学院软件工程硕士。他专注于对深度学习的研究,特别是自然语言处理的应用(包括语言模型、AIOps、OCR),相关工作落地于众多企业。他担任过ACL、EMNLP、NAACL、EACL等学术会议的程序委员或审稿人。 瑞潮儿·胡(Rachel Hu),Amazon应用研究员,美国加利福尼亚大学伯克利分校统计学硕士,加拿大滑铁卢大学数学学士。她致力于将机器学习应用于现实世界的产品。她也是Amazon人工智能团队的讲师,教授自然语言处理、计算机视觉和机器学习商业应用等课程。她已向累计1000余名Amazon工程师教授机器学习,其公开课程视频在YouTube和哔哩哔哩上屡获盛赞。