当我尝试将 onnx 文件转换为 caffe2 时出现运算符翻译错误

Operator translate error occurs when I try to convert onnx file to caffe2

我在pytorch上训练了一个目标检测模型,我已经导出到onnx文件。

我想将其转换为 caffe2 模型:

import onnx
import caffe2.python.onnx.backend as onnx_caffe2_backend


# Load the ONNX ModelProto object. model is a standard Python protobuf object
model = onnx.load("CPU4export.onnx")

# prepare the caffe2 backend for executing the model this converts the ONNX model into a
# Caffe2 NetDef that can execute it. Other ONNX backends, like one for CNTK will be
# availiable soon.
prepared_backend = onnx_caffe2_backend.prepare(model)

# run the model in Caffe2

# Construct a map from input names to Tensor data.
# The graph of the model itself contains inputs for all weight parameters, after the input image.
# Since the weights are already embedded, we just need to pass the input image.
# Set the first input.
W = {model.graph.input[0].name: x.data.numpy()}

# Run the Caffe2 net:
c2_out = prepared_backend.run(W)[0]

# Verify the numerical correctness upto 3 decimal places
np.testing.assert_almost_equal(torch_out.data.cpu().numpy(), c2_out, decimal=3)

print("Exported model has been executed on Caffe2 backend, and the result looks good!")

我总是遇到这个错误:

RuntimeError: ONNX conversion failed, encountered 1 errors:

Error while processing node: input: "90"
input: "91"
output: "92"
op_type: "Resize"
attribute {
  name: "mode"
  s: "nearest"
  type: STRING
}
. Exception: Don't know how to translate op Resize

我该如何解决?

问题是 Caffe2 ONNX backend 还不支持 Resize 运算符的导出。

raise an issue on the Caffe2 / PyTorch github -- 有一个活跃的开发人员社区应该能够解决这个用例。