1 - Tensorflow源码目录结构

基于2018年5月28日github的tensorflow源码,即1.8版本

第一层

tensorflow: 核心代码目录。

third_party:第三方库,包括:eigen3,fft2d,hadoop,mkl,probuf ,kafka,mpi,tensorRT,nccl,grpc等等。

tools:只有两个文件 bazel.rc 和 tf_env_collect.sh。

util/python:存放用到的 python 工具,不过当前版本其中只有一个BUILD文件。

tensorflow

c:

cc:

compiler:

contrib:存放有其他项目贡献者添加的相关贡献代码,非核心官方代码

core:这是 tensorflow 的核心代码模块.

docs_str:以md呈现的帮助文档

examples:以jupyter notebook呈现的例子文档

g3doc:为空,都迁移到docs_str

go,java,python:主要的第三方 API,其中python是最全的接口

stream_executor:tensorflow 流图的并行计算执行,核心代码,主要是关于cuda的封装。

tools:

user_ops:

tensorflow/core:Core 目录是代码最核心的部分,包含 框架、图、会话、runtime 最核心的部分

api_def:

common_runtime:公共运行库,包含 会话(session)、线程(thread),内存管理(memory), 设备调度(device)等基本运行库。

debug:

distributed_runtime:分布式运行库,与上面类似,作为分布式情况下的运行库,提供运行支撑。

example:

framework:框架基础模块定义,主要是通用组件的结构格式定义;

graph:计算流图相关基础操作(类结构),包括 拆分、合并、执行 等操作,被外面的 executor 调用;

kernels:核心操作定义,像常用的运算 matmul,sigmoid 等操作;

lib:基础库用于内部调用,包括 hash、io、jpeg、math 等;

ops:对 kernel 下的op进行注册和对外声明;

platform: 针对不同平台的依赖

profiler:

protobuf:Google 的传输交换模块,用于传输时的数据序列化;

public:

user_ops:

util:

2 - Tensorflow运行目录结构

上述是基于tensorflow的源码进行目录结构展示,而我们通常使用的时候,是基于编译后的,即所谓运行的目录。基于tensorflow_gpu 1.7,采用命令

tree -L 1 -F -C tensorflow

对centos系统中"Anaconda3/lib/python3.6/site-packages"下面的tensorflow进行目录展示



图2.1 tensorflow一级目录结构

其中,contrib较为特殊,其中涉及的部分较多



图2.2 tensorflow/contrib一级目录结构



图2.3 tensorflow中其他子目录的一级目录结构

当我们运行

import tensorflow as tf

会自动执行"tensorflow/_init_.py"该文件,而该文件中有如图所示的一行代码,会自动将tensorflow/python下的py文件都导入进来



然而tensorflow/python同时会自动运行tensorflow/python/_init_.py



从而在顶层空间中会有keras等变量,可以直接通过tf.keras进行访问,而其对应的就是tensorflow/python/keras文件夹。当然该初始化文件中还有部分是导入tensorflow/core的

所以,我们通常直接访问tf.xxx都是在访问tensorflow/python和tensorflow/core等下面的部分;当然因为tensorflow/_init_.py下面有如

del python
del core

等代码,从而,我们在不显式导入的基础上,只是访问

tensorflow/python/{keras,layers,...}
tensorflow/contrib
tensorflow/tools

这三个部分的文件夹路径

参考文献:

