tensorflow源码解析之framework-node

关系图中涉及的文件迭代记录是什么1.节点是什么

TF中的计算图由节点组成,每个节点都包含一个运算,表示节点的功能,例如,如果一个节点的功能是做矩阵乘法,那么它的输入是两个矩阵,输出是两个输入矩阵相乘的结果。节点有自己的结构,每个节点都包含输入的来源,所以几个节点的集合可以生成一个图,而不需要额外的信息。节点必须放置在某个设备上。为了减少跨设备的数据传输,提高计算效率,节点放置是受限条件下的优化问题。为此,TF还专门开发了相应的节点放置算法。

2.

我们先来看看节点的定义:

message NodeDef {
    string name = 1;//节点名称
    string op = 2;//节点包含的操作名称
    repeated string input = 3;//节点的输入,详见正文
    string device = 4;//节点所在的设备
    map attr = 5;//节点包含的op,其参数的具体赋值
};

由于节点对于后续对graph和graph的理解非常重要,我们来详细分析一下它所包含的字段:

图 –>|OUT1|node1:–>|OUT2|node1:–>|OUT1|node2:–>|OUT2|node2::1–>:0–> node3

按照惯例,TF会为每个核心概念设计一个构建类,node也不例外,这个类是。我们先来看看它的用法:

NodeDef node_def;
Status status = NodeDefBuilder(node_name, op_name)
                    .Input(...)
                    .Attr(...)
                    .Finalize(&node_def);

可见,同样,我们也可以使用链式法则,通过对字段一一设置来构建它。我们来看看包含的私有数据:

class NodeDefBuilder {
  private:
    const OpDef* op_def_;
    NodeDef node_def_;
    int inputs_specified_;
    std::vector control_inputs_;
    std::vector errors_;
};

此处包含 OpDef 是因为在 中,仅包含操作的名称。

3. 关系图

graph –>|build|-..->节点名-..->节点中包含的操作名-..->input-..->节点所在的设备名-.包含。 ->节点属性也是操作属性attr

4. 涉及的文件5. 迭代记录

地址

© 版权声明
THE END
喜欢就支持一下吧
点赞11赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容