全书分为三个部分。和第2章感性介绍神经网络的基础知识,并给出一个利用PyTorch搭建神经网络解决实际问题的例子,使读者对神经网络和PyTorch有初步的了解;第3~9章介绍基于Python和PyTorch的科学计算和神经网络搭建,涵盖了几乎所有Python基础知识和PyTorch基础功能,并通过例子使读者完全掌握相关技术;0和1章介绍生成对抗网络和强化学习,使读者了解更多神经网络的常用用法。
CONTENTS
目 录
前言
章 初识神经网络1
1.1 例说神经网络1
1.1.1 从围棋和AlphaGo说起1
1.1.2 人的神经系统3
1.1.3 人工神经元3
1.1.4 人工神经网络5
1.1.5 神经网络的设计和权重的学习7
1.2 神经网络与人工智能等概念的关系7
1.2.1 人工智能和数据挖掘7
1.2.2 机器学习和模式识别9
1.2.3 人工神经网络和深度学习11
1.2.4 各概念之间的联系11
1.3 本章小结12
第2章 初识PyTorch13
2.1 人工神经网络库PyTorch13
2.1.1 PyTorch是什么13
2.1.2 编写PyTorch程序14
2.2 例说PyTorch14
2.2.1 迷你AlphaGo介绍15
2.2.2 迷你AlphaGo的完整实现16
2.3 PyTorch学习路线19
2.4 本章小结20
第3章 使用PyTorch进行科学计算21
3.1 初识张量21
3.1.1 张量的数学定义21
3.1.2 PyTorch里的张量22
3.2 构造torch.Tensor类实例24
3.2.1 构造含有特定数据的张量24
3.2.2 构造特定大小的张量25
3.2.3 构造等比数列和等差数列张量26
3.2.4 构造张量26
3.3 组织张量的元素28
3.3.1 重排张量元素28
3.3.2 选取部分张量元素29
3.3.3 张量的扩展和拼接31
3.4 张量的科学计算32
3.4.1 有理运算和广播语义32
3.4.2 逐元素运算33
3.4.3 张量点积和Einstein求和35
3.4.4 统计函数38
3.4.5 比较和逻辑运算39
3.5 例子:用蒙特卡洛算法计算圆周率40
3.5.1 计算与蒙特卡洛算法40
3.5.2 蒙特卡洛算法求解圆周率的实现41
3.6 本章小结42
第4章 求解优化问题43
4.1 梯度及其计算43
4.1.1 梯度的定义43
4.1.2 梯度的性质和计算45
4.1.3 使用PyTorch计算梯度数值45
4.2 优化算法与torch.optim包46
4.2.1 梯度下降算法46
4.2.2 梯度下降算法的缺陷和解决方案48
4.2.3 各种优化算法50
4.3 例子:Himmelblau函数的优化55
4.3.1 Himmelblau函数及可视化55
4.3.2 求解Himmelblau的值57
4.3.3 求解Himmelblau的局部极大值59
4.4 本章小结59
第5章 线性回归60
5.1 一元线性回归60
5.1.1 二乘法60
5.1.2 正规方程法62
5.2 多元线性回归63
5.3 其他损失情况下的线性回归63
5.3.1 MSE损失、损失和平滑损失64
5.3.2 torch.nn子包与损失类65
5.3.3 使用优化器求解线性回归66
5.3.4 数据的归一化68
5.4 例子:世界人口的线性回归70
5.4.1 从维基百科页面获取世界人口数据70
5.4.2 对世界人口做二乘法线性回归71
5.4.3 用优化算法实现二乘回归72
5.5 本章小结74
第6章 线性判决与逻辑回归75
6.1 线性判决与互熵损失75
6.1.1 判定问题与准确率75
6.1.2 线性判决76
6.1.3 极大似然和互熵损失77
6.2 逻辑回归78
6.2.1 expit函数和logit函数78
6.2.2 用优化器实现逻辑回归80
6.2.3 Newton-Raphson方法81
6.3 多项逻辑回归82
6.4 例子:数字图像的识别84
6.4.1 使用torchvision读取MNIST数据集84
6.4.2 利用多项逻辑回归识别MNIST数据86
6.5 例子:股票成交量预测88
6.5.1 股票数据的读取和可视化88
6.5.2 成交量变化方向预测89
6.6 本章小结91
第7章 全连接神经网络92
7.1 前馈神经网络92
7.1.1 前馈神经网络的定义92
7.1.2 使用torch.nn.Sequential类搭建前馈神经网络93
7.1.3 权重的确定与反向传播94
7.2 全连接层和全连接神经网络95
7.3 非线性激活96
7.3.1 逐元素激活97
7.3.2 非逐元素激活101
7.4 网络结构的选择102
7.4.1 欠拟合和过拟合102
7.4.2 训练集、验证集和测试集103
7.5 例子:基于全连接网络的非线性回归105
7.5.1 数据的生成和数据集分割105
7.5.2 确定网络结构并训练网络106
7.5.3 测试性能108
7.6 本章小结109
第8章 卷积神经网络110
8.1 卷积层110
8.1.1 序列的互相关和卷积110
8.1.2 一维张量的互相关114
8.1.3 一维张量的转置卷积117
8.1.4 高维张量的互相关和转置卷积121
8.1.5 torch.nn包里的卷积层121
8.2 池化层、视觉层和补全层123
8.2.1 张量的池化124
8.2.2 张量的反池化125
8.2.3 torch.nn包里的池化层126
8.2.4 张量的上采样128
8.2.5 torch.nn包里的视觉层130
8.2.6 张量的补全运算131
8.2.7 torch.nn包里的补全层131
8.3 例子:MNIST图片分类的改进132
8.3.1 搭建卷积神经网络133
8.3.2 卷积神经网络的训练和测试135
8.4 本章小结137
第9章 循环神经网络138
9.1 神经网络的循环结构138
9.1.1 单向单层循环结构138
9.1.2 多层循环结构139
9.1.3 双向循环结构140
9.2 循环神经网络中的循环单元141
9.2.1 基本循环神经元141
9.2.2 长短期记忆单元141
9.2.3 门控循环单元144
9.3 循环神经网络的实现145
9.3.1 torch.nn子包中的循环单元类145
9.3.2 torch.nn子包中的循环神经网络类146
9.4 例子:人均GDP的预测147
9.4.1 使用pandas-datareader读取世界银行数据库147
9.4.2 搭建LSTM预测模型148
9.4.3 网络的训练和使用149
9.5 本章小结151
0章 生成对抗网络152
10.1 生成对抗