Tensorflow[目录结构]的更多相关文章

  1. ASP.NET Core应用针对静态文件请求的处理[4]: DirectoryBrowserMiddleware中间件如何呈现目录结构

    和StaticFileMiddleware中间件一样,DirectoryBrowserMiddleware中间本质上还是定义了一个请求地址与某个物理目录之间的映射关系,而目标目录体现为一个FilePr ...

  2. 一个技术汪的开源梦 —— 基于 .Net Core 的公共组件之目录结构

    一个技术汪的开源梦 —— 目录 这篇文章是开源公共组件的开篇那就先说说项目的 Github 目录结构和 .Net Core 的项目结构. 1. GitHub 目录结构和相关文件 - src 源码项目目 ...

  3. python基础-软件目录结构规范

    一.定义目录结构目的 可读性高: 不熟悉这个项目的代码的人,一眼就能看懂目录结构,知道程序启动脚本是哪个,测试目录在哪儿,配置文件在哪儿等等.从而非常快速的了解这个项目. 可维护性高: 定义好组织规则 ...

  4. Eclipse中一个Maven工程的目录结构

    在之前的javaSE开发中,没有很关注Eclipse工程目录下的环境,总是看见一个src就点进去新建一个包再写一个class.以后的日子中也没有机会注意到一个工程到底是怎么组织的这种问题,跟不要说自己 ...

  5. linux -目录结构

    摘自:http://www.comptechdoc.org/os/linux/usersguide/linux_ugfilestruct.html 这个目录结构介绍是我目前看到介绍最全的,有时间在翻译 ...

  6. Go 项目的目录结构 及 安装技巧

    项目目录结构如何组织,一般语言都是没有规定.但 Go 语言这方面做了规定,这样可以保持一致性 1.一般的,一个 Go 项目在 GOPATH 下,会有如下三个目录: |--bin |--pkg |--s ...

  7. Android基础学习第一篇—Project目录结构

    写在前面的话: 1. 最近在自学Android,也是边看书边写一些Demo,由于知识点越来越多,脑子越来越记不清楚,所以打算写成读书笔记,供以后查看,也算是把自己学到所理解的东西写出来,献丑,如有不对 ...

  8. 【JBOSS】 JBOSS目录结构

    JBOSS在默认情况下可以用3种方式启动minimal,default和all.三种模式内部的模块数量依次递增   例如: 1-执行JBOSS_HOME/bin/run.bat批量处理文件启动JBos ...

  9. 每天一个linux命令(23):Linux 目录结构

    对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面 ...

随机推荐

  1. 卷积神经网络CNNs的理解与体会

    https://blog.csdn.net/shijing_0214/article/details/53143393 孔子说过,温故而知新,时隔俩月再重看CNNs,当时不太了解的地方,又有了新的理解 ...

  2. Tomcat 8默认工具manager管理页面访问配置

    Tomcat 8默认工具manager管理页面访问配置 1. 分配相关的角色权限 需要配置的配置文件是${catalina.home}/conf/tomcat-users.xml先给Tomcat访问相 ...

  3. Lightning框架示例 - 动态建立Lightning组件

    动态建立Lightning组件 组件化前端开发是Lightning框架的优点之一.在进行Lightning应用开发时,我们可以将组件进行嵌套.引用,从而实现模块的封装和重用,提高开发效率. 组件的嵌套 ...

  4. sqlserver 2017 docker安装(启动代理)

    从 Docker Hub 中拉出 SQL Server 2017 Linux 容器映像. docker pull microsoft/mssql-server-linux:2017-latest 运行 ...

  5. [20170927]关于hugepages.txt

    [20170927]关于hugepages.txt --//今天测试hugepages与内核参数nr_overcommit_hugepages,才发现HugePages_Surp表示什么? --// ...

  6. 对haproxy文件进行增删改查

    1.文件内容 global log 127.0.0.1 local2 daemon maxconn 256 log 127.0.0.1 local2 info defaults log global ...

  7. January 22nd, 2018 Week 04th Monday

    It is only when you are pursued that you become swift. 唯有在被追赶的时候,你才能真正地奔跑. It is so bad a feeling wh ...

  8. Class doesn't contain any JAX-RS annotated method

    项目中使用了Jersey RESTful风格的注解 , 根据错误提示就知道了 , 在类中没有带注解的方法 ,所以只要在方法上添加 @path() 注解就行了,至少要有一个方法带有Jersey注解

  9. Alpha冲刺! Day7 - 砍柴

    Alpha冲刺! Day7 - 砍柴 今日已完成 晨瑶:列了各模块目前的进度情况:确定了纯多媒体流星预览页的显示方式:给工具包函数列表新增了与服务器端的交互:玩华为软件云发现刚好可以试试它的测试,于是 ...

  10. Skip-Gram模型

    Stanford CS224n的课程资料关于word2vec的推荐阅读里包含Word2Vec Tutorial - The Skip-Gram Model 这篇文章.这里针对此文章作一个整理. wor ...