猜你喜欢
深度学习之TensorFlow:入门、原理与进阶实战

深度学习之TensorFlow:入门、原理与进阶实战

书籍作者:李金洪 ISBN:9787111590057
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:8519
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

本书采用“理论+实践”的形式编写,通过大量的实例(共96个),全面而深入地讲解了深度学习神经网络原理和TensorFlow使用方法两方面的内容。书中的实例具有很强的实用性,如对图片分类、制作一个简单的聊天机器人、进行图像识别等。书中每章都配有一段教学视频,视频和图书的重点内容对应,能帮助读者快速地掌握该章的重点内容。本书还免费提供了所有实例的源代码及数据样本,这不仅方便了读者学习,而且也能为读者以后的工作提供便利。

本书共12章,分为3篇。第1篇深度学习与TensorFlow基础,包括快速了解人工智能与TensorFlow、搭建开发环境、TensorFlow基本开发步骤、TensorFlow编程基础、识别图中模糊的手写数字等内容;第2篇深度学习基础——神经网络,介绍了神经网络的基础模型,包括单个神经元、多层神经网络、卷积神经网络、循环神经网络、自编码网络等内容;第3篇深度学习进阶,是对基础网络模型的灵活运用与自由组合,是对前面知识的综合及拔高,包括深度神经网络和对抗神经网络两章内容。

本书结构清晰,案例丰富,通俗易懂,实用性强,特别适合TensorFlow深度学习的初学者和进阶读者作为自学教程阅读。另外,本书也适合作为相关培训学校的教材,以及各大院校相关专业的教学参考书。

30秒极速了解本书精华内容:

1. 深度学习与TensorFlow基础

快速了解人工智能与TensorFlow

搭建开发环境

TensorFlow基本开发步骤——以逻辑回归拟合二维数据为例

TensorFlow编程基础

识别图中模糊的手写数字(实例21)

2. 深度学习基础——神经网络

单个神经元

多层神经网络——解决非线性问题

卷积神经网络——解决参数太多问题

循环神经网络——具有记忆功能的网络

自编码网络——能够自学习样本特征的网络

3. 深度学习进阶

深度神经网络

对抗神经网络(GAN)


作者简介

李金洪 长期拼搏在一线的高级软件工程师。先后担任过CAD算法工程师、手机游戏主程、架构师、项目经理、CTO、部门经理、资深产品总监和CEO等职务。现任代码医生工作室主程序员。精通C、C++、汇编、Python、Java和Go等编程语言;擅长神经网络、算法、协议分析、逆向和移动互联网安全架构等技术。在深度学习领域中参与过某移动互联网后台的OCR项目、某娱乐节目机器人的语音识别和声纹识别项目,以及活体检测、金融和安全等领域的多个AI项目。发布过两套关于CNTK深度学习框架的视频教程。

编辑推荐

?

磁云科技创始人/京东终身荣誉技术顾问李大学推荐

创客总部/创客共赢基金合伙人李建军推荐

一线研发工程师以14年开发经验的视角全面解析TensorFlow应用

涵盖数值、语音、语义、图像等多个领域96个有较高应用价值的深度学习案例

赠送12套同步配套教学视频 + 113套源代码文件(带配套样本)

内容全面,应用性强,从有监督学习到半监督学习,从简单的数据分类到语音、语言和图像分类乃至样本生成等一系列前沿技术,均有介绍

语言通俗易懂,拒绝生僻的术语,拒绝生僻的公式符号,落地性强

穿插了几十个需要读者注意的知识要点和难点,分享作者积累的宝贵经验


前言

前言  最近,人工智能话题热度不减,IT领域甚至言必称之。
  从人工智能的技术突破看,在语音和图像识别等方面,在特定领域和特定类别下,计算机的处理能力已经接近甚至超过人类。此外,人工智能在人们传统认为很难由机器取得成功的认知领域也有所突破。
  我国目前在人工智能技术研究方面已经走在了世界前列,人工智能应用领域已经非常宽广,涵盖了从智能机器人到智能医疗、智能安防、智能家居和智慧城市,再到语音识别、手势控制和自动驾驶等领域。
  百度CEO李彦宏判断:人工智能是一个非常大的产业,会持续很长时间,在未来的20年到50年间都会是快速发展的。
  人工智能“火”起来主要有3个原因:互联网大量的数据、强大的运算能力、深度学习的突破。其中,深度学习是机器学习方法之一,是让计算机从周围世界或某个特定方面的范例中进行学习从而变得更加智能的一种方式。
  面对人工智能如火如荼的发展趋势,IT领域也掀起了一波深度学习热潮,但是其海量的应用数学术语和公式,将不少爱好者拒之门外。本书由浅入深地讲解了深度学习的知识体系,将专业性较强的公式和理论转化成通俗易懂的简单逻辑描述语言,帮助非数学专业的爱好者搭上人工智能的“列车”。
