科技>计算机>计算机科学
深度学习:一起玩转TensorLayer

深度学习:一起玩转TensorLayer"

作者:董豪等
ISBN:9787121326226
定价:¥99.0
字数:354千字
页数:340
出版时间:2018-01
开本:16开
版次:01-01
装帧:
出版社:电子工业出版社
简介

本书由TensorLayer作者领衔写作,TensorLayer社区众包完成,作者全部来自一线人工智能研究员和工程师,内容不仅覆盖了传统书籍都有的多层网络、卷积网络、递归网络及增强学习等,还着重讲解了生成对抗网络、学习方法和实践经验,配有若干产品级别的实例。者将会从零学会目前最新深度学习,以及使用TL实现各种应用。

前言

深度学习已经成为了当今人工智能发展的主要助力,国务院印发的《新一代人工智能发展规划》中表示,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

作者简介

董豪:目前就读于帝国理工学院,从事计算机视觉、医疗数据分析和深度学习理论研究,在ICCV、TNSRE、TIFS、ACM MM等顶级会议和期刊发表过论文,Neurocomputing、TIP等会议和期刊的审稿人。有创业经验,擅长把深度学习算法与实际问题结合,获得多项国家发明专利和实用新型专利,TensorLayer创始人。__eol____eol__郭毅可:帝国理工学院计算机系终身教授,Data Science Institute主任,Discovery Science Group主任,主持多项欧盟和英国大型项目,研究重点为机器学习、云计算、大数据和生物信息学。伦敦E-Science研究中心首席科学家,英国InforSense有限公司董事会主席兼首席执行官,上海生物信息技术研究中心客座教授、首席科学家,TensorLayer项目领导。__eol____eol__杨光:帝国理工医学院高级研究员,皇家布朗普顿医院医学图像分析师,伦敦大学圣乔治医学院荣誉讲师,伦敦大学学院(UCL)硕士、博士、IEEE会员、SPIE会员、ISMRM会员、BMVA会员,专注于医疗大数据以及医学图像的成像和分析,在各类期刊会议上发表论文近40篇,国际专利两项,Medical Physics杂志临时副主编,MIUA会议委员会委员,长期为专业杂志会议义务审稿50余篇。其研究方向获得英国EPSRC、CRUK、NIHR和British Heart Foundation (BHF)资助。近期致力于Medical AI方向的创新创业。__eol____eol__吴超:帝国理工数字科学研究所研究员,主要从事医疗和城市领域数据分析和建模的研究工作,研究工作获得EPSRC、Royal Society等多项研究基金资助。__eol____eol__王剑虹:帝国理工硕士及利物浦大学本科毕业,主要研究语音识别分类问题;目前在UCL攻读研究型硕士,主要研究增强学习在游戏中的运用。 __eol____eol__幺忠玮:帝国理工硕士,本科毕业于北京邮电大学,主要研究方向为计算机视觉,对生成模型和目标识别领域感兴趣。目前致力于将目标检测算法植入嵌入式系统实现即时检测。__eol____eol__张敬卿:帝国理工博士在读,研究型硕士,主要研究兴趣包括深度学习、数据挖掘、时间序列与文本挖掘、多模态问题与生成模型。本科毕业于清华大学计算机科学与技术系,曾获得中国国家奖学金。__eol____eol__陈竑:北京大学光华管理学院在读,哈尔滨工业大学电子与信息工程学院毕业,深度学习爱好者。__eol____eol__林一鸣:帝国理工博士在读,主要研究深度学习在人脸分析方向的应用。__eol____eol__于思淼:帝国理工博士在读,浙江大学本科毕业,主要研究方向为深度学习、生成模型及其在计算机视觉方面的应用。__eol____eol__莫元汉:帝国理工博士在读,北京航空航天大学本科毕业,主要研究方向为深度学习、动力学及其在医疗图像分析方面的应用。__eol____eol__袁航:瑞士洛桑联邦理工(EPFL)硕士在读,本科就读于德国雅各布大学(Jacobs)计算机系,及在美国卡内基梅隆大学(CMU)计算机科学学院交换学习,主要从事计算神经科学与电脑人机接口研究。之前分别在帝国理工及马克斯普朗克智能系统研究院(Max Planck Institute for Intelligent Systems)进行研习,现在主要在EPFL G-lab研究脊髓修复对运动功能康复及血压控制等课题。__eol__

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个