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

使用ONNX.js加载ONNX模型报Cast算子无法解析错误如何解决

报错现象

使用onnxjs加载ONNX模型时,控制台抛出如下错误:

Uncaught (in promise) TypeError: cannot resolve operator 'Cast' with opsets: ai.onnx v11

对应使用的页面代码如下:

<html>
  <head> </head>
  <body>
    <!-- Load ONNX.js -->
    <script src="https://cdn.jsdelivr.net/npm/onnxjs/dist/onnx.min.js"></script>
    <!-- Code that consume ONNX.js -->
    <script>
        async function test(){
            const sess = new onnx.InferenceSession()
            await sess.loadModel('./onnx_model.onnx')
            }
        test()
    </script>
  </body>
</html>
报错原因

当前引入的onnxjs版本最高仅支持ai.onnx算子集v10版本,你加载的ONNX模型是基于opset v11及以上版本导出的。v11版本中Cast算子的实现规则、参数定义和低版本不兼容,onnxjs没有内置对应版本的算子实现,因此加载失败。

解决方法
  • 方案1:将模型转换为opset v10版本
    如果你要继续使用onnxjs,把模型的算子版本降到v10即可兼容。

    • 如果你是自行从PyTorch/TensorFlow等框架导出ONNX模型,导出时显式指定opset版本为10,以PyTorch为例:
      torch.onnx.export(
          model,
          sample_input,
          "./onnx_model.onnx",
          opset_version=10,
          # 其余原有导出参数保持不变
      )
      
    • 如果你已经有导出完成的ONNX文件,可以直接通过onnx官方库做版本转换,执行如下Python代码即可:
      import onnx
      from onnx import version_converter
      
      original_model = onnx.load("./onnx_model.onnx")
      converted_model = version_converter.convert_version(original_model, 10)
      onnx.save(converted_model, "./onnx_model_opset10.onnx")
      

    转换完成后,将前端代码中加载的模型路径替换为转换后的opset10版本模型,即可正常加载。

  • 方案2:替换推理库为onnxruntime-web
    onnxjs已经停止维护多年,最高支持的opset版本停留在v10,对新算子、新特性都没有适配。如果不想降级模型opset版本,可以直接替换为微软官方持续维护的onnxruntime-web,该库对高版本opset、各类常用算子的支持完善度远高于旧版onnxjs,替换后无需调整模型版本即可正常加载包含v11及以上版本Cast算子的模型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.13 16:15:55