导出的ONNX计算图属于静态图还是动态图?
问题:导出的ONNX计算图是静态图还是动态图?
首先引用ONNXRuntime官方说明:
默认情况下,ONNXRuntime会对ONNX图应用一系列优化,尽可能合并节点并提取常量值(constant folding)。
ONNX计算图本质上属于静态图范畴,但它支持配置动态维度(即允许部分张量的形状在运行时调整),具体分两种情况:
- 如果导出时未设置动态维度,再经过ONNXRuntime的默认优化(比如常量折叠、节点合并)后,图的结构、张量维度都会完全固定,是标准的静态图。
- 如果导出时指定了动态维度(例如允许批量大小、输入分辨率可变),那么图的节点连接关系依然是静态固定的,但部分输入/输出的维度会保留可变参数,这类属于支持动态维度的静态图——并非真正意义上的动态图(动态图是指节点结构可在运行时动态变化)。
总结:ONNX计算图的核心结构是静态的,是否具备动态维度特性取决于导出阶段的配置,而非图本身的类型定义。
内容的提问来源于stack exchange,提问作者Mohsen Mahmoodzadeh
相关产品推荐
相关产品推荐

