PyTorch深度学习和图神经网络 卷1 基础知识
- ISBN:9787115549839
- 装帧:一般胶版纸
- 册数:暂无
- 重量:暂无
- 开本:16开
- 页数:355
- 出版时间:2021-12-01
- 条形码:9787115549839 ; 978-7-115-54983-9
本书特色
介绍深度学习与图神经网络相关的一系列技术与实现方法; 内容涵盖PyTorch的使用、神经网络的原理、神经网络的基础模型、图神经网络的原理、图神经网络的基础模型; 书中给出用PyTorch实现的网络模型和算法实例代码; 提供本书源代码下载
内容简介
本书从基础知识开始,介绍深度学习与图神经网络相关的一系列技术与实现方法,主要内容包括PyTorch的使用、神经网络的原理、神经网络的基础模型、图神经网络的基础模型。书中侧重讲述与深度学习基础相关的网络模型和算法思想,以及图神经网络的原理,且针对这些知识点给出在PyTorch框架上的实现代码。 本书适合想学习图神经网络的技术人员、人工智能从业人员阅读,也适合作为大专院校相关专业的师生用书和培训班的教材。
目录
第 一篇 入门——PyTorch基础
第 1章 快速了解人工智能与PyTorch 3
1.1 图神经网络与深度学习 4
1.1.1 深度神经网络 4
1.1.2 图神经网络 4
1.2 PyTorch是做什么的 4
1.3 PyTorch的特点 5
1.4 PyTorch与TensorFlow各有所长 6
1.5 如何使用本书学好深度学习 8
第 2章 搭建开发环境 9
2.1 下载及安装Anaconda 10
2.1.1 下载Anaconda开发工具 10
2.1.2 安装Anaconda开发工具 10
2.1.3 安装Anaconda开发工具时的注意事项 11
2.2 安装PyTorch 11
2.2.1 打开PyTorch官网 12
2.2.2 配置PyTorch安装命令 12
2.2.3 使用配置好的命令安装PyTorch 12
2.2.4 配置PyTorch的镜像源 13
2.3 熟悉Anaconda 3的开发工具 15
2.3.1 快速了解Spyder 15
2.3.2 快速了解Jupyter Notebook 17
2.4 测试开发环境 18
第3章 PyTorch基本开发步骤——用逻辑回归拟合二维数据 19
3.1 实例1:从一组看似混乱的数据中找出规律 20
3.1.1 准备数据 20
3.1.2 定义网络模型 21
3.1.3 搭建网络模型 22
3.1.4 训练模型 23
3.1.5 可视化训练结果 23
3.1.6 使用及评估模型 24
3.1.7 可视化模型 25
3.2 模型是如何训练出来的 26
3.2.1 模型里的内容及意义 26
3.2.2 模型内部数据流向 27
3.3 总结 27
第4章 快速上手PyTorch 29
4.1 神经网络中的几个基本数据类型 30
4.2 张量类的基础 30
4.2.1 定义张量的方法 30
4.2.2 张量的类型 32
4.2.3 张量的type()方法 33
4.3 张量与NumPy 34
4.3.1 张量与NumPy类型数据的相互转换 34
4.3.2 张量与NumPy各自的形状获取 34
4.3.3 张量与NumPy各自的切片操作 34
4.3.4 张量与NumPy类型数据相互转换间的陷阱 35
4.4 在CPU和GPU控制的内存中定义张量 36
4.4.1 将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.1 设置随机值种子 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.1 PyTorch的运算函数 39
4.6.2 PyTorch的自变化运算函数 39
4.7 张量间的数据操作 39
4.7.1 用torch.reshape()函数实现数据维度变换 39
4.7.2 实现张量数据的矩阵转置 40
4.7.3 view()方法与contiguous()方法 40
4.7.4 用torch.cat()函数实现数据连接 41
4.7.5 用torch.chunk()函数实现数据均匀分割 41
4.7.6 用torch.split()函数实现数据不均匀分割 42
4.7.7 用torch.gather()函数对张量数据进行检索 42
4.7.8 按照指定阈值对张量进行过滤 42
4.7.9 找出张量中的非零值索引 43
4.7.10 根据条件进行多张量取值 43
4.7.11 根据阈值进行数据截断 43
4.7.12 获取数据中*大值、*小值的索引 43
4.8 Variable类型与自动微分模块 44
4.8.1 自动微分模块简介 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.10 自动求导的作用 49
4.8.11 用detach()方法将Variable对象分离成叶子节点 49
4.8.12 volatile属性扩展 50
4.9 定义模型结构的步骤与方法 50
4.9.1 代码实现: Module类的使用方法 50
4.9.2 模型中的参数Parameters类 52
4.9.3 为模型添加参数 53
4.9.4 从模型中获取参数 53
4.9.5 保存与载入模型 56
4.9.6 模型结构中的钩子函数 57
4.10 模型的网络层 58
第5章 神经网络的基本原理与实现 59
5.1 了解深度学习中的神经网络与神经元 60
5.1.1 了解单个神经元 60
5.1.2 生物神经元与计算机神经元模型的结构相似性 62
5.1.3 生物神经元与计算机神经元模型的工作流程相似性 63
5.1.4 神经网络的形成 63
5.2 深度学习中的基础神经网络模型 63
5.3 什么是全连接神经网络 64
5.3.1 全连接神经网络的结构 64
5.3.2 实例2:分析全连接神经网络中每个神经元的作用 64
5.3.3 全连接神经网络的拟合原理 66
5.3.4 全连接神经网络的设计思想 67
5.4 激活函数——加入非线性因素,弥补线性模型缺陷 68
5.4.1 Sigmoid函数 68
5.4.2 tanh函数 69
5.4.3 ReLU函数 70
5.4.4 激活函数的多种形式 72
5.4.5 扩展1:更好的激活函数(Swish与Mish) 73
5.4.6 扩展2:更适合NLP任务的激活函数(GELU) 74
5.5 激活函数总结 75
5.6 训练模型的步骤与方法 76
5.7 神经网络模块(nn)中的损失函数 76
5.7.1 L1损失函数 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.1 什么是Softmax 80
5.8.2 Softmax原理 80
5.8.3 常用的Softmax接口 80
5.8.4 实例3:Softmax与交叉熵的应用 81
5.8.5 总结:更好地认识Softmax 82
5.9 优化器模块 82
5.9.1 了解反向传播与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.10 退化学习率——在训练的速度与精度之间找到平衡 86
5.10.1 设置学习率的方法——退化学习率 86
5.10.2 退化学习率接口(lr_scheduler) 87
5.10.3 使用lr_scheduler接口实现多种退化学习率 88
5.11 实例4:预测泰坦尼克号船上的生存乘客 91
5.11.1 载入样本 91
5.11.2 样本的特征分析——离散数据与连续数据 92
5.11.3 处理样本中的离散数据和Nan值 93
5.11.4 分离样本和标签并制作成数据集 95
5.11.5 定义Mish激活函数与多层全连接网络 96
5.11.6 训练模型并输出结果 97
第二篇 基础——神经网络的监督训练与无监督训练
第6章 实例5:识别黑白图中的服装图案 101
6.1 熟悉样本:了解Fashion-MNIST数据集 102
6.1.1 Fashion-MNIST的起源 102
6.1.2 Fashion-MNIST的结构 102
6.1.3 手动下载Fashion-MNIST数据集 103
6.1.4 代码实现:自动下载Fashion-MNIST数据集 103
6.1.5 代码实现:读取及显示Fashion-MNIST中的数据 104
6.2 制作批次数据集 105
6.2.1 数据集封装类DataLoader 105
6.2.2 代码实现:按批次封装Fashion-MNIST数据集 106
6.2.3 代码实现:读取批次数据集 107
6.3 构建并训练模型 108
6.3.1 代码实现:定义模型类 108
6.3.2 代码实现:定义损失的计算方法及优化器 110
6.3.3 代码实现:训练模型 110
6.3.4 代码实现:保存模型 111
6.4 加载模型,并用其进行预测 111
6.5 评估模型 112
6.6 扩展:多显卡并行训练 113
6.6.1 代码实现:多显卡训练 113
6.6.2 多显卡训练过程中,保存与读取模型文件的注意事项 115
6.6.3 在切换设备环境时,保存与读取模型文件的注意事项 116
6.6.4 处理显存残留问题 116
第7章 监督学习中的神经网络 119
7.1 从视觉的角度理解卷积神经网络 120
7.1.1 生物视觉系统原理 120
7.1.2 微积分 120
7.1.3 离散微分与离散积分 120
7.1.4 视觉神经网络中的离散积分 121
7.2 卷积神经网络的结构 121
7.2.1 卷积神经网络的工作过程 122
7.2.2 卷积神经网络与全连接网络的区别 123
7.2.3 了解1D卷积、2D卷积和3D卷积 123
7.2.4 实例分析:Sobel算子的原理 123
7.2.5 深层神经网络中的卷积核 126
7.2.6 理解卷积的数学意义——卷积分 126
7.3 卷积神经网络的实现 127
7.3.1 了解卷积接口 127
7.3.2 卷积操作的类型 129
7.3.3 卷积参数与卷积结果的计算规则 130
7.3.4 实例6:卷积函数的使用 130
7.3.5 实例7:使用卷积提取图片的轮廓 135
7.4 深层卷积神经网络 138
7.4.1 深层卷积神经网络组成 138
7.4.2 池化操作 140
7.4.3 了解池化接口 140
7.4.4 实例8:池化函数的使用 141
7.4.5 实例9:搭建卷积神经网络 143
7.5 循环神经网络结构 145
7.5.1 了解人的记忆原理 145
7.5.2 循环神经网络的应用领域 146
7.5.3 循环神经网络的正向传播过程 147
7.5.4 BP算法与BPTT算法的原理 148
7.5.5 实例10:简单循环神经网络实现——设计一个退位减法器 149
7.6 常见的循环神经网络单元及结构 154
7.6.1 长短记忆(LSTM)单元 155
7.6.2 门控循环单元(GRU) 157
7.6.3 只有忘记门的LSTM(JANET)单元 158
7.6.4 独立循环(IndRNN)单元 158
7.6.5 双向RNN结构 159
7.7 实例11:用循环神经网络训练语言模型 160
7.7.1 什么是语言模型 161
7.7.2 词表与词向量 161
7.7.3 词向量的原理与实现 161
7.7.4 NLP中多项式分布 162
7.7.5 循环神经网络的实现 163
7.7.6 实现语言模型的思路与步骤 164
7.7.7 代码实现:准备样本 165
7.7.8 代码实现:构建循环神经网络(RNN)模型 167
7.7.9 代码实现:实例化模型类,并训练模型 168
7.7.10 代码实现:运行模型生成句子 171
7.8 过拟合问题及优化技巧 172
7.8.1 实例12:训练具有过拟合问题的模型 172
7.8.2 改善模型过拟合的方法 175
7.8.3 了解正则化 175
7.8.4 实例13:用L2正则改善模型的过拟合状况 176
7.8.5 实例14:通过增大数据集改善模型的过拟合状况 178
7.8.6 Dropout方法 179
7.8.7 实例15: 通过Dropout方法改善模型的过拟合状况 180
7.8.8 全连接网络的深浅与泛化能力的联系 182
7.8.9 了解批量归一化(BN)算法 182
7.8.10 实例16: 手动实现批量归一化的计算方法 185
7.8.11 实例17: 通过批量归一化方法改善模型的过拟合状况 187
7.8.12 使用批量归一化方法时的注意 事项 188
7.8.13 扩展:多种批量归一化算法介绍 188
7.9 神经网络中的注意力机制 189
7.9.1 注意力机制的实现 189
7.9.2 注意力机制的软、硬模式 190
7.9.3 注意力机制模型的原理 190
7.9.4 多头注意力机制 191
7.9.5 自注意力机制 192
7.10 实例18:利用注意力循环神经网络对图片分类 192
7.10.1 循环神经网络处理图片分类任务的原理 192
7.10.2 代码实现:搭建LSTM网络模型 193
7.10.3 代码实现:构建注意力机制类 193
7.10.4 代码实现:构建输入数据并训练模型 196
7.10.5 使用并评估模型 197
7.10.6 扩展1:使用梯度剪辑技巧优化训练过程 197
7.10.7 扩展2:使用JANET单元完成RNN 198
7.10.8 扩展3:使用IndRNN单元实现RNN 198
第8章 无监督学习中的神经网络 199
8.1 快速了解信息熵 200
8.2 通用的无监督模型——自编码神经网络与对抗神经网络 205
8.3 自编码神经网络 206
8.4 实例19:用变分自编码神经网络模型生成模拟数据 208
8.5 实例20:用条件变分自编码神经网络生成可控模拟数据 216
8.6 对抗神经网络 219
8.7 实例21:用WGAN-gp模型生成模拟数据 226
8.8 实例22:用条件GAN生成可控模拟数据 239
8.9 实例23:实现带有W散度的GAN——WGAN-div模型 241
8.10 散度在神经网络中的应用 243
8.11 实例25:用*大化深度互信息模型执行图片搜索器 253
第9章 快速了解图神经网络——少量样本也可以训练模型 269
9.1 图神经网络的相关基础知识 270
9.2 矩阵的基础 272
9.3 邻接矩阵的几种操作 275
9.4 实例26:用图卷积神经网络为论文分类 278
9.5 图卷积神经网络 290
9.6 扩展实例:用Multi-sample Dropout优化模型的训练速度 291
9.7 从图神经网络的视角看待深度学习 294
9.8 图神经网络使用拉普拉斯矩阵的原因 295
第 10章 基于空间域的图神经网络实现 297
10.1 重新认识图卷积神经网络 298
10.2 实例27:用图注意力神经网络为论文分类 300
10.3 图神经网络常用库——DGL库 305
10.4 DGLGraph图的基本操作 308
10.5 实例28:用带有残差结构的多层GAT模型实现论文分类 318
10.6 图卷积模型的缺陷 327
10.7 实例29:用简化图卷积模型实现论文分类 329
10.8 实例30:用图滤波神经网络模型实现论文分类 334
10.9 实例31:用深度图互信息模型实现论文分类 337
10.10 实例32:用图同构网络模型实现论文分类 344
10.11 实例33:用APPNP模型实现论文分类 347
10.12 实例34:用JKNet模型实现论文分类 351
10.13 总结 355
作者简介
李金洪, 精通C、Python、Java语言,擅长神经网络、算法、协议分析、移动互联网安全架构等技术,先后担任过CAD算法工程师、架构师、项目经理、部门经理等职位。参与过深度学习领域某移动互联网后台的OCR项目,某娱乐节目机器人的语音识别、声纹识别项目,金融领域的若干分类项目。
-
有限与无限的游戏:一个哲学家眼中的竞技世界
¥37.4¥68.0 -
硅谷之火-人与计算机的未来
¥14.3¥39.8 -
全图解零基础word excel ppt 应用教程
¥12.0¥48.0 -
机器学习
¥59.4¥108.0 -
深度学习的数学
¥43.5¥69.0 -
智能硬件项目教程:基于ARDUINO(第2版)
¥31.9¥65.0 -
元启发式算法与背包问题研究
¥38.2¥49.0 -
AI虚拟数字人:商业模式+形象创建+视频直播+案例应用
¥62.9¥89.8 -
UNIX环境高级编程(第3版)
¥164.9¥229.0 -
剪映AI
¥52.8¥88.0 -
深度学习高手笔记 卷2:经典应用
¥90.9¥129.8 -
纹样之美:中国传统经典纹样速查手册
¥77.4¥109.0 -
UG NX 12.0数控编程
¥24.8¥45.0 -
MATLAB计算机视觉与深度学习实战(第2版)
¥90.9¥128.0 -
界面交互设计理论研究
¥30.8¥56.0 -
UN NX 12.0多轴数控编程案例教程
¥25.8¥38.0 -
微机组装与系统维护技术教程(第二版)
¥37.8¥43.0 -
Go 语言运维开发 : Kubernetes 项目实战
¥48.2¥79.0 -
明解C语言:实践篇
¥62.9¥89.8 -
Linux服务器架设实战(Linux典藏大系)
¥84.5¥119.0