Windows 10 c++ 中 onnx 模型 (opset11) 的推断?
Inference of onnx model (opset11) in Windows 10 c++?
为了通过 WinML 使用我的自定义 TF 模型,我使用 tf2onnx 转换器将其转换为 onnx。转换最终使用 opset 11 进行。不幸的是我无法在 WinRT c++ 库中加载模型,因此我对 opset 支持感到困惑:根据发行说明,5 月最新的 WinML 版本支持 opset 11。我更新了我的 VS2019 和下载了最新的 Windows 10 SDK,c++ API 是否已经包含最新的 onnx 支持?或者是否有其他方法可以在 WinML c++ 中使用我的模型?
最新版本 Windows OS 包含对 opset 9 的支持。
Microsoft.AI.MachineLearning NuGet 包的最新版本包含对 opset 11 的支持。
请参阅这些发行说明:https://docs.microsoft.com/en-us/windows/ai/windows-ml/release-notes
您可以在此处找到最新的 Microsoft.AI.MachineLearning NuGet 包:https://www.nuget.org/packages/Microsoft.AI.MachineLearning/
如@Kookei 所述,有两种构建 WinML 的方法:the "In-Box" way and the NuGet way。
In-Box 基本上只是意味着 link 到 Windows 本身包含的任何 WinML DLL(例如,在 C:\Window\System32).
NuGet 包包含自己更新的一组 DLL,除了提供对最新 ONNX opset 的支持外,还有一个明显的优势,即允许您轻松地将二进制文件分发到旧版本的 Windows任何 built-in 机器学习能力。只需通过 Visual Studio 的 Nuget 包管理器安装包,然后构建您的解决方案;您会发现输出目录现在包含所需的 DLL(当前为 directml.dll
、Microsoft.AI.MachineLearning.dll
和 onnxruntime.dll
)以及生成的 EXE,准备好进行 same-folder 部署。
源码方面,两个版本是这样的distinguished:
In-Box:
#include <winrt/Windows.AI.MachineLearning.h>
using WinMLModel = winrt::windows::AI::MachineLearning
NuGet:
#include <winrt/Microsoft.AI.MachineLearning.h>
using WinMLModel = winrt::Microsoft::AI::MachineLearning
换句话说,唯一的区别是你使用 Window
还是 Microsoft
header/namespace。
您还可以在 version matrix table 中跟踪支持的 opset 版本。
为了通过 WinML 使用我的自定义 TF 模型,我使用 tf2onnx 转换器将其转换为 onnx。转换最终使用 opset 11 进行。不幸的是我无法在 WinRT c++ 库中加载模型,因此我对 opset 支持感到困惑:根据发行说明,5 月最新的 WinML 版本支持 opset 11。我更新了我的 VS2019 和下载了最新的 Windows 10 SDK,c++ API 是否已经包含最新的 onnx 支持?或者是否有其他方法可以在 WinML c++ 中使用我的模型?
最新版本 Windows OS 包含对 opset 9 的支持。 Microsoft.AI.MachineLearning NuGet 包的最新版本包含对 opset 11 的支持。
请参阅这些发行说明:https://docs.microsoft.com/en-us/windows/ai/windows-ml/release-notes
您可以在此处找到最新的 Microsoft.AI.MachineLearning NuGet 包:https://www.nuget.org/packages/Microsoft.AI.MachineLearning/
如@Kookei 所述,有两种构建 WinML 的方法:the "In-Box" way and the NuGet way。
In-Box 基本上只是意味着 link 到 Windows 本身包含的任何 WinML DLL(例如,在 C:\Window\System32).
NuGet 包包含自己更新的一组 DLL,除了提供对最新 ONNX opset 的支持外,还有一个明显的优势,即允许您轻松地将二进制文件分发到旧版本的 Windows任何 built-in 机器学习能力。只需通过 Visual Studio 的 Nuget 包管理器安装包,然后构建您的解决方案;您会发现输出目录现在包含所需的 DLL(当前为 directml.dll
、Microsoft.AI.MachineLearning.dll
和 onnxruntime.dll
)以及生成的 EXE,准备好进行 same-folder 部署。
源码方面,两个版本是这样的distinguished:
In-Box:
#include <winrt/Windows.AI.MachineLearning.h>
using WinMLModel = winrt::windows::AI::MachineLearning
NuGet:
#include <winrt/Microsoft.AI.MachineLearning.h>
using WinMLModel = winrt::Microsoft::AI::MachineLearning
换句话说,唯一的区别是你使用 Window
还是 Microsoft
header/namespace。
您还可以在 version matrix table 中跟踪支持的 opset 版本。