onnx导出报错:Exporting the operator hardsigmoid to ONNX opset version 12 is not supported.

文章描述了如何在PyTorch项目中解决将模型导出到ONNX时遇到的Hardsigmoid不支持问题,需修改symbolic_opset9.py中的函数定义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pytor三件套版本为

onnx版本为1.16

cuda版本为11.6

执行python export.py --weights 我的路径/best.pt --include onnx --device 0

当export.py下的--opset参数default=14/15/16时会报错“Unsupported ONNX opset version: 16”;

当--opset参数default=11/12/13,“export failure 0.3s: Exporting the operator hardsigmoid to ONNX opset version 11 is not supported. Please feel free to request support or submit a pull request on PyTorch GitHub.”

查很多帖子,有的是改--opset为某个数字就可以了,但我的不行。

最后在这个帖子找到正确方法解决报错问题:the operator silu to ONNX opset version 12 is not supported - 知乎 (zhihu.com)

在你项目使用的虚拟环

### ONNX Opset Version 12 的定义和用途 ONNX(Open Neural Network Exchange)是一种开放格式,用于表示机器学习模型。OpsetONNX 中的一个重要概念,它代表一组操作符(operators),这些操作符在特定版本中被支持并具有明确定义的行为。 #### 定义 ONNX Opset Version 12 表示第 12 版本的操作符集。每个版本都引入了一些新的功能、改进或者修复已知问题[^1]。具体来说,Opset Version 12 增加了对某些新操作符的支持,并优化了现有操作符的表现。例如,在此版本中增加了 `hardsigmoid` 和其他一些激活函数的支持。 #### 技术场景中的作用 1. **兼容性管理**: 不同框架可能实现不同版本的 ONNX 操作符集合。通过指定 opset=12,开发者能够确保他们的模型只使用该版本下受支持的功能,从而提高跨平台迁移的成功率。 2. **性能调优**: 较高的 opset 版本通常意味着更先进的计算能力或效率提升措施已被纳入其中。然而,如果目标环境不完全支持最新特性,则需回退到较低版本如 v12 来维持正常运行[^2]。 3. **错误规避**: 当遇到类似于 “Exporting the operator hardsigmoid to ONNX opset version X is not supported” 这样的警告时,调整至适当范围内的 opset 可能会解决问题。正如提到的例子那样,将 opset 设置为匹配当前工具链的最佳实践值即可缓解此类冲突情况. 以下是设置 Python 脚本中 PyTorch 导出 ONNX 文件时如何显式声明所需 opset 版本的小例子: ```python import torch dummy_input = torch.randn(1, 3, 224, 224) model = YourModel() torch.onnx.export( model, dummy_input, "output_model.onnx", verbose=True, opset_version=12 # 明确指定了使用的opset版本 ) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值