店铺公告
本店存在书、古旧书、收藏书、二手书等特殊商品,因受采购成本限制,可能高于定价销售,明码标价,介意者勿拍!
1.书籍因稀缺可能导致售价高于定价,图书实际定价参见下方详情内基本信息,请买家看清楚且明确后再拍,避免价格争议!
2.店铺无纸质均开具电子,请联系客服开具电子版
内容介绍
9787115485588 深度学习入门 基于Python的理论与实现 69.80 9787115547644 深度学习进阶 自然语言处理 99.00 9787115607515 深度学习入门2:自制框架 129.80 《深度学习入门 基于Python的理论与实现》 本书是深度学习真正意义上的入门书,深入浅出地剖析了深度学习的原理和相关技术。书中使用Python3,尽量不依赖外部库或工具,从基本的数学知识出发,带领读者从*创建一个*的深度学习网络,使读者在此过程中逐步理解深度学习。书中不仅介绍了深度学习和神经网络的概念、特征等基础知识,对误差反向传播法、卷积神经网络等也有深入讲解,此外还介绍了深度学习相关的实用技巧,自动驾驶、图像生成、强化学习等方面的应用,以及为什么加深层可以提高识别精度等疑难的问题。 本书适合深度学习初学者阅读,也可作为高校教材使用。 《深度学习进阶 自然语言处理》 《深度学习进阶:自然语言处理》是《深度学习入门:基于Python 的理论与实现》的续作,围绕自然语言处理和时序数据处理,介绍深度学习中的重要技术,包括word2vec、RNN、LSTM、GRU、seq2seq 和Attention 等。本书语言平实,结合大量示意图和Python代码,按照“提出问题”“思考解决问题的新方法”“加以改善”的流程,基于深度学习解决自然语言处理相关的各种问题,使读者在此过程中更深入地理解深度学习中的重要技术。 《深度学习入门2:自制框架》 深度学习框架中蕴藏着惊人的技术和有趣的机制,本书旨在揭开这些技术和机制的神秘面纱,帮助读者正确理解技术,体会它们的有趣之处。为此,本书会带领读者从*开始创建一个深度学习框架——DeZero。DeZero 是本书原创的框架,它用*少的代码实现了现代深度学习框架的功能。本书分60 个步骤来完成这个框架,在此过程中,读者会加深对PyTorch、TensorFlow 和Chainer 等现代深度学习框架的理解,看清深度学习框架的本质。 本书沿袭《深度学习入门:基于Python 的理论与实现》的风格,语言通俗,代码简洁,讲解详细。在自制框架的过程中,读者还能进一步巩固Python 编程和软件开发相关的知识。 本书适合对深度学习框架感兴趣的读者阅读。
目录
《深度学习入门 基于Python的理论与实现》
目录
译者序 xiii
前言 xv
第 1 章 Python入门 1
1.1 Python是什么 1
1.2 Python的安装 2
1.2.1 Python版本 2
1.2.2 使用的外部库 2
1.2.3 Anaconda发行版 3
1.3 Python解释器 4
1.3.1 算术计算 4
1.3.2 数据类型 5
1.3.3 变量 5
1.3.4 列表 6
1.3.5 字典 7
1.3.6 布尔型 7
1.3.7 if 语句 8
1.3.8 for 语句 8
1.3.9 函数 9
1.4 Python脚本文件 9
1.4.1 保存为文件 9
1.4.2 类 10
1.5 NumPy 11
1.5.1 导入NumPy 11
1.5.2 生成NumPy数组 12
1.5.3 NumPy 的算术运算 12
1.5.4 NumPy的N维数组 13
1.5.5 广播 14
1.5.6 访问元素 15
1.6 Matplotlib 16
1.6.1 绘制简单图形 16
1.6.2 pyplot 的功能 17
1.6.3 显示图像 18
1.7 小结 19
第 2 章 感知机 21
2.1 感知机是什么 21
2.2 简单逻辑电路 23
2.2.1 与门 23
2.2.2 与非门和或门 23
2.3 感知机的实现 25
2.3.1 简单的实现 25
2.3.2 导入权重和偏置 26
2.3.3 使用权重和偏置的实现 26
2.4 感知机的局限性 28
2.4.1 异或门 28
2.4.2 线性和非线性 30
2.5 多层感知机 31
2.5.1 已有门电路的组合 31
2.5.2 异或门的实现 33
2.6 从与非门到计算机 35
2.7 小结 36
第3 章 神经网络 37
3.1 从感知机到神经网络 37
3.1.1 神经网络的例子 37
3.1.2 复习感知机 38
3.1.3 *函数登场 40
3.2 *函数 42
3.2.1 sigmoid 函数 42
3.2.2 阶跃函数的实现 43
3.2.3 阶跃函数的图形 44
3.2.4 sigmoid 函数的实现 45
3.2.5 sigmoid 函数和阶跃函数的比较 46
3.2.6 非线性函数 48
3.2.7 ReLU函数 49
3.3 多维数组的运算 50
3.3.1 多维数组 50
3.3.2 矩阵乘法 51
3.3.3 神经网络的内积 55
3.4 3 层神经网络的实现 56
3.4.1 符号确认 57
3.4.2 各层间信号传递的实现 58
3.4.3 代码实现小结 62
3.5 输出层的设计 63
3.5.1 恒等函数和softmax 函数 64
3.5.2 实现softmax 函数时的注意事项 66
3.5.3 softmax 函数的特征 67
3.5.4 输出层的神经元数量 68
3.6 手写数字识别 69
3.6.1 MNIST数据集 70
3.6.2 神经网络的推理处理 73
3.6.3 批处理 75
3.7 小结 79
第4 章 神经网络的学习 81
4.1 从数据中学习 81
4.1.1 数据驱动 82
4.1.2 训练数据和测试数据 84
4.2 损失函数 85
4.2.1 均方误差 85
4.2.2 交叉熵误差 87
4.2.3 mini-batch 学习 88
4.2.4 mini-batch 版交叉熵误差的实现 91
4.2.5 为何要设定损失函数 92
4.3 数值微分 94
4.3.1 导数 94
4.3.2 数值微分的例子 96
4.3.3 偏导数 98
4.4 梯度 100
4.4.1 梯度法 102
4.4.2 神经网络的梯度 106
4.5 学习算法的实现 109
4.5.1 2 层神经网络的类 110
4.5.2 mini-batch 的实现 114
4.5.3 基于测试数据的评价 116
4.6 小结 118
第5 章 误差反向传播法 121
5.1 计算图 121
5.1.1 用计算图求解 122
5.1.2 局部计算 124
5.1.3 为何用计算图解题 125
5.2 链式法则 126
5.2.1 计算图的反向传播 127
5.2.2 什么是链式法则 127
5.2.3 链式法则和计算图 129
5.3 反向传播 130
5.3.1 加法节点的反向传播 130
5.3.2 乘法节点的反向传播 132
5.3.3 苹果的例子 133
5.4 简单层的实现 135
5.4.1 乘法层的实现 135
5.4.2 加法层的实现 137
5.5 *函数层的实现 139
5.5.1 ReLU层 139
5.5.2 Sigmoid 层 141
5.6 Affine/Softmax层的实现 144
5.6.1 Affine层 144
5.6.2 批版本的Affine层 148
5.6.3 Softmax-with-Loss 层 150
5.7 误差反向传播法的实现 154
5.7.1 神经网络学习的全貌图 154
5.7.2 对应误差反向传播法的神经网络的实现 155
5.7.3 误差反向传播法的梯度确认 158
5.7.4 使用误差反向传播法的学习 159
5.8 小结 161
第6 章 与学习相关的技巧 163
6.1 参数的更新 163
6.1.1 探险家的故事 164
6.1.2 SGD 164
6.1.3 SGD的缺点 166
6.1.4 Momentum 168
6.1.5 AdaGrad 170
6.1.6 Adam 172
6.1.7 使用哪种更新方法呢 174
6.1.8 基于MNIST数据集的更新方法的比较 175
6.2 权重的初始值 176
6.2.1 可以将权重初始值设为0 吗 176
6.2.2 隐藏层的*值的分布 177
6.2.3 ReLU的权重初始值 181
6.2.4 基于MNIST数据集的权重初始值的比较 183
6.3 Batch Normalization 184
6.3.1 Batch Normalization 的算法 184
6.3.2 Batch Normalization 的评估 186
6.4 正则化 188
6.4.1 过拟合 189
6.4.2 权值衰减 191
6.4.3 Dropout 192
6.5 *参数的验证 195
6.5.1 验证数据 195
6.5.2 *参数的*化 196
6.5.3 *参数*化的实现 198
6.6 小结 200
第7 章 卷积神经网络 201
7.1 整体结构 201
7.2 卷积层 202
7.2.1 全连接层存在的问题 203
7.2.2 卷积运算 203
7.2.3 填充 206
7.2.4 步幅 207
7.2.5 3 维数据的卷积运算 209
7.2.6 结合方块思考 211
7.2.7 批处理 213
7.3 池化层 214
7.4 卷积层和池化层的实现 216
7.4.1 4 维数组 216
7.4.2 基于im2col 的展开 217
7.4.3 卷积层的实现 219
7.4.4 池化层的实现 222
7.5 CNN的实现 224
7.6 CNN的可视化 228
7.6.1 第 1 层权重的可视化 228
7.6.2 基于分层结构的信息提取 230
7.7 具有代表性的CNN 231
7.7.1 LeNet 231
7.7.2 AlexNet 232
7.8 小结 233
第8 章 深度学习 235
8.1 加深网络 235
8.1.1 向更深的网络出发 235
8.1.2 进一步提高识别精度 238
8.1.3 加深层的动机 240
8.2 深度学习的小历史 242
8.2.1 ImageNet 243
8.2.2 VGG 244
8.2.3 GoogLeNet 245
8.2.4 ResNet 246
8.3 深度学习的高速化 248
8.3.1 需要努力解决的问题 248
8.3.2 基于GPU的高速化 249
8.3.3 分布式学习 250
8.3.4 运算精度的位数缩减 252
8.4 深度学习的应用案例 253
8.4.1 物体检测 253
8.4.2 图像分割 255
8.4.3 图像标题的生成 256
8.5 深度学习的未来 258
8.5.1 图像风格变换 258
8.5.2 图像的生成 259
8.5.3 自动驾驶 261
8.5.4 Deep Q-Network(强化学习) 262
8.6 小结 264
附录A Softmax-with-Loss 层的计算图 267
A.1 正向传播 268
A.2 反向传播 270
A.3 小结 277
参考文献 279
《深度学习进阶 自然语言处理》
译者序 xi
前言 xiii
第 1 章 神经网络的复习 1
1.1 数学和Python的复习 1
1.1.1 向量和矩阵 1
1.1.2 矩阵的对应元素的运算 4
1.1.3 广播 4
1.1.4 向量内积和矩阵乘积 6
1.1.5 矩阵的形状检查 7
1.2 神经网络的推理 8
1.2.1 神经网络的推理的全貌图 8
1.2.2 层的类化及正向传播的实现 14
1.3 神经网络的学习 18
1.3.1 损失函数 18
1.3.2 导数和梯度 21
1.3.3 链式法则 23
1.3.4 计算图 24
1.3.5 梯度的推导和反向传播的实现 35
1.3.6 权重的更新 39
1.4 使用神经网络解决问题 41
1.4.1 螺旋状数据集 41
1.4.2 神经网络的实现 43
1.4.3 学习用的代码 45
1.4.4 Trainer 类 49
1.5 计算的高速化 50
1.5.1 位精度 51
1.5.2 GPU(CuPy) 52
1.6 小结 54
第 2 章 自然语言和单词的分布式表示 57
2.1 什么是自然语言处理 57
2.2 同义词词典 59
2.2.1 WordNet 61
2.2.2 同义词词典的问题 61
2.3 基于计数的方法 63
2.3.1 基于Python的语料库的预处理 63
2.3.2 单词的分布式表示 66
2.3.3 分布式假设 67
2.3.4 共现矩阵 68
2.3.5 向量间的相似度 72
2.3.6 相似单词的排序 74
2.4 基于计数的方法的改进 77
2.4.1 点互信息 77
2.4.2 降维 81
2.4.3 基于SVD的降维 84
2.4.4 PTB数据集 86
2.4.5 基于PTB数据集的评价 88
2.5 小结 91
第3 章 word2vec 93
3.1 基于推理的方法和神经网络 93
3.1.1 基于计数的方法的问题 94
3.1.2 基于推理的方法的概要 95
3.1.3 神经网络中单词的处理方法 96
3.2 简单的word2vec 101
3.2.1 CBOW模型的推理 101
3.2.2 CBOW模型的学习 106
3.2.3 word2vec的权重和分布式表示 108
3.3 学习数据的准备 110
3.2.1 上下文和目标词 110
3.3.2 转化为one-hot 表示 113
3.4 CBOW模型的实现 114
3.5 word2vec的补充说明 120
3.5.1 CBOW模型和概率 121
3.5.2 skip-gram 模型 122
3.5.3 基于计数与基于推理 125
3.6 小结 127
第4 章 word2vec的高速化 129
4.1 word2vec的改进① 129
4.1.1 Embedding层 132
4.1.2 Embedding层的实现 133
4.2 word2vec的改进② 137
4.2.1 中间层之后的计算问题 138
4.2.2 从多分类到二分类 139
4.2.3 Sigmoid 函数和交叉熵误差 141
4.2.4 多分类到二分类的实现 144
4.2.5 负采样 148
4.2.6 负采样的采样方法 151
4.2.7 负采样的实现 154
4.3 改进版word2vec的学习 156
4.3.1 CBOW模型的实现 156
4.3.2 CBOW模型的学习代码 159
4.3.3 CBOW模型的评价 161
4.4 wor2vec相关的其他话题 165
4.4.1 word2vec的应用例 166
4.4.2 单词向量的评价方法 168
4.5 小结 170
第5 章 RNN 173
5.1 概率和语言模型 173
5.1.1 概率视角下的word2vec 174
5.1.2 语言模型 176
5.1.3 将CBOW模型用作语言模型? 178
5.2 RNN 181
5.2.1 循环的神经网络 181
5.2.2 展开循环 183
5.2.3 Backpropagation Through Time 185
5.2.4 Truncated BPTT 186
5.2.5 Truncated BPTT的mini-batch 学习 190
5.3 RNN的实现 192
5.3.1 RNN层的实现 193
5.3.2 Time RNN层的实现 197
5.4 处理时序数据的层的实现 202
5.4.1 RNNLM的全貌图 202
5.4.2 Time层的实现 205
5.5 RNNLM的学习和评价 207
5.5.1 RNNLM的实现 207
5.5.2 语言模型的评价 211
5.5.3 RNNLM的学习代码 213
5.5.4 RNNLM的Trainer类 216
5.6 小结 217
第6 章 Gated RNN 219
6.1 RNN的问题 220
6.1.1 RNN的复习 220
6.1.2 梯度消失和梯度爆炸 221
6.1.3 梯度消失和梯度爆炸的原因 223
6.1.4 梯度爆炸的对策 228
6.2 梯度消失和LSTM 229
6.2.1 LSTM的接口 230
6.2.2 LSTM层的结构 231
6.2.3 输出门 234
6.2.4 遗忘门 236
6.2.5 新的记忆单元 237
6.2.6 输入门 238
6.2.7 LSTM的梯度的流动 239
6.3 LSTM的实现 240
6.4 使用LSTM的语言模型 248
6.5 进一步改进RNNLM 255
6.5.1 LSTM层的多层化 256
6.5.2 基于Dropout抑制过拟合 257
6.5.3 权重共享 262
6.5.4 更好的RNNLM的实现 263
6.5.5 前沿研究 269
6.6 小结 270
第7 章 基于RNN生成文本 273
7.1 使用语言模型生成文本 274
7.1.1 使用RNN生成文本的步骤 274
7.1.2 文本生成的实现 278
7.1.3 更好的文本生成 281
7.2 seq2seq 模型 283
7.2.1 seq2seq 的原理 283
7.2.2 时序数据转换的简单尝试 287
7.2.3 可变长度的时序数据 288
7.2.4 加法数据集 290
7.3 seq2seq 的实现 291
7.3.1 Encoder类 291
7.3.2 Decoder类 295
7.3.3 Seq2seq 类 300
7.3.4 seq2seq 的评价 301
7.4 seq2seq 的改进 305
7.4.1 反转输入数据(Reverse) 305
7.4.2 偷窥(Peeky) 308
7.5 seq2seq 的应用 313
7.5.1 聊天机器人 314
7.5.2 算法学习 315
7.5.3 自动图像描述 316
7.6 小结 318
第8 章 Attention 321
8.1 Attention 的结构 321
8.1.1 seq2seq 存在的问题 322
8.1.2 编码器的改进 323
8.1.3 解码器的改进① 325
8.1.4 解码器的改进② 333
8.1.5 解码器的改进③ 339
8.2 带Attention 的seq2seq 的实现 344
8.2.1 编码器的实现 344
8.2.2 解码器的实现 345
8.2.3 seq2seq 的实现 347
8.3 Attention 的评价 347
8.3.1 日期格式转换问题 348
8.3.2 带Attention 的seq2seq 的学习 349
8.3.3 Attention 的可视化 353
8.4 关于Attention 的其他话题 356
8.4.1 双向RNN 356
8.4.2 Attention 层的使用方法 358
8.4.3 seq2seq 的深层化和skip connection 360
8.5 Attention 的应用 363
8.5.1 Google Neural Machine Translation(GNMT) 363
8.5.2 Transformer 365
8.5.3 Neural Turing Machine(NTM) 369
8.6 小结 373
附录A sigmoid 函数和tanh 函数的导数 375
A.1 sigmoid 函数 375
A.2 tanh 函数 378
A.3 小结 380
附录B 运行WordNet 381
B.1 NLTK的安装 381
B.2 使用WordNet获得同义词 382
B.3 WordNet和单词网络 384
B.4 基于WordNet的语义相似度 385
附录C GRU 387
C.1 GRU的接口 387
C.2 GRU的计算图 388
后记 391
参考文献 395
《深度学习入门2:自制框架》
前言 xvii
第 1阶段 自动微分 1
步骤1 作为“箱子”的变量 3
1.1 什么是变量 3
1.2 实现Variable 类 4
1.3 (补充)NumPy的多维数组 6
步骤2 创建变量的函数 8
2.1 什么是函数 8
2.2 Function类的实现 9
2.3 使用Function 类 10
步骤3 函数的连续调用 13
3.1 Exp函数的实现 13
3.2 函数的连续调用 14
步骤4 数值微分 16
4.1 什么是导数 16
4.2 数值微分的实现 17
4.3 复合函数的导数 20
4.4 数值微分存在的问题 21
步骤5 反向传播的理论知识 22
5.1 链式法则 22
5.2 反向传播的推导 23
5.3 用计算图表示 25
步骤6 手动进行反向传播 27
6.1 Variable 类的功能扩展 27
6.2 Function类的功能扩展 28
6.3 Square类和Exp类的功能扩展 28
6.4 反向传播的实现 29
步骤7 反向传播的自动化 32
7.1 为反向传播的自动化创造条件 33
7.2 尝试反向传播 36
7.3 增加backward方法 38
步骤8 从递归到循环 40
8.1 现在的Variable 类 40
8.2 使用循环实现 41
8.3 代码验证 42
步骤9 让函数更易用 43
9.1 作为Python函数使用 43
9.2 简化backward方法 45
9.3 只支持ndarray 46
步骤10 测试 50
10.1 Python的单元测试 50
10.2 square函数反向传播的测试 52
10.3 通过梯度检验来自动测试 53
10.4 测试小结 54
第 2阶段 用自然的代码表达 59
步骤11 可变长参数(正向传播篇) 61
11.1 修改Function 类 62
11.2 Add类的实现 64
步骤12 可变长参数(改进篇) 65
12.1 第 1 项改进:使函数更容易使用 65
12.2 第 2 项改进:使函数更容易实现 67
12.3 add函数的实现 69
步骤13 可变长参数(反向传播篇) 70
13.1 支持可变长参数的Add类的反向传播 70
13.2 修改Variable 类 71
13.3 Square类的实现 73
步骤14 重复使用同一个变量 75
14.1 问题的原因 76
14.2 解决方案 77
14.3 重置导数 79
步骤15 复杂的计算图(理论篇) 81
15.1 反向传播的正确顺序 82
15.2 当前的DeZero 84
15.3 函数的优先级 87
步骤16 复杂的计算图(实现篇) 88
16.1 增加“辈分”变量 88
16.2 按照“辈分”顺序取出元素 90
16.3 Variable 类的backward 92
16.4 代码验证 93
步骤17 内存管理和循环引用 97
17.1 内存管理 97
17.2 引用计数方式的内存管理 98
17.3 循环引用 100
17.4 weakref模块 102
17.5 代码验证 104
步骤18 减少内存使用量的模式 106
18.1 不保留不*要的导数 106
18.2 回顾Function 类 109
18.3 使用Config类进行切换 110
18.4 模式的切换 111
18.5 使用with 语句切换 112
步骤19 让变量更易用 116
19.1 命名变量 116
19.2 实例变量ndarray 117
19.3 len函数和print 函数 119
步骤20 运算符重载(1) 122
20.1 Mul类的实现 122
20.2 运算符重载 125
步骤21 运算符重载(2) 128
21.1 与ndarray 一起使用 128
21.2 与float 和int 一起使用 130
21.3 问题1:左项为float 或int 的情况 131
21.4 问题2:左项为ndarray 实例的情况 133
步骤22 运算符重载(3) 134
22.1 负数 135
22.2 减法 136
22.3 除法 138
22.4 幂运算 139
步骤23 打包 141
23.1 文件结构 142
23.2 将代码移到核心类 142
23.3 运算符重载 144
23.4 实际的_ _init_ _.py 文件 146
23.5 导入dezero 147
步骤24 复杂函数的求导 149
24.1 Sphere函数 150
24.2 matyas函数 151
24.3 Goldstein Price 函数 152
第3阶段 实现高阶导数 161
步骤25 计算图的可视化(1) 163
25.1 安装Graphviz 163
25.2 使用DOT语言描述图形 165
25.3 指定节点属性 165
25.4 连接节点 167
步骤26 计算图的可视化(2) 169
26.1 可视化代码的使用示例 169
26.2 从计算图转换为DOT语言 171
26.3 从DOT语言转换为图像 174
26.4 代码验证 176
步骤27 泰勒展开的导数 178
27.1 sin函数的实现 178
27.2 泰勒展开的理论知识 179
27.3 泰勒展开的实现 180
27.4 计算图的可视化 182
步骤28 函数优化 184
28.1 Rosenbrock函数 184
28.2 求导 185
28.3 梯度下降法的实现 186
步骤29 使用牛顿法进行优化(手动计算) 190
29.1 使用牛顿法进行优化的理论知识 191
29.2 使用牛顿法实现优化 195
步骤30 高阶导数(准备篇) 197
30.1 确认工作①:Variable 实例变量 197
30.2 确认工作②:Function 类 199
30.3 确认工作③:Variable 类的反向传播 201
步骤31 高阶导数(理论篇) 204
31.1 在反向传播时进行的计算 204
31.2 创建反向传播的计算图的方法 206
步骤32 高阶导数(实现篇) 209
32.1 新的DeZero 209
32.2 函数类的反向传播 210
32.3 实现更有效的反向传播(增加模式控制代码) 211
32.4 修改_ _init_ _.py 213
步骤33 使用牛顿法进行优化(自动计算) 215
33.1 求二阶导数 215
33.2 使用牛顿法进行优化 217
步骤34 sin函数的高阶导数 219
34.1 sin函数的实现 219
34.2 cos函数的实现 220
34.3 sin函数的高阶导数 221
步骤35 高阶导数的计算图 225
35.1 tanh函数的导数 226
35.2 tanh函数的实现 226
35.3 高阶导数的计算图可视化 227
步骤36 DeZero的其他用途 234
36.1 double backprop 的用途 234
36.2 深度学习研究中的应用示例 236
第4阶段 创建神经网络 243
步骤37 处理张量 245
37.1 对各元素进行计算 245
37.2 使用张量时的反向传播 247
37.3 使用张量时的反向传播(补充内容) 249
步骤38 改变形状的函数 254
38.1 reshape函数的实现 254
38.2 从Variable 对象调用reshape 258
38.3 矩阵的转置 259
38.4 实际的transpose 函数(补充内容) 262
步骤39 求和的函数 264
39.1 sum函数的反向传播 264
39.2 sum函数的实现 266
39.3 axis 和keepdims 268
步骤40 进行广播的函数 272
40.1 broadcast_to 函数和sum_to 函数 272
40.2 DeZero的broadcast_to 函数和sum_to 函数 275
40.3 支持广播 277
步骤41 矩阵的乘积 280
41.1 向量的内积和矩阵的乘积 280
41.2 检查矩阵的形状 282
41.3 矩阵乘积的反向传播 282
步骤42 线性回归 288
42.1 玩具数据集 288
42.2 线性回归的理论知识 289
42.3 线性回归的实现 291
42.4 DeZero的mean_squared_error函数(补充内容) 295
步骤43 神经网络 298
43.1 DeZero中的linear 函数 298
43.2 非线性数据集 301
43.3 *函数和神经网络 302
43.4 神经网络的实现 303
步骤44 汇总参数的层 307
44.1 Parameter类的实现 307
44.2 Layer类的实现 309
44.3 Linear类的实现 312
44.4 使用Layer实现神经网络 314
步骤45 汇总层的层 316
45.1 扩展Layer类 316
45.2 Model类 319
45.3 使用Model来解决问题 321
45.4 MLP类 323
步骤46 通过Optimizer更新参数 325
46.1 Optimizer类 325
46.2 SGD类的实现 326
46.3 使用SGD类来解决问题 327
46.4 SGD以外的优化方法 328
步骤47 softmax函数和交叉熵误差 331
47.1 用于切片操作的函数 331
47.2 softmax函数 334
47.3 交叉熵误差 337
步骤48 多分类 340
48.1 螺旋数据集 340
48.2 用于训练的代码 341
步骤49 Dataset类和预处理 346
49.1 Dataset类的实现 346
49.2 大型数据集的情况 348
49.3 数据的连接 349
49.4 用于训练的代码 350
49.5 数据集的预处理 351
步骤50 用于取出小批量数据的DataLoader 354
50.1 什么是迭代器 354
50.2 使用DataLoader 358
50.3 accuracy函数的实现 359
50.4 螺旋数据集的训练代码 360
步骤51 MINST的训练 363
51.1 MNIST数据集 364
51.2 训练MNIST 366
51.3 改进模型 368
第5阶段 DeZero*挑战 377
步骤52 支持GPU 379
52.1 CuPy的安装和使用方法 379
52.2 cuda模块 382
52.3 向Variable / Layer / DataLoader 类添加代码 383
52.4 函数的相应修改 386
52.5 在GPU上训练MNIST 388
步骤53 模型的保存和加载 391
53.1 NumPy的save 函数和load 函数 391
53.2 Layer类参数的扁平化 394
53.3 Layer类的save 函数和load 函数 395
步骤54 Dropout和测试模式 398
54.1 什么是Dropout 398
54.2 Inverted Dropout 401
54.3 增加测试模式 401
54.4 Dropout的实现 402
步骤55 CNN的机制(1) 404
55.1 CNN的网络结构 404
55.2 卷积运算 405
55.3 填充 407
55.4 步幅 408
55.5 输出大小的计算方法 409
步骤56 CNN的机制(2) 411
56.1 三阶张量 411
56.2 结合方块进行思考 412
56.3 小批量处理 414
56.4 池化层 415
步骤57 conv2d函数和pooling函数 418
57.1 使用im2col 展开 418
57.2 conv2d函数的实现 420
57.3 Conv2d层的实现 425
57.4 pooling 函数的实现 426
步骤58 具有代表性的CNN(VGG16) 429
58.1 VGG16的实现 429
58.2 已训练的权重数据 431
58.3 使用已训练的VGG16 435
步骤59 使用RNN处理时间序列数据 438
59.1 RNN层的实现 438
59.2 RNN模型的实现 442
59.3 切断连接的方法 445
59.4 正弦波的预测 446
步骤60 LSTM与数据加载器 451
60.1 用于时间序列数据的数据加载器 451
60.2 LSTM层的实现 453
附录A in place 运算(步骤14的补充内容) 463
A.1 问题确认 463
A.2 关于复制和覆盖 464
A.3 DeZero的反向传播 465
附录B 实现get_item函数(步骤47的补充内容) 466
附录C 在Google Colaboratory上运行 469
后 记 473
参考文献 477
作者介绍
《深度学习入门 基于Python的理论与实现》 斋藤康毅(作者) 东京工业大学毕业,并完成东京大学研究生院课程。现从事计算机视觉与机器学习相关的研究和开发工作。是Introducing Python、Python in Practice、The Elements of Computing Systems、Building Machine Learning Systems with Python的日文版译者。 陆宇杰(译者) 众安科技NLP算法工程师。主要研究方向为自然语言处理及其应用,对图像识别、机器学习、深度学习等领域有密切关注。Python爱好者。 《深度学习进阶 自然语言处理》 斋藤康毅(作者) 1984年生于日本长崎县,东京工业大学毕业,并完成东京大学研究生院课程。目前在某企业从事人工智能相关的研究和开发工作。著有《深度学习入门:基于Python的理论与实现》,同时也是Introducing Python、Python in Practice、The Elements of Computing Systems、Building Machine Learning Systems with Python的日文版译者。 陆宇杰(译者) 长期从事自然语言处理、知识图谱、深度学习相关的研究和开发工作。译有《深度学习入门:基于Python的理论与实现》。 《深度学习入门2:自制框架》 斋藤康毅(作者) 1984年生于日本长崎县,东京工业大学毕业,并完成东京大学研究生院课程。目前在某企业从事人工智能相关的研究和开发工作。著有《深度学习入门:基于Python的理论与实现》,同时也是Introducing Python、Python in Practice、The Elements of Computing Systems、Building Machine Learning Systems with Python的日文版译者。 郑明智(译者) 智慧医疗工程师。主要研究方向为医疗与前沿ICT技术的结合及其应用,密切关注人工智能、量子计算等领域。译有《深度学习基础与实践》《详解深度学习》《白话机器学习的数学》等书。