问题标签 [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.
python - 将 SageMaker XGBoost 模型转换为 ONNX 模型时出错
我正在尝试将 SageMaker XGBoost 模型转换为 ONNX,以便在使用 ML.NET 的 .Net 应用程序中使用 ONNX 模型。我尝试使用转换模型winmltools
,onnxmltools
但两个工具都返回了类似的错误。
有一个很好的资源可以在商业领域使用机器学习。我尝试在 SageMaker 中使用机器学习来提高销售额来创建模型,然后将模型转换为 ONNX 模型。该示例在 SageMaker 中运行良好。
运行示例后,我得到了一个模型,模型的类型为sagemaker.estimator.Estimator
. 我尝试使用winmltools
and转换模型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 笔记本文件以供参考。你能看看这些问题,让我知道解决问题的方法吗?提前致谢!
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]
是因为这是特征列的四个值。我在这里做错了什么?
tensorflow - 卷积的尺寸?
我对如何计算这个卷积及其输出维度有一些疑问。我熟悉使用 nxm 内核的简单卷积,使用步幅、膨胀或填充,这不是问题,但这个尺寸对我来说似乎很奇怪。由于我使用的模型是众所周知的 onnx-mnist,我认为它是正确的。
所以,我的观点是:
- 如果输入的尺寸为 1x1x28x28,那么输出 1x8x28x28 的尺寸如何?
- W 表示内核。怎么可能是 8x1x5x5?据我所知,第一个维度是批量大小,但这里我只是用 1 个输入进行推理。这有意义吗?
- 我正在从头开始实现这个卷积运算符,到目前为止它适用于 1x1x28x28 和 1x1x5x5 的内核,但额外的维度对我来说没有意义。
找到附加的我正在尝试做的卷积,希望不是太onnx
具体。
pytorch - 如何使用 PyTorch 正确实施数据重组?
这将是一个很长的帖子,提前抱歉......
我正在研究去噪算法,我的目标是:
- 使用 PyTorch 设计/训练模型
- 将 PyTorch 模型转换为 CoreML 模型
去噪算法由以下3个部分组成:
- “下采样”+ 噪声级别图
- 一个常规的卷积网络
- “上采样”
第一部分的想法很简单,但并不那么容易解释。例如,给定一个输入彩色图像和一个表示图像噪声标准偏差的输入值“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 个图层。但我对这个解决方案不满意,因为我希望我的模型包含所有层 ^^
在考虑在这里写一篇文章之前,我爬网寻找答案,我能够使用reshape
and编写一个更好的版本permute
。这个版本去掉了所有的 ONNX 警告,但是 CoreML 转换还是失败了...
所以这里是(一些)我的问题:
- 在模型中实现函数(例如
downsample_and_noise_map
函数)的首选 PyTorch 方法是什么? - 同样的问题,但是当转换为 ONNX 然后转换为 CoreML 是等式的一部分?
- PyTorch -> ONNX -> CoreML 仍然是为 iOS 生产部署模型的最佳途径吗?
感谢您的帮助(和您的耐心)^^
machine-learning - 使用 onnx 模型在 Arm NN android 上运行推理
谁能告诉我如何使用 onnx 模型在 Arm NN android 上运行推理。在 armnn 网站上,我已经搜索过这个,但没有足够的内容适用于 android 的 onnx 模型。
python - 将pytorch写的vgg模型转换成caffe2的时候遇到了这个问题
当程序运行到这段代码
发生错误:
简直让我抓狂!</p>
任何人都可以帮助我吗?
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 模型:
为什么它需要一个字符串?如果我删除[ImageType(299,299)]并将位图更改为字符串,我得到:
我希望我的问题是可以理解的。
更新:在 Gopal Vashishtha 的提示之后,我更改了输入/输出名称:
但我仍然有同样的错误。我训练模型的方式可能有问题吗?我使用 numpy-array 作为图像,使用 0/1/2 作为相应的类。
python - Onnx模型的量化
我正在尝试使用 onnxruntime量化工具来量化 ONNX 模型。
我的量化代码如下:
在这种方法之后,我得到的模型具有 0 维模型。我必须在 quantize 函数中传递什么参数才能获得合适的模型?
python - 我在 python 中有一个基本的 tensorflow 模型我想将它转换为 onnx 文件
我在 python tensorflow 中有基本模型我想将它保存到 onnx 文件我该怎么做。我试过使用onnx.save
函数我得到错误。
我的代码如下:
matlab - 将转换后的 R-CNN 检测器从 Matlab 部署到 ONNX TO raspberry
我正在使用 R-CNN 检测器(区域卷积神经网络)进行对象检测的项目。我创建了检测器并通过 Matlab 进行了训练并进行了测试,它工作正常,但是当我上台测试它并将其部署到树莓派时,Matlab 不支持将此检测器部署到硬件。我看到很多资源可以将其转换为 ONNX 格式。我已经将 Matlab 文件转换为 ONNX 文件,现在我正在寻找使用此 onnx 文件并部署到 raspi 的步骤,因此,
我正在寻求您对部署预训练检测器的支持。