PyTorch深度学习和图*经网络卷*基础知识 深度学习框架基础机器学习人工智能自然语言处理技术PyTorch教程书籍
¥97.40
运费: | ¥ 0.00-20.00 |
商品详情
书名:PyTorch深度学习和图*经网络.卷*,基础知识
定*:*29.8
ISBN:9787**5549839
作者:李金洪
版次:第*版
出版时间:202*-*2
内容提要:
本书从基础知识开始,介绍深度学习与图*经网络相关的*系列技术与实现方法,主要内容*括PyTorch的使用、*经网络的原理、*经网络的基础模型、图*经网络的基础模型。书中侧重讲述与深度学习基础相关的网络模型和算法思想,以及图*经网络的原理,且针对这些知识点给出在PyTorch框架上的实现代码。 本书适合想学习图*经网络的技术人员、人工智能从业人员阅读,也适合作为大*院校相关*业的师生用书和培训班的教材。
作者简介:
李金洪, *通C、Python、Java语言,擅长*经网络、算法、协议分析、移动互联网*架构等技术,先后担任过CAD算法工程师、架构师、项目经理、*门经理等职位。参与过深度学习*域某移动互联网后台的OCR项目,某娱乐节目机器人的语音识别、声纹识别项目,金融*域的若干分类项目。
目录:
目录
第 *篇 入门——PyTorch基础
第 *章 快速了解人工智能与PyTorch 3
*.* 图*经网络与深度学习 4
*.*.* 深度*经网络 4
*.*.2 图*经网络 4
*.2 PyTorch是做什么的 4
*.3 PyTorch的*点 5
*.4 PyTorch与TensorFlow各有所长 6
*.5 如何使用本书学好深度学习 8
第 2章 搭建开发环境 9
2.* 下载及安装Anaconda *0
2.*.* 下载Anaconda开发工具 *0
2.*.2 安装Anaconda开发工具 *0
2.*.3 安装Anaconda开发工具时的注意事项 **
2.2 安装PyTorch **
2.2.* 打开PyTorch官网 *2
2.2.2 配置PyTorch安装命令 *2
2.2.3 使用配置好的命令安装PyTorch *2
2.2.4 配置PyTorch的镜像源 *3
2.3 熟悉Anaconda 3的开发工具 *5
2.3.* 快速了解Spyder *5
2.3.2 快速了解Jupyter Notebook *7
2.4 测试开发环境 *8
第3章 PyTorch基本开发步骤——用逻辑回归拟合二维数据 *9
3.* 实例*:从*组看似混乱的数据中找出规律 20
3.*.* 准备数据 20
3.*.2 定义网络模型 2*
3.*.3 搭建网络模型 22
3.*.4 训练模型 23
3.*.5 可视化训练结果 23
3.*.6 使用及评估模型 24
3.*.7 可视化模型 25
3.2 模型是如何训练出来的 26
3.2.* 模型里的内容及意义 26
3.2.2 模型内*数据流向 27
3.3 总结 27
第4章 快速上手PyTorch 29
4.* *经网络中的几个基本数据类型 30
4.2 张量类的基础 30
4.2.* 定义张量的方法 30
4.2.2 张量的类型 32
4.2.3 张量的type()方法 33
4.3 张量与NumPy 34
4.3.* 张量与NumPy类型数据的相互转换 34
4.3.2 张量与NumPy各自的形状获取 34
4.3.3 张量与NumPy各自的切片操作 34
4.3.4 张量与NumPy类型数据相互转换间的陷阱 35
4.4 在CPU和GPU控制的内存中定义张量 36
4.4.* 将CPU内存中的张量转化到GPU内存中 36
4.4.2 直接在GPU内存中定义张量 36
4.4.3 使用to()方法来*设备 36
4.4.4 使用环境变量CUDA_VISIBLE_DEVICES来*设备 36
4.5 生成随机值张量 37
4.5.* 设置随机值种子 37
4.5.2 按照*形状生成随机值 37
4.5.3 生成线性空间的随机值 37
4.5.4 生成对数空间的随机值 38
4.5.5 生成未初始化的矩阵 38
4.5.6 更多的随机值生成函数 38
4.6 张量间的数学运算 38
4.6.* PyTorch的运算函数 39
4.6.2 PyTorch的自变化运算函数 39
4.7 张量间的数据操作 39
4.7.* 用torch.reshape()函数实现数据维度变换 39
4.7.2 实现张量数据的矩阵转置 40
4.7.3 view()方法与contiguous()方法 40
4.7.4 用torch.cat()函数实现数据连接 4*
4.7.5 用torch.chunk()函数实现数据均匀分割 4*
4.7.6 用torch.split()函数实现数据*均匀分割 42
4.7.7 用torch.gather()函数对张量数据进行检索 42
4.7.8 按照*阈值对张量进行过滤 42
4.7.9 找出张量中的非零值索引 43
4.7.*0 根据条件进行多张量取值 43
4.7.** 根据阈值进行数据截断 43
4.7.*2 获取数据中最大值、最小值的索引 43
4.8 Variable类型与自动微分模块 44
4.8.* 自动微分模块简介 44
4.8.2 Variable对象与张量对象之间的转化 44
4.8.3 用no_grad()与enable_grad()控制梯度计算 45
4.8.4 函数torch.no_grad()介绍 45
4.8.5 函数enable_grad()与no_grad()的嵌套 46
4.8.6 用set_grad_enabled()函数统*管理梯度计算 47
4.8.7 Variable对象的grad_fn属性 47
4.8.8 Variable对象的is_leaf属性 48
4.8.9 用backward()方法自动求导 48
4.8.*0 自动求导的作用 49
4.8.** 用detach()方法将Variable对象分离成叶子节点 49
4.8.*2 volatile属性扩展 50
4.9 定义模型结构的步骤与方法 50
4.9.* 代码实现: Module类的使用方法 50
4.9.2 模型中的参数Parameters类 52
4.9.3 为模型添加参数 53
4.9.4 从模型中获取参数 53
4.9.5 *存与载入模型 56
4.9.6 模型结构中的钩子函数 57
4.*0 模型的网络层 58
第5章 *经网络的基本原理与实现 59
5.* 了解深度学习中的*经网络与*经元 60
5.*.* 了解单个*经元 60
5.*.2 生物*经元与计算机*经元模型的结构相似性 62
5.*.3 生物*经元与计算机*经元模型的工作流程相似性 63
5.*.4 *经网络的形成 63
5.2 深度学习中的基础*经网络模型 63
5.3 什么是*连接*经网络 64
5.3.* *连接*经网络的结构 64
5.3.2 实例2:分析*连接*经网络中每个*经元的作用 64
5.3.3 *连接*经网络的拟合原理 66
5.3.4 *连接*经网络的设计思想 67
5.4 激活函数——加入非线性因素,弥补线性模型缺陷 68
5.4.* Sigmoid函数 68
5.4.2 tanh函数 69
5.4.3 ReLU函数 70
5.4.4 激活函数的多种形式 72
5.4.5 扩展*:更好的激活函数(Swish与Mish) 73
5.4.6 扩展2:更适合NLP任务的激活函数(GELU) 74
5.5 激活函数总结 75
5.6 训练模型的步骤与方法 76
5.7 *经网络模块(nn)中的损失函数 76
5.7.* L*损失函数 76
5.7.2 均值平方差(MSE)损失函数 77
5.7.3 交叉熵损失(CrossEntropyLoss)函数 77
5.7.4 其他的损失函数 78
5.7.5 总结:损失算法的选取 79
5.8 Softmax算法——处理分类问题 79
5.8.* 什么是Softmax 80
5.8.2 Softmax原理 80
5.8.3 常用的Softmax接口 80
5.8.4 实例3:Softmax与交叉熵的应用 8*
5.8.5 总结:更好地认识Softmax 82
5.9 *化器模块 82
5.9.* 了解反向传播与BP算法 82
5.9.2 *化器与梯度下降 83
5.9.3 *化器的类别 83
5.9.4 *化器的使用方法 83
5.9.5 查看*化器的参数结构 84
5.9.6 常用的*化器——Adam 85
5.9.7 更好的*化器——Ranger 85
5.9.8 如何选取*化器 85
5.*0 退化学习率——在训练的速度与*度之间找到平衡 86
5.*0.* 设置学习率的方法——退化学习率 86
5.*0.2 退化学习率接口(lr_scheduler) 87
5.*0.3 使用lr_scheduler接口实现多种退化学习率 88
5.** 实例4:预测泰坦尼克号船上的生存乘客 9*
5.**.* 载入样本 9*
5.**.2 样本的*征分析——离散数据与连续数据 92
5.**.3 处理样本中的离散数据和Nan值 93
5.**.4 分离样本和标签并制作成数据集 95
5.**.5 定义Mish激活函数与多层*连接网络 96
5.**.6 训练模型并输出结果 97
第二篇 基础——*经网络的监督训练与*监督训练
第6章 实例5:识别黑白图中的服装图案 *0*
6.* 熟悉样本:了解Fashion-MNIST数据集 *02
6.*.* Fashion-MNIST的起源 *02
6.*.2 Fashion-MNIST的结构 *02
6.*.3 手动下载Fashion-MNIST数据集 *03
6.*.4 代码实现:自动下载Fashion-MNIST数据集 *03
6.*.5 代码实现:读取及显示Fashion-MNIST中的数据 *04
6.2 制作批次数据集 *05
6.2.* 数据集封装类DataLoader *05
6.2.2 代码实现:按批次封装Fashion-MNIST数据集 *06
6.2.3 代码实现:读取批次数据集 *07
6.3 构建并训练模型 *08
6.3.* 代码实现:定义模型类 *08
6.3.2 代码实现:定义损失的计算方法及*化器 **0
6.3.3 代码实现:训练模型 **0
6.3.4 代码实现:*存模型 ***
6.4 加载模型,并用其进行预测 ***
6.5 评估模型 **2
6.6 扩展:多显卡并行训练 **3
6.6.* 代码实现:多显卡训练 **3
6.6.2 多显卡训练过程中,*存与读取模型文件的注意事项 **5
6.6.3 在切换设备环境时,*存与读取模型文件的注意事项 **6
6.6.4 处理显存残留问题 **6
第7章 监督学习中的*经网络 **9
7.* 从视觉的角度理解卷积*经网络 *20
7.*.* 生物视觉系统原理 *20
7.*.2 微积分 *20
7.*.3 离散微分与离散积分 *20
7.*.4 视觉*经网络中的离散积分 *2*
7.2 卷积*经网络的结构 *2*
7.2.* 卷积*经网络的工作过程 *22
7.2.2 卷积*经网络与*连接网络的区别 *23
7.2.3 了解*D卷积、2D卷积和3D卷积 *23
7.2.4 实例分析:Sobel算子的原理 *23
7.2.5 深层*经网络中的卷积核 *26
7.2.6 理解卷积的数学意义——卷积分 *26
7.3 卷积*经网络的实现 *27
7.3.* 了解卷积接口 *27
7.3.2 卷积操作的类型 *29
7.3.3 卷积参数与卷积结果的计算规则 *30
7.3.4 实例6:卷积函数的使用 *30
7.3.5 实例7:使用卷积提取图片的轮廓 *35
7.4 深层卷积*经网络 *38
7.4.* 深层卷积*经网络组成 *38
7.4.2 池化操作 *40
7.4.3 了解池化接口 *40
7.4.4 实例8:池化函数的使用 *4*
7.4.5 实例9:搭建卷积*经网络 *43
7.5 循环*经网络结构 *45
7.5.* 了解人的记忆原理 *45
7.5.2 循环*经网络的应用*域 *46
7.5.3 循环*经网络的正向传播过程 *47
7.5.4 BP算法与BPTT算法的原理 *48
7.5.5 实例*0:简单循环*经网络实现——设计*个退位减法器 *49
7.6 常见的循环*经网络单元及结构 *54
7.6.* 长短记忆(LSTM)单元 *55
7.6.2 门控循环单元(GRU) *57
7.6.3 只有忘记门的LSTM(JANET)单元 *58
7.6.4 *立循环(IndRNN)单元 *58
7.6.5 双向RNN结构 *59
7.7 实例**:用循环*经网络训练语言模型 *60
7.7.* 什么是语言模型 *6*
7.7.2 词表与词向量 *6*
7.7.3 词向量的原理与实现 *6*
7.7.4 NLP中多项式分布 *62
7.7.5 循环*经网络的实现 *63
7.7.6 实现语言模型的思路与步骤 *64
7.7.7 代码实现:准备样本 *65
7.7.8 代码实现:构建循环*经网络(RNN)模型 *67
7.7.9 代码实现:实例化模型类,并训练模型 *68
7.7.*0 代码实现:运行模型生成句子 *7*
7.8 过拟合问题及*化技巧 *72
7.8.* 实例*2:训练具有过拟合问题的模型 *72
7.8.2 *模型过拟合的方法 *75
7.8.3 了解正则化 *75
7.8.4 实例*3:用L2正则*模型的过拟合状况 *76
7.8.5 实例*4:通过增大数据集*模型的过拟合状况 *78
7.8.6 Dropout方法 *79
7.8.7 实例*5: 通过Dropout方法*模型的过拟合状况 *80
7.8.8 *连接网络的深浅与泛化能力的联系 *82
7.8.9 了解批量归*化(BN)算法 *82
7.8.*0 实例*6: 手动实现批量归*化的计算方法 *85
7.8.** 实例*7: 通过批量归*化方法*模型的过拟合状况 *87
7.8.*2 使用批量归*化方法时的注意 事项 *88
7.8.*3 扩展:多种批量归*化算法介绍 *88
7.9 *经网络中的注意力机制 *89
7.9.* 注意力机制的实现 *89
7.9.2 注意力机制的软、硬模式 *90
7.9.3 注意力机制模型的原理 *90
7.9.4 多头注意力机制 *9*
7.9.5 自注意力机制 *92
7.*0 实例*8:利用注意力循环*经网络对图片分类 *92
7.*0.* 循环*经网络处理图片分类任务的原理 *92
7.*0.2 代码实现:搭建LSTM网络模型 *93
7.*0.3 代码实现:构建注意力机制类 *93
7.*0.4 代码实现:构建输入数据并训练模型 *96
7.*0.5 使用并评估模型 *97
7.*0.6 扩展*:使用梯度剪辑技巧*化训练过程 *97
7.*0.7 扩展2:使用JANET单元完成RNN *98
7.*0.8 扩展3:使用IndRNN单元实现RNN *98
第8章 *监督学习中的*经网络 *99
8.* 快速了解信息熵 200
8.*.* 信息熵与概率的计算关系 200
8.*.2 联合熵 202
8.*.3 条件熵 202
8.*.4 交叉熵 203
8.*.5 相对熵——KL散度 203
8.*.6 JS散度 204
8.*.7 互信息 204
8.2 通用的*监督模型——自编码*经网络与对抗*经网络 205
8.3 自编码*经网络 206
8.3.* 自编码*经网络的结构 206
8.3.2 自编码*经网络的计算过程 206
8.3.3 自编码*经网络的作用与意义 207
8.3.4 变分自编码*经网络 207
8.3.5 条件变分自编码*经网络 208
8.4 实例*9:用变分自编码*经网络模型生成模拟数据 208
8.4.* 变分自编码*经网络模型的结构介绍 208
8.4.2 代码实现:引入模块并载入样本 209
8.4.3 代码实现:定义变分自编码*经网络模型的正向结构 2*0
8.4.4 变分自编码*经网络模型的反向传播与KL散度的应用 2**
8.4.5 代码实现:完成损失函数和训练函数 2*2
8.4.6 代码实现:训练模型并输出可视化结果 2*3
8.4.7 代码实现:提取样本的低维*征并进行可视化 2*4
8.4.8 代码实现:可视化模型的输出空间 2*5
8.5 实例20:用条件变分自编码*经网络生成可控模拟数据 2*6
8.5.* 条件变分自编码*经网络的实现 2*6
8.5.2 代码实现:定义条件变分自编码*经网络模型的正向结构 2*7
8.5.3 代码实现:训练模型并输出可视化结果 2*8
8.6 对抗*经网络 2*9
8.6.* 对抗*经网络的工作过程 2*9
8.6.2 对抗*经网络的作用 220
8.6.3 GAN模型难以训练的原因 220
8.6.4 WGAN模型——解决GAN难以训练的问题 22*
8.6.5 分析WGAN的*足 222
8.6.6 WGAN-gp模型——更容易训练的GAN模型 223
8.6.7 条件GAN 2248.6.8 带有W散度的GAN——WGAN-div 225
8.7 实例2*:用WGAN-gp模型生成模拟数据 226
8.7.* DCGAN中的*卷积 226
8.7.2 上采样与下采样 227
8.7.3 实例归*化 228
8.7.4 代码实现:引入模块并载入样本 228
8.7.5 代码实现:定义生成器与判别器 229
8.7.6 激活函数与归*化层的位置关系 23*
8.7.7 代码实现:定义函数完成梯度惩罚项 234
8.7.8 代码实现:定义模型的训练函数 235
8.7.9 代码实现:定义函数,可视化模型结果 237
8.7.*0 代码实现:调用函数并训练模型 237
8.7.** 练习题 238
8.8 实例22:用条件GAN生成可控模拟数据 239
8.8.* 代码实现:定义条件GAN模型的正向结构 239
8.8.2 代码实现:调用函数并训练模型 240
8.9 实例23:实现带有W散度的GAN——WGAN-div模型 24*
8.9.* 代码实现:完成W散度的损失函数 24*
8.9.2 代码实现:定义训练函数来训练模型 242
8.*0 散度在*经网络中的应用 243
8.*0.* f-GAN框架 243
8.*0.2 基于f散度的变分散度最小化方法 243
8.*0.3 用Fenchel共轭函数实现f-GAN 244
8.*0.4 f-GAN中判别器的激活函数 246
8.*0.5 互信息*经估计 247
8.*0.6 实例24:用*经网络估计互信息 249
8.*0.7 稳定训练GAN模型的经验和技巧 252
8.** 实例25:用最大化深度互信息模型执行图片搜索器 253
8.**.* DIM模型的原理 254
8.**.2 DIM模型的结构 254
8.**.3 代码实现:加载CIFAR数据集 257
8.**.4 代码实现:定义DIM模型 260
8.**.5 代码实现:实例化DIM模型并进行训练 262
8.**.6 代码实现:加载模型搜索图片 264
第9章 快速了解图*经网络——少量样本也可以训练模型 269
9.* 图*经网络的相关基础知识 270
9.*.* 欧氏空间与非欧氏空间 270
9.*.2 图 270
9.*.3 图相关的术语和度量 270
9.*.4 图*经网络 27*
9.*.5 GNN的动机 27*
9.2 矩阵的基础 272
9.2.* 转置矩阵 272
9.2.2 对称矩阵及其*性 272
9.2.3 对角矩阵与单位矩阵 272
9.2.4 哈达马积 273
9.2.5 点积 273
9.2.6 对角矩阵的*性与操作方法 273
9.2.7 度矩阵与邻接矩阵 275
9.3 邻接矩阵的几种操作 275
9.3.* 获取有向图的短边和长边 276
9.3.2 将有向图的邻接矩阵转成*向图的邻接矩阵 277
9.4 实例26:用图卷积*经网络为论文分类 278
9.4.* CORA数据集 278
9.4.2 代码实现:引入基础模块并设置运行环境 279
9.4.3 代码实现:读取并解析论文数据 279
9.4.4 代码实现:读取并解析论文关系数据 28*
9.4.5 代码实现:加工图结构的矩阵数据 283
9.4.6 代码实现:将数据转为张量,并分配运算资源 284
9.4.7 代码实现:定义Mish激活函数与图卷积操作类 284
9.4.8 代码实现:搭建多层图卷积网络 286
9.4.9 代码实现:用Ranger*化器训练模型并可视化结果 287
9.5 图卷积*经网络 290
9.5.* 图结构与拉普拉斯矩阵的关系 290
9.5.2 拉普拉斯矩阵的3种形式 29*
9.6 扩展实例:用Multi-sample Dropout*化模型的训练速度 29*
9.6.* Multi-sample Dropout方法 292
9.6.2 代码实现:为图卷积模型添加 Multi-sample Dropout方法 292
9.6.3 代码实现:使用带有Multi-sample Dropout方法的图卷积模型 293
9.7 从图*经网络的视角看待深度学习 294
9.8 图*经网络使用拉普拉斯矩阵的原因 295
9.8.* 节点与邻接矩阵的点积作用 295
9.8.2 拉普拉斯矩阵的点积作用 296
9.8.3 重新审视图卷积的拟合本质 296
9.8.4 点积计算并*是唯*方法 296
第 *0章 基于空间域的图*经网络实现 297
*0.* 重新认识图卷积*经网络 298
*0.*.* 基于谱域的图处理 298
*0.*.2 基于*点域的图处理 298
*0.*.3 基于*点域的图卷积 298
*0.*.4 图卷积的*性 299
*0.2 实例27:用图注意力*经网络为论文分类 300
*0.2.* 图注意力网络 300
*0.2.2 工程*署 30*
*0.2.3 代码实现:对邻接矩阵进行对称归*化拉普拉斯矩阵转化 30*
*0.2.4 代码实现:搭建图注意力*经网络层 30*
*0.2.5 代码实现:搭建图注意力模型类 302
*0.2.6 代码实现:实例化图注意力模型,并进行训练与评估 303
*0.2.7 常用的图*经网络库 304
*0.3 图*经网络常用库——DGL库 305
*0.3.* DGL库的实现与性能 305
*0.3.2 安装DGL库的方法及注意事项 305
*0.3.3 DGL库中的数据集 306
*0.3.4 DGL库中的图 307
*0.3.5 DGL库中的内联函数 307
*0.3.6 扩展:了解PyG库 307
*0.4 DGLGraph图的基本操作 308
*0.4.* DGLGraph图的*建与维护 308
*0.4.2 查看DGLGraph图中的度 309
*0.4.3 DGLGraph图与NetWorkx图的相互转化 3*0
*0.4.4 NetWorkx库 3**
*0.4.5 DGLGraph图中*点属性的操作 3*3
*0.4.6 DGLGraph图中边属性的操作 3*4
*0.4.7 DGLGraph图属性操作中的注意事项 3*4
*0.4.8 使用函数对图的*点和边进行计算 3*5
*0.4.9 使用函数对图的*点和边进行过滤 3*5
*0.4.*0 DGLGraph图的消息传播 3*6
*0.4.** DGL库中的多图处理 3*7
*0.5 实例28:用带有残差结构的多层GAT模型实现论文分类 3*8
*0.5.* 代码实现:使用DGL数据集加载CORA样本 3*9
*0.5.2 用邻居聚合策略实现GATConv 32*
*0.5.3 代码实现:用DGL库中的GATConv搭建多层GAT模型 323
*0.5.4 代码实现:使用早停方式训练模型并输出评估结果 324
*0.6 图卷积模型的缺陷 327
*0.6.* *连接网络的*征与缺陷 327
*0.6.2 图卷积模型的缺陷 328
*0.6.3 弥补图卷积模型缺陷的方法 328
*0.6.4 从图结构角度理解图卷积原理及缺陷 328
*0.7 实例29:用简化图卷积模型实现论文分类 329
*0.7.* SGC的网络结构 330
*0.7.2 DGL库中SGC模型的实现方式 33*
*0.7.3 代码实现:搭建SGC模型并进行训练 333
*0.7.4 扩展: SGC模型的*足 334
*0.8 实例30:用图滤波*经网络模型实现论文分类 334
*0.8.* GfNN的结构 334
*0.8.2 代码实现:搭建GfNN模型并进行训练 335
*0.9 实例3*:用深度图互信息模型实现论文分类 337
*0.9.* DGI模型的原理与READOUT函数 337
*0.9.2 代码实现:搭建多层SGC网络 338
*0.9.3 代码实现:搭建编码器和判别器 339
*0.9.4 代码实现:搭建DGI模型并进行训练 340
*0.9.5 代码实现:利用DGI模型提取*征并进行分类 342
*0.*0 实例32:用图同构网络模型实现论文分类 344
*0.*0.* 多重集与单射 344
*0.*0.2 GIN模型的原理与实现 344
*0.*0.3 代码实现:搭建多层GIN模型并进行训练 346
*0.** 实例33:用APPNP模型实现论文分类 347
*0.**.* APPNP模型的原理与实现 347
*0.**.2 代码实现:搭建APPNP模型并进行训练 349
*0.*2 实例34:用JKNet模型实现论文分类 35*
*0.*2.* JKNet模型结构 35*
*0.*2.2 代码实现:修改图数据的预处理*分 352
*0.*2.3 代码实现:搭建JKNet模型并进行训练 352
*0.*3 总结 355
定*:*29.8
ISBN:9787**5549839
作者:李金洪
版次:第*版
出版时间:202*-*2
内容提要:
本书从基础知识开始,介绍深度学习与图*经网络相关的*系列技术与实现方法,主要内容*括PyTorch的使用、*经网络的原理、*经网络的基础模型、图*经网络的基础模型。书中侧重讲述与深度学习基础相关的网络模型和算法思想,以及图*经网络的原理,且针对这些知识点给出在PyTorch框架上的实现代码。 本书适合想学习图*经网络的技术人员、人工智能从业人员阅读,也适合作为大*院校相关*业的师生用书和培训班的教材。
作者简介:
李金洪, *通C、Python、Java语言,擅长*经网络、算法、协议分析、移动互联网*架构等技术,先后担任过CAD算法工程师、架构师、项目经理、*门经理等职位。参与过深度学习*域某移动互联网后台的OCR项目,某娱乐节目机器人的语音识别、声纹识别项目,金融*域的若干分类项目。
目录:
目录
第 *篇 入门——PyTorch基础
第 *章 快速了解人工智能与PyTorch 3
*.* 图*经网络与深度学习 4
*.*.* 深度*经网络 4
*.*.2 图*经网络 4
*.2 PyTorch是做什么的 4
*.3 PyTorch的*点 5
*.4 PyTorch与TensorFlow各有所长 6
*.5 如何使用本书学好深度学习 8
第 2章 搭建开发环境 9
2.* 下载及安装Anaconda *0
2.*.* 下载Anaconda开发工具 *0
2.*.2 安装Anaconda开发工具 *0
2.*.3 安装Anaconda开发工具时的注意事项 **
2.2 安装PyTorch **
2.2.* 打开PyTorch官网 *2
2.2.2 配置PyTorch安装命令 *2
2.2.3 使用配置好的命令安装PyTorch *2
2.2.4 配置PyTorch的镜像源 *3
2.3 熟悉Anaconda 3的开发工具 *5
2.3.* 快速了解Spyder *5
2.3.2 快速了解Jupyter Notebook *7
2.4 测试开发环境 *8
第3章 PyTorch基本开发步骤——用逻辑回归拟合二维数据 *9
3.* 实例*:从*组看似混乱的数据中找出规律 20
3.*.* 准备数据 20
3.*.2 定义网络模型 2*
3.*.3 搭建网络模型 22
3.*.4 训练模型 23
3.*.5 可视化训练结果 23
3.*.6 使用及评估模型 24
3.*.7 可视化模型 25
3.2 模型是如何训练出来的 26
3.2.* 模型里的内容及意义 26
3.2.2 模型内*数据流向 27
3.3 总结 27
第4章 快速上手PyTorch 29
4.* *经网络中的几个基本数据类型 30
4.2 张量类的基础 30
4.2.* 定义张量的方法 30
4.2.2 张量的类型 32
4.2.3 张量的type()方法 33
4.3 张量与NumPy 34
4.3.* 张量与NumPy类型数据的相互转换 34
4.3.2 张量与NumPy各自的形状获取 34
4.3.3 张量与NumPy各自的切片操作 34
4.3.4 张量与NumPy类型数据相互转换间的陷阱 35
4.4 在CPU和GPU控制的内存中定义张量 36
4.4.* 将CPU内存中的张量转化到GPU内存中 36
4.4.2 直接在GPU内存中定义张量 36
4.4.3 使用to()方法来*设备 36
4.4.4 使用环境变量CUDA_VISIBLE_DEVICES来*设备 36
4.5 生成随机值张量 37
4.5.* 设置随机值种子 37
4.5.2 按照*形状生成随机值 37
4.5.3 生成线性空间的随机值 37
4.5.4 生成对数空间的随机值 38
4.5.5 生成未初始化的矩阵 38
4.5.6 更多的随机值生成函数 38
4.6 张量间的数学运算 38
4.6.* PyTorch的运算函数 39
4.6.2 PyTorch的自变化运算函数 39
4.7 张量间的数据操作 39
4.7.* 用torch.reshape()函数实现数据维度变换 39
4.7.2 实现张量数据的矩阵转置 40
4.7.3 view()方法与contiguous()方法 40
4.7.4 用torch.cat()函数实现数据连接 4*
4.7.5 用torch.chunk()函数实现数据均匀分割 4*
4.7.6 用torch.split()函数实现数据*均匀分割 42
4.7.7 用torch.gather()函数对张量数据进行检索 42
4.7.8 按照*阈值对张量进行过滤 42
4.7.9 找出张量中的非零值索引 43
4.7.*0 根据条件进行多张量取值 43
4.7.** 根据阈值进行数据截断 43
4.7.*2 获取数据中最大值、最小值的索引 43
4.8 Variable类型与自动微分模块 44
4.8.* 自动微分模块简介 44
4.8.2 Variable对象与张量对象之间的转化 44
4.8.3 用no_grad()与enable_grad()控制梯度计算 45
4.8.4 函数torch.no_grad()介绍 45
4.8.5 函数enable_grad()与no_grad()的嵌套 46
4.8.6 用set_grad_enabled()函数统*管理梯度计算 47
4.8.7 Variable对象的grad_fn属性 47
4.8.8 Variable对象的is_leaf属性 48
4.8.9 用backward()方法自动求导 48
4.8.*0 自动求导的作用 49
4.8.** 用detach()方法将Variable对象分离成叶子节点 49
4.8.*2 volatile属性扩展 50
4.9 定义模型结构的步骤与方法 50
4.9.* 代码实现: Module类的使用方法 50
4.9.2 模型中的参数Parameters类 52
4.9.3 为模型添加参数 53
4.9.4 从模型中获取参数 53
4.9.5 *存与载入模型 56
4.9.6 模型结构中的钩子函数 57
4.*0 模型的网络层 58
第5章 *经网络的基本原理与实现 59
5.* 了解深度学习中的*经网络与*经元 60
5.*.* 了解单个*经元 60
5.*.2 生物*经元与计算机*经元模型的结构相似性 62
5.*.3 生物*经元与计算机*经元模型的工作流程相似性 63
5.*.4 *经网络的形成 63
5.2 深度学习中的基础*经网络模型 63
5.3 什么是*连接*经网络 64
5.3.* *连接*经网络的结构 64
5.3.2 实例2:分析*连接*经网络中每个*经元的作用 64
5.3.3 *连接*经网络的拟合原理 66
5.3.4 *连接*经网络的设计思想 67
5.4 激活函数——加入非线性因素,弥补线性模型缺陷 68
5.4.* Sigmoid函数 68
5.4.2 tanh函数 69
5.4.3 ReLU函数 70
5.4.4 激活函数的多种形式 72
5.4.5 扩展*:更好的激活函数(Swish与Mish) 73
5.4.6 扩展2:更适合NLP任务的激活函数(GELU) 74
5.5 激活函数总结 75
5.6 训练模型的步骤与方法 76
5.7 *经网络模块(nn)中的损失函数 76
5.7.* L*损失函数 76
5.7.2 均值平方差(MSE)损失函数 77
5.7.3 交叉熵损失(CrossEntropyLoss)函数 77
5.7.4 其他的损失函数 78
5.7.5 总结:损失算法的选取 79
5.8 Softmax算法——处理分类问题 79
5.8.* 什么是Softmax 80
5.8.2 Softmax原理 80
5.8.3 常用的Softmax接口 80
5.8.4 实例3:Softmax与交叉熵的应用 8*
5.8.5 总结:更好地认识Softmax 82
5.9 *化器模块 82
5.9.* 了解反向传播与BP算法 82
5.9.2 *化器与梯度下降 83
5.9.3 *化器的类别 83
5.9.4 *化器的使用方法 83
5.9.5 查看*化器的参数结构 84
5.9.6 常用的*化器——Adam 85
5.9.7 更好的*化器——Ranger 85
5.9.8 如何选取*化器 85
5.*0 退化学习率——在训练的速度与*度之间找到平衡 86
5.*0.* 设置学习率的方法——退化学习率 86
5.*0.2 退化学习率接口(lr_scheduler) 87
5.*0.3 使用lr_scheduler接口实现多种退化学习率 88
5.** 实例4:预测泰坦尼克号船上的生存乘客 9*
5.**.* 载入样本 9*
5.**.2 样本的*征分析——离散数据与连续数据 92
5.**.3 处理样本中的离散数据和Nan值 93
5.**.4 分离样本和标签并制作成数据集 95
5.**.5 定义Mish激活函数与多层*连接网络 96
5.**.6 训练模型并输出结果 97
第二篇 基础——*经网络的监督训练与*监督训练
第6章 实例5:识别黑白图中的服装图案 *0*
6.* 熟悉样本:了解Fashion-MNIST数据集 *02
6.*.* Fashion-MNIST的起源 *02
6.*.2 Fashion-MNIST的结构 *02
6.*.3 手动下载Fashion-MNIST数据集 *03
6.*.4 代码实现:自动下载Fashion-MNIST数据集 *03
6.*.5 代码实现:读取及显示Fashion-MNIST中的数据 *04
6.2 制作批次数据集 *05
6.2.* 数据集封装类DataLoader *05
6.2.2 代码实现:按批次封装Fashion-MNIST数据集 *06
6.2.3 代码实现:读取批次数据集 *07
6.3 构建并训练模型 *08
6.3.* 代码实现:定义模型类 *08
6.3.2 代码实现:定义损失的计算方法及*化器 **0
6.3.3 代码实现:训练模型 **0
6.3.4 代码实现:*存模型 ***
6.4 加载模型,并用其进行预测 ***
6.5 评估模型 **2
6.6 扩展:多显卡并行训练 **3
6.6.* 代码实现:多显卡训练 **3
6.6.2 多显卡训练过程中,*存与读取模型文件的注意事项 **5
6.6.3 在切换设备环境时,*存与读取模型文件的注意事项 **6
6.6.4 处理显存残留问题 **6
第7章 监督学习中的*经网络 **9
7.* 从视觉的角度理解卷积*经网络 *20
7.*.* 生物视觉系统原理 *20
7.*.2 微积分 *20
7.*.3 离散微分与离散积分 *20
7.*.4 视觉*经网络中的离散积分 *2*
7.2 卷积*经网络的结构 *2*
7.2.* 卷积*经网络的工作过程 *22
7.2.2 卷积*经网络与*连接网络的区别 *23
7.2.3 了解*D卷积、2D卷积和3D卷积 *23
7.2.4 实例分析:Sobel算子的原理 *23
7.2.5 深层*经网络中的卷积核 *26
7.2.6 理解卷积的数学意义——卷积分 *26
7.3 卷积*经网络的实现 *27
7.3.* 了解卷积接口 *27
7.3.2 卷积操作的类型 *29
7.3.3 卷积参数与卷积结果的计算规则 *30
7.3.4 实例6:卷积函数的使用 *30
7.3.5 实例7:使用卷积提取图片的轮廓 *35
7.4 深层卷积*经网络 *38
7.4.* 深层卷积*经网络组成 *38
7.4.2 池化操作 *40
7.4.3 了解池化接口 *40
7.4.4 实例8:池化函数的使用 *4*
7.4.5 实例9:搭建卷积*经网络 *43
7.5 循环*经网络结构 *45
7.5.* 了解人的记忆原理 *45
7.5.2 循环*经网络的应用*域 *46
7.5.3 循环*经网络的正向传播过程 *47
7.5.4 BP算法与BPTT算法的原理 *48
7.5.5 实例*0:简单循环*经网络实现——设计*个退位减法器 *49
7.6 常见的循环*经网络单元及结构 *54
7.6.* 长短记忆(LSTM)单元 *55
7.6.2 门控循环单元(GRU) *57
7.6.3 只有忘记门的LSTM(JANET)单元 *58
7.6.4 *立循环(IndRNN)单元 *58
7.6.5 双向RNN结构 *59
7.7 实例**:用循环*经网络训练语言模型 *60
7.7.* 什么是语言模型 *6*
7.7.2 词表与词向量 *6*
7.7.3 词向量的原理与实现 *6*
7.7.4 NLP中多项式分布 *62
7.7.5 循环*经网络的实现 *63
7.7.6 实现语言模型的思路与步骤 *64
7.7.7 代码实现:准备样本 *65
7.7.8 代码实现:构建循环*经网络(RNN)模型 *67
7.7.9 代码实现:实例化模型类,并训练模型 *68
7.7.*0 代码实现:运行模型生成句子 *7*
7.8 过拟合问题及*化技巧 *72
7.8.* 实例*2:训练具有过拟合问题的模型 *72
7.8.2 *模型过拟合的方法 *75
7.8.3 了解正则化 *75
7.8.4 实例*3:用L2正则*模型的过拟合状况 *76
7.8.5 实例*4:通过增大数据集*模型的过拟合状况 *78
7.8.6 Dropout方法 *79
7.8.7 实例*5: 通过Dropout方法*模型的过拟合状况 *80
7.8.8 *连接网络的深浅与泛化能力的联系 *82
7.8.9 了解批量归*化(BN)算法 *82
7.8.*0 实例*6: 手动实现批量归*化的计算方法 *85
7.8.** 实例*7: 通过批量归*化方法*模型的过拟合状况 *87
7.8.*2 使用批量归*化方法时的注意 事项 *88
7.8.*3 扩展:多种批量归*化算法介绍 *88
7.9 *经网络中的注意力机制 *89
7.9.* 注意力机制的实现 *89
7.9.2 注意力机制的软、硬模式 *90
7.9.3 注意力机制模型的原理 *90
7.9.4 多头注意力机制 *9*
7.9.5 自注意力机制 *92
7.*0 实例*8:利用注意力循环*经网络对图片分类 *92
7.*0.* 循环*经网络处理图片分类任务的原理 *92
7.*0.2 代码实现:搭建LSTM网络模型 *93
7.*0.3 代码实现:构建注意力机制类 *93
7.*0.4 代码实现:构建输入数据并训练模型 *96
7.*0.5 使用并评估模型 *97
7.*0.6 扩展*:使用梯度剪辑技巧*化训练过程 *97
7.*0.7 扩展2:使用JANET单元完成RNN *98
7.*0.8 扩展3:使用IndRNN单元实现RNN *98
第8章 *监督学习中的*经网络 *99
8.* 快速了解信息熵 200
8.*.* 信息熵与概率的计算关系 200
8.*.2 联合熵 202
8.*.3 条件熵 202
8.*.4 交叉熵 203
8.*.5 相对熵——KL散度 203
8.*.6 JS散度 204
8.*.7 互信息 204
8.2 通用的*监督模型——自编码*经网络与对抗*经网络 205
8.3 自编码*经网络 206
8.3.* 自编码*经网络的结构 206
8.3.2 自编码*经网络的计算过程 206
8.3.3 自编码*经网络的作用与意义 207
8.3.4 变分自编码*经网络 207
8.3.5 条件变分自编码*经网络 208
8.4 实例*9:用变分自编码*经网络模型生成模拟数据 208
8.4.* 变分自编码*经网络模型的结构介绍 208
8.4.2 代码实现:引入模块并载入样本 209
8.4.3 代码实现:定义变分自编码*经网络模型的正向结构 2*0
8.4.4 变分自编码*经网络模型的反向传播与KL散度的应用 2**
8.4.5 代码实现:完成损失函数和训练函数 2*2
8.4.6 代码实现:训练模型并输出可视化结果 2*3
8.4.7 代码实现:提取样本的低维*征并进行可视化 2*4
8.4.8 代码实现:可视化模型的输出空间 2*5
8.5 实例20:用条件变分自编码*经网络生成可控模拟数据 2*6
8.5.* 条件变分自编码*经网络的实现 2*6
8.5.2 代码实现:定义条件变分自编码*经网络模型的正向结构 2*7
8.5.3 代码实现:训练模型并输出可视化结果 2*8
8.6 对抗*经网络 2*9
8.6.* 对抗*经网络的工作过程 2*9
8.6.2 对抗*经网络的作用 220
8.6.3 GAN模型难以训练的原因 220
8.6.4 WGAN模型——解决GAN难以训练的问题 22*
8.6.5 分析WGAN的*足 222
8.6.6 WGAN-gp模型——更容易训练的GAN模型 223
8.6.7 条件GAN 2248.6.8 带有W散度的GAN——WGAN-div 225
8.7 实例2*:用WGAN-gp模型生成模拟数据 226
8.7.* DCGAN中的*卷积 226
8.7.2 上采样与下采样 227
8.7.3 实例归*化 228
8.7.4 代码实现:引入模块并载入样本 228
8.7.5 代码实现:定义生成器与判别器 229
8.7.6 激活函数与归*化层的位置关系 23*
8.7.7 代码实现:定义函数完成梯度惩罚项 234
8.7.8 代码实现:定义模型的训练函数 235
8.7.9 代码实现:定义函数,可视化模型结果 237
8.7.*0 代码实现:调用函数并训练模型 237
8.7.** 练习题 238
8.8 实例22:用条件GAN生成可控模拟数据 239
8.8.* 代码实现:定义条件GAN模型的正向结构 239
8.8.2 代码实现:调用函数并训练模型 240
8.9 实例23:实现带有W散度的GAN——WGAN-div模型 24*
8.9.* 代码实现:完成W散度的损失函数 24*
8.9.2 代码实现:定义训练函数来训练模型 242
8.*0 散度在*经网络中的应用 243
8.*0.* f-GAN框架 243
8.*0.2 基于f散度的变分散度最小化方法 243
8.*0.3 用Fenchel共轭函数实现f-GAN 244
8.*0.4 f-GAN中判别器的激活函数 246
8.*0.5 互信息*经估计 247
8.*0.6 实例24:用*经网络估计互信息 249
8.*0.7 稳定训练GAN模型的经验和技巧 252
8.** 实例25:用最大化深度互信息模型执行图片搜索器 253
8.**.* DIM模型的原理 254
8.**.2 DIM模型的结构 254
8.**.3 代码实现:加载CIFAR数据集 257
8.**.4 代码实现:定义DIM模型 260
8.**.5 代码实现:实例化DIM模型并进行训练 262
8.**.6 代码实现:加载模型搜索图片 264
第9章 快速了解图*经网络——少量样本也可以训练模型 269
9.* 图*经网络的相关基础知识 270
9.*.* 欧氏空间与非欧氏空间 270
9.*.2 图 270
9.*.3 图相关的术语和度量 270
9.*.4 图*经网络 27*
9.*.5 GNN的动机 27*
9.2 矩阵的基础 272
9.2.* 转置矩阵 272
9.2.2 对称矩阵及其*性 272
9.2.3 对角矩阵与单位矩阵 272
9.2.4 哈达马积 273
9.2.5 点积 273
9.2.6 对角矩阵的*性与操作方法 273
9.2.7 度矩阵与邻接矩阵 275
9.3 邻接矩阵的几种操作 275
9.3.* 获取有向图的短边和长边 276
9.3.2 将有向图的邻接矩阵转成*向图的邻接矩阵 277
9.4 实例26:用图卷积*经网络为论文分类 278
9.4.* CORA数据集 278
9.4.2 代码实现:引入基础模块并设置运行环境 279
9.4.3 代码实现:读取并解析论文数据 279
9.4.4 代码实现:读取并解析论文关系数据 28*
9.4.5 代码实现:加工图结构的矩阵数据 283
9.4.6 代码实现:将数据转为张量,并分配运算资源 284
9.4.7 代码实现:定义Mish激活函数与图卷积操作类 284
9.4.8 代码实现:搭建多层图卷积网络 286
9.4.9 代码实现:用Ranger*化器训练模型并可视化结果 287
9.5 图卷积*经网络 290
9.5.* 图结构与拉普拉斯矩阵的关系 290
9.5.2 拉普拉斯矩阵的3种形式 29*
9.6 扩展实例:用Multi-sample Dropout*化模型的训练速度 29*
9.6.* Multi-sample Dropout方法 292
9.6.2 代码实现:为图卷积模型添加 Multi-sample Dropout方法 292
9.6.3 代码实现:使用带有Multi-sample Dropout方法的图卷积模型 293
9.7 从图*经网络的视角看待深度学习 294
9.8 图*经网络使用拉普拉斯矩阵的原因 295
9.8.* 节点与邻接矩阵的点积作用 295
9.8.2 拉普拉斯矩阵的点积作用 296
9.8.3 重新审视图卷积的拟合本质 296
9.8.4 点积计算并*是唯*方法 296
第 *0章 基于空间域的图*经网络实现 297
*0.* 重新认识图卷积*经网络 298
*0.*.* 基于谱域的图处理 298
*0.*.2 基于*点域的图处理 298
*0.*.3 基于*点域的图卷积 298
*0.*.4 图卷积的*性 299
*0.2 实例27:用图注意力*经网络为论文分类 300
*0.2.* 图注意力网络 300
*0.2.2 工程*署 30*
*0.2.3 代码实现:对邻接矩阵进行对称归*化拉普拉斯矩阵转化 30*
*0.2.4 代码实现:搭建图注意力*经网络层 30*
*0.2.5 代码实现:搭建图注意力模型类 302
*0.2.6 代码实现:实例化图注意力模型,并进行训练与评估 303
*0.2.7 常用的图*经网络库 304
*0.3 图*经网络常用库——DGL库 305
*0.3.* DGL库的实现与性能 305
*0.3.2 安装DGL库的方法及注意事项 305
*0.3.3 DGL库中的数据集 306
*0.3.4 DGL库中的图 307
*0.3.5 DGL库中的内联函数 307
*0.3.6 扩展:了解PyG库 307
*0.4 DGLGraph图的基本操作 308
*0.4.* DGLGraph图的*建与维护 308
*0.4.2 查看DGLGraph图中的度 309
*0.4.3 DGLGraph图与NetWorkx图的相互转化 3*0
*0.4.4 NetWorkx库 3**
*0.4.5 DGLGraph图中*点属性的操作 3*3
*0.4.6 DGLGraph图中边属性的操作 3*4
*0.4.7 DGLGraph图属性操作中的注意事项 3*4
*0.4.8 使用函数对图的*点和边进行计算 3*5
*0.4.9 使用函数对图的*点和边进行过滤 3*5
*0.4.*0 DGLGraph图的消息传播 3*6
*0.4.** DGL库中的多图处理 3*7
*0.5 实例28:用带有残差结构的多层GAT模型实现论文分类 3*8
*0.5.* 代码实现:使用DGL数据集加载CORA样本 3*9
*0.5.2 用邻居聚合策略实现GATConv 32*
*0.5.3 代码实现:用DGL库中的GATConv搭建多层GAT模型 323
*0.5.4 代码实现:使用早停方式训练模型并输出评估结果 324
*0.6 图卷积模型的缺陷 327
*0.6.* *连接网络的*征与缺陷 327
*0.6.2 图卷积模型的缺陷 328
*0.6.3 弥补图卷积模型缺陷的方法 328
*0.6.4 从图结构角度理解图卷积原理及缺陷 328
*0.7 实例29:用简化图卷积模型实现论文分类 329
*0.7.* SGC的网络结构 330
*0.7.2 DGL库中SGC模型的实现方式 33*
*0.7.3 代码实现:搭建SGC模型并进行训练 333
*0.7.4 扩展: SGC模型的*足 334
*0.8 实例30:用图滤波*经网络模型实现论文分类 334
*0.8.* GfNN的结构 334
*0.8.2 代码实现:搭建GfNN模型并进行训练 335
*0.9 实例3*:用深度图互信息模型实现论文分类 337
*0.9.* DGI模型的原理与READOUT函数 337
*0.9.2 代码实现:搭建多层SGC网络 338
*0.9.3 代码实现:搭建编码器和判别器 339
*0.9.4 代码实现:搭建DGI模型并进行训练 340
*0.9.5 代码实现:利用DGI模型提取*征并进行分类 342
*0.*0 实例32:用图同构网络模型实现论文分类 344
*0.*0.* 多重集与单射 344
*0.*0.2 GIN模型的原理与实现 344
*0.*0.3 代码实现:搭建多层GIN模型并进行训练 346
*0.** 实例33:用APPNP模型实现论文分类 347
*0.**.* APPNP模型的原理与实现 347
*0.**.2 代码实现:搭建APPNP模型并进行训练 349
*0.*2 实例34:用JKNet模型实现论文分类 35*
*0.*2.* JKNet模型结构 35*
*0.*2.2 代码实现:修改图数据的预处理*分 352
*0.*2.3 代码实现:搭建JKNet模型并进行训练 352
*0.*3 总结 355
- 人民邮电出版社有限公司 (微信公众号认证)
- 人民邮电出版社微店,为您提供最全面,最专业的一站式购书服务
- 扫描二维码,访问我们的微信店铺
- 随时随地的购物、客服咨询、查询订单和物流...