深度学习:一起玩转TensorLayer
  • 推荐4
  • 收藏8
  • 浏览12.5K

深度学习:一起玩转TensorLayer

董豪 , 郭毅可 , 杨光 (作者) 

  • 书  号:978-7-121-32622-6
  • 出版日期:2017-12-22
  • 页  数:340
  • 开  本:16(170*240)
  • 出版状态:上市销售
  • 维护人:孙学瑛
电子书 ¥69.00
购买电子书
纸质版 ¥99.00
本书由TensorLayer创始人领衔,TensorLayer主要开发团队倾力打造而成。内容不仅覆盖了人工神经网络的基本知识,如多层感知器、卷积网络、递归网络及增强学习等,还着重讲解了深度学习的一些新的技术,如生成对抗网络、学习方法和实践经验,配有许多应用及产品的实例。读者可从零开始掌握深度学习技术,以及使用TensorLayer实现的各种应用。
本书以通俗易懂的方式讲解深度学习技术,同时配有实现方法教学,面向深度学习初学者、进阶者,以及希望长期从事深度学习研究和产品开发的深度学习的大学生和工程师。
基于TensorFlow的TensorLayer黄金项目+黄金团队+黄金案例,带您开启一段深度学习黄金之旅!
深度学习已经成为了当今人工智能发展的主要助力,国务院印发的《新一代人工智能发展规划》中表示,2020年我国人工智能核心产业规模超过1500亿元,带动相关产业规模超过1万亿元;2030年人工智能核心产业规模超过1万亿元,带动相关产业规模超过10万亿元。

为此产业界急需大量实用性人才,而深度学习是一门理论与工程相结合的科学,本书将以通俗易懂的方式讲解深度学习技术,并辅以实践教学。本书同时面向深度学习初学者、进阶者及工程师,内容涵盖了全连接网络、自编码器、卷积神经网络、递归神经网络、深度增强学习、生成对抗网络等,并附有多个进阶实例教程。与传统深度学习书籍相比,本书有以下特点。

本书注重实践,科研人员和工程师都希望有一个深度学习开发工具可以同时满足学术界和产业界的需求,可让最新的人工智能算法很快地从实验室投入到产品中。为此我们开发了深度学习框架—— TensorLayer。读者可以从零基础开始学习掌握目前最新的深度学习技术。更多关于TensorLayer的设计思路请见第1章。帝国理工数据科学院(Data Science Institute)是TensorLayer的发起单位和主要开发单位,郭毅可教授是该项目领导。

本书对深度学习的最新方法进行了更多的阐述,特别是生成对抗网络方面,该研究方向已在无监督学习方面取得重大突破,并已经开始在产业界产生非常大的影响。本书还介绍及使用了多种新的反卷积方法,如子像素卷积和缩放卷积。

研究深度学习需要做大量的实验,本书在讲解技术的同时传授了很多实验经验。除神经网络外,本书还讲解了数据预处理、数据后加工、训练、服务架设等任务,这些都是搭建整个学习系统和产品的基本工作流。

本书编著方式与其他同类书籍不同,是由TensorLayer中文社区众包完成的,由董豪统稿。本书代码除第3章和第14章实例五外都由董豪提供,本书第1章由莫元汉、董豪和郭毅可执笔;第2章教学部分由杨光执笔,实现讲解部分由董豪执笔;第3章由幺忠玮执笔;第4章由林一鸣执笔;第5章由王剑虹执笔;第6章由袁航执笔;第7章由于思淼执笔;第8章与第12章实例三由张敬卿执笔;第9章、第10章实例一和第13章实例四由董豪执笔;第11章实例二讲解部分由杨光执笔,实现部分由董豪执笔;第14章实例五由陈竑执笔。本书图片整理由出版社、吴超、赵婧楠和种道涵完成,封面设计由出版社和王盼完成。

虽然本书的作者都是一线科研人员和技术人员,但是不妥和错误之处在所难免,真诚地希望有关专家和读者给予批评指正,以便再版时修改。最后,在计算机技术发展非常快的今天,书籍里的知识更新速度有限,建议读者多参与社区讨论交流。本书代码例子使用TensorFlow1.2和TensorLayer1.5.3,Python3在Ubuntu下测试。由于TensorFlow和TensorLayer在不断地更新,若出现兼容性问题,请到各章节给定的网址链接中获取最新的代码。
本书作者

2018年1月

目录

