问题标签 [onnx]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
427 浏览

python - 将 SageMaker XGBoost 模型转换为 ONNX 模型时出错

我正在尝试将 SageMaker XGBoost 模型转换为 ONNX,以便在使用 ML.NET 的 .Net 应用程序中使用 ONNX 模型。我尝试使用转换模型winmltoolsonnxmltools但两个工具都返回了类似的错误。

有一个很好的资源可以在商业领域使用机器学习。我尝试在 SageMaker 中使用机器学习来提高销售额来创建模型,然后将模型转换为 ONNX 模型。该示例在 SageMaker 中运行良好。

在此处输入图像描述

运行示例后,我得到了一个模型,模型的类型为sagemaker.estimator.Estimator. 我尝试使用winmltoolsand转换模型onnxmltools。但两者都返回相同的错误。

ValueError: No proper operator name found for '<class 'sagemaker.estimator.Estimator'>'

在此处输入图像描述

我尝试使用 WinMLTools 将 ML 模型转换为 ONNX,并且ONNXMLTools 允许将模型转换为 ONNX以将 SageMaker 模型转换为 ONNX 模型。

之后,我使用xgb.create_model()命令创建 SageMaker 模型。然后使用工具将模型转换为 ONNX。但没有运气。这次我得到了同样的错误。只是型号不同。

ValueError: No proper operator name found for '<class 'sagemaker.model.Model'>'

在此处输入图像描述

然后我使用加载模型pickle并尝试转换模型。我得到了同样的错误,只是型号不同。

ValueError: No proper operator name found for '<class 'xgboost.core.Booster'>'

在此处输入图像描述

目前,我对这些问题一无所知。我应该如何解决这些问题。我已将改进销售分类附加到 ONNX 笔记本文件以供参考。你能看看这些问题,让我知道解决问题的方法吗?提前致谢!

0 投票
1 回答
405 浏览

python - 使用 python onnxruntime 进行预测时出错

sklearn我使用该库创建了一个非常基本的决策树。这棵树基于 4 个特征进行训练:

并且标签/目标特征是一个布尔值(0 或 1)。

我将树转换为一种ONNX格式,现在我想使用该onnxruntime python库进行预测。我在互联网上找到了执行此操作的示例代码。问题是我不完全理解这段代码、函数和参数的所有部分到底发生了什么。这导致我得到一个错误。我确实搜索了一些文档,但我找不到这个。

