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}]
参数¶
:::{table} topsideas onnx infer_shape 参数列表
:widths: 8 32 20 45
short |
long |
default |
help |
---|---|---|---|
|
|
show this help message and exit |
|
|
|
Provide the original onnx file. |
|
|
|
Export the modified onnx file.If not set, use original onnx path with ‘_shape’ suffix. |
|
|
|
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. |
|
|
|
The mode to do shape inference, choices are [‘onnx’, ‘symbolic’, ‘static’]. |
:::
示例¶
:::{figure-md}
符号推理结果 :::
注1:unk_834为原模型中的batch size,×
代表shape的维度的分割符,*
为符号推理的计算式的一部分。
注2:netron部分版本对shape信息的显示加了长度限制,超出部分可以通过点选节点后在右边栏查看。
API¶
使用方法¶
from topsideas.onnx import InferShape
result = InferShape.run(input_onnx)
参数¶
:::{table} topsideas.onnx.InferShape 参数列表
:widths: 25 40 35
argument |
type |
default |
---|---|---|
input_onnx |
onnx.onnx_ml_pb2.ModelProto |
|
input_tensors |
List[str] |
None |
mode |
str |
symbolic |
RETURN |
onnx.onnx_ml_pb2.ModelProto |
:::