《动手学深度学习》(PyTorch版).pdf
《《动手学深度学习》(PyTorch版).pdf》由会员分享,可在线阅读,更多相关《《动手学深度学习》(PyTorch版).pdf(809页珍藏版)》请在冰豆网上搜索。
动学深度学习Release2.0.0-beta0AstonZhang,ZacharyC.Lipton,MuLi,andAlexanderJ.SmolaDec12,2021录序1安装9符号131前172预备知识392.1数据操作.402.1.1.402.1.2运算符.422.1.3播机制.442.1.4索引和切.442.1.5节省内存.452.1.6转换为其他Python对象.462.1.7小结.472.1.8练习.472.2数据预处理.472.2.1读取数据集.472.2.2处理缺失值.482.2.3转换为张量格式.492.2.4小结.492.2.5练习.492.3线性代数.502.3.1标量.502.3.2向量.502.3.3矩阵.52i2.3.4张量.532.3.5张量算法的基本性质.542.3.6降维.552.3.7点积(DotProduct).572.3.8矩阵-向量积.582.3.9矩阵-矩阵乘法.582.3.10范数.592.3.11关于线性代数的更多信息.612.3.12小结.612.3.13练习.612.4微积分.622.4.1导数和微分.632.4.2偏导数.662.4.3梯度.672.4.4链式法则.672.4.5小结.672.4.6练习.682.5动微分.682.5.1个简单的例.682.5.2标量变量的反向传播.692.5.3分离计算.702.5.4Python控制流的梯度计算.712.5.5小结.712.5.6练习.712.6概率.722.6.1基本概率论.732.6.2处理多个随机变量.762.6.3期望和差.792.6.4小结.802.6.5练习.802.7查阅档.802.7.1查找模块中的所有函数和类.802.7.2查找特定函数和类的法.812.7.3小结.822.7.4练习.823线性神经络833.1线性回归.833.1.1线性回归的基本元素.843.1.2量化加速.873.1.3正态分布与平损失.893.1.4从线性回归到深度络.90ii3.1.5小结.923.1.6练习.923.2线性回归的从零开始实现.923.2.1成数据集.933.2.2读取数据集.943.2.3初始化模型参数.953.2.4定义模型.963.2.5定义损失函数.963.2.6定义优化算法.963.2.7训练.973.2.8小结.983.2.9练习.983.3线性回归的简洁实现.983.3.1成数据集.993.3.2读取数据集.993.3.3定义模型.1003.3.4初始化模型参数.1013.3.5定义损失函数.1013.3.6定义优化算法.1013.3.7训练.1013.3.8小结.1023.3.9练习.1023.4softmax回归.1033.4.1分类问题.1033.4.2络架构.1043.4.3全连接层的参数开销.1043.4.4softmax运算.1043.4.5小批量样本的量化.1053.4.6损失函数.1053.4.7信息论基础.1073.4.8模型预测和评估.1083.4.9小结.1083.4.10练习.1083.5图像分类数据集.1093.5.1读取数据集.1093.5.2读取小批量.1113.5.3整合所有组件.1113.5.4小结.1123.5.5练习.1123.6softmax回归的从零开始实现.1133.6.1初始化模型参数.1133.6.2定义softmax操作.113iii3.6.3定义模型.1143.6.4定义损失函数.1153.6.5分类精度.1153.6.6训练.1173.6.7预测.1203.6.8小结.1203.6.9练习.1203.7softmax回归的简洁实现.1213.7.1初始化模型参数.1213.7.2重新审视Softmax的实现.1213.7.3优化算法.1223.7.4训练.1223.7.5小结.1233.7.6练习.1234多层感知机1254.1多层感知机.1254.1.1隐藏层.1264.1.2激活函数.1284.1.3小结.1324.1.4练习.1334.2多层感知机的从零开始实现.1334.2.1初始化模型参数.1334.2.2激活函数.1344.2.3模型.1344.2.4损失函数.1344.2.5训练.1354.2.6小结.1354.2.7练习.1364.3多层感知机的简洁实现.1364.3.1模型.1364.3.2小结.1374.3.3练习.1374.4模型选择、拟合和过拟合.1384.4.1训练误差和泛化误差.1384.4.2模型选择.1404.4.3拟合还是过拟合?
.1414.4.4多项式回归.1424.4.5小结.1474.4.6练习.1474.5权重衰减.1474.5.1范数与权重衰减.148iv4.5.2维线性回归.1494.5.3从零开始实现.1494.5.4简洁实现.1524.5.5小结.1544.5.6练习.1544.6暂退法(Dropout).1544.6.1重新审视过拟合.1544.6.2扰动的稳健性.1554.6.3实践中的暂退法.1564.6.4从零开始实现.1564.6.5简洁实现.1594.6.6小结.1604.6.7练习.1604.7前向传播、反向传播和计算图.1614.7.1前向传播.1614.7.2前向传播计算图.1624.7.3反向传播.1624.7.4训练神经络.1634.7.5小结.1634.7.6练习.1644.8数值稳定性和模型初始化.1644.8.1梯度消失和梯度爆炸.1644.8.2参数初始化.1674.8.3小结.1684.8.4练习.1684.9环境和分布偏移.1694.9.1分布偏移的类型.1694.9.2分布偏移例.1714.9.3分布偏移纠正.1734.9.4学习问题的分类法.1754.9.5机器学习中的公平、责任和透明度.1774.9.6小结.1774.9.7练习.1784.10实战Kaggle赛:
预测房价.1784.10.1下载和缓存数据集.1784.10.2Kaggle.1804.10.3访问和读取数据集.1814.10.4数据预处理.1824.10.5训练.1834.10.6K折交叉验证.1844.10.7模型选择.1854.10.8提交你的Kaggle预测.186v4.10.9小结.1884.10.10练习.1885深度学习计算1895.1层和块.1895.1.1定义块.1915.1.2顺序块.1925.1.3在前向传播函数中执代码.1935.1.4效率.1945.1.5小结.1955.1.6练习.1955.2参数管理.1955.2.1参数访问.1965.2.2参数初始化.1995.2.3参数绑定.2015.2.4小结.2015.2.5练习.2015.3延后初始化.2025.3.1实例化络.2025.3.2小结.2025.3.3练习.2035.4定义层.2035.4.1不带参数的层.2035.4.2带参数的层.2045.4.3小结.2055.4.4练习.2055.5读写件.2055.5.1加载和保存张量.2065.5.2加载和保存模型参数.2075.5.3小结.2085.5.4练习.2085.6GPU.2085.6.1计算设备.2095.6.2张量与GPU.2105.6.3神经络与GPU.2125.6.4小结.2135.6.5练习.2136卷积神经络2156.1从全连接层到卷积.2166.1.1不变性.2166.1.2限制多层感知机.217vi6.1.3卷积.2186.1.4“沃尔多在哪”回顾.2196.1.5小结.2206.1.6练习.2206.2图像卷积.2206.2.1互相关运算.2216.2.2卷积层.2226.2.3图像中标的边缘检测.2236.2.4学习卷积核.2246.2.5互相关和卷积.2256.2.6特征映射和感受野.2256.2.7小结.2256.2.8练习.2266.3填充和步幅.2266.3.1填充.2266.3.2步幅.2286.3.3小结.2296.3.4练习.2296.4多输多输出通道.2306.4.1多输通道.2306.4.2多输出通道.2316.4.311卷积层.2326.4.4小结.2336.4.5练习.2336.5汇聚层.2346.5.1最汇聚层和平均汇聚层.2346.5.2填充和步幅.2366.5.3多个通道.2376.5.4小结.2376.5.5练习.2386.6卷积神经络(LeNet).2386.6.1LeNet.2386.6.2模型训练.2416.6.3小结.2436.6.4练习.2437现代卷积神经络2457.1深度卷积神经络(AlexNet).2467.1.1学习表征.2467.1.2AlexNet.2487.1.3读取数据集.2517.1.4训练AlexNet.252vii7.1.5小结.2527.1.6练习.2527.2使块的络(VGG).2537.2.1VGG块.2537.2.2VGG络.2547.2.3训练模型.2567.2.4小结.2567.2.5练习.2577.3络中的络(NiN).2577.3.1NiN块.2577.3.2NiN模型.2597.3.3训练模型.2607.3.4小结.2607.3.5练习.2607.4含并连结的络(GoogLeNet).2617.4.1Inception块.2617.4.2GoogLeNet模型.2627.4.3训练模型.2657.4.4小结.2657.4.5练习.2667.5批量规范化.2667.5.1训练深层络.2667.5.2批量规范化层.2677.5.3从零实现.2687.5.4使批量规范化层的LeNet.2707.5.5简明实现.2717.5.6争议.2727.5.7小结.2737.5.8练习.2737.6残差络(ResNet).2737.6.1函数类.2747.6.2残差块.2757.6.3ResNet模型.2777.6.4训练模型.2807.6.5小结.2817.6.6练习.2817.7稠密连接络(DenseNet).2817.7.1从ResNet到DenseNet.2817.7.2稠密块体.2827.7.3过渡层.2837.7.4DenseNet模型.2847.7.5训练模型.285viii7.7.6小结.2857.7.7练习.2858循环神经络2878.1序列模型.2888.1.1统计具.2888.1.2训练.2918.1.3预测.2938.1.4小结.2958.1.5练习.2968.2本预处理.2968.2.1读取数据集.2968.2.2词元化.2978.2.3词表.2988.2.4整合所有功能.3008.2.5小结.3018.2.6练习.3018.3语模型和数据集.3018.3.1学习语模型.3018.3.2尔可夫模型与n元语法.3038.3.3然语统计.3038.3.4读取序列数据.3068.3.5小结.3098.3.6练习.3108.4循环神经络.3108.4.1隐状态的神经络.3118.4.2有隐状态的循环神经络.3118.4.3基于循环神经络的字符级语模型.3138.4.4困惑度(Perplexity).3138.4.5小结.3148.4.6练习.3158.5循环神经络的从零开始实现.3158.5.1独热编码.3158.5.2初始化模型参数.3168.5.3循环神经络模型.3168.5.4预测.3188.5.5梯度裁剪.3188.5.6训练.3198.5.7小结.3238.5.8练习.3238.6循环神经络的简洁实现.3238.6.1定义模型.324ix8.6.2训练与预测.3258.6.3小结.3268.6.4练习.3278.7通过时间反向传播.3278.7.1循环神经络的梯度分析.3278.7.2通过时间反向传播的细节.3308.7.3小结.3328.7.4练习.3329现代循环神经络3339.1控循环单元(GRU).3339.1.1控隐状态.3349.1.2从零开始实现.3379.1.3简洁实现.3399.1.4小结.3409.1.5练习.3409.2短期记忆络(LSTM).3409.2.1控记忆元.3409.2.2从零开始实现.3449.2.3简洁实现.3469.2.4小结.3479.2.5练习.3479.3深度循环神经络.3489.3.1函数依赖关系.3489.3.2简洁实现.3499.3.3训练与预测.3499.3.4小结.3509.3.5练习.3509.4双向循环神经络.3509.4.1隐尔可夫模型中的动态规划.3519.4.2双向模型.3539.4.3双向循环神经络的错误应.3559.4.4小结.3569.4.5练习.3569.5机器翻译与数据集.3569.5.1下载和预处理数据集.3579.5.2词元化.3589.5.3词表.3609.5.4加载数据集.3609.5.5训练模型.3619.5.6小结.3629.5.7练习.362x9.6编码器-解码器架构.3639.6.1编码器.3639.6.2解码器.3649.6.3合并编码器和解码器.3649.6.4小结.3659.6.5练习.3659.7序列到序列学习(seq2seq).3659.7.1编码器.3669.7.2解码器.3689.7.3损失函数.3699.7.4训练.3719.7.5预测.3739.7.6预测序列的评估.3749.7.7小结.3759.7.8练习.3759.8束搜索.3769.8.1贪搜索.3769.8.2穷举搜索.3779.8.3束搜索.3779.8.4小结.3799.8.5练习.37910注意机制38110.1注意提.38210.1.1物学中的注意提.38210.1.2查询、键和值.38310.1.3注意的可视化.38410.1.4小结.38510.1.5练习.38610.2注意汇聚:
Nadaraya-Watson核回归.38610.2.1成数据集.38610.2.2平均汇聚.38710.2.3参数注意汇聚.38710.2.4带参数注意汇聚.39010.2.5小结.39310.2.6练习.39310.3注意评分函数.39410.3.1掩蔽softmax操作.39510.3.2加性注意.39610.3.3缩放点积注意.39710.3.4小结.39910.3.5练习.399xi10.4Bahdanau注意.39910.4.1模型.39910.4.2定义注意解码器.40010.4.3训练.40210.4.4小结.40410.4.5练习.40410.5多头注意.40410.5.1模型.40510.5.2实现.40610.5.3小结.40810.5.4练习.40810.6注意和位置编码.40810.6.1注意.40910.6.2较卷积神经络、循环神经络和注意.41010.6.3位置编码.41110.6.4小结.41410.6.5练习.41410.7Transformer.41410.7.1模型.41410.7.2基于位置的前馈络.41610.7.3残差连接和层规范化.41710.7.4编码器.41810.7.5解码器.42010.7.6训练.42210.7.7小结.42610.7.8练习.42611优化算法42711.1优化和深度学习.42711.1.1优化的标.42811.1.2深度学习中的优化挑战.42911.1.3小结.43211.1.4练习.43311.2凸性.43311.2.1定义.43311.2.2性质.43611.2.3约束.43911.2.4小结.44111.2.5练习.44111.3梯度下降.44111.3.1维梯度下降.44211.3.2多元梯度下降.445xii11.3.3适应法.44711.3.4小结.45111.3.5练习.45111.4随机梯度下降.45211.4.1随机梯度更新.45211.4.2动态学习率.45411.4.3凸标的收敛性分析.45611.4.4随机梯度和有限样本.45711.4.5小结.45811.4.6练习.45811.5小批量随机梯度下降.45811.5.1向量化和缓存.45911.5.2小批量.46111.5.3读取数据集.46111.5.4从零开始实现.46211.5.5简洁实现.46611.5.6小结.46711.5.7练习.46711.6动量法.46811.6.1基础.46811.6.2实际实验.47211.6.3理论分析.47511.6.4小结.47711.6.5练习.47711.7AdaGrad算法.47711.7.1稀疏特征和学习率.47811.7.2预处理.47811.7.3算法.47911.7.4从零开始实现.48111.7.5简洁实现.48211.7.6小结.48311.7.7练习.48311.8RMSProp算法.48311.8.1算法.48411.8.2从零开始实现.48511.8.3简洁实现.48611.8.4小结.48711.8.5练习.48711.9Adadelta.48811.9.1Adadelta算法.48811.9.2代码实现.48811.9.3小结.490xiii11.9.4练习.49011.10Adam算法.49011.10.1算法.49111.10.2实现.49111.10.3Yogi.49311.10.4小结.49411.10.5练习.49511.11学习率调度器.49511.11.1个简单的问题.49511.11.2学习率调度器.49811.11.3策略.50011.11.4小结.50511.11.5练习.50512计算性能50712.1编译器和解释器.50712.1.1符号式编程.50812.1.2混合式编程.51012.1.3Sequential的混合式编程.51012.1.4小结.51212.1.5练习.51212.2异步计算.51212.2.1通过后端异步处理.51312.2.2障碍器与阻塞器.51512.2.3改进计算.51512.2.4小结.51512.2.5练习.51512.3动并.51512.3.1基于GPU的并计算.51612.3.2并计算与通信.51712.3.3小结.51912.3.4练习.51912.4硬件.51912.4.1计算机.52012.4.2内存.52112.4.3存储器.52212.4.4CPU.52312.4.5GPU和其他加速卡.52612.4.6络和总线.52812.4.7更多延迟.52912.4.8小结.53012.4.9练习.531xiv12.5多GPU训练.53112.5.1问题拆分.53212.5.2数据并性.53312.5.3简单络.53512.5.4数据同步.53512.5.5数据分发.53612.5.6训练.53712.5.7小结.54012.5.8练习.54012.6多GPU的简洁实现.54012.6.1简单络.54012.6.2络初始化.54112.6.3训练.54212.6.4小结.54412.6.5练习.54412.7参数服务器.54412.7.1数据并训练.54412.7.2环同步(RingSynchronization).54712.7.3多机训练.54912.7.4键值存储.55112.7.5小结.55212.7.6练习.55213计算机视觉55313.1图像增.55313.1.1常的图像增法.55413.1.2使图像增进训练.55813.1.3小结.56113.1.4练习.56113.2微调.56113.2.1步骤.56213.2.2热狗识别.56313.2.3小结.56713.2.4练习.56713.3标检测和边界框.56713.3.1边界框.56813.3.2小结.57013.3.3练习.57013.4锚框.57013.4.1成多个锚框.57113.4.2交并(IoU).57413.4.3在训练数据中标注锚框.575xv13.4.4使极值抑制预测边界框.58013.4.5小结.58413.4.6练习.58413.5多尺度标检测.58413.5.1多尺度锚框.58413.5.2多尺度检测.58713.5.3小结.58813.5.4练习.58813.6标检测数据集.58813.6.1下载数据集.58813.6.2读取数据集.58913.6.3演.59013.6.4小结.59113.6.5练习.59113.7单发多框检测(SSD).59113.7.1模型.59213.7.2训练模型.59713.7.3预测标.60013.7.4小结.60113.7.5练习.60113.8区域卷积神经络(R-CNN)系列.60313.8.1R-CNN.60313.8.2FastR-CNN.60413.8.3FasterR-CNN.60713.8.4MaskR-CNN.60813.8.5小结.60813.8.6练习.60913.9语义分割和数据集.60913.9.1图像分割和实例分割.60913.9.2PascalVOC2012语义分割数据集.61013.9.3小结.61513.9.4练习.61513.10转置卷积.61613.10.1基本操作.61613.10.2填充、步幅和多通道.61713.10.3与矩阵变换的联系.61913.10.4小结.62013.10.5练习.62013.11全卷积络.62013.11.1构造模型.62113.11.2初始化转置卷积层.62313.11.3读取数据集.624xvi13.11.4训练.62513.11.5预测.62513.11.6小结.62713.11.7练习.62713.12格迁移.62813.12.1法.62813.12.2阅读内容和格图像.62913.12.3预处理和后处理.63013.12.4抽取图像特征.63113.12.5定义损失函数.63213.12.6初始化合成图像.63413.12.7训练模型.63413.12.8小结.63513.12.9练习.63613.13实战Kaggle赛:
图像分类(CIFAR-10).63613.13.1获取并组织数据集.63713.13.2图像增.64013.13.3读取数据集.64013.13.4定义模型.64113.13.5定义训练函数.64113.13.6训练和验证模型.64213.13.7在Kaggle上对测试集进分类并提交结果.64313.13.8小结.64413.13.9练习.64413.14实战Kaggle赛:
狗的品种识别(ImageNetDogs).64413.14.1获取和整理数据集.64513.14.2图像增.64713.14.3读取数据集.64713.14.4微调预训练模型.64813.14.5定义训练函数.64913.14.6训练和验证模型.65013.14.7对测试集分类并在Kaggle提交结果.65113.14.8小结.65213.14.9练习.65214然语处理:
预训练65314.1词嵌(Word2vec).65414.1.1为何独热向量是个糟糕的选择.65414.1.2监督的word2vec.65514.1.3跳元模型(Skip-Gram).65514.1.4连续词袋(CBOW)模型.65614.1.5小结.658xvii14.1.6练习.65814.2近似训练.65814.2.1负采样.65814.2.2层序Softmax.65914.2.3小结.66014.2.4练习.66114.3于预训练词嵌的数据集.66114.3.1正在读取数据集.66114.3.2下采样.66214.3.3中词和上下词的提取.66414.3.4负采样.66514.3.5小批量加载训练实例.66614.3.6整合代码.66814.3.7小结.66914.3.8练习.66914.4预训练word2vec.66914.4.1跳元模型.67014.4.2训练.67114.4.3应词嵌.67314.4.4小结.67414.4.5练习.67414.5全局向量的词嵌(GloV