1 深度学习简介1
1.1 人工智能、机器学习和深度学习. . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 引言. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.2 人工智能、机器学习和深度学习三者的关系. . . . . . . . . . . . 2
1.2 神经网络. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.1 感知器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.2 激活函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.3 损失函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.4 梯度下降和随机梯度下降. . . . . . . . . . . . . . . . . . . . . . 8
1.2.5 反向传播算法简述. . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2.6 其他神经网络. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.3 学习方法建议. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3.1 网络资源. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3.2 TensorFlow 官方深度学习教程. . . . . . . . . . . . . . . . . . . . 14
1.3.3 开源社区. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.4 TensorLayer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.4.1 深度学习框架概况. . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.4.2 TensorLayer 概括. . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.4.3 实验环境配置. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2 多层感知器19
2.1 McCulloch-Pitts 神经元模型. . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.1.1 人工神经网络到底能干什么?到底在干什么. . . . . . . . . . . . 21
2.1.2 什么是激活函数?什么是偏值. . . . . . . . . . . . . . . . . . . . 22
2.2 感知器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.2.1 什么是线性分类器. . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.2.2 线性分类器有什么优缺点. . . . . . . . . . . . . . . . . . . . . . 26
2.2.3 感知器实例和异或问题(XOR 问题) . . . . . . . . . . . . . . . 26
2.3 多层感知器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.4 实现手写数字分类. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.5 过拟合. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.5.1 什么是过拟合. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.5.2 Dropout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.5.3 批规范化. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.5.4 L1、L2 和其他正则化方法. . . . . . . . . . . . . . . . . . . . . . 42
2.5.5 Lp 正则化的图形化解释. . . . . . . . . . . . . . . . . . . . . . . 44
2.6 再实现手写数字分类. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.6.1 数据迭代器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.6.2 通过all_drop 启动与关闭Dropout . . . . . . . . . . . . . . . . 47
2.6.3 通过参数共享实现训练测试切换. . . . . . . . . . . . . . . . . . 50
3 自编码器54
3.1 稀疏性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.2 稀疏自编码器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.3 实现手写数字特征提取. . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.4 降噪自编码器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3.5 再实现手写数字特征提取. . . . . . . . . . . . . . . . . . . . . . . . . . . 68
3.6 堆栈式自编码器及其实现. . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4 卷积神经网络80
4.1 卷积原理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
4.1.1 卷积操作. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
4.1.2 张量. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
4.1.3 卷积层. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
4.1.4 池化层. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
4.1.5 全连接层. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
4.2 经典任务. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
4.2.1 图像分类. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
4.2.2 目标检测. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
4.2.3 语义分割. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
4.2.4 实例分割. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
4.3 经典卷积网络. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
4.3.1 LeNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
4.3.2 AlexNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
4.3.3 VGGNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
4.3.4 GoogLeNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
4.3.5 ResNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
4.4 实现手写数字分类. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
4.5 数据增强与规范化. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
4.5.1 数据增强. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
4.5.2 批规范化. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
4.5.3 局部响应归一化. . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
4.6 实现CIFAR10 分类. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
4.6.1 方法1:tl.prepro 做数据增强. . . . . . . . . . . . . . . . . . . . . 108
4.6.2 方法2:TFRecord 做数据增强. . . . . . . . . . . . . . . . . . . . 114
4.7 反卷积神经网络. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
5 词的向量表达121
5.1 目的与原理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
5.2 Word2Vec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
5.2.1 简介. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
5.2.2 Continuous Bag-Of-Words(CBOW)模型. . . . . . . . . . . . . 124
5.2.3 Skip Gram(SG)模型. . . . . . . . . . . . . . . . . . . . . . . . 129
5.2.4 Hierarchical Softmax . . . . . . . . . . . . . . . . . . . . . . . . . . 132
5.2.5 Negative Sampling . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
5.3 实现Word2Vec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
5.3.1 简介. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
5.3.2 实现. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
5.4 重载预训练矩阵. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
6 递归神经网络148
6.1 为什么需要它. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
6.2 不同的RNNs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
6.2.1 简单递归网络. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
6.2.2 回音网络. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
6.3 长短期记忆. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
6.3.1 LSTM 概括. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
6.3.2 LSTM 详解. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
6.3.3 LSTM 变种. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
6.4 实现生成句子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
6.4.1 模型简介. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
6.4.2 数据迭代. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
6.4.3 损失函数和更新公式. . . . . . . . . . . . . . . . . . . . . . . . . 164
6.4.4 生成句子及Top K 采样. . . . . . . . . . . . . . . . . . . . . . . . 167
6.4.5 接下来还可以做什么. . . . . . . . . . . . . . . . . . . . . . . . . 169
7 深度增强学习171
7.1 增强学习. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
7.1.1 概述. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
7.1.2 基于价值的增强学习. . . . . . . . . . . . . . . . . . . . . . . . . 173
7.1.3 基于策略的增强学习. . . . . . . . . . . . . . . . . . . . . . . . . 176
7.1.4 基于模型的增强学习. . . . . . . . . . . . . . . . . . . . . . . . . 177
7.2 深度增强学习. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
7.2.1 深度Q 学习. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
7.2.2 深度策略网络. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
7.3 更多参考资料. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
7.3.1 书籍. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
7.3.2 在线课程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
8 生成对抗网络188
8.1 何为生成对抗网络. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
8.2 深度卷积对抗生成网络. . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
8.3 实现人脸生成. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
8.4 还能做什么. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
9 高级实现技巧202
9.1 与其他框架对接. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
9.1.1 无参数层. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
9.1.2 有参数层. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
9.2 自定义层. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
9.2.1 无参数层. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
9.2.2 有参数层. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
9.3 建立词汇表. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
9.4 补零与序列长度. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
9.5 动态递归神经网络. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
9.6 实用小技巧. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
9.6.1 屏蔽显示. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
9.6.2 参数名字前缀. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
9.6.3 获取特定参数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
9.6.4 获取特定层输出. . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
10 实例一:使用预训练卷积网络214
10.1 高维特征表达. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
10.2 VGG 网络. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
10.3 连接TF-Slim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
11 实例二:图像语义分割及其医学图像应用225
11.1 图像语义分割概述. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
11.1.1 传统图像分割算法简介. . . . . . . . . . . . . . . . . . . . . . . . 227
11.1.2 损失函数与评估指标. . . . . . . . . . . . . . . . . . . . . . . . . 229
11.2 医学图像分割概述. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
11.3 全卷积神经网络和U-Net 网络结构. . . . . . . . . . . . . . . . . . . . . 232
11.4 医学图像应用:实现脑部肿瘤分割. . . . . . . . . . . . . . . . . . . . . 234
11.4.1 数据与数据增强. . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
11.4.2 U-Net 网络. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
11.4.3 损失函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
11.4.4 开始训练. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
12 实例三:由文本生成图像244
12.1 条件生成对抗网络之GAN-CLS . . . . . . . . . . . . . . . . . . . . . . . 245
12.2 实现句子生成花朵图片. . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
13 实例四:超高分辨率复原260
13.1 什么是超高分辨率复原. . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
13.2 网络结构. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
13.3 联合损失函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
13.4 训练网络. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
13.5 使用测试. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
14 实例五:文本反垃圾280
14.1 任务场景. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
14.2 网络结构. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
14.3 词的向量表示. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
14.4 Dynamic RNN 分类器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
14.5 训练网络. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
14.5.1 训练词向量. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
14.5.2 文本的表示. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
14.5.3 训练分类器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
14.5.4 模型导出. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
14.6 TensorFlow Serving 部署. . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
14.7 客户端调用. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
14.8 其他常用方法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
中英对照表及其缩写309
参考文献316

