电玩城打鱼捕鱼-专业24小时上下分

Tensorflow源码目录树,代码目录结构讲解

六月 6th, 2019  |  电玩城捕鱼系统简介

TensorFlow0.8发布以来受到了大量机器学习领域爱好者的关注,目前其项目在github上的follow人数在同类项目中排名第一。作为google的第一个开源项目,TensorFlow的源码结构较为清晰,相关的代码注释覆盖较全。本文首先从代码结构入手,分析TesnsorFlow的各个模块构成。

tensorflow/

  • ### tensorflow/

    ##### 该目录下存放着tensorflow的核心代码

    • #### contrib/

      ###### 该目录下存放有其他项目贡献者添加的相关贡献代码。由于tensorflow受关注程度较高,目前该目录正急剧膨胀。

    • #### core/

      ###### 后台C++实现部分。包含了主要的 C++代码 和 runtimes 。该目录为tensorflow的C++源码的核心。

      • ##### common_runtime/

        ###### tensorflow 普通的 执行逻辑。

      • ##### distributed_runtime/

        ###### tensorflow 与分布式相关的 执行逻辑。

      • ##### framework/

        ###### 包含主要的 抽象图计算 和 其他有用的library 。对tensorflow进行计算过程中的 通用组件 进行了定义和实现。

      • ##### graph/

        ###### tensorflow 图相关操作 的逻辑。 由于tensorflow中的数据计算本质上是一个图状结构的计算流程,该过程中存在将图进行切分并且并行化执行的可能性。该目录下的代码逻辑即为对图数据进行结构化定义并进行拆分的相关内容。

      • ##### kernels/

        ###### 对tensorflow中各个 单步op 的具体实现。

      • ##### lib/

        ###### 一些 公用的 调用方法 。同 util /

      • ##### ops/

        ###### 对 kernel/ 下的op进行注册和对外声明。

      • ##### platform/

        ###### 包含 抽象出平台 和 其他 导入库(protobuf等) 的代码

      • ##### protobuf/

        ###### tensorflow下各个 模块间 进行 数据传输 的 数据结构定义,通过proto进行配置实现。

      • ##### public/

        ###### 定义 Session

      • ##### user_ops/

        ###### 存放 自己编写 的 op

      • ##### util/

        ###### 一些 公用的 调用方法 。同 lib/

      • 其他 文件夹/

      • 其他 文档

    • #### examples/

      ###### 一些示例(如ios、android系统的示例)

    • #### g3doc/

      ###### 是针对c++、python的版本的代码文档

    • #### python/

      ###### 前台Python接口。 该目录下存放了tensorflow使用python编写的相关代码,是和 core/ 对应的python实现目录。使用python封装了 ** 对 core/ 中实现的相关的机器学习算法 的调用 ** 。 同时利用了 python方便的编程特性 和 C++高效的执行效率 。

      • ##### framework/

        ###### 包含 图的python抽象 等,(还没深入验证过的: “ 其中很多被序列化为 proto 或被传递到 swigged session 调用 ” )

      • ##### kernel_tests/

        ###### 单元测试代码 和 示例代码

      • ##### ops/

        ###### 核心python接口

      • ##### platform/

        ###### 和上面C++部分的platform(core/platform/)差不多, 对python I/O、单元测试等做了轻量级的包装。

    • #### stream_executor/

      ###### 流处理

    • #### tensorboard/

      ###### tensorflow独家模块。用于模型训练中 实时生成 图表,以监控 模型的训练程度

    • #### tools/

      ###### 一些 工具杂项(如pip、git)

    • #### user_ops/

      ###### 存放 自己编写 的 op

  • ### third_party/

  • ### tools/

  • ### util/

  • ### configure文档

    ###### 该文件用于配置tensorflow的安装环境,运行该文件并完成tensorflow的安装环境配置后,输入相应bazel指令即可完成代码的编译工作(需要先安装bazel)

  • ### 其他文档

根目录结构的相关介绍

以下是TensorFlow项目根目录下的文件结构(目前以TensorFlow-0.8为例)
图片 1
以下是对根目录下的几个核心文件和目录的相关介绍:

  • 目录tensorflow 该目录下存放着tensorflow的核心代码
  • 目录google
    该目录下存放着protobuf的相关代码,该目录通过在git clone 命令后添加
    --recurse-submodules
    可以下载得到。protobuf主要用于tensorflow中的各模块通信。
  • 目录third_party/tools/util
    目前这三个目录中的文件较少,还未看出其相关作用,可能会在接下来的项目发展中变得更加完善。
  • 文件configure
    该文件用于配置tensorflow的安装环境,运行该文件并完成tensorflow的安装环境配置后,运行bazel build -c opt //tensorflow/cc:tutorials_example_trainer
    即可完成代码的编译工作。( 需要先安装bazel)

由于目录google
的作用仅为提供protobuf的通信支持,当前我们主要对目录tensorflow的相关结构进行分析。


Supplement:

很多博客中提到的
models/(位于根目录下,该目录下存放这多个使用python实现的模型实例),我并没有看到。估计是最新版的Tensorflow源码取消了这个文件夹。

标签:, ,

Your Comments

近期评论

    功能


    网站地图xml地图