【发布时间】:2021-05-26 09:08:54
【问题描述】:
错误:
当我将 caffe2 用于预训练模型时。模型来自https://github.com/onnx/models/blob/master/vision/classification/vgg/model/vgg16-7.onnx 我使用的模型是预训练模型, 我不改模型,也不用https://github.com/onnx/optimizer
代码是:
import caffe2
model=onnx.load(vgg16-7.onnx)
prepared_backend=caffe2.python.onnx.backend.prepare(model)
然后发生错误:
WARNING:root:This caffe2 python run failed to load cuda module:No module named 'caffe2.python.caffe2_pybind11_state_gpu',and AMD hip module:No module named 'caffe2.python.caffe2_pybind11_state_hip'.Will run in CPU only mode.
WARNING: ONNX Optimizer has been moved to https://github.com/onnx/optimizer.
All further enhancements and fixes to optimizers will be done in this new repo.
The optimizer code in onnx/onnx repo will be removed in 1.9 release.
Traceback (most recent call last):
File "test.py", line 20, in
init_net, predict_net = c2.onnx_graph_to_caffe2_net(onnx_model_proto)
File "/home/eeodev/.local/lib/python3.6/site-packages/caffe2/python/onnx/backend.py", line 921, in onnx_graph_to_caffe2_net
return cls._onnx_model_to_caffe2_net(model, device=device, opset_version=opset_version, include_initializers=True)
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(model, input, 'model.onnx', verbose=True, keep_initializers_as_inputs=True),通过keep_initializers_as_inputs=True,使用caffe2加载模型不会出现错误。但是我使用的模型是预训练模型,这个方法怎么用?
【问题讨论】: