编辑推荐
飞桨PaddlePaddle是百度推出的深度学习框架,不仅支撑了百度公司的很多业务和应用,而且随着其开源过程的推进,在其他行业得到普及和应用。
本书基于2019年7月4日发布的飞桨PaddlePaddle Fluid 1.5版本(后续版本会兼容旧版本),以真实案例介绍如何应用飞桨PaddlePaddle解决主流的深度学习问题。
本书适合对人工智能感兴趣的学生、从事机器学习相关工作的读者阅读,尤其适合想要通过飞桨PaddlePaddle掌握深度学习应用技术的研究者和从业者参考。
本书包括以下内容:
● 飞桨PaddlePaddle 的核心设计思想;
● PaddlePaddle在MNIST上进行手写数字识别;
● 图像分类网络实现案例;
● “天网”中目标检测和像素级物体分割的实现;
● NLP技术应用案例 :word2vec、情感分析、语义角色标注及机器翻译;
● Paddle-Mobile与Anakin框架等高级主题;
● 飞桨PaddlePaddle与TensorFlow、Caffe框架的常用层对比。
内容简介
飞桨PaddlePaddle Fluid是百度推出的深度学习框架,不仅支撑了百度公司的很多业务和应用,而且随着其开源过程的推进,在很多行业得到普及、应用和关注。
本书基于*新的飞桨PaddlePaddle Fluid版本,以真实的应用案例介绍如何用飞桨PaddlePaddle解决主流的深度学习问题。全书共14章。本书首先介绍了什么是飞桨PaddlePaddle,然后介绍了其核心设计思想,进而紧紧结合案例介绍了飞桨PaddlePaddle在主流的图像任务领域、NLP领域的应用,*后还探讨了Paddle-Mobile与Anakin框架等高级主题。附录A和B给出了飞桨PaddlePaddle与TensorFlow、Caffe框架的接口中常用层的对比。
本书非常适合对人工智能感兴趣的学生、从事机器学习相关工作的读者阅读,尤其适合想要通过飞桨PaddlePaddle掌握深度学习应用技术的研究者和从业者参考。
作者简介
于祥
百度PaddlePaddle技术运营。2015年开始研究神经网络技术,早期从事基于深度学习的身份认证技术研发,曾负责上海智慧城市项目和华润集团项目的算法支持,曾获得ACM-ICPC与CCCC-GPLT银奖。
目录
第 1章 飞桨PaddlePaddle简介
与AI Studio的使用 1
1.1 飞桨PaddlePaddle简介 1
1.2 飞桨PaddlePaddle的工具组件 2
1.2.1 PaddleHub—简明易用的
预训练模型管理框架 2
1.2.2 PARL—基于飞桨PaddlePaddle
的深度强化学习框架 3
1.2.3 AutoDL Design—让深度学习
来设计深度学习 4
1.2.4 VisualDL—深度学习可视化
工具库 5
1.2.5 模型转换工具X2Paddle 5
1.3 飞桨PaddlePaddle在百度内部
支持的案例 6
1.4 飞桨PaddlePaddle与TensorFlow的
对比 7
1.5 AI Studio简介 8
1.6 在AI Studio中创建项目 9
1.6.1 用户界面简介 9
1.6.2 创建并运行一个项目 10
1.7 AI Studio单机项目概述 11
1.7.1 页面概览 11
1.7.2 复制项目 12
1.7.3 VisualDL工具的使用 13
1.8 Notebook环境使用说明 14
1.8.1 Notebook页面概览 14
1.8.2 操作区 14
1.8.3 Notebook内容编辑区 15
1.8.4 侧边栏 21
1.8.5 工具栏 23
1.9 AI Studio集群项目 23
1.9.1 集群项目说明 23
1.9.2 创建集群项目 24
1.9.3 页面概览 25
1.9.4 代码编辑界面 25
1.9.5 文件管理和数据集区域 26
1.9.6 文件预览编辑和提交任务
区域 27
1.9.7 PaddlePaddle集群训练说明 27
1.9.8 数据集与输出文件路径说明 28
1.9.9 提交任务 29
1.9.10 历史任务 29
1.9.11 预安装包说明 30
1.10 在线部署及预测 31
1.10.1 功能说明 31
1.10.2 通过训练任务生成模型文件 32
1.10.3 创建一个在线服务 34
1.10.4 测试沙盒服务 39
1.10.5 部署在线服务 40
1.10.6 调用在线服务 41
1.11 NumPy常规操作及使用 42
第 2章 PaddlePaddle Fluid的环境
搭建与安装 50
2.1 在Linux系统中安装
PaddlePaddle 50
2.1.1 租用百度BCC云服务器 50
2.1.2 安装前的准备工作 56
2.1.3 通过pip安装PaddlePaddle 58
2.1.4 在Docker中安装
PaddlePaddle 59
2.2 在Windows系统中安装
PaddlePaddle 64
2.2.1 Windows GPU驱动环境安装 64
2.2.2 下载并安装CUDA 65
2.2.3 安装cuDNN 68
2.2.4 安装PaddlePaddle 69
2.3 在macOS系统中安装
PaddlePaddle 69
2.3.1 安装Python 3 69
2.3.2 安装PaddlePaddle 71
第3章 PaddlePaddle深度学习入门—
在MNIST上进行手写
数字识别 72
3.1 引言 72
3.2 模型概览 73
3.2.1 Softmax回归模型 73
3.2.2 多层感知器 74
3.2.3 卷积神经网络 75
3.3 数据介绍 78
3.4 PaddlePaddle的程序配置过程 79
3.4.1 程序说明 79
3.4.2 配置inference_program 79
3.4.3 配置train_program 81
3.4.4 配置optimizer_program 82
3.4.5 配置数据集reader 82
3.5 构建训练过程 83
3.5.1 事件处理程序配置 83
3.5.2 开始训练 84
3.6 应用模型 86
3.6.1 生成待预测的输入数据 87
3.6.2 Inference创建及预测 87
3.6.3 预测结果 87
3.7 小结 88
第4章 PaddlePaddle设计思想与
核心技术 89
4.1 编译时与运行时的概念 89
4.2 Fluid内部执行流程 90
4.3 Program设计简介 91
4.4 Block简介 92
4.5 Block和Program的设计细节 93
4.6 框架执行器设计思想 94
4.6.1 代码示例 95
4.6.2 创建框架执行器 95
4.6.3 运行框架执行器 96
4.7 示例 96
4.7.1 定义Program 96
4.7.2 创建框架执行器 98
4.7.3 运行框架执行器 99
4.8 LoD Tensor数据结构解读 99
4.8.1 LoD索引 100
4.8.2 LoD Tensor在PaddlePaddle
中的表示方法 101
4.8.3 LoD Tensor的API 103
4.8.4 LoD Tensor的使用示例 105
4.9 动态图机制——DyGraph 107
4.9.1 动态图设置和基本用法 108
4.9.2 基于DyGraph构建网络 109
4.9.3 使用DyGraph训练模型 110
4.9.4 模型参数的保存 115
4.9.5 模型评估 116
4.9.6 编写兼容的模型 118
第5章 独孤九剑—经典图像分类
网络实现 119
5.1 图像分类网络现状 119
5.2 VGG16图像分类任务 123
5.2.1 定义网络结构 124
5.2.2 定义推理程序 127
5.2.3 定义训练程序 127
5.2.4 实例化训练对象 128
5.2.5 读取数据 128
5.2.6 编写事件处理程序并
启动训练 129
5.2.7 执行模型预测 130
5.3 模块化设计GoogleNet 135
5.4 Alexnet模型实现 142
5.5 Resnet模型实现 146
5.6 MobileNet V2模型实现 149
5.7 ShuffleNet V2模型实现 154
第6章 “天网”系统基础—
目标检测 159
6.1 目标检测简介 160
6.2 对R-CNN系列算法的探索历史 161
6.2.1 R-CNN算法:目标检测
开山之作 161
6.2.2 SPP网络 164
6.2.3 Fast R-CNN 166
6.2.4 Faster R-CNN 167
6.3 单步目标检测算法 177
6.3.1 统一检测算法YOLO 178
6.3.2 SSD基本原理 181
6.3.3 SSD在训练时的匹配策略 185
6.3.4 使用PaddlePaddle实现
SSD网络 186
6.4 PyramidBox 203
6.4.1 提出PyramidBox方法的
背景 204
6.4.2 PyramidBox网络结构 205
6.4.3 PyramidBox的创新点 208
6.4.4 PyramidBox的PaddlePaddle
官方实现 210
第7章 “天网”系统进阶—像素级
物体分割 221
7.1 物体分割简介 221
7.2 语义分割与实例分割的关系 222
7.3 语义分割 222
7.3.1 语义分割的任务描述 223
7.3.2 全卷积网络 224
7.3.3 ParseNet 229
7.3.4 u-net 229
7.3.5 v-net 231
7.3.6 u-net变体网络 231
7.3.7 PSPNet 233
7.3.8 ICNet 234
7.3.9 DeepLab v3+ 241
7.4 实例分割 249
7.4.1 实例分割概述 249
7.4.2 Mask R-CNN 250
第8章 从零开始了解NLP
技术—word2vec 263
8.1 初识NLP 263
8.2 词向量简介 265
8.3 如何得到词向量模型 268
8.4 词向量模型概览 269
8.4.1 语言模型 269
8.4.2 N-Gram模型 269
8.4.3 CBOW模型 270
8.4.4 Skip-Gram 271
8.4.5 词ID 271
8.5 通过PaddlePaddle训练
CBOW模型 273
8.5.1 CBOW模型训练过程 273
8.5.2 数据预处理 274
8.5.3 编程实现 274
8.5.4 模型应用 278
8.6 小结 280
第9章 feed流最懂你—
个性化推荐 282
9.1 引言 282
9.2 推荐网络模型设计 283
9.2.1 YouTube的深度神经网络
个性化推荐系统 284
9.2.2 融合推荐模型 286
9.3 电影推荐实验 290
9.3.1 数据介绍与下载 290
9.3.2 模型配置说明 292
9.3.3 训练模型 295
9.3.4 应用模型 298
9.4 小结 299
第 10章 让机器读懂你的心—
情感分析技术 300
10.1 情感分析及其作用 300
10.2 模型设计 303
10.3 情感分析实验 308
第 11章 NLP技术深入理解—
语义角色标注 315
11.1 引言 315
11.2 模型概览 317
11.2.1 栈式循环神经网络 317
11.2.2 双向循环神经单元 318
11.2.3 条件随机场 319
11.2.4 深度双向LSTM SRL模型 320
11.3 使用PaddlePaddle实现SRL
任务 322
11.3.1 数据预处理 322
11.3.2 进行PaddlePaddle实验 324
11.4 小结 331
第 12章 NLP技术的应用—
机器翻译 332
12.1 引言 332
12.2 效果展示 333
12.3 模型概览 333
12.3.1 时间步展开的双向循环
神经网络 333
12.3.2 编码器-解码器框架 334
12.3.3 柱搜索算法 337
12.4 机器翻译实战 337
12.4.1 数据预处理 337
12.4.2 模型配置 338
12.4.3 训练模型 342
12.4.4 应用模型 343
第 13章 PaddlePaddle移动端及嵌入式
框架—Paddle-Mobile 345
13.1 Paddle-Mobile简介 345
13.2 Paddle-Mobile优化与适配 346
13.2.1 包压缩 346
13.2.2 工程结构编码前重新设计 347
13.3 移动端主体识别和分类 350
13.3.1 完全在云端的神经网络
技术应用 352
13.3.2 移动端业界案例 353
13.3.3 在移动端应用深度学习
技术的难点 355
13.3.4 AR实时翻译问题的
解决方案 356
13.4 编译与开发Paddle-Mobile
平台库 359
13.5 开发一个基于移动端深度学习
框架的Android APP 360
13.6 Paddle-Mobile设计思想 368
第 14章 百度开源高速推理引擎——
Anakin 374
14.1 Anakin架构与性能 375
14.2 Anakin的特性 379
14.2.1 支持众多异构平台 379
14.2.2 高性能 379
14.2.3 汇编级的kernel优化 382
14.2.4 Anakin值得一提的
技术亮点 382
14.3 Anakin的使用方法 384
14.3.1 Anakin的工作原理 384
14.3.2 Anakin v2.0 API 385
14.4 示例程序 393
附录A TensorFlow与PaddlePaddle Fluid
接口中常用层对照表 394
附录B Caffe与PaddlePaddle Fluid
接口中常用层对照表 401