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

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

内容简介

TensorFlow是谷歌2015年开源的主流深度学习框架,目前已得到广泛应用。《TensorFlow:实战Google深度学习框架(第2版)》为TensorFlow入门参考书,旨在帮助读者以快速、有效的方式上手TensorFlow和深度学习。书中省略了烦琐的数学模型推导,从实际应用问题出发,通过具体的TensorFlow示例介绍如何使用深度学习解决实际问题。书中包含深度学习的入门知识和大量实践经验,是走进这个前沿、热门的人工智能领域的优选参考书。

第2版将书中所有示例代码从TensorFlow 0.9.0升级到了TensorFlow 1.4.0。在升级API的同时,第2版也补充了更多只有TensorFlow 1.4.0才支持的功能。另外,第2版还新增两章分别介绍TensorFlow高层封装和深度学习在自然语言领域应用的内容。

《TensorFlow:实战Google深度学习框架(第2版)》适用于想要使用深度学习或TensorFlow的数据科学家、工程师,希望了解大数据平台工程师,对人工智能、深度学习感兴趣的计算机相关从业人员及在校学生等。

作者简介

郑泽宇,2011年获北京大学计算机学士学位,2013年获卡内基梅隆大学计算机硕士学位,前谷歌高级工程师,现为才云科技(Caicloud.io)联合创始人、首席大数据科学家。针对分布式TensorFlow上手难、管理难、监控难、上线难等问题,带领团队成功开发国内成熟的分布式TensorFlow深度学习平台,在机器学习、人工智能领域有着丰富的经验。

梁博文,谷歌工程师。2011年获北京大学计算机学士学位,2013年获哥伦比亚大学计算机硕士学位,同年加入谷歌翻译组,参与并领导了多个项目,负责了3个语言的翻译模型的研发工作,在自然语言处理方面有丰富经验,在统计翻译模型、神经网络翻译模型、语料数据清洗等方面均有深入研究。

目录

第1章 深度学习简介

1.1 人工智能、机器学习与深度学习

1.2 深度学习的发展历程

1.3 深度学习的应用

1.3.1 计算机视觉

1.3.2 语音识别

1.3.3 自然语言处理

1.3.4 人机博弈

1.4 深度学习工具介绍和对比

小结

第2章 TensorFlow环境搭建

2.1 TensorFlow的主要依赖包

2.1.1 Protocol Buffer

2.1.2 Bazel

2.2 TensorFlow安装

2.2.1 使用Docker安装

2.2.2 使用pip安装

2.2.3 从源代码编译安装

2.3 TensorFlow测试样例

小结

第3章 TensorFlow入门

3.1 TensorFlow计算模型——计算图

3.1.1 计算图的概念

3.1.2 计算图的使用

3.2 TensorFlow数据模型——张量

3.2.1 张量的概念

3.2.2 张量的使用

3.3 TensorFlow运行模型——会话

3.4 TensorFlow实现神经网络

3.4.1 TensorFlow游乐场及神经网络简介

3.4.2 前向传播算法简介

3.4.3 神经网络参数与TensorFlow变量

3.4.4 通过TensorFlow训练神经网络模型

3.4.5 完整神经网络样例程序

小结

第4章 深层神经网络

4.1 深度学习与深层神经网络

4.1.1 线性模型的局限性

4.1.2 激活函数实现去线性化

4.1.3 多层网络解决异或运算

4.2 损失函数定义

4.2.1 经典损失函数

4.2.2 自定义损失函数

4.3 神经网络优化算法

4.4 神经网络进一步优化

4.4.1 学习率的设置

4.4.2 过拟合问题

4.4.3 滑动平均模型

小结

第5章 MNIST数字识别问题

5.1 MNIST数据处理

5.2 神经网络模型训练及不同模型结果对比

5.2.1 TensorFlow训练神经网络

5.2.2 使用验证数据集判断模型效果

5.2.3 不同模型效果比较

5.3 变量管理

5.4 TensorFlow模型持久化

5.4.1 持久化代码实现

5.4.2 持久化原理及数据格式

5.5 TensorFlow最佳实践样例程序

小结

第6章 图像识别与卷积神经网络

6.1 图像识别问题简介及经典数据集

6.2 卷积神经网络简介

6.3 卷积神经网络常用结构

6.3.1 卷积层

6.3.2 池化层

6.4 经典卷积网络模型

6.4.1 LeNet-5模型

6.4.2 Inception-v3模型

6.5 卷积神经网络迁移学习

6.5.1 迁移学习介绍

6.5.2 TensorFlow实现迁移学习

小结

第7章 图像数据处理

7.1 TFRecord输入数据格式

7.1.1 TFRecord格式介绍

7.1.2 TFRecord样例程序

7.2 图像数据处理

7.2.1 TensorFlow图像处理函数

7.2.2 图像预处理完整样例

