在Python中使用Onnx模型运行推理吗?

时间:2018-06-21 19:06:49

标签: python machine-learning predict onnx

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

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

我找到了MXNet框架,但是我似乎不明白如何导入模型-我只有.onnx文件,并且MXNet除了onnx模型外还需要一些额外的输入。

在Python中还有其他简单的方法吗?我猜这是一个普遍的问题,但似乎找不到任何相关的库/框架像.mlmodel的coremltools一样容易地做到这一点。

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

这是我第一次遇到这些格式,因此我们将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:2)

我想出了一种使用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)。