将模型与 Windows ML 集成到应用中

本指南介绍如何使用 Windows ML API 将模型集成到 Windows 应用中。 或者,如果想要使用 Windows ML 的自动代码生成器,请查看 mlgen

重要 APIWindows.AI.MachineLearning

我们将介绍 Windows ML 的基本构建基块,其中包括:

  • 模型
  • 会议
  • 设备
  • 绑定

你将使用这些函数通过 Windows ML 加载、绑定和评估模型。

我们还建议查看 GitHub 上的示例应用 ,查看端到端 Windows ML 代码示例。

以下视频通过一个简短的演示展示了这些 API 的实际应用。


在 C++ 中使用 WinML API

虽然 WinML API 在 C++/CX 和 C++/WinRT 中都可用,但我们建议使用 C++/WinRT 版本,因为它支持更自然的 C++ 编码,并且未来的大部分开发工作也将集中在这一版本上。 可以按照以下与特定情况相关的说明使用 C++/WinRT API:

  • 如果面向 Windows 1803 或更早版本,请参阅 教程:将现有 WinML 应用移植到 NuGet 包
  • 如果要创建新的C++应用程序,请参阅 教程:创建 Windows 机器学习桌面应用程序(C++), 并按照加载 模型的步骤进行作。
  • 如果你有现有的C++应用程序(尚未为 C++/WinRT 设置),请按照下列步骤为 C++/WinRT 设置应用程序:
    1. 请确保已安装最新版本的 Visual Studio 2019 (任何版本)。
    2. 请确保拥有 适用于 Windows 10 版本 1803 或更高版本的 SDK。
    3. Visual Studio 市场下载并安装 C++/WinRT Visual Studio 扩展 (VSIX)。
    4. <CppWinRTEnabled>true</CppWinRTEnabled> 属性添加到项目的.vcxproj文件中:
      <Project ...>
          <PropertyGroup Label="Globals">
              <CppWinRTEnabled>true</CppWinRTEnabled>
      ...
      
    5. C++/WinRT 需要C++17 标准中的功能,因此,在项目属性中,设置 C/C++ > Language C++ Language > Standard ISO C++17 Standard>(/std:c++17)。
    6. 将项目属性中的一致性模式设置为:否(/permissive-)。
    7. 要注意的另一个项目属性是 C/C++ > 一般 > 将警告视为错误。 将此设置为 “是”(/WX)“否”(/WX-) 以品尝。 有时, cppwinrt.exe 工具生成的源文件会生成警告,直到向它们添加实现为止。
    8. VSIX 还提供 C++/WinRT 投影类型的 Visual Studio 本机调试可视化效果 (natvis),提供与 C# 调试类似的体验。 调试版本中会自动使用 Natvis。 可以通过定义 WINRT_NATVIS 符号选择加入其发布版本。
    9. 你的项目现在应该针对 C++/WinRT 设置好了。 有关详细信息 ,请参阅 C++/WinRT

注释

使用以下资源获取有关 Windows ML 的帮助:

  • 若要提出或回答有关 Windows ML 的技术问题,请在 Stack Overflow 上使用 windows-machine-learning 标记。
  • 若要报告 bug,请在 GitHub 上提交问题。