图解深度学习与神经网络:从张量到TensorFlow实现
  • 推荐2
  • 收藏10
  • 浏览2.4K

图解深度学习与神经网络:从张量到TensorFlow实现

张平 (作者) 

  • 书  号:978-7-121-34745-0
  • 出版日期:2018-09-07
  • 页  数:336
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 维护人:郑柳洁
电子书 ¥49.00
购买电子书
纸质版 ¥79.00
290张图+110个可执行的TensorFlow示例程序+算法示例
易懂的神经网络深度学习人工智能参考书
源代码文件供下载
本书适合神经网络、深度学习、TensorFlow 的入门者阅读。
290张图+110个可执行的TensorFlow示例程序+算法示例
易懂的神经网络深度学习人工智能参考书
源代码文件供下载
前言
2016 年是人工智能进入大众视野的一年,从AlphaGo 到无人驾驶,从量子计算机到马斯克的太空计划,每一个焦点事件的背后都与人工智能有着很大的联系。2016 年至今,短短两年的时间,人工智能在与人类生活息息相关的医疗健康、金融、零售、娱乐等方面,发挥出了巨大的潜能。
从应用领域来看,人工智能可应用于机器视觉、指纹识别、人脸识别、视网膜识别、虹膜识别、掌纹识别、专家系统、自动规划、智能搜索、语音识别、自动程序设计、智能控制、机器翻译、智能对话机器人等领域。掀起这股人工智能热潮最重要的技术之一就是深度学习(Deep Learning)技术。
本书的整体架构
本书由14 章组成。第1 章和第2 章主要介绍TensorFlow 的安装和基础使用知识。第3 章主要介绍高等代数中的梯度和求解最优化问题的梯度下降法。第4 章介绍如何使用第1章~第3 章中讲的知识解决机器学习中比较简单的回归问题,便于读者学习后续章节中全连接神经网络和卷积神经网络的知识。第5 章和第6 章主要介绍全连接神经网络,包括全连接神经网络的计算步骤,如何利用全连接神经网络构建分类模型,以及全连接神经网络的梯度反向传播算法,等等。第7 章主要介绍一维离散卷积。第8 章主要介绍二维离散卷积。第9章主要介绍池化操作。第10 章主要介绍经典的卷积神经网络。第11 章~第13 章主要介绍卷积神经网络的梯度反向传播。第14 章介绍搭建神经网络的主要函数。本书中的每一章都会涉及大量的技术细节描述,便于读者掌握深度学习背后的基础知识及技术细节。
本书特色
众所周知,掌握机器学习理论的数学门槛比较高,而大量优秀的机器学习、深度学习开源框架在工程实现上帮助我们越过了这些数学细节,所以很多深度学习的相关书籍是以讲解项目为主要目标。本书试图从另一个角度引导入门者直接面对深度学习背后的数学基础,并进行了以下两点尝试:
(1) 不同书籍对同一个数学公式的符号表达可能不同,这给入门者带来了比较大的困扰。
本书试图通过简单的示例和图例的形式展示复杂抽象的数学公式背后的计算原理,通过示例更好地理解复杂抽象的公式。
(2) 作者采用手动计算和利用程序代码进行处理这两种方式讲解示例,两种方式的结果可以相互验证,帮助入门者更好地理解开源框架中的函数接口。
作者认为,想在人工智能路上走得更远,内功扎实是致胜关键。希望本书可以帮助入门者夯实基础。
本书面向的读者
本书的目标读者是想学习神经网络和深度学习的初学者。同时,本书的示例代码基于TensorFlow 的Python API,所以需要读者具备基本的Python 编程基础。
致谢
感谢我的父母、姐姐一家人一直以来对我生活和工作的支持。
感谢TensorFlow 开源库的所有贡献者。
感谢电子工业出版社博文视点的郑柳洁老师,在本书写作的过程中,不厌其烦地解答我遇到的各种问题,感谢她一直以来的支持和肯定。
我们期待您的反馈
限于篇幅,加之作者水平有限,书中疏漏和错误之处在所难免,恳请读者批评并指正,我们视读者的满意为己任,视读者的反馈意见为无价之宝,如果您发现了错误或者对书中内容有任何建议,都可以将其发送至电子邮箱wxcdzhangping@126.com,也可以登录博文视点官网,在本书页面上留言。本书中所有样例的代码,均可从博文视点官网下载。
作者:张平

目录

