『TensorFlow Internals』笔记_源码结构
零、资料集合
- 知乎专栏:Bob学步
- 知乎提问:如何高效的学习 TensorFlow 代码?.
- 大佬刘光聪(Github,简书)
- 开源书:TensorFlow Internals,强烈推荐(本博客参考书)
- TensorFlow架构与设计:编程模型
- TensorFlow架构与设计:概述
- TensorFlow架构与设计:会话生命周期
- TensorFlow架构与设计:图模块
- TensorFlow架构与设计:OP本质论
- TensorFlow架构与设计:变量初始化
- 大佬姚健(Github)
- 系列文章(图片?):图解tensorflow源码
- 『深度长文』Tensorflow代码解析(一)
- 『深度长文』Tensorflow代码解析(二)
- 『深度长文』Tensorflow代码解析(三):Op/Kernel相关
- 『深度长文』Tensorflow代码解析(四):Graph相关
- 『深度长文』Tensorflow代码解析(五):Session相关
- TensorFlow Kernels Registration 源码解析:TensorFlow的介绍写在paddle的wiki里。
- 网上某大佬博客(强烈推荐)
- TensorFlow 拆包(一):Session.Run()
- TensorFlow 拆包(二):TF 的数据流模型实现以及自动求导
- TensorFlow 拆包(三):Graph 和 Node
- TensorFlow 拆包(四):Device
- TensorFlow 拆包(五):Distributed
- TensorFlow 拆包(六):RDMA
- TensorFlow 拆包(七):Profiling 踩坑 & Benchmark
- TensorFlow 拆包(八):Dynamic Control Flow in Large-Scale Machine Learning
- 知乎某大佬专栏
- 其他
另附:
一、代码获取
克隆源码:
git clone https://github.com/tensorflow/tensorflow.git
切换到r1.4稳定分支:
cd tensorflow
git check r1.4
二、源码结构
tree -d -L 1 ./tensorflow

| 目录 | 说明 |
|---|---|
| /c | C++ API,也是一些 Python API 与 C 层的接口部分 |
| /cc | |
| /compiler | 即时编译的工具内容 |
| /contrib | 一些额外的库,大部分由第三方添加,其中一些正式确定的内容会移出去 |
| /core | TensorFlow 的核心运行时代码 |
| /core/distributed_runtime | 分布式运行时代码 |
| /core/framework | 运行时中相对最底层的架构部分,涉及到很多基础结构的定义、与 Protobuf 的结合部分等等 |
| /core/graph | 运行时中对计算图的定义和处理 |
| /core/kernels | 计算图中 Op 的核心计算部分(即 Op 的 Kernel 函数) |
| /core/lib | 运行时中调用的其他库的接口? |
| /core/ops | C 部分的 Op 分成两个部分,核心计算函数在前面的 /kernels 目录中,这里存的是 Op 面向上层 Python 运行时的注册部分内容。 详见 TensorFlow 拆包(三):Graph 和 Node |
| /core/platform | 针对不同平台的额外内容 |
| /core/profiler | 运行时的调优工具? |
| /core/protobuf | Protobuf 的定义 |
| /core/util | 其他的一些工具 |
| /python | TensorFlow Python 部分的运行时和 API |
重点文件夹如下:
core
内核的源码,C++实现。
python
接口API,python实现。
contrib
第三方库,实验性,当 contrib 标准化,并从 中,并正式对外发布。
stream_executor
提速组件,并行化、分布式相关。
compiler
优化计算图,主要优化OP的分解组合方式,找到尽可能好的图构建方式,能够分析运行时的计算图,将多个 OP 融
合在一起,并生成更高效的本地机器代码,提升计算图的执行效率。
三、逻辑构架图

