作者:刘光聪 ,中兴通讯高级系统架构师,专注机器学习算法,分布式系统架构与优化。
原文:TensorFlow架构与设计:图模块
责编:王艺 CSDN AI记者,投稿、寻求报道、深入交流请邮件wangyi@csdn.net或扫描文末二维码添加微信。相关文章:
图解TensorFlow架构与设计
计算图是TensorFlow领域模型的核心。本文通过对计算图领域模型的梳理,讲述计算图构造的基本原理。
边
Edge持有前驱节点与后驱节点,从而实现了计算图的连接,也是计算图前向遍历,后向遍历的衔接点。
边上的数据以Tensor的形式传递,Tensor的标识由源节点的名称,及其所在边的src_output唯一确定。也就是说,tensor_id = op_name:src_output
src_output与dst_input
Edge持有两个重要的属性:
- src_output:表示该边为前驱节点的第src_output条输出边;
- dst_input:表示该边为后驱节点的第dst_input条输入边。
例如,存在两个前驱节点s1, s2,都存在两条输出边;存在两个后驱节点d1, d2,都存在两条输入边。
控制依赖
计算图中存在两类边,
- 普通边:用于承载Tensor,常用实线表示;
- 控制依赖:控制节点的执行顺序,常用虚线表示。
特殊地,控制依赖边,其src_output, dst_input都为-1(Graph::kControlSlot),暗喻控制依赖边不承载任何数据,仅仅表示计算的依赖关系。
bool Edge::IsControlEdge() const<