1 深度学习及TensorFlow 简介1
1.1 深度学习. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 TensorFlow 简介及安装. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2 基本的数据结构及运算6
2.1 张量. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.1.1 张量的定义. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.1.2 Tensor 与Numpy 的ndarray 转换. . . . . . . . . . . . . . . . . . . . . . 9
2.1.3 张量的尺寸. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.1.4 图像转换为张量. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2 随机数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.1 均匀(平均)分布随机数. . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.2 正态(高斯)分布随机数. . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3 单个张量的运算. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3.1 改变张量的数据类型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3.2 访问张量中某一个区域的值. . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3.3 转置. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.3.4 改变形状. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.3.5 归约运算:求和、平均值、最大(小)值. . . . . . . . . . . . . . . . . 29
2.3.6 最大(小)值的位置索引. . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.4 多个张量之间的运算. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.4.1 基本运算:加、减、乘、除. . . . . . . . . . . . . . . . . . . . . . . . . 35
2.4.2 乘法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.4.3 张量的连接. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.4.4 张量的堆叠. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.4.5 张量的对比. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.5 占位符. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.6 Variable 对象. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3 梯度及梯度下降法52
3.1 梯度. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.2 导数计算的链式法则. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.2.1 多个函数和的导数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.2.2 复合函数的导数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.2.3 单变量函数的驻点、极值点、鞍点. . . . . . . . . . . . . . . . . . . . . 55
3.2.4 多变量函数的驻点、极值点、鞍点. . . . . . . . . . . . . . . . . . . . . 57
3.2.5 函数的泰勒级数展开. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
3.2.6 梯度下降法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.3 梯度下降法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
3.3.1 Adagrad 法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
3.3.2 Momentum 法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
3.3.3 NAG 法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3.3.4 RMSprop 法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
3.3.5 具备动量的RMSprop 法. . . . . . . . . . . . . . . . . . . . . . . . . . . 80
3.3.6 Adadelta 法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
3.3.7 Adam 法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
3.3.8 Batch 梯度下降. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
3.3.9 随机梯度下降. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
3.3.10 mini-Batch 梯度下降. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
3.4 参考文献. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
4 回归分析88
4.1 线性回归分析. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
4.1.1 一元线性回归. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
4.1.2 保存和加载回归模型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
4.1.3 多元线性回归. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
4.2 非线性回归分析. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
5 全连接神经网络102
5.1 基本概念. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
5.2 计算步骤. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
5.3 神经网络的矩阵表达. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
5.4 激活函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
5.4.1 sigmoid 激活函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
5.4.2 tanh 激活函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
5.4.3 ReLU 激活函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
5.4.4 leaky relu 激活函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
5.4.5 elu 激活函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
5.4.6 crelu 激活函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
5.4.7 selu 激活函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
5.4.8 relu6 激活函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
5.4.9 softplus 激活函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
5.4.10 softsign 激活函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
5.5 参考文献. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
6 神经网络处理分类问题125
6.1 TFRecord 文件. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
6.1.1 将ndarray 写入TFRecord 文件. . . . . . . . . . . . . . . . . . . . . . . . 125
6.1.2 从TFRecord 解析数据. . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
6.2 建立分类问题的数学模型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
6.2.1 数据类别(标签) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
6.2.2 图像与TFRecrder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
6.2.3 建立模型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
6.3 损失函数与训练模型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
6.3.1 sigmoid 损失函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
6.3.2 softmax 损失函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
6.3.3 训练和评估模型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
6.4 全连接神经网络的梯度反向传播. . . . . . . . . . . . . . . . . . . . . . . . . . . 151
6.4.1 数学原理及示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
6.4.2 梯度消失. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
7 一维离散卷积168
7.1 一维离散卷积的计算原理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
7.1.1 full 卷积. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
7.1.2 valid 卷积. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
7.1.3 same 卷积. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
7.1.4 full、same、valid 卷积的关系. . . . . . . . . . . . . . . . . . . . . . . . 171
7.2 一维卷积定理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
7.2.1 一维离散傅里叶变换. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
7.2.2 卷积定理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
7.3 具备深度的一维离散卷积. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
7.3.1 具备深度的张量与卷积核的卷积. . . . . . . . . . . . . . . . . . . . . . . 182
7.3.2 具备深度的张量分别与多个卷积核的卷积. . . . . . . . . . . . . . . . . 183
7.3.3 多个具备深度的张量分别与多个卷积核的卷积. . . . . . . . . . . . . . . 185
8 二维离散卷积187
8.1 二维离散卷积的计算原理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
8.1.1 full 卷积. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
8.1.2 same 卷积. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
8.1.3 valid 卷积. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
8.1.4 full、same、valid 卷积的关系. . . . . . . . . . . . . . . . . . . . . . . . 192
8.1.5 卷积结果的输出尺寸. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
8.2 离散卷积的性质. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
8.2.1 可分离的卷积核. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
8.2.2 full 和same 卷积的性质. . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
8.2.3 快速计算卷积. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
8.3 二维卷积定理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
8.3.1 二维离散傅里叶变换. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
8.3.2 二维与一维傅里叶变换的关系. . . . . . . . . . . . . . . . . . . . . . . . 201
8.3.3 卷积定理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
8.3.4 利用卷积定理快速计算卷积. . . . . . . . . . . . . . . . . . . . . . . . . 203
8.4 多深度的离散卷积. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
8.4.1 基本的多深度卷积. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
8.4.2 一个张量与多个卷积核的卷积. . . . . . . . . . . . . . . . . . . . . . . . 207
8.4.3 多个张量分别与多个卷积核的卷积. . . . . . . . . . . . . . . . . . . . . 208
8.4.4 在每一深度上分别卷积. . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
8.4.5 单个张量与多个卷积核在深度上分别卷积. . . . . . . . . . . . . . . . . 212
8.4.6 分离卷积. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
9 池化操作218
9.1 same 池化. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
9.1.1 same 最大值池化. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
9.1.2 多深度张量的same 池化. . . . . . . . . . . . . . . . . . . . . . . . . . . 221
9.1.3 多个三维张量的same 最大值池化. . . . . . . . . . . . . . . . . . . . . . 223
9.1.4 same 平均值池化. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
9.2 valid 池化. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
9.2.1 多深度张量的vaild 池化. . . . . . . . . . . . . . . . . . . . . . . . . . . 228
9.2.2 多个三维张量的valid 池化. . . . . . . . . . . . . . . . . . . . . . . . . . 229
10 卷积神经网络231
10.1 浅层卷积神经网络. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
10.2 LeNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
10.3 AlexNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
10.3.1 AlexNet 网络结构详解. . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
10.3.2 dropout 及其梯度下降. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
10.4 VGGNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
10.5 GoogleNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
10.5.1 网中网结构. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
10.5.2 Batch Normalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
10.5.3 BN 与卷积运算的关系. . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
10.5.4 指数移动平均. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
10.5.5 带有BN 操作的卷积神经网络. . . . . . . . . . . . . . . . . . . . . . . . 276
10.6 ResNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
10.7 参考文献. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
11 卷积的梯度反向传播286
11.1 valid 卷积的梯度. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
11.1.1 已知卷积核,对未知张量求导. . . . . . . . . . . . . . . . . . . . . . . . 286
11.1.2 已知输入张量,对未知卷积核求导. . . . . . . . . . . . . . . . . . . . . 290
11.2 same 卷积的梯度. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
11.2.1 已知卷积核,对输入张量求导. . . . . . . . . . . . . . . . . . . . . . . . 294
11.2.2 已知输入张量,对未知卷积核求导. . . . . . . . . . . . . . . . . . . . . 298
12 池化操作的梯度303
12.1 平均值池化的梯度. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
12.2 最大值池化的梯度. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
13 BN 的梯度反向传播311
13.1 BN 操作与卷积的关系. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
13.2 示例详解. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
14 TensorFlow 搭建神经网络的主要函数324

