作者 |
张光华 等 |
丛书名 |
人工智能与大数据技术大讲堂 |
出版社 |
机械工业出版社 |
ISBN |
9782112161712 |
简要 |
简介 |
内容简介书籍计算机书籍 ---------------------------8084986 - 从零开始构建深度前馈神经网络(Python+TensorFlow 2.x)--------------------------- 2016年,一只阿法狗(AlphaGo)为全世界打开了一条窄窄的门缝,通往未来之路就此展现。 通过超强硬件和大量的数据积累,人工智能浪潮第三次兴起。借助人工智能技术,公安部门可以轻松抓捕潜逃多年的罪犯,“AI换脸”已经成为普通用户的娱乐方式之一,智慧城市、自动驾驶开始在多个城市有试点…… GPT-3、Switch Transformer开启了新的时代,而智源研究院的悟道2.0参量则高达1.75万亿。训练有素的结构生物学家花费上千万美元历时多年的研究结果,AlphaFold v2.0在朝夕之间便完成预测。 今天,主动拥抱新变化,积极学习新知识,愈发显得重要。很多人积极投入热情、时间和金钱后,没能坚持多久就中断了学习。也有很多同学对此表示观望甚至放弃,觉得凭自己的基础不足以把握这次机会。 诚然,仅凭一本书很难帮助普通读者深刻理解并熟练掌握深度学习中的全部知识,因此“AI精研社”规划了一个系列图书,给出完整的解决方案,希望能帮助读者循序渐进、平滑而高效地成长为合格的人工智能算法实践者(practitioners)。 本书是“人工智能与大数据技术大讲堂”系列图书的第2部。本书从体验手写数字(k近邻算法)识别开始,循序渐进地不断加深读者对神经网络模型的理解,进而可以设计并实现自己的模型。另外,本书通过Python+NumPy从零开始构建神经网络模型,强化读者对算法思想的理解,并通过TensorFlow构建模型来验证读者亲手从零构建的版本。 前馈神经网络是深度学习的重要知识,其核心思想是反向传播与梯度下降。本书从极易理解的示例开始,逐渐深入,帮助读者充分理解并熟练掌握反向传播与梯度下降算法,为后续学习打下坚实的基础。 本书延续理论与实践并重的风格,先以图文方式讲解算法思想,再以Python+NumPy实现算法,然后再给出TensorFlow实现的版本,帮助读者不断加深对核心的算法理解,同时提升实际动手能力,从而锻炼将算法思想转化为程序代码的能力。 ---------------------------8059420 - 人工智能极简编程入门(基于Python)--------------------------- 本书共8章。第1章给出了切实可行的学习建议;第2章介绍了开发环境;第3~5章是专为人工智能大数据而优化的知识要点,手把手带领同学们从零基础开始学习编程;第6章与第7章从不同的角度手把手带领读者完成最简单的卷积运算-深度学习的基础算法;第8章带领读者解读一个案例中的部分源码(来自于最流行的深度学习框架TensorFlow)。 . 本书适合对人工智能、机器学习、深度学习和计算机视觉感兴趣的读者阅读,尤其适合零基础和弱基础的读者学习。阅读本书不要求读者有太多的编程基础与高等数学基础。 |
目录 |
[套装书具体书目] 8059420 - 人工智能极简编程入门(基于Python) - 9787111625094 - 机械工业出版社 - 定价 69 8084986 - 从零开始构建深度前馈神经网络(Python+TensorFlow 2.x) - 9787111696155 - 机械工业出版社 - 定价 69.8 ---------------------------8084986 - 从零开始构建深度前馈神经网络(Python+TensorFlow 2.x)--------------------------- 前言 第1章 环境搭建 1 1.1 下载并安装Python 1 1.2 Python软件环境管理工具Anaconda 2 1.2.1 下载Anaconda 2 1.2.2 安装Anaconda 4 1.2.3 验证Anaconda的安装 6 1.3 通过TUNA加速Anaconda 8 1.3.1 清华大学开源软件镜像站TUNA 8 1.3.2 在Windows中设置Anaconda镜像通道 10 1.3.3 在类UNIX中设置Anaconda镜像通道 11 1.4 使用Jupyter Notebook 12 1.4.1 通过“开始”菜单启动Jupyter Notebook 12 1.4.2 通过命令行启动Jupyter Notebook 13 1.4.3 新建并重命名Notebook 14 1.4.4 安装Jupyter Notebook插件 16 1.5 安装TensorFlow 2.6 17 1.5.1 通过Notebook cell安装TensorFlow 2.6 17 1.5.2 通过pip install命令离线安装TensorFlow 18 1.6 小结与补充说明 20 第2章 使用k近邻算法识别手写数字图像 22 2.1 手写数字图像数据集MNIST 22 2.1.1 使用TensorFlow加载MNIST 23 2.1.2 使用scikit-learn加载MNIST 24 2.2 分类器与准确率 25 2.3 k近邻算法的基本思想 26 2.4 利用k-NN识别MNIST 27 2.4.1 划分数据集 27 2.4.2 识别MNIST与模型评估 29 2.4.3 数据探查 30 2.4.4 性能优化 31 2.4.5 调参 32 2.4.6 最近邻再探查 33 2.5 k-NN中的距离度量 33 2.6 小结与补充说明 34 第3章 感知机算法思想与实现 36 3.1 机器学习的基本分类 36 3.2 鸢尾花数据集iris 37 3.2.1 样本特征 37 3.2.2 样本分类 38 3.2.3 构造简化版iris数据集 39 3.3 感知机分类精简版iris 42 3.3.1 极简体验感知机 42 3.3.2 感知机模型的数学表达 44 3.3.3 极简体验感知机学习算法 45 3.3.4 感知机学习算法的Python实现 47 3.3.5 损失函数与梯度(选修) 50 3.3.6 感知机代码合并 51 3.4 感知机的实现类 53 3.4.1 构造器__init__() 53 3.4.2 预测方法predict() 54 3.4.3 更新模型参数update_params() 55 3.4.4 启动训练fit() 56 3.4.5 重构Perceptron类 58 3.5 小结与补充说明 59 第4章 对数几率回归算法思想与实现 62 4.1 神经网络结构示意图 62 4.2 对数几率回归的数学表达 63 4.3 对数几率函数的Python实现 64 4.4 对数几率回归模型的损失函数 66 4.5 梯度下降法的数学表达(选修) 69 4.6 梯度下降法的Python实现 72 4.7 对数几率回归模型的Python实现 73 4.8 使用对数几率回归模型分类鸢尾花 75 4.8.1 使用LR分类精简版iris数据集 75 4.8.2 统计准确率 76 4.8.3 构造简化版iris数据集 77 4.8.4 划分函数train_test_split() 78 4.8.5 划分iris数据集 79 4.8.6 使用对数几率回归模型分类iris数据集 80 4.9 小结与补充说明 80 第5章 使用TensorFlow实现对数几率回归 82 5.1 深入LR参数更新 82 5.1.1 改进LogisticRegression类的update_weights()方法 82 5.1.2 改进LogisticRegression类的fit()方法 83 5.1.3 使用LR分类鸢尾花数据集并查看日志 84 5.2 使用TensorFlow自动求梯度 87 5.2.1 极简体验TensorFlow自动求梯度 87 5.2.2 NumPy数组的形状与维数 89 5.2.3 使用TensorFlow计算矩阵乘积 90 5.2.4 使用TensorFlow计算LR模型的激活值 90 5.2.5 使用代码定义LR模型的损失函数 92 5.2.6 使用TensorFlow求LR模型的损失函数对激活值的梯度 93 5.2.7 手动计算LR模型的损失函数对权值的梯度 93 5.2.8 使用TensorFlow求LR模型的损失函数对参数的梯度 94 5.3 使用自动求梯度实现LR 97 5.3.1 更新TensorFlow变量 97 5.3.2 实现LogisticRegressionV2类 98 5.3.3 使用LogisticRegressionV2分类精简版iris 101 5.3.4 极简体验模型调参 102 5.4 使用Sequential实现LR 102 5.5 小结与补充说明 106 第6章 LR图像分类 107 6.1 简化版MNIST数据集 107 6.1.1 生成索引数组 108 6.1.2 NumPy数组切片(取元素) 110 6.1.3 数据探查 111 6.1.4 使用np.concatenate()合并数组 113 6.1.5 构建简化版MNIST数据集 115 6.2 LR分类简化版MNIST 116 6.2.1 数据预处理之归一化 116 6.2.2 数据预处理之扁平化 117 6.2.3 LR分类简化版MNIST 119 6.2.4 修复LogisticRegression类 121 6.2.5 测试修复 123 6.3 小批量梯度下降 124 6.3.1 向量化编程 124 6.3.2 构造小批量样本 125 6.3.3 计算LR损失函数关于线性模型的导数dz 126 6.3.4 计算LR损失函数关于权值向量的导数dw 128 6.3.5 计算LR损失函数关于偏置量的导数db 130 6.3.6 小批量模型训练 133 6.3.7 小批量LR分类简化版MNIST 134 6.3.8 查看模型预测失误的样本 136 6.4 新问题与修复 137 6.4.1 发现问题与复现问题 138 6.4.2 原因分析及解决方法 138 6.4.3 向量化predict()方法 140 6.4.4 修复LogisticRegression类 141 6.4.5 评估模型方法evaluate() 142 6.4.6 提前终止控制开关 143 6.4.7 提前终止策略方法(选修) 145 6.4.8 重构LogisticRegression类 146 6.5 小结与补充说明 148 第7章 代码重构与计算图简介 150 7.1 构建神经网络的基本流程 150 7.1.1 模型架构及超参数 150 7.1.2 初始化模型参数 152 7.1.3 前向传播、反向传播与计算图 152 7.2 重构LogisticRegression类 153 7.2.1 重新构造简化版MNIST数据集 153 7.2.2 探查简化版MNIST数据集 154 7.2.3 LR分类简化版MNIST 155 7.2.4 重构LogisticRegression类 156 7.2.5 测试重构版LogisticRegression类 157 7.3 使用TensorFlow定义并训练模型 158 7.4 体验TensorBoard 161 7.5 随机化 161 7.5.1 使用np.random.random()生成随机数 162 7.5.2 随机初始化权值向量 162 7.5.3 使用np.random.shuffle()混淆数组 164 7.5.4 随机访问样本 165 7.5.5 随机梯度下降 166 7.5.6 小批量随机梯度下降 168 7.6 小结与补充说明 168 第8章 两层神经网络 170 8.1 单层神经网络之局限性 170 8.1.1 线性可分 170 8.1.2 线性不可分 170 8.2 两层神经网络前向传播 172 8.2.1 部分记号说明 172 8.2.2 矩阵乘积的代码实现 174 8.2.3 隐层前向传播的数学表达 175 8.2.4 隐层前向传播的代码实现 176 8.2.5 输出层前向传播的数学表达 178 8.2.6 输出层前向传播的代码实现 179 8.3 两层神经网络反向传播 180 8.3.1 输出层反向传播的数学表达 181 8.3.2 输出层反向传播的代码实现 182 8.3.3 隐层反向传播的数学表达 183 8.3.4 隐层反向传播的代码实现 184 8.4 两层神经网络实现异或运算 185 8.5 实现MLPClassifier类 187 8.5.1 构造器__init__() 188 8.5.2 参数初始化initialize_params() 188 8.5.3 前向传播forward_propagation() 189 8.5.4 反向传播backward_propagation() 189 8.5.5 参数更新update_params() 190 8.5.6 模型输出 190 8.5.7 模型启动训练fit() 191 8.5.8 测试MLPClassifier类 192 8.6 小结与补充说明 193 第9章 多层神经网络 194 9.1 多层感知机部分记号说明 194 9.2 重构多层神经网络 195 9.2.1 参数初始化 195 9.2.2 前向传播 197 9.2.3 反向传播参数更新 198 9.2.4 测试新版本 200 9.3 重构MLPClassifier类 201 9.3.1 构造器__init__() 201 9.3.2 参数初始化initialize_params() 202 9.3.3 前向传播forward_propagation() 202 9.3.4 反向传播参数更新 203 9.3.5 模型输出 204 9.3.6 模型启动训练fit() 205 9.3.7 测试MLPClassifier类 206 9.3.8 修复MLPClassifier类 206 9.3.9 测试修复 208 9.4 使用TensorFlow实现多层神经网络 209 9.4.1 使用TensorFlow解决异或问题 209 9.4.2 使用TensorFlow验证MLPClassifier类 210 9.5 使用MLPClassifier类实现对数几率回归 213 9.5.1 使用LR实现逻辑与函数 213 9.5.2 使用MLPClassifier类实现对数几率回归 214 9.5.3 使用TensorFlow验证代码实现 215 9.6 小结与补充说明 216 附录 标量、向量与矩阵简介 218 后记 222 ---------------------------8059420 - 人工智能极简编程入门(基于Python)--------------------------- 推荐序 前言 第1篇 语法篇 第1章 零基础入门AI解决方案 2 1.1 AI极简史(选修) 2 1.2 AI极简介 3 1.2.1 认识颜色:表征学习与深度学习 3 1.2.2 该往哪边旋转: 决策科学 4 1.2.3 转起来:控制论 5 1.2.4 自动驾驶与AI三大领域 5 1.2.5 有关AI三大领域的解释说明 6 1.3 史上最轻松的入门AI完整解决方案 6 1.3.1 兴趣模块 7 1.3.2 入门AI所需基础模块 9 1.3.3 入门模块及其他 11 1.4 入门好资源 12 1.4.1 慕课(MOOC) 12 1.4.2 框架 13 1.4.3 社区 13 1.4.4 数据集 14 1.4.5 论文 14 1.4.6 公司 15 1.5 学习新主张(最重点) 15 1.5.1 什么是“体验” 16 1.5.2 什么是“最简” 17 1.5.3 “最简体验”主张 18 1.6 如何使用本书(纯小白请重点阅读) 19 1.6.1 高效学习本书的首要原则 19 1.6.2 什么是“要点” 19 1.6.3 对纯零基础学习者的建议 20 1.6.4 使用本书GitHub提高学习效率(敲黑板级别的重点) 20 1.7 网络词汇简写与昵称 24 1.8 小结 26 第2章 环境搭建 27 2.1 最简体验Jupyter Notebook 27 2.1.1 手机上最简体验Jupyter 28 2.1.2 计算机上最简体验Jupyter 29 2.1.3 Notebook中运行Python代码 30 2.1.4 Notebook的最基本概念Cell 31 2.1.5 移动Cell 32 2.1.6 揭秘HelloWorld Cell 34 2.1.7 为啥要用Jupyter Notebook(选修) 34 2.1.8 Notebook服务与社区文化(选修) 35 2.1.9 Jupyter与MyBinder(选修) 36 2.2 Azure Notebook简介 37 2.3 Google Colaboratory简介 39 2.4 Windows下安装Anaconda 42 2.5 Linux下安装Anaconda 43 2.6 Mac下安装Anaconda 47 2.7 本地启动Jupyter Notebook 47 2.8 小结 51 2.9 习题 52 2.9.1 基础部分 52 2.9.2 扩展部分 53 第3章 零点一基础入门Python 54 3.1 最简体验print方法 54 3.2 更多print玩法 59 3.3 最简体验Python变量 63 3.4 最简体验Python列表与遍历 65 3.5 最简体验Python字典 67 3.6 项目实战:智能通讯录 69 3.7 分支语法if 71 3.7.1 最简体验分支if 71 3.7.2 在智能通讯录中使用分支语法 73 3.7.3 智能通讯录0.2 75 3.8 小结 78 3.8.1 真正掌握了吗 78 3.8.2 真的能用吗 79 3.8.3 真的智能吗 80 3.8.4 开发环境与协作学习 81 3.9 习题 83 3.9.1 基础部分 83 3.9.2 扩展部分 83 第4章 最简体验数字图像 84 4.1 最简体验像素 84 4.1.1 嵌套使用列表 84 4.1.2 列表取元素 86 4.1.3 嵌套使用遍历 88 4.1.4 print进阶 89 4.1.5 数值 90 4.1.6 使用“数据”list最简体验像素 92 4.2 最简体验代码画图 94 4.2.1 最简体验图像操作 95 4.2.2 最简体验plot 97 4.2.3 最简体验marker 100 4.2.4 更多marker属性 102 4.3 点与线 104 4.3.1 两点之间,线段最短 104 4.3.2 画更多的线 106 4.3.3 点与线:最简体验面向对象 108 4.4 高效交流,协作学习 110 4.5 正式认识Matplotlib 112 4.6 小结 115 4.7 习题 115 4.7.1 基础部分 115 4.7.2 扩展部分 115 第5章 最简体验数组 117 5.1 最简体验NumPy 117 5.1.1 从list到array 117 5.1.2 Notebook技能之Run all 120 5.1.3 生成一个array 121 5.1.4 操作array中的元素 123 5.2 基于数组进行画图 125 5.2.1 最简体验imshow()方法 125 5.2.2 改进图像显示效果 128 5.2.3 像素级操作图像 130 5.2.4 精准体验像素 132 5.3 最简体验Figure与Axes 135 5.3.1 最简体验容器 135 5.3.2 Python方法的返回值 137 5.3.3 最简体验figure的size 141 5.3.4 设置figure的size 142 5.3.5 保存图像 143 5.3.6 正式认识plt与mpl:Python包与模块的导入 144 5.4 小结 148 5.5 习题 148 5.5.1 基础部分 148 5.5.2 扩展部分 148 第2篇 算法篇 第6章 最简体验卷积运算 150 6.1 最简体验维度 150 6.1.1 数组的形状 150 6.1.2 最简体验数组维度 152 6.2 最简体验向量 154 6.2.1 从1+1=2开始,轻松理解向量 154 6.2.2 最简体验向量运算 156 6.2.3 向量乘法 158 6.3 最简体验一维卷积 160 6.3.1 滑动窗口 160 6.3.2 一维卷积 162 6.4 卷积得到的是什么 163 6.4.1 特征与学习 163 6.4.2 特征的组合 165 6.4.3 最简体验特征 167 6.4.4 归一化Normalization 169 6.4.5 归一化续(纯小白慎入) 171 6.5 小结 172 6.6 习题 173 6.6.1 基础部分 173 6.6.2 扩展部分 173 第7章 综合案例之滑动窗口示意图 174 7.1 正式认识subplots()方法 174 7.1.1 最简体验subplots()方法 174 7.1.2 最简体验axs对象 176 7.1.3 最简体验Axes坐标轴 179 7.1.4 坐标轴ticks 182 7.2 滑动窗口示意图0.1版 186 7.2.1 技术问答范本 186 7.2.2 起始、终止和步长 188 7.2.3 坐标轴tickline 191 7.2.4 坐标轴ticklabel 194 7.3 最常用图像元素之文本框 196 7.3.1 最简体验plt.text()方法 196 7.3.2 微调文本框 199 7.3.3 滑动窗口示意图0.2版 200 7.4 小结 202 7.5 习题 203 7.5.1 基础部分 203 7.5.2 扩展部分 203 第3篇 综合篇 第8章 源码解读 206 8.1 TensorFlow示例代码解读 206 8.1.1 basic classification示例简介 206 8.1.2 最简体验数据集 209 8.1.3 Fashion MNIST数据集的label 214 8.1.4 批量查看图像 217 8.2 源码解读 220 8.2.1 最简体验源码解读 220 8.2.2 解惑ticks的set与get 222 8.3 基于Notebook服务的开发环境复现 224 8.3.1 Cell内安装TensorFlow 224 8.3.2 最简体验Terminal 227 8.3.3 体验便捷精准复现 229 8.3.4 一键复现目标检测 231 8.4 小结 236 8.5 习题 237 8.5.1 基础部分 237 8.5.2 扩展部分 237 后记 238 |