-
内容大纲
本书是“人工智能与大数据技术大讲堂”丛书的第2部,从体验手写数字识别(k近邻算法)开始,循序渐进地加深读者对神经网络模型的理解,进而可以设计并实现自己的模型。本书通过Python+NumPy从零开始构建神经网络模型,强化读者对算法思想的理解,然后通过TensorFlow重新构建这些模型,进一步加深读者对模型的理解。
前馈神经网络是深度学习的重要知识,其核心思想是反向传播与梯度下降。本书从极易理解的示例开始,然后逐渐深入,从而帮助读者充分理解并熟练掌握反向传播与梯度下降算法,为后续学习深度学习技术打下坚实的基础。
本书采用理论与实践并重的风格,先以图文方式讲解算法思想,再用Python+NumPy实现算法,然后给出TensorFlow实现,帮助读者不断地加深对核心算法的理解,提高实际动手能力,从而锻炼将算法思想转化为程序代码的能力。 -
作者介绍
张光华,博士毕业于重庆大学和清华大学,硕士毕业于中国科学技术大学。现为中国医药教育协会智能眼科学组常委、山西智能大数据产业技术创新研究院医疗大数据研究中心主任主要研究方向为量子点微型多光谱成像技术、医学图像处理、机器学习等。已在顶级的国际会议及SCI期刊上发表了医学、图像处理和机器学习等领域的多篇论文,并参与了多项中国与欧洲的科学基金项目。 -
目录
前言
第1章 环境搭建
1.1 下载并安装Python
1.2 Python软件环境管理工具Anaconda
1.2.1 下载Anaconda
1.2.2 安装Anaconda
1.2.3 验证Anaconda的安装
1.3 通过TUNA加速Anaconda
1.3.1 清华大学开源软件镜像站TUNA
1.3.2 在Windows中设置Anaconda镜像通道
1.3.3 在类UNIX中设置Anaconda镜像通道
1.4 使用Jupyter Notebook
1.4.1 通过“开始”菜单启动Jupyter Notebook
1.4.2 通过命令行启动Jupyter Notebook
1.4.3 新建并重命名Notebook
1.4.4 安装Jupyter Notebook插件
1.5 安装TensorFlow 2
1.5.1 通过Notebook cell安装TensorFlow 2
1.5.2 通过pip install命令离线安装TensorFlow
1.6 小结与补充说明
第2章 使用k近邻算法识别手写数字图像
2.1 手写数字图像数据集MNIST
2.1.1 使用TensorFlow加载MNIST
2.1.2 使用scikit-learn加载MNIST
2.2 分类器与准确率
2.3 k近邻算法的基本思想
2.4 利用k-NN识别MNIST
2.4.1 划分数据集
2.4.2 识别MNIST与模型评估
2.4.3 数据探查
2.4.4 性能优化
2.4.5 调参
2.4.6 最近邻再探查
2.5 k-NN中的距离度量
2.6 小结与补充说明
第3章 感知机算法思想与实现
3.1 机器学习的基本分类
3.2 鸢尾花数据集iris
3.2.1 样本特征
3.2.2 样本分类
3.2.3 构造简化版iris数据集
3.3 感知机分类精简版iris
3.3.1 极简体验感知机
3.3.2 感知机模型的数学表达
3.3.3 极简体验感知机学习算法
3.3.4 感知机学习算法的Python实现
3.3.5 损失函数与梯度(选修)
3.3.6 感知机代码合并
3.4 感知机的实现类
3.4.1 构造器__init__()
3.4.2 预测方法predict()
3.4.3 更新模型参数update_params()
3.4.4 启动训练fit()
3.4.5 重构Perceptron类
3.5 小结与补充说明
第4章 对数几率回归算法思想与实现
4.1 神经网络结构示意图
4.2 对数几率回归的数学表达
4.3 对数几率函数的Python实现
4.4 对数几率回归模型的损失函数
4.5 梯度下降法的数学表达(选修)
4.6 梯度下降法的Python实现
4.7 对数几率回归模型的Python实现
4.8 使用对数几率回归模型分类鸢尾花
4.8.1 使用LR分类精简版iris数据集
4.8.2 统计准确率
4.8.3 构造简化版iris数据集
4.8.4 划分函数train_test_split()
4.8.5 划分iris数据集
4.8.6 使用对数几率回归模型分类iris数据集
4.9 小结与补充说明
第5章 使用TensorFlow实现对数几率回归
5.1 深入LR参数更新
5.1.1 改进LogisticRegression类的update_weights()方法
5.1.2 改进LogisticRegression类的fit()方法
5.1.3 使用LR分类鸢尾花数据集并查看日志
5.2 使用TensorFlow自动求梯度
5.2.1 极简体验TensorFlow自动求梯度
5.2.2 NumPy数组的形状与维数
5.2.3 使用TensorFlow计算矩阵乘积
5.2.4 使用TensorFlow计算LR模型的激活值
5.2.5 使用代码定义LR模型的损失函数
5.2.6 使用TensorFlow求LR模型的损失函数对激活值的梯度
5.2.7 手动计算LR模型的损失函数对权值的梯度
5.2.8 使用TensorFlow求LR模型的损失函数对参数的梯度
5.3 使用自动求梯度实现LR
5.3.1 更新TensorFlow变量
5.3.2 实现LogisticRegressionV2类
5.3.3 使用LogisticRegressionV2分类精简版iris
5.3.4 极简体验模型调参
5.4 使用Sequential实现LR
5.5 小结与补充说明
第6章 LR图像分类
6.1 简化版MNIST数据集
6.1.1 生成索引数组
6.1.2 NumPy数组切片(取元素)
6.1.3 数据探查
6.1.4 使用np.concatenate()合并数组
6.1.5 构建简化版MNIST数据集
6.2 LR分类简化版MNIST
6.2.1 数据预处理之归一化
6.2.2 数据预处理之扁平化
6.2.3 LR分类简化版MNIST
6.2.4 修复LogisticRegression类
6.2.5 测试修复
6.3 小批量梯度下降
6.3.1 向量化编程
6.3.2 构造小批量样本
6.3.3 计算LR损失函数关于线性模型的导数dz
6.3.4 计算LR损失函数关于权值向量的导数dw
6.3.5 计算LR损失函数关于偏置量的导数db
6.3.6 小批量模型训练
6.3.7 小批量LR分类简化版MNIST
6.3.8 查看模型预测失误的样本
6.4 新问题与修复
6.4.1 发现问题与复现问题
6.4.2 原因分析及解决方法
6.4.3 向量化predict()方法
6.4.4 修复LogisticRegression类
6.4.5 评估模型方法evaluate()
6.4.6 提前终止控制开关
6.4.7 提前终止策略方法(选修)
6.4.8 重构LogisticRegression类
6.5 小结与补充说明
第7章 代码重构与计算图简介
7.1 构建神经网络的基本流程
7.1.1 模型架构及超参数
7.1.2 初始化模型参数
7.1.3 前向传播、反向传播与计算图
7.2 重构LogisticRegression类
7.2.1 重新构造简化版MNIST数据集
7.2.2 探查简化版MNIST数据集
7.2.3 LR分类简化版MNIST
7.2.4 重构LogisticRegression类
7.2.5 测试重构版LogisticRegression类
7.3 使用TensorFlow定义并训练模型
7.4 体验TensorBoard
7.5 随机化
7.5.1 使用np.random.random()生成随机数
7.5.2 随机初始化权值向量
7.5.3 使用np.random.shuffle()混淆数组
7.5.4 随机访问样本
7.5.5 随机梯度下降
7.5.6 小批量随机梯度下降
7.6 小结与补充说明
第8章 两层神经网络
8.1 单层神经网络之局限性
8.1.1 线性可分
8.1.2 线性不可分
8.2 两层神经网络前向传播
8.2.1 部分记号说明
8.2.2 矩阵乘积的代码实现
8.2.3 隐层前向传播的数学表达
8.2.4 隐层前向传播的代码实现
8.2.5 输出层前向传播的数学表达
8.2.6 输出层前向传播的代码实现
8.3 两层神经网络反向传播
8.3.1 输出层反向传播的数学表达
8.3.2 输出层反向传播的代码实现
8.3.3 隐层反向传播的数学表达
8.3.4 隐层反向传播的代码实现
8.4 两层神经网络实现异或运算
8.5 实现MLPClassifier类
8.5.1 构造器__init__()
8.5.2 参数初始化initialize_params()
8.5.3 前向传播forward_propagation()
8.5.4 反向传播backward_propagation()
8.5.5 参数更新update_params()
8.5.6 模型输出
8.5.7 模型启动训练fit()
8.5.8 测试MLPClassifier类
8.6 小结与补充说明
第9章 多层神经网络
9.1 多层感知机部分记号说明
9.2 重构多层神经网络
9.2.1 参数初始化
9.2.2 前向传播
9.2.3 反向传播参数更新
9.2.4 测试新版本
9.3 重构MLPClassifier类
9.3.1 构造器__init__()
9.3.2 参数初始化initialize_params()
9.3.3 前向传播forward_propagation()
9.3.4 反向传播参数更新
9.3.5 模型输出
9.3.6 模型启动训练fit()
9.3.7 测试MLPClassifier类
9.3.8 修复MLPClassifier类
9.3.9 测试修复
9.4 使用TensorFlow实现多层神经网络
9.4.1 使用TensorFlow解决异或问题
9.4.2 使用TensorFlow验证MLPClassifier类
9.5 使用MLPClassifier类实现对数几率回归
9.5.1 使用LR实现逻辑与函数
9.5.2 使用MLPClassifier类实现对数几率回归
9.5.3 使用TensorFlow验证代码实现
9.6 小结与补充说明
附录 标量、向量与矩阵简介
后记
同类热销排行榜
- C语言与程序设计教程(高等学校计算机类十二五规划教材)16
- 电机与拖动基础(教育部高等学校自动化专业教学指导分委员会规划工程应用型自动化专业系列教材)13.48
- 传感器与检测技术(第2版高职高专电子信息类系列教材)13.6
- ASP.NET项目开发实战(高职高专计算机项目任务驱动模式教材)15.2
- Access数据库实用教程(第2版十二五职业教育国家规划教材)14.72
- 信号与系统(第3版下普通高等教育九五国家级重点教材)15.08
- 电气控制与PLC(普通高等教育十二五电气信息类规划教材)17.2
- 数字电子技术基础(第2版)17.36
- VB程序设计及应用(第3版十二五职业教育国家规划教材)14.32
- Java Web从入门到精通(附光盘)/软件开发视频大讲堂27.92
推荐书目
-
孩子你慢慢来/人生三书 华人世界率性犀利的一枝笔,龙应台独家授权《孩子你慢慢来》20周年经典新版。她的《...
-
时间简史(插图版) 相对论、黑洞、弯曲空间……这些词给我们的感觉是艰深、晦涩、难以理解而且与我们的...
-
本质(精) 改革开放40年,恰如一部四部曲的年代大戏。技术突变、产品迭代、产业升级、资本对接...