本书勘误

印次
  • 页码:50  •  印次: 1

    is_train为True,DropoutLayer会自动忽略
    应该是“is_train为False,DropoutLayer会自动忽略”,训练时dropout层不能被忽略

    duohappy 提交于 2018/10/30 11:09:05
    孙学瑛 确认于 2018/10/31 9:55:18

读者评论

  • 谁有电子版书啊?

    数据分析小白发表于 2019/11/29 16:49:08
  • 源代码失效了,有新的链接吗

    zz发表于 2019/10/28 9:58:52
    • https://github.com/tensorlayer/tensorlayer/tree/TensorLayer-1.x

      孙学瑛发表于 2019/10/28 10:28:58
  • 第二章书上提供的链接失效

    lili123发表于 2019/6/25 11:19:14
    • https://github.com/tensorlayer/tensorlayer/tree/master/examples/basic_tutorials

      孙学瑛发表于 2019/6/25 13:43:04
  • 太赞了!!!!

    大写的赞!!!!

    十年之后发表于 2018/8/12 11:12:40
  • 最后黄金案例的训练模型。

    孙学瑛发表于 2018/5/8 17:15:01

相关图书

程序员的AI书:从代码开始

张力柯 潘晖 (作者)

随着AI技术的普及,如何快速理解、掌握并应用AI技术,成为绝大多数程序员亟需解决的问题。本书基于Keras框架并以代码实现为核心,详细解答程序员学习AI算法时的...

¥76.30

解析深度学习:卷积神经网络原理与视觉实践

魏秀参 (作者)

深度学习,特别是深度卷积神经网络是人工智能的重要分支领域,卷积神经 网络技术也被广泛应用于各种现实场景,在许多问题上都取得了超越人类智能的 结果。本书作为该...

¥49.00

自然语言处理理论与实战

白宁超 (作者)

自然语言处理是什么?谁需要学习自然语言处理?自然语言处理在哪些地方应用?相关问题一直困扰<br>着不少初学者。针对这一情况,作者结合教学经验和工程应用编写此书。...

¥79.00

深度学习之PyTorch实战计算机视觉

唐进民 (作者)

计算机视觉、自然语言处理和语音识别是目前深度学习领域很热门的三大应用方向,本书旨在帮助零基础或基础较为薄弱的读者入门深度学习,达到能够独立使用深度学习知识处理计...

¥49.00

21个项目玩转深度学习——基于TensorFlow的实践详解

何之源 (作者)

《21个项目玩转深度学习——基于TensorFlow的实践详解》以实践为导向,深入介绍了深度学习技术和TensorFlow框架编程内容。 通过本书,读者可以训...

¥59.00

TensorFlow:实战Google深度学习框架(第2版)

郑泽宇 (作者)

TensorFlow是谷歌2015年开源的主流深度学习框架,目前已得到广泛应用。本书为TensorFlow入门参考书,旨在帮助读者以快速、有效的方式上手Tens...

¥89.00