本书特色  1.配教学视频  为了让读者更好地学习本书内容,作者对每一章内容都录制了教学视频。借助这些视频,读者可以更轻松地学习。
  2.大量的典型应用实例,实战性强,有较高的应用价值  本书提供了96个深度学习相关的网络模型实例,将原理的讲解最终都落实到了代码实现上。而且这些实例会随着图书内容的推进,不断趋近于工程化的项目,具有很高的应用价值和参考性。
  3.完整的源代码和训练数据集  书中所有的代码都提供了免费下载途径,使读者学习更方便。另外,读者可以方便地获得书中案例的训练数据集。如果数据集是来源于网站,则提供了有效的下载链接;如果是作者制作的,在随书资源中可直接找到。
  4.由浅入深、循序渐进的知识体系,通俗易懂的语言  本书按照读者的接受度搭建知识体系,由浅入深、循序渐进,并尽最大可能地将学术语言转化为容易让读者理解的语言。
  5.拒绝生僻公式和符号,落地性强  在文字表达上,本书也尽量使用计算机语言编写的代码来表述对应的数学公式,这样即使不习惯用数学公式的读者,也能够容易地理解。
  6.内容全面,应用性强  本书提供了从单个神经元到对抗神经网络,从有监督学习到半监督学习,从简单的数据分类到语音、语言、图像分类乃至样本生成等一系列前沿技术,具有超强的实用性,读者可以随时查阅和参考。
  7.大量宝贵经验的分享  授之以鱼不如授之以渔。本书在讲解知识点的时候,更注重方法与经验的传递。全书共有几十个“注意”标签,其中内容都是“含金量”很高的成功经验分享与易错事项总结,有关于理论理解的,有关于操作细节的。这些内容可以帮助读者在学习的路途上披荆斩棘,快速融会贯通。
本书内容  第1篇 深度学习与TensorFlow基础(第1~5章)  第1章快速了解人工智能与TensorFlow,主要介绍了以下内容:
  (1)人工智能、深度学习、神经网络三者之间的关系,TensorFlow软件与深度学习之间的关系及其特点;  (2)其他主流深度学习框架的特点;  (3)一些关于如何学习深度学习和使用本书的建议。
  第2章搭建开发环境,介绍了如何搭建TensorFlow开发环境。具体包括:
  (1)TensorFlow的下载及在不同平台上的安装方法;  (2)TensorFlow开发工具(本书用的是Anaconda开发工具)的下载、安装和使用。
  如要安装GPU版的TensorFlow,书中也详细介绍了如何安装CUDA驱动来支持GPU运算。
  第3章TensorFlow基本开发步骤——以逻辑回归拟合二维数据为例,首先是一个案例,有一组数据,通过TensorFlow搭配模型并训练模型,让模型找出其中y≈2x的规律。在这个案例的基础上,引出了在神经网络中“模型”的概念,并介绍了TensorFlow开发一个模型的基本步骤。
  第4章TensorFlow编程基础,主要介绍了TensorFlow框架中编程的基础知识。具体包括:
  (1)编程模型的系统介绍;  (2)TensorFlow基础类型及操作函数;  (3)共享变量的作用及用法;  (4)与“图”相关的一些基本操作;  (5)分布式配置TensorFlow的方法。
  第5章识别图中模糊的手写数字(实例21),是一个完整的图像识别实例,使用TensorFlow构建并训练了一个简单的神经网络模型,该模型能识别出图片中模糊的手写数字5、0、4、1。通过这个实例,读者一方面可以巩固第4章所学的TensorFlow编程基础知识,另一方面也对神经网络有一个大体的了解,并掌握最简单的图像识别方法。
  第2篇 深度学习基础——神经网络中(第6~10章)  第6章单个神经元,介绍了神经网络中最基础的单元。首先讲解了神经元的拟合原理,然后分别介绍了模型优化所需的一些关键技术:
* 激活函数——加入非线性因素,解决线性模型缺陷;* softmax算法——处理分类问题;* 损失函数——用真实值与预测值的距离来指导模型的收敛方向;* 梯度下降——让模型逼近最小偏差;* 初始化学习参数。
  最后还介绍了在单个神经元基础上扩展的网络——Maxout。
  第7章多层神经网络——解决非线性问题,先通过两个例子(分辨良性与恶性肿瘤、将数据按颜色分为3类)来说明线性问题,进而引出非线性问题。然后介绍了如何使用多个神经元组成的全连接网络进行非线性问题的分类。最后介绍了全连接网络在训练中常用的优化技巧:正则化、增大数据集和Dropout等。
  第8章卷积神经网络——解决参数太多问题,通过分析全连接网络的局限性,引出卷积神经网络。首先分别介绍了卷积神经网络的结构和函数,并通过一个综合的图片分类实例介绍了卷积神经网络的应用。接着介绍了反卷积神经网络的原理,并通过多个实例介绍了反卷积神经网络的应用。最后通过多个实例介绍了深度学习中模型训练的一些技巧。
  第9章循环神经网络——具有记忆功能的网络,本章先解释了人脑记忆,从而引出了机器学习中具有类似功能的循环神经网络,介绍了循环神经网络(RNN)的工作原理,并通过实例介绍了简单RNN的一些应用。接着介绍了RNN的一些改进技术,如LSTM、GRU和BiRNN等,并通过大量的实例,介绍了如何通过TensorFlow实现RNN的应用。从9.5节起,用了大量的篇幅介绍RNN在语音识别和语言处理方面的应用,先介绍几个案例——利用BiRNN实现语音识别、利用RNN训练语言模型及语言模型的系统学习等,然后将前面的内容整合成一个功能更完整的机器人,它可以实现中英文翻译和聊天功能。读者还可以再扩展该机器人的功能,如实现对对联、讲故事、生成文章摘要等功能。
  第10章自编码网络——能够自学习样本特征的网络,首先从一个最简单的自编码网络讲起,介绍其网络结构和具体的代码实现。然后分别介绍了去噪自编码、栈式自编码、变分自编码和条件变分自编码等网络结构,并且在讲解每一种结构时都配有对应的实例。
  第3篇 深度学习进阶(第11、12章)  第11章深度神经网络,从深度神经网络的起源开始,逐步讲解了深度神经网络的历史发展过程和一些经典模型,并分别详细介绍了这些经典模型的特点及内部原理。接着详细介绍了使用slim图片分类模型库进行图像识别和图像检测的两个实例。最后介绍了实物检测领域的其他一些相关模型。
  第12章对抗神经网络,从对抗神经网络(GAN)的理论开始,分别介绍了DCGAN、AEGAN、InfoGAN、ACGAN、WGAN、LSGAN和SRGAN等多种GAN的模型及应用,并通过实例演示了生成指定模拟样本和超分辨率重建的过程。
本书读者对象* 深度学习初学者;* 人工智能初学者;* 深度学习爱好者;* 人工智能工程师;* TensorFlow初级开发人员;* 需要提高动手能力的深度学习技术人员;* 名大院校的相关学生。
关于作者  本书由李金洪主笔编写。其他参与本书编写的人员还有马峰、孙朝晖、郑一友、王其景、张弨、白林、彭咏文、宋文利。
  另外,吴宏伟先生也参与了本书后期的编写工作,为本书做了大量的细节调整。因为有了他的逐字推敲和一丝不苟,才使得本书行文更加通畅和通俗易懂。在此表示深深的感谢!
  虽然我们对书中所述内容都尽量核实,并多次进行了文字校对,但因时间所限,加之水平所限,书中疏漏和错误在所难免,敬请广大读者批评指正。联系我们可以加入本书讨论QQ群40016981,也可发E-mail到[email protected]

目录

目录
配套学习资源
前言
第1篇 深度学习与TensorFlow基础
第1章 快速了解人工智能与TensorFlow2
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平台下载及安装TensorFlow11
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 快速了解Spyder16
2.4.2 快速了解Jupyter Notebook18
第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 配置分布式TensorFlow74
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 什么是softmax104
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:为异或数据集模型添加dropout147
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.conv2d158
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中使用queue176
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图片分类模型添加BN207
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 简单RNN215
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 带有映射输出的STMP230
9.3.4 基于梯度剪辑的cell230
9.3.5 GRU网络介绍230
9.3.6 Bi-RNN网络介绍231
9.3.7 基于神经网络的时序类分类CTC232
9.4 TensorFlow实战RNN233
9.4.1 TensorFlow中的cell类233
9.4.2 通过cell类构建RNN234
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 初始化RNN247
9.4.15 优化RNN248
9.4.16 实例67:在GRUCell中实现LN249
9.4.17 CTC网络的loss——ctc_loss251
9.4.18 CTCdecoder254
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 word2vec281
9.7.4 实例70:用CBOW模型训练自己的word2vec283
9.7.5 实例71:使用指定侯选采样本训练word2vec293
9.7.6 练习题296
9.8 处理

标签
计算机,深度学习,机器学习,tensorflow,Programming,AI