在下面的代码中,我将树模型转换为ONNX格式。这是成功的,但部分代码我不明白。在initial_type变量中,根据我之前提到的 4 个特征列和标签/目标特征,我必须在此处输入什么?现在我进入了FloatTensorType([None, 4],因为我有 4 个特征列,None我不知道是什么。

在下面的代码中,我想使用该onnxruntime库进行预测,但出现此错误:

这是因为我不明白下面的最后一行代码。我输入这个{input_name: [4, 8, 77.8, 143.45]是因为这是特征列的四个值。我在这里做错了什么?

0 投票
1 回答
256 浏览

tensorflow - 卷积的尺寸?

我对如何计算这个卷积及其输出维度有一些疑问。我熟悉使用 nxm 内核的简单卷积,使用步幅、膨胀或填充,这不是问题,但这个尺寸对我来说似乎很奇怪。由于我使用的模型是众所周知的 onnx-mnist,我认为它是正确的。

所以,我的观点是:

  • 如果输入的尺寸为 1x1x28x28,那么输出 1x8x28x28 的尺寸如何?
  • W 表示内核。怎么可能是 8x1x5x5?据我所知,第一个维度是批量大小,但这里我只是用 1 个输入进行推理。这有意义吗?
  • 我正在从头开始实现这个卷积运算符,到目前为止它适用于 1x1x28x28 和 1x1x5x5 的内核,但额外的维度对我来说没有意义。

找到附加的我正在尝试做的卷积,希望不是太onnx具体。

模型

在此处输入图像描述

0 投票
1 回答
365 浏览

pytorch - 如何使用 PyTorch 正确实施数据重组?

这将是一个很长的帖子,提前抱歉......

我正在研究去噪算法,我的目标是:

  • 使用 PyTorch 设计/训练模型
  • 将 PyTorch 模型转换为 CoreML 模型

去噪算法由以下3个部分组成:

    1. “下采样”+ 噪声级别图
    1. 一个常规的卷积网络
    1. “上采样”

第一部分的想法很简单,但并不那么容易解释。例如,给定一个输入彩色图像和一个表示图像噪声标准偏差的输入值“sigma”。“下采样”部分实际上是空间到深度。简而言之,对于给定的通道和 2x2 像素的子集,空间到深度创建由 4 个通道组成的单个像素。通道数乘以 4,而高度和宽度除以 2。数据被简单地重新组织。噪声水平图包括创建 3 个包含标准偏差值的通道,以便卷积网络知道如何正确地对输入图像进行去噪。使用一些代码可能会更清楚:

然后将此函数作为模型函数的第一步forward调用:

让我们考虑一个大小为 1x3x100x100(PyTorch 标准:批处理、通道、高度、宽度)的输入张量和 0.1 的 sigma 值。输出张量具有以下属性:

  • 张量的形状是 1x15x50x50
  • 通道 0、1 和 2 的张量值都等于 sigma = 0.1
  • 通道 3、4、5、6 的张量值由通道 0 的输入图像值组成
  • 通道 7、8、9、10 的张量值由通道 1 的输入图像值组成
  • 通道 11、12、13、14 的张量值由通道 2 的输入图像值组成

如果这段代码不够清晰,我可以发布一个更幼稚的版本。

上采样部分是下采样部分的倒数函数。

我能够使用此功能在 PyTorch 中进行训练和测试。

然后,我尝试使用 ONNX 作为中间步骤将模型转换为 CoreML。转换为 ONNX 会生成“TracerWarning”。从 ONNX 到 CoreML 的转换失败(TypeError:1.0 的类型为 numpy.float64,但预期为以下之一:int、long)。问题来自下采样+噪声级别图(也来自上采样)。

当我移除下采样 + 噪声级别图和上采样层时,我能够非常轻松地转换为 ONNX 和 CoreML,因为只剩下一个简单的卷积网络。这意味着我有一个解决问题的方法:在移动端使用 2 个着色器实现这 2 个图层。但我对这个解决方案不满意,因为我希望我的模型包含所有层 ^^

在考虑在这里写一篇文章之前,我爬网寻找答案,我能够使用reshapeand编写一个更好的版本permute。这个版本去掉了所有的 ONNX 警告,但是 CoreML 转换还是失败了...

所以这里是(一些)我的问题:

  • 在模型中实现函数(例如downsample_and_noise_map函数)的首选 PyTorch 方法是什么?
  • 同样的问题,但是当转换为 ONNX 然后转换为 CoreML 是等式的一部分?
  • PyTorch -> ONNX -> CoreML 仍然是为 iOS 生产部署模型的最佳途径吗?

感谢您的帮助(和您的耐心)^^

0 投票
1 回答
1287 浏览

machine-learning - 使用 onnx 模型在 Arm NN android 上运行推理

谁能告诉我如何使用 onnx 模型在 Arm NN android 上运行推理。在 armnn 网站上,我已经搜索过这个,但没有足够的内容适用于 android 的 onnx 模型。

0 投票
1 回答
105 浏览

python - 将pytorch写的vgg模型转换成caffe2的时候遇到了这个问题

当程序运行到这段代码

发生错误:

简直让我抓狂!</p>

任何人都可以帮助我吗?

0 投票
1 回答
333 浏览

c# - 用于 Keras 的 IDataView 为 ImageClassification 转换的 ONNX 模型

我有一个带有 Keras 和 Tensorflow 后端的训练模型(Keras 2.2.4 Tensorflow 1.13.1),我想在带有 ML.Net 的 Visual Studio 中使用该模型。

因此,我使用 winmltools.convert_keras 将我的模型转换为 ONNX(我用 Tensorflow 2.0 模型厌倦了它,但我得到了No module named 'tensorflow.tools.graph_transforms' 错误)。现在我终于设法加载模型:

但是现在我需要一个 IDataView 来“拟合”模型(根据我的理解,它需要初始化它?)因此我加载了一个空的 IDataView:

ImageNetData是_

现在我得到错误:

我的 Netron 模型:

Netron 模型

为什么它需要一个字符串?如果我删除[ImageType(299,299)]并将位图更改为字符串,我得到:

我希望我的问题是可以理解的。

更新:在 Gopal Vashishtha 的提示之后,我更改了输入/输出名称:

但我仍然有同样的错误。我训练模型的方式可能有问题吗?我使用 numpy-array 作为图像,使用 0/1/2 作为相应的类。

0 投票
2 回答
5002 浏览

python - Onnx模型的量化

我正在尝试使用 onnxruntime量化工具来量化 ONNX 模型。

我的量化代码如下:

在这种方法之后,我得到的模型具有 0 维模型。我必须在 quantize 函数中传递什么参数才能获得合适的模型?

0 投票
1 回答
2194 浏览

python - 我在 python 中有一个基本的 tensorflow 模型我想将它转换为 onnx 文件

我在 python tensorflow 中有基本模型我想将它保存到 onnx 文件我该怎么做。我试过使用onnx.save函数我得到错误。

我的代码如下:

0 投票
1 回答
65 浏览

matlab - 将转换后的 R-CNN 检测器从 Matlab 部署到 ONNX TO raspberry

我正在使用 R-CNN 检测器(区域卷积神经网络)进行对象检测的项目。我创建了检测器并通过 Matlab 进行了训练并进行了测试,它工作正常,但是当我上台测试它并将其部署到树莓派时,Matlab 不支持将此检测器部署到硬件。我看到很多资源可以将其转换为 ONNX 格式。我已经将 Matlab 文件转换为 ONNX 文件,现在我正在寻找使用此 onnx 文件并部署到 raspi 的步骤,因此,

我正在寻求您对部署预训练检测器的支持。