《解析深度学习:卷积神经网络的Python实现》是一本基于Python语言实现的卷积神经网络入门书籍,这本书以直白的方法讲解机器学习,特别是卷积神经网络的原理和实现过程,书中使用了NumPy库来帮助读者理解和实现神经网络算法,并通过具体的案例和实例来帮助读者掌握相关的编程技巧和图像处理技术,这本书不仅适合初学者,也适合有一定编程基础的读者深入学习和理解卷积神经网络,是一本非常实用且循序渐进的教程,无论是对于学习者还是实践者来说,本书都是一本不可多得的指南。
卷积神经网络的Python实现 电子书封面
内容介绍
卷积神经网络是深度学习重要的模型之一。本书是卷积神经网络领域的入门读物,假定读者不具备任何机器学习知识。书中尽可能少地使用数学知识,从机器学习的概念讲起,以卷积神经网络的zui新发展结束。 本书首先简单介绍了机器学习的基本概念,详细讲解了线性模型、神经网络和卷积神经网络模型,然后介绍了基于梯度下降法的优化方法和梯度反向传播算法,接着介绍了训练网络前的准备工作、神经网络实战、卷积神经网络的应用及其发展。针对每个关键知识点,书中给出了基于NumPy 的代码实现,以及完整的神经网络和卷积神经网络代码实现,方便读者训练网络和查阅代码。 本书既可以作为卷积神经网络的教材,也可以供对卷积神经网络感兴趣的工程技术人员和科研人员参考。
目录
- 第 一部分 模型篇
- 第 1章 机器学习简介 2
- 1.1 引言 2
- 1.2 基本术语 3
- 1.3 重要概念 5
- 1.4 图像分类 12
- 1.5 MNIST数据集简介 15
- 第 2章 线性分类器 17
- 2.1 线性模型 17
- 2.1.1 线性分类器 18
- 2.1.2 理解线性分类器 19
- 2.1.3 代码实现 21
- 2.2 softmax损失函数 22
- 2.2.1 损失函数的定义 23
- 2.2.2 概率解释 24
- 2.2.3 代码实现 25
- 2.3 优化 26
- 2.4 梯度下降法 26
- 2.4.1 梯度的解析意义 27
- 2.4.2 梯度的几何意义 29
- 2.4.3 梯度的物理意义 29
- 2.4.4 梯度下降法代码实现 29
- 2.5 牛顿法 30
- 2.6 机器学习模型统一结构 31
- 2.7 正则化 33
- 2.7.1 范数正则化 34
- 2.7.2 提前终止训练 37
- 2.7.3 概率的进一步解释 38
- 第3章 神经网络 39
- 3.1 数学模型 39
- 3.2 激活函数 41
- 3.3 代码实现 44
- 3.4 学习容量和正则化 45
- 3.5 生物神经科学基础 48
- 第4章 卷积神经网络的结构 50
- 4.1 概述 50
- 4.1.1 局部连接 51
- 4.1.2 参数共享 52
- 4.1.3 3D特征图 52
- 4.2 卷积层 53
- 4.2.1 卷积运算及代码实现 54
- 4.2.2 卷积层及代码初级实现 57
- 4.2.3 卷积层参数总结 63
- 4.2.4 用连接的观点看卷积层 64
- 4.2.5 使用矩阵乘法实现卷积层运算 67
- 4.2.6 批量数据的卷积层矩阵乘法的代码实现 69
- 4.3 池化层 74
- 4.3.1 概述 74
- 4.3.2 池化层代码实现 76
- 4.4 全连接层 79
- 4.4.1 全连接层转化成卷积层 80
- 4.4.2 全连接层代码实现 82
- 4.5 卷积网络的结构 83
- 4.5.1 层的组合模式 83
- 4.5.2 表示学习 86
- 4.6 卷积网络的神经科学基础 87
- 第二部分 优化篇
- 第5章 基于梯度下降法的最优化方法 90
- 5.1 随机梯度下降法SGD 91
- 5.2 基本动量法 93
- 5.3 Nesterov动量法 95
- 5.4 AdaGrad 95
- 5.5 RMSProp 97
- 5.6 Adam 98
- 5.7 AmsGrad 99
- 5.8 学习率退火 99
- 5.9 参数初始化 100
- 5.10 超参数调优 101
- 第6章 梯度反向传播算法 104
- 6.1 基本函数的梯度 104
- 6.2 链式法则 105
- 6.3 深度网络的误差反向传播算法 107
- 6.4 矩阵化 109
- 6.5 softmax损失函数梯度计算 111
- 6.6 全连接层梯度反向传播 112
- 6.7 激活层梯度反向传播 113
- 6.8 卷积层梯度反向传播 115
- 6.9 最大值池化层梯度反向传播 118
- 第三部分 实战篇
- 第7章 训练前的准备 124
- 7.1 中心化和规范化 124
- 7.1.1 利用线性模型推导中心化 125
- 7.1.2 利用属性同等重要性推导规范化 126
- 7.1.3 中心化和规范化的几何意义 128
- 7.2 PCA和白化 128
- 7.2.1 从去除线性相关性推导PCA 129
- 7.2.2 PCA代码 130
- 7.2.3 PCA降维 131
- 7.2.4 PCA的几何意义 133
- 7.2.5 白化 134
- 7.3 卷积网络在进行图像分类时如何预处理 135
- 7.4 BN 136
- 7.4.1 BN前向计算 136
- 7.4.2 BN层的位置 137
- 7.4.3 BN层的理论解释 138
- 7.4.4 BN层在实践中的注意事项 139
- 7.4.5 BN层的梯度反向传播 140
- 7.4.6 BN层的地位探讨 141
- 7.4.7 将BN层应用于卷积网络 141
- 7.5 数据扩增 142
- 7.6 梯度检查 144
- 7.7 初始损失值检查 146
- 7.8 过拟合微小数据子集 146
- 7.9 监测学习过程 147
- 7.9.1 损失值 147
- 7.9.2 训练集和验证集的准确率 148
- 7.9.3 参数更新比例 149
- 第8章 神经网络实例 150
- 8.1 生成数据 150
- 8.2 数据预处理 152
- 8.3 网络模型 153
- 8.4 梯度检查 156
- 8.5 参数优化 158
- 8.6 训练网络 159
- 8.7 过拟合小数据集 162
- 8.8 超参数随机搜索 162
- 8.9 评估模型 165
- 8.10 程序组织结构 165
- 8.11 增加BN层 167
- 8.12 程序使用建议 171
- 第9章 卷积神经网络实例 172
- 9.1 程序结构设计 173
- 9.2 激活函数 173
- 9.3 正则化 174
- 9.4 优化方法 175
- 9.5 卷积网络的基本模块 176
- 9.6 训练方法 181
- 9.7 VGG网络结构 186
- 9.8 MNIST数据集 197
- 9.9 梯度检测 199
- 9.10 MNIST数据集的训练结果 202
- 9.11 程序使用建议 205
- 第 10章 卷积网络结构的发展 206
- 10.1 全局平均池化层 206
- 10.2 去掉池化层 208
- 10.3 网络向更深更宽发展面临的困难 209
- 10.4 ResNet向更深发展的代表网络 210
- 10.5 GoogLeNet向更宽发展的代表网络 213
- 10.6 轻量网络 215
- 10.6.1 1×1深度维度卷积代码实现 217
- 10.6.2 3×3逐特征图的卷积代码实现 219
- 10.6.3 逆残差模块的代码实现 222
- 10.7 注意机制网络SENet 223
RowNumber:行号,这个肯定没用,删除 CustomerID:用户编号,这个是顺序发放的,删除 Surname:用户姓名,对流失没有影响,删除 CreditScore:信用分数,这个很重要,保留 Geography:用户所在国家/地区,这个有影响,保留 Gender:用户性别,可能有影响,保留 Age:年龄,影响很大,年轻人更容易切换银行,保留 Tenure:当了本银行多少年用户,很重要,保留 Balance:存贷款情况,很重要,保留 NumOfProducts:使用产品数量,很重要,保留 HasCrCard:是否有本行信用卡,很重要,保留 IsActiveMember:是否活跃用户,很重要,保留 EstimatedSalary:估计收入,很重要,保留 Exited:是否已流失,这将作为我们的标签数据
神经网络如何工作 1、当不能精确知道一些事情如何运作时,我们可以尝试使用模型来估计其运作方式,在这个模型中,包含了我们可以调整的参数。而改进模型的方法是:基于模型输出和已知真实实例之间的比较,得到模型便宜的误差从而调整参数。 2、学习率的使用,让我们“小心翼翼”地向训练样本所指示方向移动;当训练数据本身不能确信为完全正确并且包含在现实世界测量中普遍出现的错误和噪声时,有节制的调整可以抑制这些错误或噪声的影响。 3、如果数据本身不是由单一线性过程支配,那么一个简单的线性分类器不能对数据进行划分(XOR)。此时多个线性分类器的作用体现出来。 4、连接神经元之间的权重,可以强化或弱化神经元之间传递的信号。随着神经网络学习过程的进行,神经网络通过调整优化网络内部的连接权重改进输出;一些权重的值可能会变为0或趋近于0,这以为着这些连接对网络的贡献为0。 5、当输出和误差是由多个节点共同作用的结果时,会按照权重占比分配误差。因为权重较大的连接对所造成的误差贡献更大。