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

将ONNX模型转TFLite时出现KeyError: 'input.1'问题求助

ONNX转TensorFlow冻结图时KeyError: 'input.1'的解决方法

问题场景

在Google Colab环境中,通过以下命令成功安装onnx-tensorflow:

!git clone https://github.com/onnx/onnx-tensorflow.git
!cd onnx-tensorflow && pip install -e .

执行转换命令将ONNX模型转为TensorFlow冻结图时:

# Convert .onnx model to TensorFlow Freeze Graph
!onnx-tf convert -i "/content/drive/MyDrive/model.onnx" -o "/content/model.pb"

触发如下错误:

tensorflow.python.autograph.pyct.error_utils.MultilineMessageKeyError: in user code:
File "/content/onnx-tensorflow/onnx_tf/backend_tf_module.py", line 99, in call *
output_ops = self.backend._onnx_node_to_tensorflow_op(onnx_node,
File "/content/onnx-tensorflow/onnx_tf/backend.py", line 347, in _onnx_node_to_tensorflow_op *
return handler.handle(node, tensor_dict=tensor_dict, strict=strict)
File "/content/onnx-tensorflow/onnx_tf/handlers/handler.py", line 59, in handle *
return ver_handle(node, **kwargs)
File "/content/onnx-tensorflow/onnx_tf/handlers/backend/conv.py", line 15, in version_11 *
return cls.conv(node, kwargs["tensor_dict"])
File "/content/onnx-tensorflow/onnx_tf/handlers/backend/conv_mixin.py", line 29, in conv *
x = input_dict[node.inputs[0]]

KeyError: 'input.1'

解决步骤

  • 检查ONNX模型输入节点命名
    使用onnx工具查看模型的输入节点名称,确认是否存在input.1节点或命名不规范问题,在Colab中执行:

    import onnx
    model = onnx.load("/content/drive/MyDrive/model.onnx")
    print("模型输入节点:")
    for input in model.graph.input:
        print(input.name)
    

    若输出中无input.1,说明转换过程中存在节点名称映射异常。

  • 禁用strict模式转换
    strict模式会严格遵循ONNX规范,部分模型可能存在兼容问题,添加--strict False参数放宽约束:

    !onnx-tf convert -i "/content/drive/MyDrive/model.onnx" -o "/content/model.pb" --strict False
    
  • 重新导出ONNX模型并指定标准输入名称
    如果模型从PyTorch等框架导出,重新导出时显式指定输入节点名称,避免自动生成非标准命名(如input.1)。以PyTorch为例:

    import torch
    model = torch.load("your_model.pth")
    model.eval()
    dummy_input = torch.randn(1, 3, 224, 224)  # 匹配模型输入维度
    torch.onnx.export(model, dummy_input, "model.onnx", input_names=["input"], output_names=["output"])
    

    用新导出的模型重新执行转换。

  • 更换onnx-tensorflow稳定版本
    源码版本可能存在兼容性问题,尝试安装稳定版:

    !pip uninstall -y onnx-tensorflow
    !pip install onnx-tensorflow==1.10.0
    

    之后重新执行转换命令。

  • 验证ONNX模型有效性
    先确认模型本身无损坏,用ONNX Runtime测试推理:

    import onnxruntime as ort
    import numpy as np
    test_input = np.random.randn(1, 3, 224, 224).astype(np.float32)  # 匹配模型输入维度
    sess = ort.InferenceSession("/content/drive/MyDrive/model.onnx")
    output = sess.run(None, {sess.get_inputs()[0].name: test_input})
    print("模型推理成功,输出形状:", output[0].shape)
    

    若推理失败,需重新导出或修复模型。

内容的提问来源于stack exchange,提问作者Jidan Humaidi M200BSY1350

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 23:30:11