『TensorFlow Internals』笔记_源码结构的更多相关文章
- 『TensorFlow Internals』笔记_系统架构
一.架构概览 TensorFlow 的系统结构以 C API 为界,将整个系统分为前端和后端两个子系统: 前端系统:提供编程模型,负责构造计算图: 后端系统:提供运行时环境,负责执行计算图,后端系统的 ...
- nginx源码学习_源码结构
nginx的优秀除了体现在程序结构以及代码风格上,nginx的源码组织也同样简洁明了,目录结构层次结构清晰,值得我们去学习.nginx的源码目录与nginx的模块化以及功能的划分是紧密结合,这也使得我 ...
- python编程:从入门到实践--项目1-外星人入侵_学习笔记_源码
这里有九个.py文件,在工作的间隙,和老板斗智斗勇,终于完成了,实现了游戏的功能,恰逢博客园开通,虽然是对着书上的代码敲了一遍,但是对pygam这个库的了解增加了一些,作为一个python初学者,也作 ...
- redis笔记_源码_跳表skiplist
参照:https://juejin.im/post/57fa935b0e3dd90057c50fbc#comment http://redisbook.com/preview/skiplist/dat ...
- redis笔记_源码_字典dict
参考:https://redissrc.readthedocs.io/en/latest/datastruct/dict.html Expand: 条件: 新的table 大小: Rehash: 条件 ...
- redis笔记_源码_双端链表list
参考:https://redissrc.readthedocs.io/en/latest/datastruct/adlist.html
- redis笔记_源码_简单动态字符串SDS
参照:https://zcheng.ren/sourcecodeanalysis/theannotatedredissourcesds/#sds%E5%B0%8F%E7%BB%93 这里用char b ...
- redis笔记_源码_内存分配
文件:zmoalloc.h zmoalloc.c 1.求两个整数的余数 eg: 求_n对sizeof(long)的余数(_n&(sizeof(long)-1)), 性能提升为50%-100% ...
- java画图程序_图片用字母画出来_源码发布_版本二
在上一个版本:java画图程序_图片用字母画出来_源码发布 基础上,增加了图片同比例缩放,使得大像素图片可以很好地显示画在Notepad++中. 项目结构: 运行效果1: 原图:http://imag ...
随机推荐
- Python之Requests的安装与基本使用
# 安装 使用 pip 安装Requests非常简单 pip install requests 或者使用 easy_install 安装 easy_install requests # 获得源码 Re ...
- 【入门】Gradle的基本使用、在IDEA中的配置、常用命令
一.介绍 java的源码构建工具,大致经历了 ant -> maven -> gradle 这个过程,每一次进步,都是在解决之前的工具所带来的问题,简单来说: 1. ant 功能虽然也很强 ...
- P3338 [ZJOI2014]力
思路 颓柿子的题目 要求求这样的一个式子 \[ F_j=\sum_{i<j}\frac{q_iq_j}{(i-j)^2}-\sum_{i>j}\frac{q_iq_j}{(i-j)^2} ...
- P3232 [HNOI2013]游走
吐槽 傻了傻了,对着题解改了好长时间最后发现是自己忘了调用高斯消元了... 思路 期望题,分配编号,显然编号大的分给贡献次数小的,所以需要知道每个边被经过次数的期望 然后边被经过的次数的期望就是连接的 ...
- BZOJ 3622 已经没有什么好怕的了
扯淡 看到题目想到二项式反演 然后忘了给求阶乘的时候取模,调了一晚上 真令人窒息 思路 二项式反演 首先二项式反演还有另一种形式(不会证) 设\(G_i\)为有至少i个的方案数量,\(F_i\)为恰好 ...
- Deep Learning framework --- MexNet 安装,测试,以及相关问题总结
Deep Learning framework --- MexNet 安装,测试,以及相关问题总结 一.安装: 参考博文:http://www.open-open.com/lib/view/op ...
- 在 2016 年学 JavaScript 是一种什么样的体验?(React从入门到放弃)
jquery 年代 vs 前端模块化 http://blog.csdn.net/offbye/article/details/52793921 ++ 嘿,我最近接到一个 Web 项目,不过老实说,我这 ...
- 动态 hover 使用变相使用
使用 onmouseover 和 onmouseout 代替 hover foreach (var menu in Model.OrderBy(x => x.Order).Where(x ...
- RN 数据持久化存储服务API
一些数据信息需要存储在手机内存中,比如用户的登录名密码 token啥的,所以这就需要了来存这些信息 在RN中 采用了AsyncStorage是一个简单的.异步的.持久化的Key-Value存储系统,它 ...
- 深入理解 java I/O
Java 的 I/O 类库的基本架构 I/O 问题是任何编程语言都无法回避的问题,可以说 I/O 问题是整个人机交互的核心问题,因为 I/O 是机器获取和交换信息的主要渠道.在当今这个数据大爆炸时代, ...