| 作者 |
| 李金洪黄永昌[法] 奥雷利安·杰龙(Aurélien Géron) |
| 丛书名 |
| 出版社 |
| 机械工业出版社 |
| ISBN |
| 9787008051587 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 ---------------------------scikit-learn机器学习:常用算法原理及编程实战--------------------------- 本书通过通俗易懂的语言、丰富的图示和生动的实例,拨开了笼罩在机器学习上方复杂的数学“乌云”,让读者以较低的代价和门槛轻松入门机器学习。 本书共分为11章,介绍了在Python环境下学习scikit-learn机器学习框架的相关知识,涵盖的主要内容有机器学习概述、Python机器学习软件包、机器学习理论基础、k-近邻算法、线性回归算法、逻辑回归算法、决策树、支持向量机、朴素贝叶斯算法、PCA 算法和k-均值算法等。 本书适合有一定编程基础的读者阅读,尤其适合想从事机器学习、人工智能、深度学习及机器人相关技术的程序员和爱好者阅读。另外,相关院校和培训机构也可以将本书作为教材使用。 scikit-learn机器学习 常用算法原理及编程实战 出版发行:机械工业出版社(北京市西城区百万庄大街22号邮政编码:100037) 责任编辑:欧振旭 李华君 责任校对:姚志娟 印刷:中国电影出版社印刷厂 版次:2018年3月第1版第1次印刷 开本:186mm×240mm 1/16 印张:13.75 书号:ISBN 978-7-111-59024-8 定价:59.00元 凡购本书,如有缺页、倒页、脱页,由本社发行部调换 客服热线:(010)8837942688361066 投稿热线:(010)88379604 购书热线:(010)683262948837964968995259 读者信箱:hzit@hzbook.com 版权所有·侵权必究 . 封底无防伪标均为盗版 本书法律顾问:北京大成律师事务所韩光/邹晓东 ---------------------------深度学习之TensorFlow:入门、原理与进阶实战--------------------------- 本书针对TensorFlow 1.0以上版本编写,采用“理论+实践”的形式编写,通过大量的实例(共96个),全面而深入地讲解“深度学习神经网络原理”和“Tensorflow使用方法”两方面。书中的实例具有很强的实用,如对图片分类、制作一个简单的聊天机器人、进行图像识别等。书中的每章都配有一段教学视频,视频和图书具有一样的内容和结构,能帮助读者快速而全面地了解本章的内容。本书还免费提供了所有案例的源代码及数据样本,这些代码和样本不仅方便了读者学习,而且也能为以后的工作提供便利。 全书共分为3篇:第1篇“深度学习与TensorFlow基础”,包括快速了解人工智能与TensorFlow、搭建开发环境、TensorFlow基本开发步骤、TensorFlow编程基础、一个识别图中模糊的数字的案例;第2篇“深度学习基础——神经网络”介绍了神经网络的基础模型,包括单个神经元、多层神经网络、卷积神经网络、循环神经网络、自编码网络;第3篇“神经网络进阶”,是对基础网络模型的灵活运用与自由组合,是对前面知识的综合及拔高,包括深度神经网络、对抗神经网络。 本书结构清晰、案例丰富、通俗易懂、实用性强。特别适合TensorFlow深度学习的初学者和进阶读者作为自学教程阅读。另外,本书也适合社会培训学校作为培训教材使用,还适合大中专院校的相关专业作为教学参考书。 ---------------------------机器学习实战:基于Scikit-Learn和TensorFlow--------------------------- 本书主要分为两部分,第一部分(第1~8章)涵盖机器学习的基础理论知识和基本算法,从线性回归到随机森林等,可以帮助你掌握Scikit-Learn的常用方法;第二部份(第9~16章)探讨深度学习和常用框架TensorFlow,手把手教你使用TensorFlow搭建和训练深度神经网络,以及卷积神经网络。 |
| 目录 |
---------------------------scikit-learn机器学习:常用算法原理及编程实战--------------------------- 前言 第1章 机器学习介绍 1 1.1 什么是机器学习 1 1.2 机器学习有什么用 2 1.3 机器学习的分类 3 1.4 机器学习应用开发的典型步骤 4 1.4.1 数据采集和标记 4 1.4.2 数据清洗 5 1.4.3 特征选择 5 1.4.4 模型选择 5 1.4.5 模型训练和测试 5 1.4.6 模型性能评估和优化 5 1.4.7 模型使用 6 1.5 复习题 6 第2章 Python机器学习软件包 7 2.1 开发环境搭建 7 2.2 IPython简介 8 2.2.1 IPython基础 8 2.2.2 IPython图形界面 13 2.3 Numpy简介 15 2.3.1 Numpy数组 15 2.3.2 Numpy运算 19 2.4 Pandas简介 32 2.4.1 基本数据结构 32 2.4.2 数据排序 34 2.4.3 数据访问 34 2.4.4 时间序列 36 2.4.5 数据可视化 36 2.4.6 文件读写 38 2.5 Matplotlib简介 38 2.5.1 图形样式 38 2.5.2 图形对象 40 2.5.3 画图操作 46 2.6 scikit-learn简介 51 2.6.1 scikit-learn示例 51 2.6.2 scikit-learn一般性原理和通用规则 55 2.7 复习题 56 2.8 拓展学习资源 57 第3章 机器学习理论基础 58 3.1 过拟合和欠拟合 58 3.2 成本函数 59 3.3 模型准确性 60 3.3.1 模型性能的不同表述方式 61 3.3.2 交叉验证数据集 61 3.4 学习曲线 62 3.4.1 实例:画出学习曲线 62 3.4.2 过拟合和欠拟合的特征 65 3.5 算法模型性能优化 65 3.6 查准率和召回率 66 3.7 F1 Score 67 3.8 复习题 67 第4章 k-近邻算法 69 4.1 算法原理 69 4.1.1 算法优缺点 69 4.1.2 算法参数 70 4.1.3 算法的变种 70 4.2 示例:使用k-近邻算法进行分类 70 4.3 示例:使用k-近邻算法进行回归拟合 72 4.4 实例:糖尿病预测 74 4.4.1 加载数据 74 4.4.2 模型比较 75 4.4.3 模型训练及分析 77 4.4.4 特征选择及数据可视化 78 4.5 拓展阅读 80 4.5.1 如何提高k-近邻算法的运算效率 80 4.5.2 相关性测试 80 4.6 复习题 81 第5章 线性回归算法 83 5.1 算法原理 83 5.1.1 预测函数 83 5.1.2 成本函数 84 5.1.3 梯度下降算法 84 5.2 多变量线性回归算法 86 5.2.1 预测函数 86 5.2.2 成本函数 87 5.2.3 梯度下降算法 88 5.3 模型优化 89 5.3.1 多项式与线性回归 89 5.3.2 数据归一化 89 5.4 示例:使用线性回归算法拟合正弦函数 90 5.5 示例:测算房价 92 5.5.1 输入特征 92 5.5.2 模型训练 93 5.5.3 模型优化 94 5.5.4 学习曲线 95 5.6 拓展阅读 96 5.6.1 梯度下降迭代公式推导 96 5.6.2 随机梯度下降算法 96 5.6.3 标准方程 97 5.7 复习题 97 第6章 逻辑回归算法 98 6.1 算法原理 98 6.1.1 预测函数 98 6.1.2 判定边界 99 6.1.3 成本函数 100 6.1.4 梯度下降算法 102 6.2 多元分类 102 6.3 正则化 103 6.3.1 线性回归模型正则化 103 6.3.2 逻辑回归模型正则化 104 6.4 算法参数 104 6.5 实例:乳腺癌检测 106 6.5.1 数据采集及特征提取 106 6.5.2 模型训练 108 6.5.3 模型优化 110 6.5.4 学习曲线 111 6.6 拓展阅读 113 6.7 复习题 114 第7章 决策树 115 7.1 算法原理 115 7.1.1 信息增益 116 7.1.2 决策树的创建 119 7.1.3 剪枝算法 120 7.2 算法参数 121 7.3 实例:预测泰坦尼克号幸存者 122 7.3.1 数据分析 122 7.3.2 模型训练 123 7.3.3 优化模型参数 124 7.3.4 模型参数选择工具包 127 7.4 拓展阅读 130 7.4.1 熵和条件熵 130 7.4.2 决策树的构建算法 130 7.5 集合算法 131 7.5.1 自助聚合算法Bagging 131 7.5.2 正向激励算法boosting 131 7.5.3 随机森林 132 7.5.4 ExtraTrees算法 133 7.6 复习题 133 第8章 支持向量机 134 8.1 算法原理 134 8.1.1 大间距分类算法 134 8.1.2 松弛系数 136 8.2 核函数 138 8.2.1 最简单的核函数 138 8.2.2 相似性函数 140 8.2.3 常用的核函数 141 8.2.4 核函数的对比 142 8.3 scikit-learn里的SVM 144 8.4 实例:乳腺癌检测 146 8.5 复习题 149 第9章 朴素贝叶斯算法 151 9.1 算法原理 151 9.1.1 贝叶斯定理 151 9.1.2 朴素贝叶斯分类法 152 9.2 一个简单的例子 153 9.3 概率分布 154 9.3.1 概率统计的基本概念 154 9.3.2 多项式分布 155 9.3.3 高斯分布 158 9.4 连续值的处理 159 9.5 实例:文档分类 160 9.5.1 获取数据集 160 9.5.2 文档的数学表达 161 9.5.3 模型训练 163 9.5.4 模型评价 165 9.6 复习题 167 第10章 PCA算法 168 10.1 算法原理 168 10.1.1 数据归一化和缩放 169 10.1.2 计算协方差矩阵的特征向量 169 10.1.3 数据降维和恢复 170 10.2 PCA 算法示例 171 10.2.1 使用Numpy模拟PCA计算过程 171 10.2.2 使用sklearn进行PCA降维运算 173 10.2.3 PCA的物理含义 174 10.3 PCA 的数据还原率及应用 175 10.3.1 数据还原率 175 10.3.2 加快监督机器学习算法的运算速度 176 10.4 实例:人脸识别 176 10.4.1 加载数据集 176 10.4.2 一次失败的尝试 179 10.4.3 使用PCA来处理数据集 182 10.4.4 最终结果 185 10.5 拓展阅读 189 10.6 复习题 189 第11章 k-均值算法 190 11.1 算法原理 190 11.1.1 k-均值算法成本函数 191 11.1.2 随机初始化聚类中心点 191 11.1.3 选择聚类的个数 192 11.2 scikit-learn里的k-均值算法 192 11.3 使用k-均值对文档进行聚类分析 195 11.3.1 准备数据集 195 11.3.2 加载数据集 196 11.3.3 文本聚类分析 197 11.4 聚类算法性能评估 200 11.4.1 Adjust Rand Index 200 11.4.2 齐次性和完整性 201 11.4.3 轮廓系数 203 11.5 复习题 204 后记 205 ---------------------------深度学习之TensorFlow:入门、原理与进阶实战--------------------------- 配套学习资源 前言 第1篇 深度学习与TensorFlow基础 第1章 快速了解人工智能与TensorFlow 2 1.1 什么是深度学习 2 1.2 TensorFlow是做什么的 3 1.3 TensorFlow的特点 4 1.4 其他深度学习框架特点及介绍 5 1.5 如何通过本书学好深度学习 6 1.5.1 深度学习怎么学 6 1.5.2 如何学习本书 7 第2章 搭建开发环境 8 2.1 下载及安装Anaconda开发工具 8 2.2 在Windows平台下载及安装TensorFlow 11 2.3 GPU版本的安装方法 12 2.3.1 安装CUDA软件包 12 2.3.2 安装cuDNN库 13 2.3.3 测试显卡 14 2.4 熟悉Anaconda 3开发工具 15 2.4.1 快速了解Spyder 16 2.4.2 快速了解Jupyter Notebook 18 第3章 TensorFlow基本开发步骤——以逻辑回归拟合二维数据为例 19 3.1 实例1:从一组看似混乱的数据中找出y≈2x的规律 19 3.1.1 准备数据 20 3.1.2 搭建模型 21 3.1.3 迭代训练模型 23 3.1.4 使用模型 25 3.2 模型是如何训练出来的 25 3.2.1 模型里的内容及意义 25 3.2.2 模型内部的数据流向 26 3.3 了解TensorFlow开发的基本步骤 27 3.3.1 定义输入节点的方法 27 3.3.2 实例2:通过字典类型定义输入节点 28 3.3.3 实例3:直接定义输入节点 28 3.3.4 定义“学习参数”的变量 29 3.3.5 实例4:通过字典类型定义“学习参数” 29 3.3.6 定义“运算” 29 3.3.7 优化函数,优化目标 30 3.3.8 初始化所有变量 30 3.3.9 迭代更新参数到最优解 31 3.3.10 测试模型 31 3.3.11 使用模型 31 第4章 TensorFlow编程基础 32 4.1 编程模型 32 4.1.1 了解模型的运行机制 33 4.1.2 实例5:编写hello world程序演示session的使用 34 4.1.3 实例6:演示with session的使用 35 4.1.4 实例7:演示注入机制 35 4.1.5 建立session的其他方法 36 4.1.6 实例8:使用注入机制获取节点 36 4.1.7 指定GPU运算 37 4.1.8 设置GPU使用资源 37 4.1.9 保存和载入模型的方法介绍 38 4.1.10 实例9:保存/载入线性回归模型 38 4.1.11 实例10:分析模型内容,演示模型的其他保存方法 40 4.1.12 检查点(Checkpoint) 41 4.1.13 实例11:为模型添加保存检查点 41 4.1.14 实例12:更简便地保存检查点 44 4.1.15 模型操作常用函数总结 45 4.1.16 TensorBoard可视化介绍 45 4.1.17 实例13:线性回归的TensorBoard可视化 46 4.2 TensorFlow基础类型定义及操作函数介绍 48 4.2.1 张量及操作 49 4.2.2 算术运算函数 55 4.2.3 矩阵相关的运算 56 4.2.4 复数操作函数 58 4.2.5 规约计算 59 4.2.6 分割 60 4.2.7 序列比较与索引提取 61 4.2.8 错误类 62 4.3 共享变量 62 4.3.1 共享变量用途 62 4.3.2 使用get-variable获取变量 63 4.3.3 实例14:演示get_variable和Variable的区别 63 4.3.4 实例15:在特定的作用域下获取变量 65 4.3.5 实例16:共享变量功能的实现 66 4.3.6 实例17:初始化共享变量的作用域 67 4.3.7 实例18:演示作用域与操作符的受限范围 68 4.4 实例19:图的基本操作 70 4.4.1 建立图 70 4.4.2 获取张量 71 4.4.3 获取节点操作 72 4.4.4 获取元素列表 73 4.4.5 获取对象 73 4.4.6 练习题 74 4.5 配置分布式TensorFlow 74 4.5.1 分布式TensorFlow的角色及原理 74 4.5.2 分布部署TensorFlow的具体方法 75 4.5.3 实例20:使用TensorFlow实现分布式部署训练 75 4.6 动态图(Eager) 81 4.7 数据集(tf.data) 82 第5章 识别图中模糊的手写数字(实例21) 83 5.1 导入图片数据集 84 5.1.1 MNIST数据集介绍 84 5.1.2 下载并安装MNIST数据集 85 5.2 分析图片的特点,定义变量 87 5.3 构建模型 87 5.3.1 定义学习参数 87 5.3.2 定义输出节点 88 5.3.3 定义反向传播的结构 88 5.4 训练模型并输出中间状态参数 89 5.5 测试模型 90 5.6 保存模型 91 5.7 读取模型 92 第2篇 深度学习基础——神经网络 第6章 单个神经元 96 6.1 神经元的拟合原理 96 6.1.1 正向传播 98 6.1.2 反向传播 98 6.2 激活函数——加入非线性因素,解决线性模型缺陷 99 6.2.1 Sigmoid函数 99 6.2.2 Tanh函数 100 6.2.3 ReLU函数 101 6.2.4 Swish函数 103 6.2.5 激活函数总结 103 6.3 softmax算法——处理分类问题 103 6.3.1 什么是softmax 104 6.3.2 softmax原理 104 6.3.3 常用的分类函数 105 6.4 损失函数——用真实值与预测值的距离来指导模型的收敛方向 105 6.4.1 损失函数介绍 105 6.4.2 TensorFlow中常见的loss函数 106 6.5 softmax算法与损失函数的综合应用 108 6.5.1 实例22:交叉熵实验 108 6.5.2 实例23:one_hot实验 109 6.5.3 实例24:sparse交叉熵的使用 110 6.5.4 实例25:计算loss值 110 6.5.5 练习题 111 6.6 梯度下降——让模型逼近最小偏差 111 6.6.1 梯度下降的作用及分类 111 6.6.2 TensorFlow中的梯度下降函数 112 6.6.3 退化学习率——在训练的速度与精度之间找到平衡 113 6.6.4 实例26:退化学习率的用法举例 114 6.7 初始化学习参数 115 6.8 单个神经元的扩展——Maxout网络 116 6.8.1 Maxout介绍 116 6.8.2 实例27:用Maxout网络实现MNIST分类 117 6.9 练习题 118 第7章 多层神经网络——解决非线性问题 119 7.1 线性问题与非线性问题 119 7.1.1 实例28:用线性单分逻辑回归分析肿瘤是良性还是恶性的 119 7.1.2 实例29:用线性逻辑回归处理多分类问题 123 7.1.3 认识非线性问题 129 7.2 使用隐藏层解决非线性问题 130 7.2.1 实例30:使用带隐藏层的神经网络拟合异或操作 130 7.2.2 非线性网络的可视化及其意义 133 7.2.3 练习题 135 7.3 实例31:利用全连接网络将图片进行分类 136 7.4 全连接网络训练中的优化技巧 137 7.4.1 实例32:利用异或数据集演示过拟合问题 138 7.4.2 正则化 143 7.4.3 实例33:通过正则化改善过拟合情况 144 7.4.4 实例34:通过增大数据集改善过拟合 145 7.4.5 练习题 146 7.4.6 dropout——训练过程中,将部分神经单元暂时丢弃 146 7.4.7 实例35:为异或数据集模型添加dropout 147 7.4.8 实例36:基于退化学习率dropout技术来拟合异或数据集 149 7.4.9 全连接网络的深浅关系 150 7.5 练习题 150 第8章 卷积神经网络——解决参数太多问题 151 8.1 全连接网络的局限性 151 8.2 理解卷积神经网络 152 8.3 网络结构 153 8.3.1 网络结构描述 153 8.3.2 卷积操作 155 8.3.3 池化层 157 8.4 卷积神经网络的相关函数 158 8.4.1 卷积函数tf.nn.conv2d 158 8.4.2 padding规则介绍 159 8.4.3 实例37:卷积函数的使用 160 8.4.4 实例38:使用卷积提取图片的轮廓 165 8.4.5 池化函数tf.nn.max_pool(avg_pool) 167 8.4.6 实例39:池化函数的使用 167 8.5 使用卷积神经网络对图片分类 170 8.5.1 CIFAR介绍 171 8.5.2 下载CIFAR数据 172 8.5.3 实例40:导入并显示CIFAR数据集 173 8.5.4 实例41:显示CIFAR数据集的原始图片 174 8.5.5 cifar10_input的其他功能 176 8.5.6 在TensorFlow中使用queue 176 8.5.7 实例42:协调器的用法演示 178 8.5.8 实例43:为session中的队列加上协调器 179 8.5.9 实例44:建立一个带有全局平均池化层的卷积神经网络 180 8.5.10 练习题 183 8.6 反卷积神经网络 183 8.6.1 反卷积神经网络的应用场景 184 8.6.2 反卷积原理 184 8.6.3 实例45:演示反卷积的操作 185 8.6.4 反池化原理 188 8.6.5 实例46:演示反池化的操作 189 8.6.6 实例47:演示gradients基本用法 192 8.6.7 实例48:使用gradients对多个式子求多变量偏导 192 8.6.8 实例49:演示梯度停止的实现 193 8.7 实例50:用反卷积技术复原卷积网络各层图像 195 8.8 善用函数封装库 198 8.8.1 实例51:使用函数封装库重写CIFAR卷积网络 198 8.8.2 练习题 201 8.9 深度学习的模型训练技巧 201 8.9.1 实例52:优化卷积核技术的演示 201 8.9.2 实例53:多通道卷积技术的演示 202 8.9.3 批量归一化 204 8.9.4 实例54:为CIFAR图片分类模型添加BN 207 8.9.5 练习题 209 第9章 循环神经网络——具有记忆功能的网络 210 9.1 了解RNN的工作原理 210 9.1.1 了解人的记忆原理 210 9.1.2 RNN网络的应用领域 212 9.1.3 正向传播过程 212 9.1.4 随时间反向传播 213 9.2 简单RNN 215 9.2.1 实例55:简单循环神经网络实现——裸写一个退位减法器 215 9.2.2 实例56:使用RNN网络拟合回声信号序列 220 9.3 循环神经网络(RNN)的改进 225 9.3.1 LSTM网络介绍 225 9.3.2 窥视孔连接(Peephole) 228 9.3.3 带有映射输出的STMP 230 9.3.4 基于梯度剪辑的cell 230 9.3.5 GRU网络介绍 230 9.3.6 Bi-RNN网络介绍 231 9.3.7 基于神经网络的时序类分类CTC 232 9.4 TensorFlow实战RNN 233 9.4.1 TensorFlow中的cell类 233 9.4.2 通过cell类构建RNN 234 9.4.3 实例57:构建单层LSTM网络对MNIST数据集分类 239 9.4.4 实例58:构建单层GRU网络对MNIST数据集分类 240 9.4.5 实例59:创建动态单层RNN网络对MNIST数据集分类 240 9.4.6 实例60:静态多层LSTM对MNIST数据集分类 241 9.4.7 实例61:静态多层RNN-LSTM连接GRU对MNIST数据集分类 242 9.4.8 实例62:动态多层RNN对MNIST数据集分类 242 9.4.9 练习题 243 9.4.10 实例63:构建单层动态双向RNN对MNIST数据集分类 243 9.4.11 实例64:构建单层静态双向RNN对MNIST数据集分类 244 9.4.12 实例65:构建多层双向RNN对MNIST数据集分类 246 9.4.13 实例66:构建动态多层双向RNN对MNIST数据集分类 247 9.4.14 初始化RNN 247 9.4.15 优化RNN 248 9.4.16 实例67:在GRUCell中实现LN 249 9.4.17 CTC网络的loss——ctc_loss 251 9.4.18 CTCdecoder 254 9.5 实例68:利用BiRNN实现语音识别 255 9.5.1 语音识别背景 255 9.5.2 获取并整理样本 256 9.5.3 训练模型 265 9.5.4 练习题 272 9.6 实例69:利用RNN训练语言模型 273 9.6.1 准备样本 273 9.6.2 构建模型 275 9.7 语言模型的系统学习 279 9.7.1 统计语言模型 279 9.7.2 词向量 279 9.7.3 word2vec 281 9.7.4 实例70:用CBOW模型训练自己的word2vec 283 9.7.5 实例71:使用指定侯选采样本训练word2vec 293 9.7.6 练习题 296 9.8 处理Seq2Seq任务 296 9.8.1 Seq2Seq任务介绍 296 9.8.2 Encoder-Decoder框架 297 9.8.3 实例72:使用basic_rnn_seq2seq拟合曲线 298 9.8.4 实例73:预测当天的股票价格 306 9.8.5 基于注意力的Seq2Seq 310 9.8.6 实例74:基于Seq2Seq注意力模型实现中英文机器翻译 313 9.9 实例75:制作一个简单的聊天机器人 339 9.9.1 构建项目框架 340 9.9.2 准备聊天样本 340 9.9.3 预处理样本 340 9.9.4 训练样本 341 9.9.5 测试模型 342 9.10 时间序列的高级接口TFTS 344 第10章 自编码网络——能够自学习样本特征的网络 346 10.1 自编码网络介绍及应用 346 10.2 最简单的自编码网络 347 10.3 自编码网络的代码实现 347 10.3.1 实例76:提取图片的特征,并利用特征还原图片 347 10.3.2 线性解码器 351 10.3.3 实例77:提取图片的二维特征,并利用二维特征还原图片 351 10.3.4 实例78:实现卷积网络的自编码 356 10.3.5 练习题 358 10.4 去噪自编码 359 10.5 去噪自编码网络的代码实现 359 10.5.1 实例79:使用去噪自编码网络提取MNIST特征 359 10.5.2 练习题 363 10.6 栈式自编码 364 10.6.1 栈式自编码介绍 364 10.6.2 栈式自编码在深度学习中的意义 365 10.7 深度学习中自编码的常用方法 366 10.7.1 代替和级联 366 10.7.2 自编码的应用场景 366 10.8 去噪自编码与栈式自编码的综合实现 366 10.8.1 实例80:实现去噪自编码 367 10.8.2 实例81:添加模型存储支持分布训练 375 10.8.3 小心分布训练中的“坑” 376 10.8.4 练习题 377 10.9 变分自编码 377 10.9.1 什么是变分自编码 377 10.9.2 实例82:使用变分自编码模拟生成MNIST数据 377 10.9.3 练习题 384 10.10 条件变分自编码 385 10.10.1 什么是条件变分自编码 385 10.10.2 实例83:使用标签指导变分自编码网络生成MNIST数据 385 第3篇 深度学习进阶 第11章 深度神经网络 392 11.1 深度神经网络介绍 392 11.1.1 深度神经网络起源 392 11.1.2 经典模型的特点介绍 393 11.2 GoogLeNet模型介绍 394 11.2.1 MLP卷积层 394 11.2.2 全局均值池化 395 11.2.3 Inception 原始模型 396 11.2.4 Inception v1模型 396 11.2.5 Inception v2模型 397 11.2.6 Inception v3模型 397 11.2.7 Inception v4模型 399 11.3 残差网络(ResNet) 399 11.3.1 残差网络结构 399 11.3.2 残差网络原理 400 11.4 Inception-ResNet-v2结构 400 11.5 TensorFlow中的图片分类模型库——slim 400 11.5.1 获取models中的slim模块代码 401 11.5.2 models中的Slim结构 401 11.5.3 slim中的数据集处理 403 11.5.4 实例84:利用slim读取TFRecord中的数据 405 11.5.5 在slim中训练模型 407 11.6 使用slim中的深度网络模型进行图像的识别与检测 410 11.6.1 实例85:调用Inception_ResNet_v2模型进行图像识别 410 11.6.2 实例86:调用VGG模型进行图像检测 413 11.7 实物检测模型库——Object Detection API 417 11.7.1 准备工作 418 11.7.2 实例87:调用Object Detection API进行实物检测 421 11.8 实物检测领域的相关模型 425 11.8.1 RCNN基于卷积神经网络特征的区域方法 426 11.8.2 SPP-Net:基于空间金字塔池化的优化RCNN方法 426 11.8.3 Fast-R-CNN快速的RCNN模型 426 11.8.4 YOLO:能够一次性预测多个位置和类别的模型 427 11.8.5 SSD:比YOLO更快更准的模型 428 11.8.6 YOLO2:YOLO的升级版模型 428 11.9 机器自己设计的模型(NASNet) 428 第12章 对抗神经网络(GAN) 430 12.1 GAN的理论知识 430 12.1.1 生成式模型的应用 431 12.1.2 GAN的训练方法 431 12.2 DCGAN——基于深度卷积的GAN 432 12.3 InfoGAN和ACGAN:指定类别生成模拟样本的GAN 432 12.3.1 InfoGAN:带有隐含信息的GAN 432 12.3.2 AC-GAN:带有辅助分类信息的GAN 433 12.3.3 实例88:构建InfoGAN生成MNIST模拟数据 434 12.3.4 练习题 440 12.4 AEGAN:基于自编码器的GAN 441 12.4.1 AEGAN原理及用途介绍 441 12.4.2 实例89:使用AEGAN对MNIST数据集压缩特征及重建 442 12.5 WGAN-GP:更容易训练的GAN 447 12.5.1 WGAN:基于推土机距离原理的GAN 448 12.5.2 WGAN-GP:带梯度惩罚项的WGAN 449 12.5.3 实例90:构建WGAN-GP生成MNIST数据集 451 12.5.4 练习题 455 12.6 LSGAN(最小乘二GAN):具有WGAN 同样效果的GAN 455 12.6.1 LSGAN介绍 455 12.6.2 实例91:构建LSGAN生成MNIST模拟数据 456 12.7 GAN-cls:具有匹配感知的判别器 457 12.7.1 GAN-cls的具体实现 458 12.7.2 实例92:使用GAN-cls技术实现生成标签匹配的模拟数据 458 12.8 SRGAN——适用于超分辨率重建的GAN 461 12.8.1 超分辨率技术 461 12.8.2 实例93:ESPCN实现MNIST数据集的超分辨率重建 463 12.8.3 实例94:ESPCN实现flowers数据集的超分辨率重建 466 12.8.4 实例95:使用残差网络的ESPCN 472 12.8.5 SRGAN的原理 477 12.8.6 实例96:使用SRGAN实现flowers数据集的超分辨率修复 477 12.9 GAN网络的高级接口TFGAN 485 12.10 总结 486 ---------------------------机器学习实战:基于Scikit-Learn和TensorFlow--------------------------- 前言1 第一部分 机器学习基础 第1章 机器学习概览11 什么是机器学习12 为什么要使用机器学习12 机器学习系统的种类15 监督式/无监督式学习16 批量学习和在线学习21 基于实例与基于模型的学习24 机器学习的主要挑战29 训练数据的数量不足29 训练数据不具代表性30 质量差的数据32 无关特征32 训练数据过度拟合33 训练数据拟合不足34 退后一步35 测试与验证35 练习37 第2章 端到端的机器学习项目39 使用真实数据39 观察大局40 框架问题41 选择性能指标42 检查假设45 获取数据45 创建工作区45 下载数据48 快速查看数据结构49 创建测试集52 从数据探索和可视化中获得洞见56 将地理数据可视化57 寻找相关性59 试验不同属性的组合61 机器学习算法的数据准备62 数据清理63 处理文本和分类属性65 自定义转换器67 特征缩放68 转换流水线68 选择和训练模型70 培训和评估训练集70 使用交叉验证来更好地进行评估72 微调模型74 网格搜索74 随机搜索76 集成方法76 分析最佳模型及其错误76 通过测试集评估系统77 启动、监控和维护系统78 试试看79 练习79 第3章 分类80 MNIST80 训练一个二元分类器82 性能考核83 使用交叉验证测量精度83 混淆矩阵84 精度和召回率86 精度/召回率权衡87 ROC曲线90 多类别分类器93 错误分析95 多标签分类98 多输出分类99 练习100 第4章 训练模型102 线性回归103 标准方程104 计算复杂度106 梯度下降107 批量梯度下降110 随机梯度下降112 小批量梯度下降114 多项式回归115 学习曲线117 正则线性模型121 岭回归121 套索回归123 弹性网络125 早期停止法126 逻辑回归127 概率估算127 训练和成本函数128 决策边界129 Softmax回归131 练习134 第5章 支持向量机136 线性SVM分类136 软间隔分类137 非线性SVM分类139 多项式核140 添加相似特征141 高斯RBF核函数142 计算复杂度143 SVM回归144 工作原理145 决策函数和预测146 训练目标146 二次规划148 对偶问题149 核化SVM149 在线SVM151 练习152 第6章 决策树154 决策树训练和可视化154 做出预测155 估算类别概率157 CART训练算法158 计算复杂度158 基尼不纯度还是信息熵159 正则化超参数159 回归161 不稳定性162 练习163 第7章 集成学习和随机森林165 投票分类器165 bagging和pasting168 Scikit-Learn的bagging和pasting169 包外评估170 Random Patches和随机子空间171 随机森林172 极端随机树173 特征重要性173 提升法174 AdaBoost175 梯度提升177 堆叠法181 练习184 第8章 降维185 维度的诅咒186 数据降维的主要方法187 投影187 流形学习189 PCA190 保留差异性190 主成分191 低维度投影192 使用Scikit-Learn192 方差解释率193 选择正确数量的维度193 PCA压缩194 增量PCA195 随机PCA195 核主成分分析196 选择核函数和调整超参数197 局部线性嵌入199 其他降维技巧200 练习201 第二部分 神经网络和深度学习 第9章 运行TensorFlow205 安装207 创建一个计算图并在会话中执行208 管理图209 节点值的生命周期210 TensorFlow中的线性回归211 实现梯度下降211 手工计算梯度212 使用自动微分212 使用优化器214 给训练算法提供数据214 保存和恢复模型215 用TensorBoard来可视化图和训练曲线216 命名作用域219 模块化220 共享变量222 练习225 第10章 人工神经网络简介227 从生物神经元到人工神经元227 生物神经元228 具有神经元的逻辑计算229 感知器230 多层感知器和反向传播233 用TensorFlow的高级API来训练MLP236 使用纯TensorFlow训练DNN237 构建阶段237 执行阶段240 使用神经网络241 微调神经网络的超参数242 隐藏层的个数242 每个隐藏层中的神经元数243 激活函数243 练习244 第11章 训练深度神经网络245 梯度消失/爆炸问题245 Xavier初始化和He初始化246 非饱和激活函数248 批量归一化250 梯度剪裁254 重用预训练图层255 重用TensorFlow模型255 重用其他框架的模型256 冻结低层257 缓存冻结层257 调整、丢弃或替换高层258 模型动物园258 无监督的预训练259 辅助任务中的预训练260 快速优化器261 Momentum优化261 Nesterov梯度加速262 AdaGrad263 RMSProp265 Adam优化265 学习速率调度267 通过正则化避免过度拟合269 提前停止269 1和2正则化269 dropout270 最大范数正则化273 数据扩充274 实用指南275 练习276 第12章 跨设备和服务器的分布式TensorFlow279 一台机器上的多个运算资源280 安装280 管理GPU RAM282 在设备上操作284 并行执行287 控制依赖288 多设备跨多服务器288 开启一个会话290 master和worker服务290 分配跨任务操作291 跨多参数服务器分片变量291 用资源容器跨会话共享状态292 使用TensorFlow队列进行异步通信294 直接从图中加载数据299 在TensorFlow集群上并行化神经网络305 一台设备一个神经网络305 图内与图间复制306 模型并行化308 数据并行化309 练习314 第13章 卷积神经网络315 视觉皮层的组织结构315 卷积层317 过滤器318 多个特征图的叠加319 TensorFlow实现321 内存需求323 池化层323 CNN架构325 LeNet-5326 AlexNet327 GoogLeNet328 ResNet331 练习334 第14章 循环神经网络337 循环神经元337 记忆单元339 输入和输出序列340 TensorFlow中的基本RNN341 通过时间静态展开342 通过时间动态展开344 处理长度可变输入序列344 处理长度可变输出序列345 训练RNN346 训练序列分类器346 训练预测时间序列348 创造性的RNN352 深层RNN353 在多个GPU中分配一个深层RNN354 应用丢弃机制355 多个时间迭代训练的难点356 LSTM单元357 窥视孔连接359 GRU单元359 自然语言处理361 单词嵌入361 用于机器翻译的编码器-解码器网络362 练习364 第15章 自动编码器366 高效的数据表示366 使用不完整的线性自动编码器实现PCA368 栈式自动编码器369 TensorFlow实现370 权重绑定371 一次训练一个自动编码器372 重建可视化374 特征可视化375 使用堆叠的自动编码器进行无监控的预训练376 去噪自动编码器377 TensorFlow 实现378 稀疏自动编码器379 TensorFlow 实现380 变分自动编码器381 生成数字384 其他自动编码器385 练习386 第16章 强化学习388 学习奖励最优化389 策略搜索390 OpenAI gym 介绍391 神经网络策略394 评估行为:信用分配问题396 策略梯度397 马尔可夫决策过程401 时间差分学习与Q学习405 探索策略406 逼近Q学习407 使用深度Q学习玩吃豆人游戏407 练习414 致谢415 附录A 练习答案416 附录B 机器学习项目清单438 附录C SVM对偶问题444 附录D 自动微分447 附录E 其他流行的ANN架构453 |