6.2. TopsIDEAS onnx infer_shape¶
描述¶
给ONNX文件添加tensor的shape信息,支持以下几种模式:
--mode=onnx
:使用 onnx.shape_inference 形状推理--mode=symbolic
:使用onnxruntime框架中提供的 符号计算 形状推理 方式(默认)--mode=static
:使用onnxruntime实时推理,收集runtime过程中的shape信息,但这将会导致 部分动态维度变为静态
命令行¶
使用方法¶
usage: topsideas onnx infer_shape [-h] --input_onnx INPUT_ONNX [--output_onnx OUTPUT_ONNX] [--input_tensors INPUT_TENSORS [INPUT_TENSORS ...]]
[--mode {onnx,symbolic,static}]
参数¶
short | long | default | help |
---|---|---|---|
-h |
--help |
show this help message and exit | |
--input_onnx |
None |
Provide the original onnx file. | |
--output_onnx |
None |
Export the modified onnx file.If not set, use original onnx path with '_shape' suffix. | |
--input_tensors |
[] |
Overwrite input shapes or data type. Format: --input_tensors NAME:SHAPE:DTYPE. For example: --input_tensors input1 input2:[1,3,224,224]:float32 input3:int32 input4:[]. If omitted, uses the current model inputs. | |
--mode |
symbolic |
The mode to do shape inference, choices are ['onnx', 'symbolic', 'static']. onnx mode use shape inference provided by onnx library, cannot infer dynamic shape. symbolic mode can process more dynamic shapes by symbolic maths. static mode will run inference to collect shapes, which may cause some dynamic dimensions to become static. |
示例¶
注1:unk_834为原模型中的batch size,×
代表shape的维度的分割符,*
为符号推理的计算式的一部分
注2:netron部分版本对shape信息的显示加了长度限制,超出部分可以通过点选节点后在右边栏查看
API¶
使用方法¶
from topsideas.onnx import InferShape
result = InferShape.run(input_onnx)
参数¶
argument | type | default |
---|---|---|
input_onnx | onnx.onnx_ml_pb2.ModelProto | |
input_tensors | List[str] | None |
mode | str | symbolic |
RETURN | onnx.onnx_ml_pb2.ModelProto |