新書推薦:
《
海外中国研究·朱熹的思维世界(增订版)
》
售價:HK$
143.4
《
甲骨文丛书·沙漠之王:英美在中东的霸权之争
》
售價:HK$
110.9
《
汗青堂丛书147·光明时代:中世纪新史
》
售價:HK$
85.1
《
能成事的团队
》
售價:HK$
111.9
《
现代无人机鉴赏(珍藏版)
》
售價:HK$
78.2
《
汗青堂丛书·晚清风云(4册套装):帝国的切口 清朝与中华传统文化 太平天国运动史 冲击与回应
》
售價:HK$
427.8
《
穿在身上的历史:世界服饰图鉴(增订珍藏版)
》
售價:HK$
557.8
《
历史的严妆:解读道学阴影下的南宋史学(中华学术·有道)
》
售價:HK$
109.8
|
編輯推薦: |
内容全:包含高维Tensor函数、CNN算法及TensorFlow实战等众多知识
看得懂:透过110多张图示,让你快速理解算法原理
学得会:配有40多个视频课程,随时随地轻松学
用得着:包括中文手写字识别、服务器移植、iOS移植及Android移植4个案例
有人帮:在读者交流QQ群里交流互动,有问必答
|
內容簡介: |
本书从TensorFlow基础讲起,逐步深入TensorFlow进阶实战,*后配合项目实战案例,重点介绍了实用TensorFlow库训练卷积神经网络模型并将模型移植到服务器端、Android端和iOS端的知识。读者不但可以系统地学习TensorFlow库的使用,还能加深对深度卷积神经网络的理解。本书分为4篇,共13章,涵盖的主要内容有人工智能发展历程,TensorFlow基础入门,高维Tensor对象的工具函数,前馈网络,常见网络,TensorFlow数据存取,TensorFlow数据预处理,TensorFlow模型训练,TensorBoard可视化工具,中文手写字识别,移植模型到TensorFlow Serving端,移植TensorFlow模型到Android端,移植TensorFlow模型到iOS端。
|
關於作者: |
华超,毕业于武汉大学,硕士研究生,目前任职腾讯研究员,擅长深度卷积神经网络领域。拥有8年的开发经验,熟悉Android和iOS开发。研究领域为神经网络模型压缩和移动端模型移植,使移动端能实时运行神经网络模型,已为移动端上线多款实时运行模型。
|
目錄:
|
目录
第一篇TensorFlow基础篇
第1章绪论2
1.1人工智能简介2
1.2卷积神经网络3
1.3搭建TensorFlow框架环境5
1.3.1安装Anaconda5
1.3.2安装TensorFlow7
第2章TensorFlow基础入门9
2.1第一个TensorFlow程序9
2.1.1TensorFlow中的hello world9
2.1.2TensorFlow中的图11
2.1.3静态图与动态图14
2.2初识Session15
2.2.1将Session对象关联Graph对象15
2.2.2Session参数配置17
2.3常量与变量18
2.3.1TensorFlow中的常量18
2.3.2TensorFlow中的变量20
2.3.3TensorFlow中的tf.placeholder28
2.4Tensor对象29
2.4.1什么是Tensor对象29
2.4.2Python对象转Tensor对象31
2.4.3Tensor对象转Python对象32
2.4.4SparseTensor对象34
2.4.5强制转换Tensor对象数据类型35
2.5Operation对象37
2.5.1什么是Operation对象37
2.5.2获取并执行Operation对象37
2.6TensorFlow流程控制40
2.6.1条件判断tf.cond与tf.where40
2.6.2TensorFlow比较判断43
2.6.3TensorFlow逻辑运算44
2.6.4循环tf.while_loop45
2.7TensorFlow位运算48
2.7.1且位运算48
2.7.2或位运算49
2.7.3异或位运算50
2.7.4取反位运算51
2.8TensorFlow字符串52
2.8.1字符串的定义与转换53
2.8.2字符串拆分55
2.8.3字符串拼接56
第3章高维Tensor对象的工具函数58
3.1重定义Shape58
3.1.1Reshape原理58
3.1.2函数tf.reshape59
3.1.3使用Python实现Reshape60
3.2维度交换函数62
3.2.1Transpose原理62
3.2.2函数tf.transpose63
3.2.3使用Python实现Transpose64
3.3维度扩充与消除65
3.3.1函数tf.expand_dims65
3.3.2函数tf.squeeze66
3.4Tensor对象裁剪68
3.4.1Tensor对象裁剪原理68
3.4.2函数tf.slice69
3.5Tensor对象拼接70
3.5.1Tensor对象拼接原理70
3.5.2函数tf.concat使用71
3.6tf.stack与tf.unstack72
3.6.1函数tf.stack的原理72
3.6.2函数tf.stack的使用73
3.6.3函数tf.unstack的使用76
3.7tf.argmax与tf.argmin79
3.7.1函数tf.argmax与tf.argmin的原理79
3.7.2函数tf.argmax与tf.argmin的使用79
第二篇卷积神经网络篇
第4章前馈网络83
4.1卷积83
4.1.1卷积的原理83
4.1.2输出宽高与输入、Stride、卷积核及Padding之间的关系90
4.1.3空洞卷积92
4.1.4在TensorFlow中使用卷积93
4.1.5用Python语言实现卷积算法95
4.2反卷积97
4.2.1反卷积的原理97
4.2.2输出宽高与输入、Stride、反卷积核及Padding之间的关系103
4.2.3在TensorFlow中使用反卷积105
4.2.4用Python语言实现反卷积算法110
4.3Batch Normalization113
4.3.1Batch Normalization的原理113
4.3.2在TensorFlow中使用Batch Normalization114
4.3.3用Python语言实现Batch Normalization122
4.3.4在TensorFlow中使用Batch Normalization时的注意事项123
4.4Instance Normalization125
4.4.1Instance Normalization的原理125
4.4.2在TensorFlow中使用Instance Normalization126
4.4.3用Python语言实现Instance Normalization130
4.5全连接层132
4.5.1全连接层的原理132
4.5.2在TensorFlow中使用全连接层133
4.5.3用Python语言实现全连接层134
4.6激活函数135
4.6.1激活函数的作用135
4.6.2Sigmoid函数136
4.6.3Tanh函数138
4.6.4ReLU函数140
4.7池化层142
4.7.1池化层的原理142
4.7.2在TensorFlow中使用池化层146
4.7.3用Python语言实现池化层150
4.8Dropout153
4.8.1Dropout的作用153
4.8.2在TensorFlow中使用Dropout154
第5章常见网络156
5.1移动端定制卷积神经网络MobileNet156
5.1.1MobileNet的原理与优势156
5.1.2在TensorFlow中实现MobileNet卷积158
5.1.3用Python语言实现Depthwise卷积164
5.1.4MobileNet完整的网络结构167
5.1.5MobileNet V2进一步裁剪加速168
5.2深度残差网络ResNet171
5.2.1ResNet的结构与优势171
5.2.2在TensorFlow中实现ResNet172
5.2.3完整的ResNet网络结构175
5.3DenseNet176
5.3.1DenseNet的结构与优势176
5.3.2在TensorFlow中实现DenseNet177
5.3.3完整的DenseNet网络结构180
第三篇TensorFlow进阶篇
第6章TensorFlow数据存取183
6.1队列183
6.1.1构建队列183
6.1.2Queue、QueueRunner及Coordinator190
6.1.3在队列中批量读取数据194
6.2文件存取200
6.2.1读取文本文件200
6.2.2读取定长字节文件202
6.2.3读取图片205
6.3从CSV文件中读取训练集207
6.3.1解析CSV格式文件207
6.3.2封装CSV文件读取类209
6.4从自定义文本格式文件中读取训练集210
6.4.1解析自定义文本格式文件211
6.4.2封装自定义文本格式文件读取类212
6.5TFRecord方式存取数据213
6.5.1将数据写入TFRecord文件214
6.5.2从TFRecord文件中读取数据215
6.6模型存取217
6.6.1存储模型217
6.6.2从checkpoint文件中加载模型220
6.6.3从meta文件中加载模型222
6.6.4将模型导出为单个pb文件223
第7章TensorFlow数据预处理226
7.1随机光照变化226
7.1.1随机饱和度变化226
7.1.2随机色相变化228
7.1.3随机对比度变化230
7.1.4随机亮度变化232
7.1.5随机伽玛变化234
7.2翻转、转置与旋转237
7.2.1随机上下、左右翻转237
7.2.2随机图像转置239
7.2.3随机旋转241
7.3裁剪与Resize245
7.3.1图像裁剪245
7.3.2图像Resize249
7.3.3其他Resize函数254
7.4用OpenCV对图像进行动态预处理256
7.4.1静态预处理与动态预处理256
7.4.2在TensorFlow中调用OpenCV257
第8章TensorFlow模型训练260
8.1反向传播中的优化器与学习率260
8.1.1Global Step与Epoch260
8.1.2梯度理论260
8.1.3使用学习率与梯度下降法求最优值262
8.1.4TensorFlow中的优化器265
8.1.5优化器中常用的函数265
8.1.6在TensorFlow中动态调整学习率269
8.2模型数据与参数名称映射273
8.2.1通过名称映射加载273
8.2.2以pickle文件为中介加载模型275
8.3冻结指定参数277
8.3.1从模型中加载部分参数277
8.3.2指定网络层参数不参与更新278
8.3.3两个学习率同时训练280
8.4TensorFlow中的命名空间282
8.4.1使用tf.variable_scope添加名称前缀282
8.4.2使用tf.name_scope添加名称前缀284
8.4.3tf.variable_scope与tf.name_scope的混合使用285
8.5TensorFlow多GPU训练286
8.5.1多GPU训练读取数据286
8.5.2平均梯度与参数更新289
第9章TensorBoard可视化工具293
9.1可视化静态图293
9.1.1图结构系列化并写入文件293
9.1.2启动TensorBoard294
9.2图像显示296
9.2.1系列化图像Tensor并写入文件296
9.2.2用TensorBoard查看图像299
9.3标量曲线301
9.3.1系列化标量Tensor并写入文件301
9.3.2用TensorBoard查看标量曲线302
9.4参数直方图303
9.4.1系列化参数Tensor并写入文件303
9.4.2用TensorBoard查看参数直方图304
9.5文本显示306
9.5.1系列化文本Tensor并写入文件306
9.5.2用TensorBoard查看文本307
第四篇卷积神经网络实战篇
第10章中文手写字识别310
10.1网络结构及数据集310
10.1.1网络结构310
10.1.2数据集311
10.2代码实现312
10.2.1封装通用网络层312
10.2.2定义网络结构314
10.2.3数据读取316
10.2.4训练代码实现318
10.3模型训练321
10.4模型精度测试321
10.4.1精度测试322
10.4.2代码实现322
第11章移植模型到TensorFlow Serving端324
11.1模型转换324
11.1.1转换模型为TensorFlow Serving模型324
11.1.2代码实现327
11.2模型部署329
11.2.1搭建TensorFlow Serving环境329
11.2.2启动TensorFlow Serving服务331
11.3HTTP服务实现333
11.3.1使用gRPC调用TensorFlow Serving服务333
11.3.2实现HTTP服务334
11.4前端交互实现336
11.4.1界面布局336
11.4.2手写板实现337
11.4.3数据交互339
11.4.4流程测试340
第12章移植TensorFlow模型到Android端341
12.1交互界面341
12.1.1页面布局341
12.1.2实现手写板342
12.2使用TensorFlow Mobile库346
12.2.1模型转换347
12.2.2模型调用347
12.2.3模型测试351
12.3使用TensorFlow Lite库354
12.3.1模型转换354
12.3.2模型调用355
12.3.3模型测试360
第13章移植TensorFlow模型到iOS端361
13.1
|
內容試閱:
|
前言
深度学习在计算机视觉领域取得的巨大成功,使得越来越多的开发人员准备或者正在转入这个领域。不过这方面大部分的网络资源都是从理论方面讲解卷积神经网络中网络层(如卷积、反卷积等)原理的,很少以简单例子并通过代码实现的方式介绍。初学者希望能快速理解抽象的理论原理,亲自动手设计网络结构并能完成模型的训练;有一定基础的人员希望能够对网络层节点原理有进一步理解。本书从最基础的内容出发,将实际项目中卷积神经网络用到的大部分函数和原理进行讲解并实践。
初入卷积神经网络领域的人员对高维数组(Tensor)的相关维度计算操作难以理解,阅读理论原理后也是一知半解。本书从TensorFlow基础开始讲解,再介绍卷积神经网络,然后介绍TensorFlow的进阶内容。在每一个知识点后均会附加示例代码以加深理解,最后以实际项目中文手写字识别对整本书内容进行综合运用。不管是初学者还是有一定经验的深度卷积神经网络开发人员,相信在阅读完本书后一定会收获颇丰。
因受作者水平和成书时间所限,书中难免存有疏漏之处,敬请广大读者批评指正。
本书特色
1. 内容由浅入深,TensorFlow的使用从基础到进阶
本书内容包含TensorFlow训练模型期间所用到的大部分函数和场景,也包括通过实例详细讲解的TensorFlow函数和模型训练技巧,这些都是笔者在实际项目中经验的提炼。
2. 手写代码实现卷积、反卷积等操作,让抽象的理论更容易理解
本书介绍了卷积神经网络中所使用到的大部分计算节点,并使用Python代码实现其等价算法。大部分关于卷积神经网络的资料介绍都过于抽象,往往使得读者一知半解。本书从实际代码搭配实际数据例子的角度介绍卷积神经网络,使卷积神经网络简单化、具体化,让读者更容易理解掌握。
3. 手写代码实现当前先进的卷积神经网络
大部分官方提供的现代先进的卷积神经网络结构源码封装太深,初学者往往需要花费很长时间理解。本书以简单的代码引导读者动手实现先进的网络结构,帮助读者理解。
4. 实现手写汉字识别,并移植到服务器端和移动端
运用本书知识点,带领读者完成了中文手写字识别模型训练。完成模型训练后最重要的事情是投入平台使用,本书介绍了将模型移植到服务器端、Android端和iOS端的详细操作,基本涵盖所有的实际部署平台。
本书内容及体系结构
本书分为4篇,共13章内容,包括TensorFlow基础篇、卷积神经网络篇、TensorFlow进阶篇及卷积神经网络实战篇。
第1章 绪论
人工智能在自然语言处理和计算机视觉等领域中,都取得了重大突破。本章介绍人工智能发展史和TensorFlow等的安装。
第2章 TensorFlow基础入门
本章涵盖了TensorFlow框架的数值计算的基本使用方法,主要包括TensorFlow中的图的概念,TensorFlow中的Tensor对象,TensorFlow中的常量与变量,TensorFlow中的流程控制,TensorFlow中的位运算及TensorFlow中的字符串处理等基础主题。
第3章 高维Tensor对象的工具函数
对于一维、二维和三维数组我们比较容易理解,但是一旦数据的维度上升到四维甚至更高维度时,往往比较抽象。在本章中,我们学习高维Tensor对象常用的操作函数。
第4章 前馈网络
前馈网络不需要关心梯度和参数更新问题,只需关心输入、输出和当前节点的参数。相比反向传播,前馈网络(也称为前向网络)更容易理解。本章我们介绍前馈网络计算的各个常见网络层原理,以及使用TensorFlow框架实现各个层的方法,并且同时使用Python代码实现。
第5章 常见网络
近年来,卷积神经网络经历了高速发展。相关研究人员开发了一些拥有高效、快速及易收敛等特性的卷积神经网络结构,如MobileNet、ResNet、DenseNet等。本章就来学习这些常用的网络结构,以及这些网络的优势与运用。
第6章 TensorFlow数据存取
本章学习数据的存取方法,包括训练集数据和模型数据的存取。
第7章 TensorFlow数据预处理
在读取图片数据后,通过对图片做随机光线变化、随机裁剪、随机旋转等预处理操作可以扩充训练集。本章学习使用TensorFlow框架中的图像处理函数,以及在TensorFlow框架中调用OpenCV接口的方法。
第8章 TensorFlow模型训练
使用TensorFlow模型训练需要掌握一些常见功能的实现,本章主要介绍在模型训练过程中需要掌握的内容。
第9章 TensorBoard可视化工具
在模型训练过程中,可以借助TensorBoard可视化工具对误差值loss的变化曲线、学习率变化曲线、参数变量变化及图像中间结果等实现可视化监控。本章就来介绍在卷积神经网络中常用的TensorBoard内置功能。
第10章 中文手写字识别
本章以中文手写字识别项目来综合使用前面章节的内容。中文手写字识别也可以看成一个分类问题,即识别出输入图像所属的分类,每一种分类对应一个汉字。
第11章 移植模型到TensorFlow Serving端
本章学习将训练保存的模型转为服务器端可执行的模型,在服务器端部署模型及其代码实现,并且提供一个HTTP服务接口,实现手写字识别。
第12章 移植TensorFlow模型到Android端
本章分别介绍使用TensorFlow Mobile和TensorFlow Lite库将TensorFlow 模型移植到Android端的方法。
第13章 移植TensorFlow模型到iOS端
本章介绍将TensorFlow模型转为CoreML模型,并部署到iOS端使用的方法。
本书读者对象
? Python程序员。
? 卷积神经网络爱好者。
? TensorFlow编程人员。
? 人工智能开发人员。
? 机器学习相关人员。
|
|