在好例子网,分享、交流、成长!
您当前所在位置:首页Python 开发实例Python语言基础 → 动手学深度学习 - Aston Zhang, Mu Li, Zachary C. Lipton, Alexander J. Smola

动手学深度学习 - Aston Zhang, Mu Li, Zachary C. Lipton, Alexander J. Smola

Python语言基础

下载此实例
  • 开发语言:Python
  • 实例大小:12.55M
  • 下载次数:52
  • 浏览次数:118
  • 发布时间:2022-07-17
  • 实例类别:Python语言基础
  • 发 布 人:liu_sh123
  • 文件格式:.pdf
  • 所需积分:2
 相关标签: 深度学习 char and cha DER

实例介绍

【实例简介】动手学深度学习 - Aston Zhang, Mu Li, Zachary C. Lipton, Alexander J. Smola

【实例截图】

【核心代码】
⽬录
前⾔ 1
如何使⽤本书 7 1 深度学习简介 13
1.1 起源 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.2 发展 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.3 成功案例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.4 特点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2 预备知识 25
2.1 获取和运⾏本书的代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.1.1 获取代码并安装运⾏环境 . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.1.2 更新代码和运⾏环境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.1.3 使⽤GPU版的MXNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.2 数据操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.2.1 创建NDArray . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.2.2 运算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.2.3 ⼴播机制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.2.4 索引 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.2.5 运算的内存开销 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
iii
2.2.6 NDArray和NumPy相互变换 . . . . . . . . . . . . . . . . . . . . . . . . 36
2.3 ⾃动求梯度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.3.1 简单例⼦ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.3.2 训练模式和预测模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.3.3 对Python控制流求梯度 . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.4 查阅⽂档 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.4.1 查找模块⾥的所有函数和类 . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.4.2 查找特定函数和类的使⽤ . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.4.3 在MXNet⽹站上查阅 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3 深度学习基础 45
3.1 线性回归 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.1.1 线性回归的基本要素 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.1.2 线性回归的表⽰⽅法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.2 线性回归的从零开始实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.2.1 ⽣成数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.2.2 读取数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.2.3 初始化模型参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.2.4 定义模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.2.5 定义损失函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.2.6 定义优化算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.2.7 训练模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.3 线性回归的简洁实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.3.1 ⽣成数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.3.2 读取数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.3.3 定义模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.3.4 初始化模型参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.3.5 定义损失函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.3.6 定义优化算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.3.7 训练模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
3.4 softmax回归 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
3.4.1 分类问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
3.4.2 softmax回归模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.4.3 单样本分类的⽮量计算表达式 . . . . . . . . . . . . . . . . . . . . . . . . 63
3.4.4 小批量样本分类的⽮量计算表达式 . . . . . . . . . . . . . . . . . . . . . 64
iv
3.4.5 交叉熵损失函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
3.4.6 模型预测及评价 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3.5 图像分类数据集(Fashion-MNIST) . . . . . . . . . . . . . . . . . . . . . . . . 66
3.5.1 获取数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.5.2 读取小批量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
3.6 softmax回归的从零开始实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
3.6.1 读取数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
3.6.2 初始化模型参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
3.6.3 实现softmax运算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
3.6.4 定义模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
3.6.5 定义损失函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
3.6.6 计算分类准确率 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
3.6.7 训练模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
3.6.8 预测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
3.7 softmax回归的简洁实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
3.7.1 获取和读取数据 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
3.7.2 定义和初始化模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.7.3 softmax和交叉熵损失函数 . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.7.4 定义优化算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.7.5 训练模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.8 多层感知机 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3.8.1 隐藏层 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3.8.2 激活函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.8.3 多层感知机 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
3.9 多层感知机的从零开始实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
3.9.1 读取数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
3.9.2 定义模型参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
3.9.3 定义激活函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
3.9.4 定义模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
3.9.5 定义损失函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
3.9.6 训练模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
3.10 多层感知机的简洁实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
3.10.1 定义模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
3.10.2 训练模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
v
3.11 模型选择、⽋拟合和过拟合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
3.11.1 训练误差和泛化误差 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
3.11.2 模型选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
3.11.3 ⽋拟合和过拟合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
3.11.4 多项式函数拟合实验 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
3.12 权重衰减 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
3.12.1 ⽅法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
3.12.2 ⾼维线性回归实验 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
3.12.3 从零开始实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
3.12.4 简洁实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
3.13 丢弃法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
3.13.1 ⽅法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
3.13.2 从零开始实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
3.13.3 简洁实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
3.14 正向传播、反向传播和计算图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
3.14.1 正向传播 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
3.14.2 正向传播的计算图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
3.14.3 反向传播 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
3.14.4 训练深度学习模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
3.15 数值稳定性和模型初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
3.15.1 衰减和爆炸 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
3.15.2 随机初始化模型参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
3.16 实战Kaggle⽐赛:房价预测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
3.16.1 Kaggle⽐赛 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
3.16.2 读取数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
3.16.3 预处理数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
3.16.4 训练模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
3.16.5 k折交叉验证 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
3.16.6 模型选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
3.16.7 预测并在Kaggle提交结果 . . . . . . . . . . . . . . . . . . . . . . . . . . 121
4 深度学习计算 125
4.1 模型构造 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
4.1.1 继承Block类来构造模型 . . . . . . . . . . . . . . . . . . . . . . . . . . 126
4.1.2 Sequential类继承⾃Block类 . . . . . . . . . . . . . . . . . . . . . . 127
vi
4.1.3 构造复杂的模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
4.2 模型参数的访问、初始化和共享 . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
4.2.1 访问模型参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
4.2.2 初始化模型参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
4.2.3 ⾃定义初始化⽅法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
4.2.4 共享模型参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
4.3 模型参数的延后初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
4.3.1 延后初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
4.3.2 避免延后初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
4.4 ⾃定义层 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
4.4.1 不含模型参数的⾃定义层 . . . . . . . . . . . . . . . . . . . . . . . . . . 138
4.4.2 含模型参数的⾃定义层 . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
4.5 读取和存储 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
4.5.1 读写NDArray . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
4.5.2 读写Gluon模型的参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
4.6 GPU计算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
4.6.1 计算设备 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
4.6.2 NDArray的GPU计算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
4.6.3 Gluon的GPU计算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
5 卷积神经⽹络 149
5.1 ⼆维卷积层 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
5.1.1 ⼆维互相关运算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
5.1.2 ⼆维卷积层 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
5.1.3 图像中物体边缘检测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
5.1.4 通过数据学习核数组 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
5.1.5 互相关运算和卷积运算 . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
5.1.6 特征图和感受野 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
5.2 填充和步幅 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
5.2.1 填充 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
5.2.2 步幅 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
5.3 多输⼊通道和多输出通道 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
5.3.1 多输⼊通道 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
5.3.2 多输出通道 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
5.3.3 1 × 1卷积层 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
vii
5.4 池化层 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
5.4.1 ⼆维最⼤池化层和平均池化层 . . . . . . . . . . . . . . . . . . . . . . . . 164
5.4.2 填充和步幅 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
5.4.3 多通道 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
5.5 卷积神经⽹络(LeNet) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
5.5.1 LeNet模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
5.5.2 获取数据和训练模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
5.6 深度卷积神经⽹络(AlexNet) . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
5.6.1 学习特征表⽰ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
5.6.2 AlexNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
5.6.3 读取数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
5.6.4 训练 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
5.7 使⽤重复元素的⽹络(VGG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
5.7.1 VGG块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
5.7.2 VGG⽹络 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
5.7.3 训练模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
5.8 ⽹络中的⽹络(NiN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
5.8.1 NiN块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
5.8.2 NiN模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
5.8.3 训练模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
5.9 含并⾏连结的⽹络(GoogLeNet) . . . . . . . . . . . . . . . . . . . . . . . . . . 185
5.9.1 Inception 块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
5.9.2 GoogLeNet模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
5.9.3 训练模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
5.10 批量归⼀化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
5.10.1 批量归⼀化层 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
5.10.2 从零开始实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
5.10.3 简洁实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
5.11 残差⽹络(ResNet) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
5.11.1 残差块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
5.11.2 ResNet模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
5.11.3 训练模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
5.12 稠密连接⽹络(DenseNet) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
5.12.1 稠密块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
viii
5.12.2 过渡层 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
5.12.3 DenseNet模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
5.12.4 训练模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
6 循环神经⽹络 207
6.1 语⾔模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
6.1.1 语⾔模型的计算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
6.1.2 n元语法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
6.2 循环神经⽹络 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
6.2.1 不含隐藏状态的神经⽹络 . . . . . . . . . . . . . . . . . . . . . . . . . . 210
6.2.2 含隐藏状态的循环神经⽹络 . . . . . . . . . . . . . . . . . . . . . . . . . 211
6.2.3 应⽤:基于字符级循环神经⽹络的语⾔模型 . . . . . . . . . . . . . . . . 213
6.3 语⾔模型数据集(歌词) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
6.3.1 读取数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
6.3.2 建⽴字符索引 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
6.3.3 时序数据的采样 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
6.4 循环神经⽹络的从零开始实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
6.4.1 one-hot向量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
6.4.2 初始化模型参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
6.4.3 定义模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
6.4.4 定义预测函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
6.4.5 裁剪梯度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
6.4.6 困惑度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
6.4.7 定义模型训练函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
6.4.8 训练模型并创作歌词 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
6.5 循环神经⽹络的简洁实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
6.5.1 定义模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
6.5.2 训练模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
6.6 通过时间反向传播 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
6.6.1 定义模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
6.6.2 模型计算图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
6.6.3 ⽅法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
6.7 ⻔控循环单元(GRU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
6.7.1 ⻔控循环单元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
6.7.2 读取数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
ix
6.7.3 从零开始实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
6.7.4 简洁实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
6.8 ⻓短期记忆(LSTM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
6.8.1 ⻓短期记忆 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
6.8.2 读取数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
6.8.3 从零开始实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
6.8.4 定义模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
6.8.5 简洁实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
6.9 深度循环神经⽹络 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
6.10 双向循环神经⽹络 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
7 优化算法 253
7.1 优化与深度学习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
7.1.1 优化与深度学习的关系 . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
7.1.2 优化在深度学习中的挑战 . . . . . . . . . . . . . . . . . . . . . . . . . . 254
7.2 梯度下降和随机梯度下降 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
7.2.1 ⼀维梯度下降 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
7.2.2 学习率 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
7.2.3 多维梯度下降 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
7.2.4 随机梯度下降 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
7.3 小批量随机梯度下降 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
7.3.1 读取数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
7.3.2 从零开始实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
7.3.3 简洁实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
7.4 动量法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
7.4.1 梯度下降的问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
7.4.2 动量法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
7.4.3 从零开始实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
7.4.4 简洁实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
7.5 AdaGrad算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
7.5.1 算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
7.5.2 特点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
7.5.3 从零开始实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
7.5.4 简洁实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
7.6 RMSProp算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
x
7.6.1 算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
7.6.2 从零开始实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
7.6.3 简洁实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
7.7 AdaDelta算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
7.7.1 算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
7.7.2 从零开始实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
7.7.3 简洁实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
7.8 Adam算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
7.8.1 算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
7.8.2 从零开始实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
7.8.3 简洁实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
8 计算性能 297
8.1 命令式和符号式混合编程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
8.1.1 混合式编程取两者之⻓ . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
8.1.2 使⽤HybridSequential类构造模型 . . . . . . . . . . . . . . . . . . . 300
8.1.3 使⽤HybridBlock类构造模型 . . . . . . . . . . . . . . . . . . . . . . . 302
8.2 异步计算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
8.2.1 MXNet中的异步计算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
8.2.2 ⽤同步函数让前端等待计算结果 . . . . . . . . . . . . . . . . . . . . . . 306
8.2.3 使⽤异步计算提升计算性能 . . . . . . . . . . . . . . . . . . . . . . . . . 307
8.2.4 异步计算对内存的影响 . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
8.3 ⾃动并⾏计算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
8.3.1 CPU和GPU的并⾏计算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
8.3.2 计算和通信的并⾏计算 . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
8.4 多GPU计算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
8.4.1 数据并⾏ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
8.4.2 定义模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
8.4.3 多GPU之间同步数据 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
8.4.4 单个小批量上的多GPU训练 . . . . . . . . . . . . . . . . . . . . . . . . . 319
8.4.5 定义训练函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
8.4.6 多GPU训练实验 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
8.5 多GPU计算的简洁实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
8.5.1 多GPU上初始化模型参数 . . . . . . . . . . . . . . . . . . . . . . . . . . 321
8.5.2 多GPU训练模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
xi
9 计算机视觉 327
9.1 图像增⼴ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
9.1.1 常⽤的图像增⼴⽅法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
9.1.2 使⽤图像增⼴训练模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
9.2 微调 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
9.2.1 热狗识别 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
9.3 ⽬标检测和边界框 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
9.3.1 边界框 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
9.4 锚框 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
9.4.1 ⽣成多个锚框 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
9.4.2 交并⽐ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
9.4.3 标注训练集的锚框 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
9.4.4 输出预测边界框 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
9.5 多尺度⽬标检测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
9.6 ⽬标检测数据集(⽪卡丘) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
9.6.1 获取数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
9.6.2 读取数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
9.6.3 图⽰数据 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
9.7 单发多框检测(SSD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
9.7.1 定义模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
9.7.2 训练模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
9.7.3 预测⽬标 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
9.8 区域卷积神经⽹络(R-CNN)系列 . . . . . . . . . . . . . . . . . . . . . . . . . . 376
9.8.1 R-CNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
9.8.2 Fast R-CNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
9.8.3 Faster R-CNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
9.8.4 Mask R-CNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
9.9 语义分割和数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
9.9.1 图像分割和实例分割 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
9.9.2 Pascal VOC2012语义分割数据集 . . . . . . . . . . . . . . . . . . . . . . 384
9.10 全卷积⽹络(FCN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
9.10.1 转置卷积层 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
9.10.2 构造模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
9.10.3 初始化转置卷积层 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
xii
9.10.4 读取数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
9.10.5 训练模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
9.10.6 预测像素类别 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
9.11 样式迁移 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
9.11.1 ⽅法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
9.11.2 读取内容图像和样式图像 . . . . . . . . . . . . . . . . . . . . . . . . . . 401
9.11.3 预处理和后处理图像 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
9.11.4 抽取特征 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
9.11.5 定义损失函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
9.11.6 创建和初始化合成图像 . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
9.11.7 训练模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
9.12 实战Kaggle⽐赛:图像分类(CIFAR-10) . . . . . . . . . . . . . . . . . . . . . . 410
9.12.1 获取和整理数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
9.12.2 图像增⼴ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
9.12.3 读取数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
9.12.4 定义模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
9.12.5 定义训练函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
9.12.6 训练模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
9.12.7 对测试集分类并在Kaggle提交结果 . . . . . . . . . . . . . . . . . . . . . 418
9.13 实战Kaggle⽐赛:狗的品种识别(ImageNet Dogs) . . . . . . . . . . . . . . . . 419
9.13.1 获取和整理数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
9.13.2 图像增⼴ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
9.13.3 读取数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
9.13.4 定义模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
9.13.5 定义训练函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
9.13.6 训练模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
9.13.7 对测试集分类并在Kaggle提交结果 . . . . . . . . . . . . . . . . . . . . . 426
10 ⾃然语⾔处理 429
10.1 词嵌⼊(word2vec) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
10.1.1 为何不采⽤one-hot向量 . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
10.1.2 跳字模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
10.1.3 连续词袋模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
10.2 近似训练 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
10.2.1 负采样 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
xiii
10.2.2 层序softmax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
10.3 word2vec的实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
10.3.1 预处理数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
10.3.2 负采样 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
10.3.3 读取数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
10.3.4 跳字模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
10.3.5 训练模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
10.3.6 应⽤词嵌⼊模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
10.4 ⼦词嵌⼊(fastText) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
10.5 全局向量的词嵌⼊(GloVe) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
10.5.1 GloVe模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
10.5.2 从条件概率⽐值理解GloVe模型 . . . . . . . . . . . . . . . . . . . . . . . 452
10.6 求近义词和类⽐词 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454
10.6.1 使⽤预训练的词向量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454
10.6.2 应⽤预训练词向量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455
10.7 ⽂本情感分类:使⽤循环神经⽹络 . . . . . . . . . . . . . . . . . . . . . . . . . . 458
10.7.1 ⽂本情感分类数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
10.7.2 使⽤循环神经⽹络的模型 . . . . . . . . . . . . . . . . . . . . . . . . . . 461
10.8 ⽂本情感分类:使⽤卷积神经⽹络(textCNN) . . . . . . . . . . . . . . . . . . 464
10.8.1 ⼀维卷积层 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
10.8.2 时序最⼤池化层 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466
10.8.3 读取和预处理IMDb数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . 467
10.8.4 textCNN模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
10.9 编码器—解码器(seq2seq) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
10.9.1 编码器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472
10.9.2 解码器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
10.9.3 训练模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
10.10 束搜索 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
10.10.1 贪婪搜索 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475
10.10.2 穷举搜索 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
10.10.3 束搜索 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
10.11 注意⼒机制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478
10.11.1 计算背景变量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479
10.11.2 更新隐藏状态 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
xiv
10.11.3 发展 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
10.12 机器翻译 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482
10.12.1 读取和预处理数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483
10.12.2 含注意⼒机制的编码器—解码器 . . . . . . . . . . . . . . . . . . . . . . . 484
10.12.3 训练模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487
10.12.4 预测不定⻓的序列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
10.12.5 评价翻译结果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
11 附录 493
11.1 主要符号⼀览 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
11.1.1 数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
11.1.2 集合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
11.1.3 操作符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
11.1.4 函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
11.1.5 导数和梯度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
11.1.6 概率和统计 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
11.1.7 复杂度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
11.2 数学基础 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
11.2.1 线性代数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
11.2.2 微分 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
11.2.3 概率 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501
11.3 使⽤Jupyter记事本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502
11.3.1 在本地编辑和运⾏本书的代码 . . . . . . . . . . . . . . . . . . . . . . . . 503
11.3.2 ⾼级选项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507
11.4 使⽤AWS运⾏代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509
11.4.1 申请账号并登陆 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509
11.4.2 创建并运⾏EC2实例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510
11.4.3 安装CUDA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
11.4.4 获取本书的代码并安装GPU版的MXNet . . . . . . . . . . . . . . . . . . . 517
11.4.5 运⾏Jupyter记事本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518
11.4.6 关闭不使⽤的实例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
11.5 GPU购买指南 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520
11.5.1 选择GPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520
11.5.2 整机配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522
11.6 如何为本书贡献 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
xv
11.7 d2lzh包索引 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529

实例下载地址

动手学深度学习 - Aston Zhang, Mu Li, Zachary C. Lipton, Alexander J. Smola

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警