7.3 多线程输入数据处理框架

7.3.1 队列与多线程

7.3.2 输入文件队列

7.3.3 组合训练数据(batching)

7.3.4 输入数据处理框架

7.4 数据集(Dataset)

7.4.1 数据集的基本使用方法

7.4.2 数据集的高层操作

小结

第8章 循环神经网络

8.1 循环神经网络简介

8.2 长短时记忆网络(LSTM)结构

8.3 循环神经网络的变种

8.3.1 双向循环神经网络和深层循环神经网络

8.3.2 循环神经网络的dropout

8.4 循环神经网络样例应用

小结

第9章 自然语言处理

9.1 语言模型的背景知识

9.1.1 语言模型简介

9.1.2 语言模型的评价方法

9.2 神经语言模型

9.2.1 PTB数据集的预处理

9.2.2 PTB数据的batching方法

9.2.3 基于循环神经网络的神经语言模型

9.3 神经网络机器翻译

9.3.1 机器翻译背景与Seq2Seq模型介绍

9.3.2 机器翻译文本数据的预处理

9.3.3 Seq2Seq模型的代码实现

9.3.4 注意力机制

小结

第10章 TensorFlow高层封装

10.1 TensorFlow高层封装总览

10.2 Keras介绍

10.2.1 Keras基本用法

10.2.2 Keras高级用法

10.3 Estimator介绍

10.3.1 Estimator基本用法

10.3.2 Estimator自定义模型

10.3.3 使用数据集(Dataset)作为Estimator输入

小结

第11章 TensorBoard可视化

11.1 TensorBoard简介

11.2 TensorFlow计算图可视化

11.2.1 命名空间与TensorBoard图上节点

11.2.2 节点信息

11.3 监控指标可视化

11.4 高维向量可视化

小结

第12章 TensorFlow计算加速

12.1 TensorFlow使用GPU

12.2 深度学习训练并行模式

12.3 多GPU并行

12.4 分布式TensorFlow

12.4.1 分布式TensorFlow原理

12.4.2 分布式TensorFlow模型训练

小结

感悟与笔记

MNIST数字识别问题

  • TensorFlow提供了封装好的MNIST数据处理类,在这里将直接使用这个类,将数据从原始的数据包中解析成训练和测试神经网络所使用的格式。
    • 每一张图片是一个28*28的大小,处理后的图片是一个长度是784的一维数组。数组中的数字大小在[0 1]之间。
  • 训练、验证和测试
    • 使用神经网络进行训练数据集。
    • 因为神经网络训练的时间本身比较长,所以若采用交叉验证集进行验证模型的效果,则会花费很长的时间。所以,在海量数据的时候一般采用验证数据集的方式来评测模型的效果。调整神经网络的结构对于最终的正确率有很大的影响。由于本身数据集不是特别大,所以使用滑动平均模型、指数衰减的学习率和正则化所带来的正确率的提升不是很明显。
  • 变量管理
    • 当神经网络的结构更加复杂、参数更多时,需要一种更好的方式来传递和管理神经网络的参数。TensorFlow提供了通过变量名称的方式来创建或获取一个变量的机制。通过这个机制,可以在不同的函数中直接通过变量的名字来使用变量,而不需要将变量通过参数的形式传递。这种机制是通过tf.get_variable和tf.variable_scope函数来实现的。
    • (1) tf.get_variable在用于创建变量时,是和tf.Variable等价的。区别在于指定变量名称的参数,在后者中变量名称是一个可选的参数,而在前者中是一个必选的参数。
    • (2)tf.variable_scope函数生成一个上下文管理器,来控制tf.get_variable获取一个已经创建的变量。
  • TensorFlow模型持久化
    • 为了让训练的结果可以复用,需要将训练得到的神经网络模型持久化
    • (1)TensorFlow提供一个API用于保存和还原一个神经网络。这个API是tf.train.Saver类。
    • TensorFlow模型一般会被保存在后缀是.ckpt的文件中。在这个文件目录之下有三个文件。第一个文件保存了计算图的结构。第二个文件保存了TensorFlow中每一个变量的取值。最后一个文件保存了一个目录之下的所有的模型文件列表。
    • (2)持久化是由上面说的三个文件来完成的。
  • 结合3和4介绍示例MNIST(结合3中的变量管理机制和4中的持久化机制)
    • 本节将前向传播过程抽象成一个函数,因为在训练和测试中被用到,所以按照函数的方式使用起来更方便。
    • 程序1定义了前向传播过程和神经网络中的参数;
    • 程序2定义了神经网络的训练过程(关注正则损失P127);
    • 程序3定义了测试过程(不关注正则损失P130,所以设置参数是None。这里是在滑动平均模型上做测试)。将训练和测试的过程分来。
Copyright © 2021-2022 知识猫. All Rights Reserved.