0

我正在尝试检查我的 .onnx 模型是否正确,并且需要运行推理来验证相同的输出。

我知道我们可以在 Python 中使用 coremltools 对 .mlmodel 运行验证——基本上是加载模型和输入并获得预测。我正在尝试为 .onnx 模型做类似的事情。

我找到了 MXNet 框架,但我似乎无法理解如何导入模型 - 我只有 .onnx 文件,而 MXNet 除了 onnx 模型之外还需要一些额外的输入。

在 Python 中还有其他简单的方法可以做到这一点吗?我猜这是一个常见问题,但似乎找不到任何相关的库/框架来像 .mlmodel 的 coremltools 那样轻松地做到这一点。

我不希望将 .onnx 转换为另一种类型的模型(比如 PyTorch),因为我想按原样检查 .onnx 模型,而不用担心转换是否正确。只需要一种加载模型和输入、运行推理和打印输出的方法。

这是我第一次遇到这些格式,所以任何帮助或见解将不胜感激。

谢谢!

4

1 回答 1

7

我想出了一种使用 Caffe2 的方法 - 只是发布以防将来有人尝试做同样的事情。

主要代码片段是:

import onnx
import caffe2.python.onnx.backend
from caffe2.python import core, workspace

import numpy as np

# make input Numpy array of correct dimensions and type as required by the model

modelFile = onnx.load('model.onnx')
output = caffe2.python.onnx.backend.run_model(modelFile, inputArray.astype(np.float32))

另外需要注意的是,输入run_model只能是一个 numpy 数组或字符串。输出将是 Backend.Outputs 类型的对象。我能够从中提取输出 numpy 数组。

我能够在 CPU 上执行推理,因此不需要使用 GPU 安装 Caffe2(需要 CUDA 和 CDNN)。

于 2018-06-22T18:13:25.480 回答