tensorflow 核心流程剖析 1-- 简介
这个博文是什么和不是什么
对于大部分使用者来说,tensorflow就像一个大黑盒,我们平时接触的只是一层python API的封装。
概括来说,python API只是负责搭建好要运行的神经网络模型,即静态模型。
通过python API能看、能改,但是不能运行。
真正运行这个神经网络模型的,是其C++实现的部分,可以看做一个动态模型。
也是这部分,才让tensor真正的flow起来。
不分析的:
- 如何使用python API进行各种模型的训练和调试:这些部分在tensorflow官网、各类博客文章中,已经有很充分的内容,大家可以去参考和上手实践,这里不再赘述。
- deep learning: 本身是一门系统的理论, 感兴趣的朋友,我推荐去看看这本书:Deep Learning. by Ian Goodfellow , Yoshua Bengio , Aaron Courville . 2016年第一版
要分析的:
- tensorflow的核心部分:对应c++实现的神经网络模型运行部分。其本质上,是以支持大规模的分布式、并行计算作为设计的基本目标。tensorflow实现这个目标的流程、原理及代码,是作为本文分析的内容。
- 分析的模块:以下图表示一下。
适合的读者
- 系统学习过tensorflow官网的教程,编码实践过一些简单的神经网络模型, 同时想了解和探讨一下tensorflow核心流程的朋友。
- 对并行软件系统设计感兴趣、且有一定基础的朋友。
- 愿意去读tensorflow的c++核心代码的朋友:因为本文主要反映的是核心代码的流程,有时您最好结合源代码来看,更容易理解,否则会觉得太过抽象。需要具备c++ 11 的基础。
- 尝试修改tensrflow核心代码,做出定制化功能的朋友。
后续剖析的内容
- 神经网络模型(Computation Graph)的创建、优化和分割
- 神经网络模型的分布式并发执行
- 运行设备的生成和管理
- 内存的高效使用
- Op、Kernel的注册和动态加载机制
- kernel的并发执行
使用的tf代码版本
r1.1