本书共分8章,内容包括深度学习基础、深度学习框架PyTorch的安装、PyTorch基础、线性回归和逻辑回归、全连接神经网络、卷积神经网络、循环神经网络及生成式对抗网络。本书首先从深度学习基础知识入手,引领读者动手搭建深度学习框架PyTorch,然后在PyTorch框架下实现深度学习中常用的网络模型。通过本书,读者可对深度学习有一个清晰的认识。本书中的程序均可在Windows系统中运行,不受是否具备GPU的限制。本书提供电子课件、源代码,读者可登录“华信教育资源网”(www.hxedu.com.cn)免费下载。书中每章都配有习题和实验,最后还附有参考答案。本书可作为高等学校本科数据科学与大数据、人工智能、机器人工程等专业深度学习相关课程的教材,也适合广大对深度学习有兴趣的读者自学使用。
前 言
深度学习课程选择什么样的教材?这是近年来困扰任课教师的一个难题。作为高校数据科学与大数据专业的一线教师,我希望得到这样一本教材:
? 既有理论知识,又有丰富的实例,能让学生动手实践。
教材能够用简单易懂的语言告诉学生什么是深度学习,让学生理解深度学习中神经元、神经网络、激励函数、损失函数等基本概念,了解深度学习与人工智能、机器学习的关系。
? 介绍一种深度学习框架。
学生在这种框架下能够动手实现如卷积神经网络、循环神经网络、生成式对抗网络等常见的网络模型。
? 不涉及太多、太难的数学知识。
教材能够把深度学习的相关原理讲清楚,但不要变成一本“数学书”,可适应应用型本科学校的教学内容。
? 能满足实验课需求。
在教材中能够找到合适的、能布置给学生的实验内容。此外,在学校机房只有Windows系统、没有GPU的环境下,只需进行简单的软件安装,就能完成深度学习的实验。
? 具有完整的教学资源,包括电子课件、习题、实验、源代码、习题解答。
教师可以根据电子课件准备上课内容,可以从习题、实验中方便地获得课后作业、期末考试的素材,不用一切从零开始。
以上要求本书全都满足。本书共分8章,内容包括深度学习基础、深度学习框架PyTorch的安装、PyTorch基础、线性回归和逻辑回归、全连接神经网络、卷积神经网络、循环神经网络及生成式对抗网络。
通过本书,读者可对深度学习有一个清晰的认识,能够在PyTorch框架下实现常见的网络模型。本书全部代码分别在有GPU的服务器上和没有GPU的普通计算机上调试通过,其运行环境为Windows 10操作系统,软件版本为Python 3.5.3、PyTorch 0.4。本书提供电子课件、源代码,读者可登录“华信教育资源网”(www.hxedu.com.cn)免费下载。
本书能够快速成稿,离不开我的两名学生曲荣峰和肖玉林的协助,他们帮助我完成了书中图、公式、程序的校验工作,在此表示感谢!特别感谢电子工业出版社的杨寰编辑、刘瑀编辑对本书的出版提供的大力支持。
由于时间仓促和水平有限,书中难免有不妥之处,欢迎广大读者提出宝贵意见。作者联系邮箱:wuwei529@163.com。
编 者
目 录
第1章 深度学习基础 1
1.1 人工智能、机器学习与深度学习 1
1.1.1 人工智能简介 1
1.1.2 机器学习简介 2
1.1.3 深度学习简介 3
1.2 深度学习的三大核心要素 4
1.3 神经元与深度神经网络 7
1.4 神经网络中常用的激励函数 9
1.5 深度学习的优势 13
1.6 常用的深度学习框架 15
本章小结 16
习题 16
第2章 深度学习框架PyTorch的安装 19
2.1 PyTorch介绍 19
2.2 Windows系统中PyTorch的配置 20
2.2.1 安装Python 20
2.2.2 PyTorch环境搭建 21
2.3 Linux系统中PyTorch的配置 22
2.3.1 安装虚拟机 23
2.3.2 Python环境配置 25
2.3.3 PyTorch环境搭建 25
2.4 PyTorch开发工具 26
2.4.1 IDLE 26
2.4.2 PyCharm 27
本章小结 34
习题 34
实验 35
第3章 PyTorch基础 36
3.1 Tensor的定义 36
3.2 Tensor的创建 37
3.3 Tensor的形状调整 39
3.4 Tensor的简单运算 40
3.5 Tensor的比较 41
3.6 Tensor的数理统计 42
3.7 Tensor与NumPy的互相转换 43
3.8 Tensor的降维和增维 44
3.9 Tensor的裁剪 46
3.10 Tensor的索引 46
3.11 把Tensor移到GPU上 48
本章小结 49
习题 49
实验 50
第4章 线性回归和逻辑回归 54
4.1 回归 54
4.2 线性回归 55
4.3 一元线性回归的代码实现 58
4.4 梯度及梯度下降法 62
4.4.1 梯度 62
4.4.2 梯度下降法 62
4.5 多元线性回归的代码实现 63
4.6 逻辑回归 65
4.6.1 逻辑回归 65
4.6.2 逻辑回归中的损失函数 66
4.6.3 逻辑回归的代码实现 66
本章小结 69
习题 69
实验 70
第5章 全连接神经网络 72
5.1 全连接神经网络概述 72
5.2 多分类问题 73
5.3 Softmax函数与交叉熵 74
5.4 反向传播算法 76
5.4.1 链式求导法则 76
5.4.2 反向传播算法实例 77
5.4.3 Sigmoid函数实例 77
5.5 计算机视觉工具包torchvision 78
5.6 全连接神经网络实现多分类 80
5.6.1 定义全连接神经网络 80
5.6.2 全连接神经网络识别MNIST手写数字 81
本章小结 85
习题 85
实验 87
第6章 卷积神经网络 88
6.1 前馈神经网络 88
6.2 卷积神经网络的原理 89
6.2.1 卷积层 91
6.2.2 池化层 94
6.3 卷积神经网络的代码实现 96
6.4 LeNet-5模型 99
6.4.1 LeNet-5模型的架构 99
6.4.2 CIFAR 10数据集 101
6.4.3 LeNet-5模型的代码实现 101
6.5 VGGNet模型 106
6.5.1 VGGNet模型简介 106
6.5.2 VGGNet模型的代码实现 107
6.6 ResNet模型 112
6.6.1 ResNet模型简介 112
6.6.2 ResNet模型残差学习单元的代码实现 113
本章小结 114
习题 114
实验 115
第7章 循环神经网络 119
7.1 循环神经网络概述 119
7.2 循环神经网络的原理 120
7.3 长短时记忆神经网络 122
7.3.1 长短时记忆神经网络的原理 122
7.3.2 长短时记忆神经网络实例1 125
7.3.3 长短时记忆神经网络实例2 129
本章小结 136
习题 136
实验 137
第8章 生成式对抗网络 138
8.1 生成式对抗网络概述 138
8.1.1 生成式对抗网络的原理 138
8.1.2 生成式对抗网络的代码实现 142
8.2 条件生成式对抗网络 150
8.3 最小二乘生成式对抗网络 151
本章小结 151
习题 151
实验 152
附录A 部分习题与实验参考答案 153
A.1 第1章习题与实验参考答案 153
A.2 第2章习题与实验参考答案 155
A.2.1 习题参考答案 155
A.2.2 实验参考答案 156
A.3 第3章习题与实验参考答案 156
A.3.1 习题参考答案 156
A.3.2 实验参考答案 156
A.4 第4章习题与实验参考答案 166
A.4.1 习题参考答案 166
A.4.2 实验参考答案 167
A.5 第5章习题与实验参考答案 175
A.5.1 习题参考答案 175
A.5.2 实验参考答案 175
A.6 第6章习题与实验参考答案 178
A.6.1 习题参考答案 178
A.6.2 实验参考答案 179
A.7 第7章习题与实验参考答案 192
A.7.1 习题参考答案 192
A.7.2 实验参考答案 193
A.8 第8章习题与实验参考答案 196
A.8.1 习题参考答案 196
A.8.2 实验参考答案 197
参考文献 212