使用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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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