Python深度学习入门:从零构建CNN和RNN
作者: [美]韦德曼
出版时间:2021年版
内容简介
本书全面介绍了深度学习知识,借助数学公式、示意图和代码,旨在帮助读者从数学层面、概念层面和应用层面理解神经网络。读者可以跟随本书构建和训练神经网络模型,从而解决实际问题。另外,本书着重介绍卷积神经网络和循环神经网络,并提供PyTorch开源神经网络库的使用方法,有助于学习构建更高级的神经网络架构。
目录
第 1章 基本概念 1
1.1 函数 2
1.2 导数 6
1.3 嵌套函数 8
1.4 链式法则 9
1.5 示例介绍 12
1.6 多输入函数 15
1.7 多输入函数的导数 16
1.8 多向量输入函数 17
1.9 基于已有特征创建新特征 18
1.10 多向量输入函数的导数 20
1.11 向量函数及其导数:再进一步 22
1.12 包含两个二维矩阵输入的计算图 25
1.13 有趣的部分:后向传递 28
1.14 小结 34
第 2章 基本原理 35
2.1 监督学习概述 36
2.2 监督学习模型 38
2.3 线性回归 38
2.3.1 线性回归:示意图 39
2.3.2 线性回归:更有用的示意图和数学 41
2.3.3 加入截距项 41
2.3.4 线性回归:代码 42
2.4 训练模型 42
2.4.1 计算梯度:示意图 43
2.4.2 计算梯度:数学和一些代码 43
2.4.3 计算梯度:完整的代码 44
2.4.4 使用梯度训练模型 45
2.5 评估模型:训练集与测试集 46
2.6 评估模型:代码 46
2.7 从零开始构建神经网络 49
2.7.1 步骤1:一系列线性回归 49
2.7.2 步骤2:一个非线性函数 50
2.7.3 步骤3:另一个线性回归 50
2.7.4 示意图 51
2.7.5 代码 52
2.7.6 神经网络:后向传递 53
2.8 训练和评估第 一个神经网络 55
2.9 小结 57
第3章 从零开始深度学习 58
3.1 定义深度学习 58
3.2 神经网络的构成要素:运算 59
3.2.1 示意图 60
3.2.2 代码 61
3.3 神经网络的构成要素:层 62
3.4 在构成要素之上构建新的要素 64
3.4.1 层的蓝图 66
3.4.2 稠密层 68
3.5 NeuralNetwork类和其他类 69
3.5.1 示意图 70
3.5.2 代码 70
3.5.3 Loss类 71
3.6 从零开始构建深度学习模型 72
3.6.1 实现批量训练 73
3.6.2 NeuralNetwork: 代码 73
3.7 优化器和训练器 75
3.7.1 优化器 76
3.7.2 训练器 77
3.8 整合 79
3.9 小结与展望 80
第4章 扩展 81
4.1 关于神经网络的一些直觉 82
4.2 softmax交叉熵损失函数 84
4.2.1 组件1:softmax函数 84
4.2.2 组件2:交叉熵损失 85
4.2.3 关于激活函数的注意事项 87
4.3 实验 90
4.3.1 数据预处理 90
4.3.2 模型 91
4.3.3 实验:softmax交叉熵损失函数 92
4.4 动量 92
4.4.1 理解动量 93
4.4.2 在Optimizer类中实现动量 93
4.4.3 实验:带有动量的随机梯度下降 94
4.5 学习率衰减 95
4.5.1 学习率衰减的类型 95
4.5.2 实验:学习率衰减 97
4.6 权重初始化 97
4.6.1 数学和代码 99
4.6.2 实验:权重初始化 100
4.7 dropout 100
4.7.1 定义 100
4.7.2 实现 101
4.7.3 实验:dropout 102
4.8 小结 104
第5章 CNN 105
5.1 神经网络与表征学习 105
5.1.1 针对图像数据的不同架构 106
5.1.2 卷积运算 107
5.1.3 多通道卷积运算 108
5.2 卷积层 109
5.2.1 实现意义 110
5.2.2 卷积层与全连接层的区别 111
5.2.3 利用卷积层进行预测:Flatten层 111
5.2.4 池化层 112
5.3 实现多通道卷积运算 114
5.3.1 前向传递 114
5.3.2 后向传递 117
5.3.3 批处理 120
5.3.4 二维卷积 121
5.3.5 最后一个元素:通道 123
5.4 使用多通道卷积运算训练CNN 126
5.4.1 Flatten运算 126
5.4.2 完整的Conv2D层 127
5.4.3 实验 128
5.5 小结 129
第6章 RNN 130
6.1 关键限制:处理分支 131
6.2 自动微分 132
6.3 RNN的动机 137
6.4 RNN简介 138
6.4.1 RNN的第 一个类:RNNLayer 139
6.4.2 RNN的第二个类:RNNNode 140
6.4.3 整合RNNNode类和RNNLayer类 140
6.4.4 后向传递 142
6.5 RNN:代码 143
6.5.1 RNNLayer类 144
6.5.2 RNNNode类的基本元素 147
6.5.3 vanilla RNNNode类 148
6.5.4 vanilla RNNNode类的局限性 150
6.5.5 GRUNode类 151
6.5.6 LSTMNode类 154
6.5.7 基于字符级RNN语言模型的数据表示 156
6.5.8 其他语言建模任务 157
6.5.9 组合RNNLayer类的变体 158
6.5.10 将全部内容整合在一起 158
6.6 小结 159
第7章 PyTorch 160
7.1 PyTorch Tensor 160
7.2 使用PyTorch进行深度学习 161
7.2.1 PyTorch元素:Model类及其Layer类 162
7.2.2 使用PyTorch实现神经网络基本要素:DenseLayer类 163
7.2.3 示例:基于PyTorch的波士顿房价模型 164
7.2.4 PyTorch元素:Optimizer类和Loss类 165
7.2.5 PyTorch元素:Trainer类 165
7.2.6 PyTorch优化学习技术 168
7.3 PyTorch中的CNN 168
7.4 PyTorch中的LSTM 173
7.5 后记:通过自编码器进行无监督学习 175
7.5.1 表征学习 175
7.5.2 应对无标签场景的方法 176
7.5.3 在PyTorch中实现自编码器 176
7.5.4 更强大的无监督学习测试及解决方案 181
7.6 小结 182
附录 深入探讨 183
关于作者 192
关于封面 192