当前位置: 首页> 财经> 股票 > 导出的onnx的所有节点都没有name属性的可能原因

导出的onnx的所有节点都没有name属性的可能原因

时间:2025/7/11 10:47:39来源:https://blog.csdn.net/york1996/article/details/140905011 浏览次数:0次

仔细看会发现这一句

/home/yaochunchun/miniconda3/envs/mm/lib/python3.8/site-packages/torch/onnx/utils.py:267: UserWarning: `add_node_names' can be set to True only when 'operator_export_type' is `ONNX`. Since 'operator_export_type' is not set to 'ONNX', `add_node_names` argument will be ignored.warnings.warn("`{}' can be set to True only when 'operator_export_type' is "

实际上是因为

operator_export_type=OperatorExportTypes.ONNX_ATEN_FALLBACK
如果这个设置的话,onnx的节点不会有name属性详细解释:

operator_export_type=OperatorExportTypes.ONNX_ATEN_FALLBACK 是 PyTorch 导出 ONNX 模型时的一个选项,用于指定操作符导出的方式。为了更好地理解它的含义,我们需要分解一下这个选项的各个部分:

OperatorExportTypes

OperatorExportTypes 是一个枚举类型,定义了在导出过程中如何处理 PyTorch 操作符(operators)。PyTorch 中的操作符可以在 ONNX 模型中表示为标准 ONNX 操作符或其他形式。

ONNX_ATEN_FALLBACK

ONNX_ATEN_FALLBACKOperatorExportTypes 的一个枚举值,表示如果 PyTorch 中的某些操作符在 ONNX 中没有对应的标准操作符,就使用 PyTorch 自己的操作符(即 ATen 操作符)作为回退。

具体解释

当你使用 operator_export_type=OperatorExportTypes.ONNX_ATEN_FALLBACK 时,PyTorch 在导出 ONNX 模型时会按照以下逻辑处理操作符:

  1. 标准 ONNX 操作符:对于在 ONNX 中有对应标准操作符的 PyTorch 操作符,直接导出为 ONNX 的标准操作符。
  2. ATen 操作符回退:对于在 ONNX 中没有对应标准操作符的 PyTorch 操作符,使用 PyTorch 自己的 ATen 操作符。

这对于某些复杂或自定义操作符非常有用,因为它可以确保导出的模型保留所有的功能,即使某些操作符没有标准的 ONNX 实现。

使用场景

ONNX_ATEN_FALLBACK 选项通常在以下情况下使用:

  • 自定义操作符:你的模型中使用了某些自定义的 PyTorch 操作符,这些操作符没有标准的 ONNX 实现。
  • 复杂操作:你的模型中包含一些复杂的操作,这些操作在标准 ONNX 中没有直接对应的实现。

示例代码

下面是一个使用 operator_export_type=OperatorExportTypes.ONNX_ATEN_FALLBACK 的示例代码:

 

python

复制代码

import torch
import torch.onnx
from torch.onnx import OperatorExportTypes# 定义一个简单的模型
class SimpleModel(torch.nn.Module):def __init__(self):super(SimpleModel, self).__init__()self.fc = torch.nn.Linear(10, 5)def forward(self, x):return self.fc(x)# 创建模型实例并定义dummy输入
model = SimpleModel()
dummy_input = torch.randn(1, 10)# 导出模型到 ONNX 格式,使用 ONNX_ATEN_FALLBACK 选项
torch.onnx.export(model, dummy_input, "simple_model.onnx", operator_export_type=OperatorExportTypes.ONNX_ATEN_FALLBACK, input_names=['input'], output_names=['output'])

在这个示例中,如果 SimpleModel 使用的某些操作符在 ONNX 中没有对应的标准实现,它们将会作为 ATen 操作符导出到 ONNX 模型中。

总结

operator_export_type=OperatorExportTypes.ONNX_ATEN_FALLBACK 允许 PyTorch 在导出 ONNX 模型时使用 ATen 操作符作为回退,以确保所有操作符都能被正确导出。这对于模型中包含非标准或自定义操作符的情况尤其有用。但是可能回导致节点没有name属性;

关键字:导出的onnx的所有节点都没有name属性的可能原因

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: