Windows runtime windows10c+中onnx模型(opset11)的推理+;?

Windows runtime windows10c+中onnx模型(opset11)的推理+;?,windows-runtime,onnx,onnxruntime,windows-machine-learning,Windows Runtime,Onnx,Onnxruntime,Windows Machine Learning,为了通过WinML使用自定义TF模型,我使用tf2onnx转换器将其转换为onnx。使用opset 11最终实现了转换。不幸的是,我不能在WRRT-C++库中加载模型,因此我对OpStT支持感到困惑:根据发布说明,最新的Win ML版本在5月份支持OpSET 11。我更新了我的VS2019并下载了最新的Windows 10 SDK,C++ API是否已经包含了最新的ONNX支持?或者在WiMLC++中使用了我的模型? < P>最新版本的Windows操作系统支持OpSt1 9。 最新版本的Mic

为了通过WinML使用自定义TF模型,我使用tf2onnx转换器将其转换为onnx。使用opset 11最终实现了转换。不幸的是,我不能在WRRT-C++库中加载模型,因此我对OpStT支持感到困惑:根据发布说明,最新的Win ML版本在5月份支持OpSET 11。我更新了我的VS2019并下载了最新的Windows 10 SDK,C++ API是否已经包含了最新的ONNX支持?或者在WiMLC++中使用了我的模型?

< P>最新版本的Windows操作系统支持OpSt1 9。 最新版本的Microsoft.AI.MachineLearning NuGet软件包包含对opset 11的支持

请参阅这些发行说明:


您可以在此处找到最新的Microsoft.AI.MachineLearning NuGet软件包:

正如@Kookei提到的,有两种构建WinML的方法:

In Box基本上只是指指向Windows本身包含的任何WinML DLL的链接(例如,在C:\Window\System32中)

NuGet软件包包含自己最新的DLL集,它除了支持最新的ONNX操作集之外,还有一个明显的优势,即允许您轻松地将二进制文件分发到缺少任何内置机器学习功能的旧版本的Windows。只需通过VisualStudio的Nuget软件包管理器安装软件包,并构建您的解决方案;您会发现输出目录现在包含所需的dll(当前为
directml.dll
Microsoft.AI.MachineLearning.dll
,和
onnxruntime.dll
)以及生成的EXE,可用于相同的文件夹部署

就源代码而言,这两个版本是:

收件箱:

#include <winrt/Windows.AI.MachineLearning.h>
using WinMLModel = winrt::windows::AI::MachineLearning
#包括
使用WinMLModel=winrt::windows::AI::MachineLearning
努吉:

#include <winrt/Microsoft.AI.MachineLearning.h>
using WinMLModel = winrt::Microsoft::AI::MachineLearning
#包括
使用WinMLModel=winrt::Microsoft::AI::MachineLearning

换句话说,唯一的区别在于您是使用
窗口
还是
Microsoft
标题/命名空间。

您还可以在表中跟踪支持的操作集版本。

谢谢您的回答。我注意到,当我在NuGet软件包管理器上安装Microsoft.AI.MachineLearning,然后再次卸载它时,代码的行为会发生变化。这是否也会更新DirectML和onnxruntime发行版?@JamesTrüeb NuGet包提供了完整的onnxruntime→WinML→DLL的DirectML堆栈,卸载后应该完全消失,所以没有;我认为这不会影响您的代码,也不会影响安装在系统其他地方的任何其他类似发行版。(如果这是一个你可以详细解释的问题,并且很容易复制,那么这将是一个很好的单独问题。)