ONNX结构分析
onnx将每一个网络的每一层或者说是每一个算子当作节点Node,再由这些Node去构建一个Graph,相当于是一个网络。最后将Graph和这个onnx模型的其他信息结合在一起,生成一个model,也就是最终的.onnx的模型。
onnx.helper----node、graph、model
在构建onnx模型这个过程中,这个文件至关重要。其中make_node、make_graph、make_model是不可或缺的。make_tensor_value_info和make_tensor是构建graph中所需要用到的。
make_node [类型:NodeProto]
make_node(op_type,inputs,outputs,name=None,doc_string=None,**kwargs)
- op_type:节点的算子类型 [类型:字符串]
比如Conv、Relu、Add这类,详细可以参考onnx给出的算子列表,这个可以自己赋值,但最好与官网对应上,否则其他框架在跑onnx的时候会不知道这是什么。 - inputs:存放节点输入的名字 [类型:字符串列表]
每个节点输入的数量根据情况会有不同,比如inputs(2-3),即输入为2个或3个,可选的输入都会标注(optional)。以Conv为例,必有输入X和权重W,偏置B作为可选。 - outputs:存放节点输出的名字 [类型:字符串列表]
与inputs类似,同样需要根据官网给出的输出个数来设置,大多数情况是一个输出,我暂且还没碰到多输出情况。 - name:节点名,可有可无,不要和op_type搞混了
- doc_string:描述文档的字符串,这个默认为None [类型:字符串]