读者评论

  • 书的错误太多了 67页第一行0.25应为0.05

    刘文z发表于 2019/11/29 20:29:29
  • 53页 少了个import numpy as np吧

    刘文z发表于 2019/11/25 16:38:10
  • 123不应该是789吗?

    刘文z发表于 2019/11/25 14:50:35
  • 计算出错

    xmr1890发表于 2019/10/2 14:05:29
  • 第八章210页,3个2行2列2深度的卷积核确定写的没问题?

    liu98765mm发表于 2019/7/6 3:07:11

下载资源

电子书版本

  • Epub

图书类别

推荐用户

相关图书

Knative最佳实践

Jacques Chester (作者) 赵吉壮 杨云锋 (译者)

本书主要围绕 Knative 进行展开,主要作者是 Knative 专家(社区作者)Jacques Chester ,先后从 Knative 构建、扩缩容、事件...

¥118.00

ATT&CK框架实践指南

过去,入侵检测能力的度量是个公认的行业难题,各个企业得安全负责人每年在入侵防护上都投入大量费用,但几乎没有人能回答CEO 的问题:“买了这么多产品,我们的入侵防...

¥148.00

云原生数据库:原理与实践

周恩昌 (作者)

本书详细剖析了作为核心基础软件系统的数据库在云计算时代的技术演进历程,从架构设计、实现机制和系统优化等多个角度阐述传统数据库技术是如何一步步发展到云原生形态的。...

¥99.00

SequoiaDB分布式数据库权威指南

黄达玮 (作者)

本书旨在介绍 SequoiaDB 巨杉数据库的基本概念、应用场景、企业级应用案例、数据库实例创建与管理方式、数据库集群管理的基本策略、以及性能调优和问题诊断。...

¥99.00

最强iOS和macOS安全宝典

Jonathan Levin (作者) 郑旻 (译者)

《最强iOS和macOS安全宝典》以苹果操作系统的安全为主题,主要面向苹果高级用户、系统管理员、安全研究人员和黑客。<br>本书主要分三个部分:第一部分重点介绍...

¥179.00

极限黑客攻防:CTF赛题揭秘

王新辉 天融信阿尔法实验室 张黎元 郭勇生 (作者)

CTF在网络安全领域特指网络安全技术人员之间进行技术竞技的一种比赛。CTF代替了以往黑客通过互相发起真实攻击进行技术比拼的方式,题目来自日常工作环境,并将其中的...

¥99.00