- ISBN:9787301316290
- 装帧:70g胶版纸
- 册数:暂无
- 重量:暂无
- 开本:16开
- 页数:248
- 出版时间:2020-10-01
- 条形码:9787301316290 ; 978-7-301-31629-0
本书特色
精通神经网络就这三步:1.零基础入门神经网络——2.进阶掌握神经网络——3.实战搭建属于自己的神经网络
内容简介
本书从神经网络的基础知识讲起,逐步深入到Python进阶实战,通过对各种实用的第三方库进行详细讲解与实战运用,让读者不但能够更加深入地了解神经网络,而且能够简单高效地搭建自己的神经网络,即使没有专业背景知识也能轻松入门神经网络。 本书分为 11章,涵盖的主要内容有神经网络概述,神经网络基础知识,计算机程序的特点,神经网络优化算法,搭 建Python环境,Python基础知识,深度学习框架PyTorch基础知识,NumPy简介与使用,OpenCV简介与使用,OS遍历文件夹,Python中Matplotlib可视化绘图,Lenet-5、AlexNet、VGG16网络模型,回归问题和分类问题,猫狗识别程序开发,验证码识别程序开发,过拟合问题与解决方法,梯度消失与爆炸,加速神经网络训练的方法,人工智能的未来发展趋势等。 本书内容通俗易懂,案例丰富,实用性强,特别适合神经网络的零基础入门读者阅读,也适合 Python 程序员、PyTorch爱好者等阅读。
目录
第1章 神经网络概述 1
1.1 神经网络简介 2
1.1.1 神经网络的定义 2
1.1.2 神经网络可解决的问题 3
1.2 神经网络的灵感来源 3
1.2.1 对人类认知过程的传统认知 3
1.2.2 对人类认知过程的现代认知 4
1.2.3 神经元连接的灵感 4
1.3 为什么要学习神经网络 4
1.3.1 神经网络的发展 4
1.3.2 学习神经网络有什么用 5
1.4 怎样学习神经网络 6
1.4.1 选择一门编程语言 6
1.4.2 对算法的理解 8
1.4.3 写博客 8
1.5 小结 9
第2章 神经网络基础知识 10
2.1 感知器模型 11
2.1.1 神经元细胞的本质 11
2.1.2 感知器模型的构建 11
2.2 训练感知器 13
2.2.1 计算误差 13
2.2.2 误差反向传播 13
2.2.3 训练示例 14
2.3 激活函数 15
2.3.1 激活函数的定义 16
2.3.2 Sigmoid函数 16
2.3.3 Tanh函数 17
2.3.4 ReLU函数 18
2.4 损失函数 20
2.4.1 损失函数的定义及作用 20
2.4.2 绝对值损失函数 20
2.4.3 均方差损失函数 21
2.4.4 交叉熵损失函数 23
2.5 单层神经网络 23
2.5.1 单层神经网络的结构 23
2.5.2 单层神经网络的参数 25
2.5.3 单层神经网络的前向传播过程 25
2.6 训练单层神经网络 26
2.6.1 梯度下降算法 26
2.6.2 反向传播算法 29
2.6.3 理解反向传播 31
2.7 多层神经网络 32
2.7.1 多层神经网络的结构 33
2.7.2 参数向量化 33
2.8 卷积神经网络 36
2.8.1 卷积神经网络简介 36
2.8.2 卷积核 37
2.8.3 卷积操作 38
2.8.4 池化操作 41
2.8.5 卷积层 42
2.8.6 池化层 43
2.8.7 全连接层 44
2.9 小结 44
第3章 实战前的预备知识 46
3.1 计算机程序 47
3.1.1 计算机程序简介 47
3.1.2 计算机程序的执行过程 48
3.1.3 计算机程序的开发流程 49
3.1.4 计算机程序的特点 50
3.2 加速训练 51
3.2.1 CPU与GPU 51
3.2.2 归一化 52
3.2.3 其他学习算法 53
3.2.4 Mini-Batch 54
3.3 构建样本集 55
3.3.1 Tensor类型 55
3.3.2 训练集 56
3.3.3 测试集 57
3.3.4 交叉验证集 58
3.4 小结 59
第4章 Python入门与实战 60
4.1 Python简介 61
4.1.1 什么是Python 61
4.1.2 Python的特点 61
4.1.3 为什么要用Python搭建神经网络 62
4.2 搭建Python环境 63
4.2.1 安装Python 3.7(Anaconda) 63
4.2.2 安装CUDA 10.0 66
4.2.3 安装PyCharm 68
4.2.4 PyCharm新建项目 70
4.2.5 PyCharm的一些基本设置 71
4.2.6 PyCharm运行程序 73
4.3 Python基础 74
4.3.1 输入语句与输出语句 74
4.3.2 变量的作用与定义 76
4.3.3 变量的命名规则和习惯 78
4.3.4 运算符 79
4.3.5 数据类型 81
4.3.6 if语句 82
4.3.7 循环语句 83
4.3.8 函数 85
4.3.9 类 85
4.3.10 列表和元组 87
4.3.11 引入模块 87
4.3.12 注释 88
4.4 编写**个感知器程序 88
4.4.1 需求分析 88
4.4.2 主程序 89
4.4.3 感知器前向传播程序 90
4.4.4 误差计算程序 91
4.4.5 运行结果 91
4.5 小结 92
第5章 深度学习框架PyTorch入门与实战 93
5.1 PyTorch简介 94
5.1.1 什么是PyTorch 94
5.1.2 PyTorch的特点 94
5.1.3 为什么要选择PyTorch搭建神经网络 95
5.2 安装PyTorch框架 95
5.2.1 conda命令 96
5.2.2 选择PyTorch版本进行安装 97
5.3 PyTorch基础 99
5.3.1 构建输入/输出 99
5.3.2 构建网络结构 100
5.3.3 定义优化器与损失函数 102
5.3.4 保存和加载网络 103
5.4 小实战:用PyTorch搭建一个神经网络以学习异或运算 104
5.4.1 需求分析 104
5.4.2 训练程序 105
5.4.3 测试程序 107
5.5 小结 109
第6章 Python搭建神经网络进阶 110
6.1 NumPy简介 111
6.1.1 NumPy的基本功能 111
6.1.2 NumPy的数据类型 111
6.2 NumPy的使用 112
6.2.1 安装NumPy 112
6.2.2 创建数组 112
6.2.3 存储和读取数组 114
6.2.4 索引和切片 115
6.2.5 重塑数组 116
6.2.6 数组的运算 117
6.3 OpenCV简介 119
6.3.1 OpenCV概述 119
6.3.2 OpenCV的基本功能 120
6.4 OpenCV的使用 120
6.4.1 安装OpenCV 121
6.4.2 图像读取与显示 121
6.4.3 图像缩放 122
6.4.4 色彩空间转换 123
6.4.5 直方图均衡化 125
6.4.6 图像保存 126
6.5 文件夹中文件的遍历 127
6.5.1 OS模块简介 128
6.5.2 path模块 128
6.5.3 删除文件 129
6.5.4 创建文件夹 129
6.5.5 文件遍历 130
6.6 构建和读取数据集 132
6.6.1 构建数据集 132
6.6.2 读取数据集 135
6.7 PyTorch中卷积神经网络有关的接口 136
6.7.1 卷积层接口 136
6.7.2 反卷积层接口 137
6.8 小结 137
第7章 实战1:回归问题和分类问题 139
7.1 Python中绘图方法简介 140
7.1.1 Matplotlib简介 140
7.1.2 安装Matplotlib 140
7.1.3 散点图绘制 141
7.1.4 绘图显示的小设置 144
7.1.5 曲线绘制 145
7.1.6 设置坐标轴 146
7.1.7 动态绘图 148
7.2 回归问题 149
7.3 用Python搭建一个解决回归问题的神经网络 151
7.3.1 准备工作 151
7.3.2 构建网络 152
7.3.3 训练网络 153
7.3.4 完整程序 154
7.4 分类问题 155
7.5 用Python搭建一个解决分类问题的神经网络 156
7.5.1 准备工作 156
7.5.2 构建网络 159
7.5.3 训练网络 160
7.5.4 可视化 161
7.5.5 完整程序 162
7.6 小结 164
第8章 实战2:猫狗识别问题 165
8.1 实战目标 166
8.1.1 目标分析 166
8.1.2 样本集 167
8.2 实现思路 167
8.2.1 构建样本集 168
8.2.2 测试样本集 169
8.2.3 构建网络 170
8.2.4 训练网络 171
8.2.5 测试网络 172
8.3 完整程序及运行结果 172
8.3.1 构建样本集程序 172
8.3.2 测试样本集程序 174
8.3.3 构建网络程序 175
8.3.4 训练网络程序 177
8.3.5 可视化训练过程 179
8.3.6 测试网络程序 180
8.3.7 模拟实际运用 181
8.4 对结果的思考 182
8.4.1 训练集和测试集准确率的对比 182
8.4.2 准确率低的原因 183
8.4.3 训练过程的启示 184
8.5 小结 184
第9章 一些经典的网络 185
9.1 LeNet-5网络模型 186
9.1.1 LeNet-5网络简介 186
9.1.2 LeNet-5网络结构 186
9.1.3 三维卷积 188
9.1.4 多维卷积 190
9.1.5 LeNet-5代码实现 191
9.2 AlexNet网络模型 192
9.2.1 AlexNet网络简介 193
9.2.2 AlexNet网络结构 193
9.2.3 Same卷积 194
9.2.4 Softmax分类器 196
9.2.5 AlexNet代码实现 197
9.3 VGG16网络模型 198
9.3.1 VGG16网络简介 198
9.3.2 VGG16网络结构 198
9.4 小结 200
第10章 实战3:验证码识别问题 201
10.1 实战目标 202
10.1.1 目标分析 202
10.1.2 生成样本集 203
10.2 实现思路 205
10.2.1 构建样本集 206
10.2.2 构建网络 207
10.2.3 训练网络 208
10.2.4 测试网络 209
10.3 完整程序及运行结果 209
10.3.1 验证码分割程序 209
10.3.2 构建训练集程序 211
10.3.3 构建网络程序 212
10.3.4 训练网络程序 213
10.3.5 测试网络程序 215
10.3.6 模拟实际运用 216
10.4 对结果的思考 217
10.4.1 训练集和测试集准确率的对比 217
10.4.2 识别错误的原因 218
10.5 小结 219
第11章 优化网络 220
11.1 神经网络现存的几个问题 221
11.1.1 无法真正模拟人脑 221
11.1.2 大样本训练缓慢 222
11.1.3 深度网络训练困难 222
11.1.4 梯度消失和爆炸 224
11.1.5 白盒问题 225
11.2 过拟合问题 226
11.2.1 什么是过拟合 226
11.2.2 解决过拟合问题的几种方法 227
11.2.3 正则化 228
11.3 怎样选择每一层的节点数目 230
11.3.1 输入层和输出层的节点数目 230
11.3.2 隐含层的节点数目 230
11.4 如何加速训练 231
11.4.1 采用其他优化算法 231
11.4.2 采用GPU训练 232
11.4.3 设置合适的学习率 232
11.4.4 在合适的时间停止训练 233
11.5 人工智能的未来发展趋势 233
11.5.1 人工智能的发展现状 233
11.5.2 人工智能的发展趋势 234
11.6 小结 234
节选
第1章 神经网络概述 1.1 神经网络简介 随着信息时代的快速发展,人工智能逐渐走进了大众的视野,而与之紧密相关的神经网络(Neural Networks,NN)也渐渐被越来越多的人所了解。那么,什么是神经网络呢? 1.1.1 神经网络的定义 神经网络的定义有许多种,抛开数学公式和图形,一种比较概括性的定义可能为:神经网络是一种能够模仿人类的认知过程的数学模型。为了与生物神经网络相区分,神经网络又称为人工神经网络(Artificial Neural Networks,ANN),其本质是一种数学算法,其模拟人类认知的过程其实也就是进行一系列数学运算的过程。人脑神经网络如图1.1所示,它是一种极其复杂的结构,甚至在如今这个科学技术飞速发展的时代里,人脑中的奥秘还不能被科学家完全所知。但是,人工智能的发展却带来了简单但功能十分强大的人工神经网络结构,如图1.2所示。虽然人工神经网络相比人脑而言过于简单,但是其强大的应用其实正在你我的身边发生。 图1.1 人脑神经网络 图1.2 人工神经网络结构 1.1.2 神经网络可解决的问题 *新的发展成果表明,神经网络解决某些问题上的能力已经超过了人类。例如,AlphaGo已经战胜了人类成为地球上*厉害的围棋选手;Geoff Hinton发明的胶囊网络在识别玩具上的能力已经超越了人类的识别能力;谷歌的研究人员用一种深度学习的方法训练他们的网络玩电子游戏,训练两个小时后,计算机就成为游戏专家,且在之后大多数的游戏中,深度学习网络已经胜过有经验的玩家。再如,近年来发展十分火热的自动驾驶、人脸识别等技术都与神经网络有关,手机中的垃圾短信或垃圾邮件过滤功能也是通过神经网络实现的,语言识别、垃圾分类识别器等都可以运用神经网络模型轻松实现。 通过比较简单而系统的学习,每个人都可以很好地掌握神经网络的基础知识并用它去解决两类问题:回归问题和分类问题,解决回归问题时神经网络甚至可以用来预测股价及房价(还不能用来炒股)。当然,本书的目的不是教读者如何预测股价,而是想让读者系统地了解神经网络基础的方方面面,能够运用它去做一些有趣的事情。 1.2 神经网络的灵感来源 对神经网络的整体概念有了基本了解之后,本节讨论科学家们是如何想到构建这样一种功能强大的人工模型的。 1.2.1 对人类认知过程的传统认知 人工神经网络模拟的其实是人脑的学习过程,而人脑的学习过程实际上可以看作神经元之间的连接、信息传递的过程。其实,在很长一段时间里,人们对人脑中的神经细胞的工作方式并不熟悉。 人们起初认为,我们所拥有的视觉、触觉、味觉等都是因为感受器官同人脑中特定的感受细胞相连所形成的。如图1.3所示,人们普遍认为,眼睛与视觉中枢通过某种方式相连接,眼睛作为视觉的感受器,在感受到了视觉信号之后,将信号传到视觉中枢,我们才会形成视觉;如果将眼睛连接到了味觉中枢、语言中枢等其他感受外界刺激的神经网络区域,我们便不会产生视觉。这种理论的主要观点在于,相应的感受器必须要与人脑中相应的感受细胞相连接才会正常工作,从而形成相应的感觉。 1.2.2 对人类认知过程的现代认知 人们对人类感知过程的传统认知虽然狭隘,但却持续了很长时间。直到有一些善于思考和反驳的人开始发问:如果把其他器官也连接到视觉中枢上(图1.4),会发生什么呢? 实际上,历史上确实有人做过这样的实验,实验的具体过程在这里不做重点讲解,我们主要关心*后的结果。实验得到的结果是,如果把鼻子连接到视觉中枢,也可以通过视觉中枢和鼻子共同工作产生嗅觉;类似地,把嘴巴连接到视觉中枢,也同样会产生味觉。这就启示我们,视觉中枢并不是一些特殊的仅仅能够产生视觉的人脑神经细胞,而是一些具有一定普遍性的人脑细胞。视觉形成的关键在于,眼睛传入了视觉信号,视觉中枢中具有一定普遍性的神经元在接收到信号以后,开始其连接活动,将信号进行处理后产生视觉。神经细胞的这种工作机制,就决定了我们可以创造一个模型——神经网络。 1.2.3 神经元连接的灵感 人工智能在发展之初就分出一门学派——连接主义学派,该学派认为人工智能起源于仿生学,特别是人脑模型,人类认知的基元是神经元,认知过程是神经元的连接过程。 随着科学家对人类认知过程的理解不断加深,人们逐渐发现神经元的连接过程可以模拟出人脑的某些功能。这一过程给研究人员带来了灵感,驱使着人类着手建立人工的基元及人工的连接,并且通过简单的连接就可以模拟出人脑的学习功能。 1.3 为什么要学习神经网络 在了解了神经网络的定义和灵感来源之后,本节简单介绍神经网络的发展历史,然后讨论使用神经网络解决问题的必要性。 1.3.1 神经网络的发展 其实,神经网络并不是近几年新出现的词语,而是一个“由来已久”的词了。早在 1943年,心理学家沃伦·麦卡洛克(Warren McCulloch)和数理逻辑学家沃尔特·皮茨(Walter Pitts)在合作的A logical calculus of the ideas immanent in nervous activity论文中就已经给出了人工神经网络的*初概念及人工神经元的数学模型,从而开创了人工神经网络研究的时代。而后又有许多研究学者提出了不同的学习模型,但那时的神经网络大部分只有简单的单层结构,所以被称为“**代神经网络”。虽然**代神经网络模型比较简单,但是它已经能够对简单的形状(如三角形、矩形、菱形等)进行分类,人们逐渐认识到使用机器实现像人类一样感觉、学习、记忆、识别已经成为一种趋势。 到了1985年,杰弗里·辛顿(Geoffrey Hinton)使用多个隐含层来代替感知机中原先的单个特征层,并使用BP算法(Back-propagation algorithm,proposed in 1969,practicable in 1974)来计算网络参数。1989年,雅恩·乐库(Yann LeCun)等人使用深度神经网络来识别信件中邮编的手写体字符。1998年,LeCun进一步运用CNN(Convolutional Noural Networks,卷积神经网络)完成了银行支票的手写体字符识别,识别正确率达到商用级别。 尽管神经网络在20世纪90年代末就已经得到了很好的发展,并且水平也已经能够达到商用级别,但是在之后的一段时间内,神经网络似乎并没有得到更高层次的发展。笔者认为在这其中,计算机的算力起到了很大的限制作用。那时的计算机发展还不是很成熟,计算机运算速度并不是很快,有时训练一个神经网络需要几天甚至几个月才能得到一次结果,而且如果得到的结果不理想,就需要再耗费同样的时间去重新训练,这不仅限制了个人开发神经网络模型,更限制了整个行业的发展。 *近几年,随着计算机技术突飞猛进的发展,神经网络的发展也被重新“唤醒”,并成为人工智能领域中*有效的模型之一。目前人工智能在某些特定的领域已经有很好的性能,可以解决特定的问题,甚至解决某些特定问题的能力已经远远超过人类。 1.3.2 学习神经网络有什么用 人工智能目前所面临的*大的问题就是,它并不能像人类的大脑一样,很轻松地感知和学习周围环境的一切事物。目前所发展的人工智能技术,从某种意义上来说,可以被定义为“伪人工智能”。 假设你设计了一个计算机视觉的人工智能程序,让它去识别一些特定的图像,结果可能会比我们的肉眼的识别效果要好;但是如果让它去识别语音,它可能完全不能理解语音信号所代表的含义。或许你会说,我可以将训练好的识别图像的神经网络和识别语音的神经网络组合在一起使用,这样人工智能程序不就可以既能看懂图像,又能听懂声音了?实际上,现在的一些人工智能产品确实就是这样做的,但即使有再多的功能进行组合使用,人工智能程序还是脱离不了“伪人工智能”的嫌疑,因为它们之间并没有建设性的连接,每个功能都是通过单独的神经网络来实现的。换句话说,如果让人工智能程序去参加高考,恐怕它会“无从下手”。 能够实现真正具有人类的某些感知和学习功能的人工智能一直都是一件令人着迷的事情,但是能做出一个真真正正具有人的思维的人工智能可能对研究人员来说更加具有吸引力,而这也是我们要学习神经网络的原因之一。未来可能会是一个充满人工智能的时代,神经网络是通向人工智能殿堂的阶梯,如果我们能够登上这个阶梯,便能体会到其中的奥秘与乐趣,甚至可以开创一个全新的时代。 以上是从一些宏观的角度来剖析学习神经网络的重要性。从现实的角度来看,人工智能行业在近几年的发展十分迅速且异常火爆,许多科技巨头公司争先恐后地发展自己的人工智能技术,如华为、阿里、百度等都已经研发出了自己的人工智能产品。人工智能的火爆也带来了大量的人工智能就业岗位,所以现在无论是国内还是国外,整个行业都十分需要人工智能方面的人才。如果能够掌握人工智能领域的有关智能算法,在今后的求职过程中也能找到一份待遇优厚的工作,并且能在岗位上继续推动人工智能领域的发展。
作者简介
王凯,西安电子科技大学人工智能学院计算机专业研究生,曾参加过全国大学生验证码识别大赛并获得三等奖,长期从事神经网络的研究,具有丰富的开发实践经验。
-
全图解零基础word excel ppt 应用教程
¥15.6¥48.0 -
有限与无限的游戏:一个哲学家眼中的竞技世界
¥37.4¥68.0 -
硅谷之火-人与计算机的未来
¥12.7¥39.8 -
机器学习
¥59.4¥108.0 -
深度学习的数学
¥43.5¥69.0 -
智能硬件项目教程:基于ARDUINO(第2版)
¥37.7¥65.0 -
情感计算
¥66.8¥89.0 -
元启发式算法与背包问题研究
¥38.2¥49.0 -
LINUX企业运维实战(REDIS+ZABBIX+NGINX+PROMETHEUS+GRAFANA+LNMP)
¥48.3¥69.0 -
AI虚拟数字人:商业模式+形象创建+视频直播+案例应用
¥62.9¥89.8 -
LINUX实战——从入门到精通
¥48.3¥69.0 -
UNIX环境高级编程(第3版)
¥164.9¥229.0 -
剪映AI
¥52.8¥88.0 -
数据驱动的工业人工智能:建模方法与应用
¥68.3¥99.0 -
深度学习高手笔记 卷2:经典应用
¥90.9¥129.8 -
纹样之美:中国传统经典纹样速查手册
¥76.3¥109.0 -
UG NX 12.0数控编程
¥24.8¥45.0 -
MATLAB计算机视觉与深度学习实战(第2版)
¥90.9¥128.0 -
UN NX 12.0多轴数控编程案例教程
¥24.3¥38.0 -
微机组装与系统维护技术教程(第二版)
¥37.8¥43.0