使用Python运行Onnx模型的推理?

我想验证我的.onnx模型是否正确,需要运行推理来检查输出是否一致。

我知道我们可以使用Python中的coremltools对.mlmodel进行验证——基本上是加载模型和输入,然后获取预测结果。我试图对.onnx模型做类似的事情。

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

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

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

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

谢谢!


回答:

我找到了一种使用Caffe2的方法来做到这一点——只是以防将来有人试图做同样的事情而发布在这里。

主要代码片段是:

import onnx
import caffe2.python.onnx.backend
from caffe2.python import core, workspace
import numpy as np

# 制作符合模型要求的正确维度和类型的输入Numpy数组
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)。

Related Posts

在使用k近邻算法时,有没有办法获取被使用的“邻居”?

我想找到一种方法来确定在我的knn算法中实际使用了哪些…

Theano在Google Colab上无法启用GPU支持

我在尝试使用Theano库训练一个模型。由于我的电脑内…

准确性评分似乎有误

这里是代码: from sklearn.metrics…

Keras Functional API: “错误检查输入时:期望input_1具有4个维度,但得到形状为(X, Y)的数组”

我在尝试使用Keras的fit_generator来训…

如何使用sklearn.datasets.make_classification在指定范围内生成合成数据?

我想为分类问题创建合成数据。我使用了sklearn.d…

如何处理预测时不在训练集中的标签

已关闭。 此问题与编程或软件开发无关。目前不接受回答。…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注