欢迎光临
免费的PDF电子书下载网站

Python神经网络入门与实战 PDF下载

编辑推荐

  精通神经网络就这三步:1.零基础入门神经网络——2.进阶掌握神经网络——3.实战搭建属于自己的神经网络

 ;

内容简介

  本书从神经网络的基础知识讲起,逐步深入到Python进阶实战,通过对各种实用的第三方库进行详细讲解与实战运用,让读者不但能够更加深入地了解神经网络,而且能够简单高效地搭建自己的神经网络,即使没有专业背景知识也能轻松入门神经网络。
  本书分为 11章,涵盖的主要内容有神经网络概述,神经网络基础知识,计算机程序的特点,神经网络优化算法,搭 建Python环境,Python基础知识,深度学习框架PyTorch基础知识,NumPy简介与使用,OpenCV简介与使用,OS遍历文件夹,Python中Matplotlib可视化绘图,Lenet-5、AlexNet、VGG16网络模型,回归问题和分类问题,猫狗识别程序开发,验证码识别程序开发,过拟合问题与解决方法,梯度消失与爆炸,加速神经网络训练的方法,人工智能的未来发展趋势等。
  本书内容通俗易懂,案例丰富,实用性强,特别适合神经网络的零基础入门读者阅读,也适合 Python 程序员、PyTorch爱好者等阅读。

作者简介

  王凯,西安电子科技大学人工智能学院计算机专业研究生,曾参加过全国大学生验证码识别大赛并获得三等奖,长期从事神经网络的研究,具有丰富的开发实践经验。

Python神经网络入门与实战 PDF下载

目录

第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
第11章 优化网络 220

前沿

前  ;言
神经网络技术有什么前途? ;
  长久以来,关于人脑的奥秘一直吸引着许多研究学者的目光。随着人脑科学家坚持不懈的努力,人们对于人类大脑的认识不断增强,并根据人脑神经元的连接构建出一种能够模仿人类智能的模型——神经网络模型。
  神经网络模型在被创造之初并没有受到许多科学家的重视,因为当时计算机技术并不发达,无法对稍微复杂一点的神经网络进行训练、测试及运用。但随着计算机技术的快速发展,无论是计算机硬件还是软件在近几年来都有了质的飞跃,神经网络技术也因此迎来了发展的春天。无论是智能手机、智能电视、智能音箱等智能生活产品,还是无人配送车、机器服务员等智能服务产品,处处都能见到神经网络技术的应用。
  神经网络技术不能完全等同于人工智能,但它却可以称得上是人工智能的最核心技术。人工智能作为新一轮产业变革的核心驱动力和引领未来发展的战略技术,受到了国家的高度重视。2017年,国务院发布《新一代人工智能发展规划》,对人工智能产业进行战略部署;在2018年3月和2019年3月的《政府工作报告》中,均强调要加快新兴产业发展,推动人工智能等研发应用,培育新一代信息技术等新兴产业集群来壮大数字经济。此外,国家的人工智能人才培养计划也在不断完善,许多高校开始增设人工智能专业以满足国家对于人工智能方面人才的需求。
  随着神经网络技术的不断发展,人工智能必然会逐步替代人类从事大部分烦琐重复的劳动,在给人们带来福利的同时也带来了巨大的挑战,人才需求将会发生巨变,许多人将会面临“被失业”的风险。就目前来说,人工智能经过了几年曲折的发展,已经逐渐进入了发展瓶颈期,但这个时期也是最容易取得突破性成果的时期。因此,选择学习神经网络技术会让你紧随人工智能的潮流,不至于成为被替代的人。

