Tensorflow[目录结构]
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
这三个部分的文件夹路径
参考文献:
- .【深度长文5篇系列】Tensorflow代码解析,知乎
- .【源码目录浅析】浅入浅出TensorFlow 9 - 代码框架解析
- .【利炳根_TensorFlow】学习笔记TF050:TensorFlow源代码解析](https://www.jianshu.com/p/b859b1e6ff5c);tensorflow系列
- .【tensorflow教程】如何高效的学习 TensorFlow 代码?
- .【图解tensorflow源码】tensorflow源码分析
- .TensorFlow 源码分析之内存管理BFC算法
- .Tensorflow-slim 学习笔记
- .【tensorflow框架结构】TensorFlow 技术框架解析 | 图文理解深度学习技术实现
- .【4篇源码解析】tensorflow源码分析
- .【distributed Tensorflow’s workflow】Tensorflow architecture analysis
- .【article】look-inside-tensorflow-googles-open-source-deep-learning-framework
- .【video】Tensorflow源码级技术分享
- .【】Tensorflow C++ 编译和调用图模型
- .【】如何阅读TensorFlow源码
- .【】TensorFlow架构与设计:会话生命周期
Tensorflow[目录结构]的更多相关文章
- ASP.NET Core应用针对静态文件请求的处理[4]: DirectoryBrowserMiddleware中间件如何呈现目录结构
和StaticFileMiddleware中间件一样,DirectoryBrowserMiddleware中间本质上还是定义了一个请求地址与某个物理目录之间的映射关系,而目标目录体现为一个FilePr ...
- 一个技术汪的开源梦 —— 基于 .Net Core 的公共组件之目录结构
一个技术汪的开源梦 —— 目录 这篇文章是开源公共组件的开篇那就先说说项目的 Github 目录结构和 .Net Core 的项目结构. 1. GitHub 目录结构和相关文件 - src 源码项目目 ...
- python基础-软件目录结构规范
一.定义目录结构目的 可读性高: 不熟悉这个项目的代码的人,一眼就能看懂目录结构,知道程序启动脚本是哪个,测试目录在哪儿,配置文件在哪儿等等.从而非常快速的了解这个项目. 可维护性高: 定义好组织规则 ...
- Eclipse中一个Maven工程的目录结构
在之前的javaSE开发中,没有很关注Eclipse工程目录下的环境,总是看见一个src就点进去新建一个包再写一个class.以后的日子中也没有机会注意到一个工程到底是怎么组织的这种问题,跟不要说自己 ...
- linux -目录结构
摘自:http://www.comptechdoc.org/os/linux/usersguide/linux_ugfilestruct.html 这个目录结构介绍是我目前看到介绍最全的,有时间在翻译 ...
- Go 项目的目录结构 及 安装技巧
项目目录结构如何组织,一般语言都是没有规定.但 Go 语言这方面做了规定,这样可以保持一致性 1.一般的,一个 Go 项目在 GOPATH 下,会有如下三个目录: |--bin |--pkg |--s ...
- Android基础学习第一篇—Project目录结构
写在前面的话: 1. 最近在自学Android,也是边看书边写一些Demo,由于知识点越来越多,脑子越来越记不清楚,所以打算写成读书笔记,供以后查看,也算是把自己学到所理解的东西写出来,献丑,如有不对 ...
- 【JBOSS】 JBOSS目录结构
JBOSS在默认情况下可以用3种方式启动minimal,default和all.三种模式内部的模块数量依次递增 例如: 1-执行JBOSS_HOME/bin/run.bat批量处理文件启动JBos ...
- 每天一个linux命令(23):Linux 目录结构
对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面 ...
随机推荐
- Layui treeGrid
目前treeGrid的源码不是很完善, 没有开放, 只有社区里面有, 想用的可以看看下面方法: 1.加入treeGrid.js文件 (1)layui 的treeGrid 下载地址: https: ...
- 使用jQuery和CSS3实现一个数字时钟
点击进入更详细教程及源码下载 在线演示 我们经常会在网站中看见一个时钟的效果.今天向大家分享一个使用jQuery和CSS3实现一个数字时钟教程. http://www.html5cn.org/ ...
- 【读书笔记】iOS-UI Automation 需要遵守的规则
1,被测试的应用程序必须是Developer签名的应用程序或者是运行在模拟器里面的应用程序. 2,在被测试的应用程序开发的过程中需要处理UI控件的可访问性.使用IB的开发工程师需要在XIB中加入一个A ...
- Flutter 布局(九)- Flow、Table、Wrap详解
本文主要介绍Flutter布局中的Flow.Table.Wrap控件,详细介绍了其布局行为以及使用场景,并对源码进行了分析. 1. Flow A widget that implements the ...
- 【Java入门提高篇】Day21 Java容器类详解(四)ArrayList源码分析
今天要介绍的是List接口中最常用的实现类——ArrayList,本篇的源码分析基于JDK8,如果有不一致的地方,可先切换到JDK8后再进行操作. 本篇的内容主要包括这几块: 1.源码结构介绍 2.源 ...
- (其他)最常用的15大Eclipse开发快捷键技巧
转自CSDNJava我人生(陈磊兴) 原文出处 引言 做java开发的,经常会用Eclipse或者MyEclise集成开发环境,一些实用的Eclipse快捷键和使用技巧,可以在平常开发中节约出很多 ...
- Java 数据驱动测试
适用场景 测试搜索功能, 基于数据类型需要测多种不同的数据, 比如最大值, 小数, 负数, 字符串, 特异符号等等. 如果直接写代码, 每一种数据类型都需要写一遍代码, 冗长且不方便调试. 如果采用数 ...
- MongoDB设置
添加mongodb用户组 groupadd mongodb 添加mongodb用户 useradd mongodb -g mongodb 将mongodb启动项目追加入rc.local保证mongod ...
- TERADATA数据库操作
1.创建一个数据库的命令举例: ,spool; 注释:该命令创建了一个测试数据库testbase,其永久表空间为200mb,spool空间不能超过100mb.在teradata数据库系统的缺省方式下, ...
- 简单易懂的程序语言入门小册子(3):基于文本替换的解释器,let表达式,布尔类型,if表达式
let表达式 let表达式用来声明一个变量. 比如我们正在写一个模拟掷骰子游戏的程序. 一个骰子有6个面. 所以这个程序多次用到了6这个数字. 有一天,我们忽然改变主意,要玩12个面的骰子. 于是我们 ...