神经网络的计算图应当包含什么?
Created by: reyoung
除去PyTorch框架外,Tensorflow,MxNet,Caffe2与DyNet均显示的让用户配置计算图(Graph
),并且使用执行引擎(Engine
)执行该计算图。而Paddle目前也是使用proto::ModelConfig
来表示计算图。
在一个Op Based神经网络框架的计算图中,计算图通常包括Variable
与Op
。Variable
表示计算图中所有的数据节点,而Op
表示计算图中所有的计算节点。不同神经网络框架对二者的称谓如下:
Variable | op | |
---|---|---|
Caffe2 | Blob | OperatorDef |
Tensorflow (需要更详细调研) | TBD | NodeDef |
MxNet (需要更详细调研) | Symbol(Variable) | Symbol(Functor) |
DyNet | Node(InputNode, ScalarInputNode, ParameterNode) | Node |
可见,计算图中Variable
和Op
都是计算图的节点(Node
),而计算图之间的关系通过Node
之间的连接组成的。即,计算图是一个图,图包含节点与边构成。而Variable
和Op
都是计算图的节点(Node
)。
逻辑关系如下图所示
问题:
- 神经网络的计算图是图,一个图由节点和边构成,
Op
和Variable
是计算图中的节点,还是边?什么是这个计算图中的节点?什么是这个计算图中的边? - Paddle重构中,是否
Variable
与Op
配置的基类应该是Node
,而Graph是Node
的集合与连接关系? - Paddle重构中,是否
Variable
就是一种Op
,只是这个Op
没有输入,可以直接产生输出?或者,通用的说,类似于DyNet的设计,所有的节点都是Node
,只是Op
实现了计算,而Variable
实现了从全局的查找一个Tensor
输出?