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. Ps—导出:sql作业配合ps导出csv文件

    $dateText=Get-Date #获取当前日期时间 $dateText = $dateText.ToShortDateString() #转为短日期格式(去掉时间部分) $checkDate=( ...

  2. 谷歌迂回入华:Waymo无人车抢先进驻上海!

    谷歌迂回入华:Waymo无人车抢先进驻上海! https://mp.weixin.qq.com/s/d5Cw2uhykMJ9urb6Cs8aNw 谷歌又双叒叕要回归中国了?这已经是第不知道多少次的传言 ...

  3. 关于BI商业智能的“8大问”|一文读懂大数据BI

    这里不再阐述商业智能的概念了,关于BI,就从过往的了解,搜索以及知乎的一些问答,大家困惑的点主要集中于大数据与BI的关系,BI的一些技术问题,以及BI行业和个人职业前景的发展.这里归纳成8个问题点,每 ...

  4. maven(六),外置maven运行环境配置

    外置maven eclipse内置的maven插件是固定版本,如果要用其他版本的maven,可以使用外置maven 下载地址: http://maven.apache.org/download.cgi ...

  5. TensorFlow 安装教程

    1.准备好Anaconda环境 tensorflow是属于很高层的应用.高层应用的一个比较大的麻烦就是需要依赖的底层的东西很多,如果底层依赖没有弄好的话,高层应用是没法玩转的. 在极客学院有关tens ...

  6. [20180730]exadata与行链接.txt

    [20180730]exadata与行链接.txt --//最近一段时间在看<expert oracle exadata>,智能扫描的三大优化方法是:字段投影,谓词过滤,存储索引.大多数智 ...

  7. Configure Monit on AWS CentOS7 to guard Squid proxy

    Install Monit:sudo -iamazon-linux-extras install epelyum -y install monit Config monit: vim /etc/mon ...

  8. entity framework异常 The specified cast from a materialized 'System.Int32' type to the 'System.String' type is not valid

    ROW_NUMBER() OVER (ORDER BY (select Null)) AS Id entity framework 查询中有这句会有异常

  9. check

    private int AddNewstoDB(NewsModels newsModels, string dateTimeStr, string jsonStr, string cid, strin ...

  10. [MapReduce_8] MapReduce 中的自定义分区实现

    0. 说明 设置分区数量 && 编写自定义分区代码 1. 设置分区数量 分区(Partition) 分区决定了指定的 Key 进入到哪个 Reduce 中 分区目的:把相同的 Key ...