Python+Tensorflow机器学习实战
上QQ阅读APP看书,第一时间看更新

2.2 TensorFlow源代码结构分析

前面介绍了TensorFlow的特点,为了更深入地理解TensorFlow的设计,以便后续更好地掌握各种机器学习模型,下面梳理一下TensorFlow的源代码。

2.2.1 源代码下载

TensorFlow的源代码在GitHub上进行了开源,在GitHub中将Tags选择为1.6版本,如图2.3的左图所示。跳转到1.6版本后,对源代码进行下载并解压到本地,如图2.3的右图所示。

图2.3 源代码下载图源代码下载地址为https://github.com/tensorflow/tensorflow/。

2.2.2 TensorFlow目录结构

我们以TensorFlow 1.6版本为例,看看其代码结构。

其中,最重要的源代码保存在tensorflow目录中,目录结构如下:

2.2.3 重点目录

下面介绍tensorflow目录中的几个重要目录。

1.contrib

contrib目录中保存的是TensorFlow中经常用到的功能,其中常用的几个功能如下。

Android

新增加的功能,主要提供了在Android系统上对TensorFlow的支持。

cudnn_rnn

实现基于cuDNN的循环神经网络。

framework

公共框架方法,包括大量函数的定义,也包括一些被废弃的函数。

layers

TensorFlow中分层的实现,主要包括initializers.py、layers.py、optimizers.py、regularizers.py和summaries.py等文件。其中initializers.py主要是完成对变量初始化的函数,layers.py主要是关于层操作和权重偏置变量的函数,optimizers.py主要包括损失函数和global_step张量的优化操作,regularizers.py主要包括带有权重的正则化操作。

learn

主要是进行深度学习的API,主要包括训练模型和评估模型、读取批处理数据和队列功能的封装。

slim

TensorFlow-Slim(TF-Slim)是一个轻量级的库,主要用于定义、训练和评估TensorFlow中的模型。

tensorboard

主要是对TensorFlow训练图表可视化工具的数据记录。

2.core

core目录中保存的是TensorFlow的底层实现,是C语言文件,包括公共运行库、基础功能模块和核心操作等。下面介绍它的两个重要功能。

protobuf

用于传输时的数据序列化。谷歌公司创建了一种新的数据序列化工具Protocol Buffer,而不是使用XML等方式来对结构化数据进行序列化。在TensorFlow中就是使用Protocol Buffer来完成RPC数据传递的。

framework

主要包括设备、节点、操作及属性等基层功能模块。

3.examples

examples目录中提供了深度学习的一些示例,特别是,该目录中的android目录是在Android系统中实现的移动端应用。但是某些示例已被调整到独立的models项目中。

4.python

python目录中提供了机器学习中经常用到的激活函数、池化函数、损失函数以及循环神经网络函数等。