笔者的使用体会 ;
  神经网络是蕴含丰富知识背景的技术,初学者在入门时可能会先面对许多导数公式、求和公式或线性代数的有关计算,大部分人学习起来会感到十分困难、无从下手,这些知识靠单独地学习很难理解透彻,往往需要在实战中反复琢磨才能真正融会贯通。
  如果你成功地进入了神经网络的世界,你会发现这个世界里有许多有趣的东西,仿佛计算机被你注入了灵魂,一切都在你的掌握之中。神经网络技术目前是人工智能领域中最高效、最好用的算法,这让我们在使用它时完全不必拘泥于复杂数值计算的细节,可以很好地把它运用于解决实际问题。现有成熟的深度学习框架会进一步提高使用神经网络的效率,因此可以让你把心思更多地放在思考更好的算法、设计更好的网络、构建更好的样本上,而不是思考它到底该如何实现。
  如果你对神经网络技术早有耳闻,并被它的魅力深深吸引,那就不要犹豫,马上开始你的学习。这个学习过程也可以说成探索的过程,它不但会让你创造出能够认识世界的程序,而且也能让你更好地了解这个五彩缤纷的世界。

本书的特色 ;
  由于神经网络技术所涉及的背景知识非常广泛,有些甚至晦涩难懂,所以本书并不侧重非常详细地讲解这些知识,反而比较侧重对这些知识的实际运用,在实战中让读者对这些知识反复理解消化。本书特色就在于用简单的语言讲述初学者难以理解的基础知识;用生动易懂的示例告诉读者如何将这些知识运用到实战中;用发展的眼光看待神经网络的前景,激发读者的兴趣。

本书的主要内容 ;
  本书一共分为三部分:第一部分包括第1~3章,讲述神经网络的基础知识等有关内容;第二部分包括第4~8章,讲述神经网络的实战开发等有关内容;第三部分包括第9~11章,讲述与神经网络有关的一些进阶内容。本书内容框架如下图所示。

本书读者对象 ;
    ;神经网络初学者。
    ;参加各种创新创业比赛需要用到神经网络的大学生。
    ;各计算机、非计算机专业的大中专院校实习学生。
    ;想转入人工智能领域的程序员。
    ;欲上岗人工智能行业相关职位的应届大学生。
    ;需要神经网络入门工具书的人员。
    ;其他对神经网络技术感兴趣的人员。

免费在线读

第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  ;学习神经网络有什么用
  人工智能目前所面临的最大的问题就是,它并不能像人类的大脑一样,很轻松地感知和学习周围环境的一切事物。目前所发展的人工智能技术,从某种意义上来说,可以被定义为“伪人工智能”。
  假设你设计了一个计算机视觉的人工智能程序,让它去识别一些特定的图像,结果可能会比我们的肉眼的识别效果要好;但是如果让它去识别语音,它可能完全不能理解语音信号所代表的含义。或许你会说,我可以将训练好的识别图像的神经网络和识别语音的神经网络组合在一起使用,这样人工智能程序不就可以既能看懂图像,又能听懂声音了?实际上,现在的一些人工智能产品确实就是这样做的,但即使有再多的功能进行组合使用,人工智能程序还是脱离不了“伪人工智能”的嫌疑,因为它们之间并没有建设性的连接,每个功能都是通过单独的神经网络来实现的。换句话说,如果让人工智能程序去参加高考,恐怕它会“无从下手”。
  能够实现真正具有人类的某些感知和学习功能的人工智能一直都是一件令人着迷的事情,但是能做出一个真真正正具有人的思维的人工智能可能对研究人员来说更加具有吸引力,而这也是我们要学习神经网络的原因之一。未来可能会是一个充满人工智能的时代,神经网络是通向人工智能殿堂的阶梯,如果我们能够登上这个阶梯,便能体会到其中的奥秘与乐趣,甚至可以开创一个全新的时代。
  以上是从一些宏观的角度来剖析学习神经网络的重要性。从现实的角度来看,人工智能行业在近几年的发展十分迅速且异常火爆,许多科技巨头公司争先恐后地发展自己的人工智能技术,如华为、阿里、百度等都已经研发出了自己的人工智能产品。人工智能的火爆也带来了大量的人工智能就业岗位,所以现在无论是国内还是国外,整个行业都十分需要人工智能方面的人才。如果能够掌握人工智能领域的有关智能算法,在今后的求职过程中也能找到一份待遇优厚的工作,并且能在岗位上继续推动人工智能领域的发展。

Python神经网络入门与实战 pdf下载声明

本pdf资料下载仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版

pdf下载地址

版权归出版社和作者所有,下载链接已删除。如果喜欢,请购买正版!

链接地址:Python神经网络入门与实战