wwbnjsace 2021-02-24 14:27 采纳率: 0%
浏览 193

caffe2推理onnx报错IndexError: Input 475 is undefined

我的模型为预训练模型,格式为tflite,然后转成了onnx格式的,并没有进行任何修改。

我在用caffe2推理onnx格式模型的时候,报错IndexError: Input 475 is undefined!。大家知道怎么解决吗  

代码为

import onnx,caffe2

model=onnx.load(model_path)

prepared_backend=caffe2.python.onnx.backend.prepare(model)

执行到这里报错

Traceback (most recent call last):
  File "test.py", line 15, in <module>
    prepared_backend=caffe2.python.onnx.backend.prepare(model_1)
  File "/home/eeodev/.local/lib/python3.6/site-packages/caffe2/python/onnx/backend.py", line 713, in prepare
    init_net, predict_net = cls._onnx_model_to_caffe2_net(model, device, opset_version, False)
  File "/home/eeodev/.local/lib/python3.6/site-packages/caffe2/python/onnx/backend.py", line 876, in _onnx_model_to_caffe2_net
    onnx_model = onnx.utils.polish_model(onnx_model)
  File "/usr/local/lib64/python3.6/site-packages/onnx/utils.py", line 24, in polish_model
    model = onnx.optimizer.optimize(model)
  File "/usr/local/lib64/python3.6/site-packages/onnx/optimizer.py", line 55, in optimize
    optimized_model_str = C.optimize(model_str, passes)
IndexError: Input 475 is undefined!
 

我觉得应该是哪里没有设置,换了一个简单模型依然报这个错误。但是如果通过pytorch转换成onnx的时候设置torch.onnx.export()设置参数keep_initializers_as_inputs=true就可以了。但是我们是预训练模型,也无法设置

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-07-24 11:06
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    这个问题可能是因为在转换ONNX模型时,原始模型中的一些输入变量已经被删除或重新定义了。在你的例子中,你提到的“Input 475”可能是由于你在转换过程中改变了某个输入变量的名字,导致了错误。

    要解决这个问题,你可以尝试以下步骤:

    1. 检查原始模型中的输入变量是否正确地被命名。确保所有的输入变量都在ONNX模型中都有对应的名称。
    2. 如果在转换过程中,有某个输入变量的名字被改变,请检查你所做的更改并确认它们不会影响到其他部分的输入输出。
    3. 如果问题仍然存在,你可以考虑使用caffe2.python.onnx.backend.prepare函数的allow_inference参数来允许推理过程中的输入变量被替换,但这可能会引入一些额外的风险和不确定性的。

    例如,你可以这样调用prepare函数:

    prepared_backend = caffe2.python.onnx.backend.prepare(model,
                                                      allow_inference=True)
    

    请注意,这将允许推理过程中对输入变量进行替换,但并不保证这些变化不会影响到后续的模型推断。

    评论

报告相同问题?