You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyTorch转ONNX后ONNXRuntime加载提示LeakyRelu未实现问题咨询

问题原因

你遇到的报错本质不是ONNXRuntime不支持LeakyRelu算子,而是不支持双精度(DOUBLE/float64)类型输入的LeakyRelu算子实现。从你打印的计算图可以看到,所有张量、权重的类型都是DOUBLE,而ONNXRuntime官方默认提供的LeakyRelu算子内核仅支持float32、float16等常用推理精度,没有覆盖float64的场景。

解决方案

  • 方案1:移除代码中的torch.set_default_dtype(torch.float64)配置,使用默认的float32精度导出模型。绝大多数深度学习推理场景下float32的精度完全满足需求,也可以完美适配ONNXRuntime的算子支持,改完后重新导出ONNX即可正常加载运行。
  • 方案2:如果业务确实必须使用float64精度,可以在导出ONNX前手动替换模型中的LeakyRelu层,用基础运算组合实现等价逻辑:
    class CustomLeakyRelu(torch.nn.Module):
        def __init__(self, alpha=0.01):
            super().__init__()
            self.alpha = alpha
        def forward(self, x):
            return torch.max(x, torch.zeros_like(x)) + self.alpha * torch.min(x, torch.zeros_like(x))
    
    替换后再导出ONNX,生成的计算图会用通用的四则运算和比较算子代替LeakyRelu,这些算子都有float64的实现。
  • 方案3:导出ONNX时指定稳定的Opset版本,比如在torch.onnx.export中添加参数opset_version=13,避免高版本Opset的兼容问题。

内容的提问来源于stack exchange,提问作者ywan459

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 10:06:05