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

使用onnx.utils.extract_model提取SqueezeNet子模型遇ValidationError报错求助

解决ONNX extract_model提取Squeezenet子模型的ValidationError问题

错误原因

你遇到的ValidationError: squeezenet0_conv0_weight in initializer but not in graph input,是因为onnx.utils.extract_model默认参数keep_initializers_as_inputs=True。这个参数会把原模型中所有initializer(比如卷积层的权重参数)强制转为子模型的输入节点,但这些权重原本是存在模型的initializer中,不属于原模型的graph输入,因此模型检查时触发了不匹配的错误。

修正后的代码

调用extract_model时显式设置keep_initializers_as_inputs=False,让工具保留原模型中的initializer作为子模型的内部参数,而非转为输入即可解决:

model_path = 'squeezenet.onnx'
onnx_model = onnx.load(model_path)
onnx.checker.check_model(onnx_model)
input_path = model_path
output_path = "path/to/save/the/extracted/model.onnx" # 替换为你的实际路径
input_names = ["data"]
output_names = ["squeezenet0_conv10_fwd"]
# 添加参数保留initializer为内部参数
onnx.utils.extract_model(input_path, output_path, input_names, output_names, keep_initializers_as_inputs=False)

补充说明

  • keep_initializers_as_inputs参数用于控制是否将原模型的initializer转换为子模型的输入。设为False时,工具会自动保留子模型用到的initializer,将其作为内部参数存储,这是子模型提取的常规需求。
  • 只有当你需要把某些权重作为子模型的动态输入时,才需要将该参数设为True,同时把对应权重名称加入input_names列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 19:45:49