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

已训练CoreML模型转ONNX上传Azure遇TypeError问题求助

CoreML转ONNX并解决TypeError问题

问题原因

出现TypeError: isinstance() arg 2 must be a type, a tuple of types, or a union的核心原因是coremltools、onnxmltools及onnx三者版本不兼容,或是加载模型的方式与转换工具的预期不匹配。

解决方案

1. 安装兼容的版本组合

卸载现有冲突包,安装经过验证的兼容版本:

pip uninstall -y coremltools onnxmltools onnx
pip install coremltools==4.1 onnxmltools==1.9.0 onnx==1.8.1

注:Python版本建议使用3.7或3.8,高版本Python(如3.10+)可能存在兼容性问题。

2. 修改转换代码

将原代码中用coremltools.utils.load_spec加载模型的方式,改为coremltools.models.MLModel,确保转换工具能正确识别模型对象:

import coremltools
import onnxmltools

# 加载CoreML模型(使用MLModel类)
coreml_model = coremltools.models.MLModel('MobileNet.mlmodel')

# 转换为ONNX模型
onnx_model = onnxmltools.convert_coreml(coreml_model, 'Example Model')

# 保存ONNX模型
onnxmltools.utils.save_model(onnx_model, 'example.onnx')

3. 验证转换结果

运行修改后的代码后,检查生成的example.onnx文件是否可用,可以用onnxruntime验证:

pip install onnxruntime
python -c "import onnxruntime; sess = onnxruntime.InferenceSession('example.onnx'); print('模型加载成功')"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 05:07:26