使用 Windows ML 将模型集成到应用中
在本指南中,我们将介绍如何使用 Windows ML API 将模型集成到 Windows 应用中。 你也可以在想要使用 Windows ML 的自动代码生成器的情况下查看 mlgen。
重要 API:Windows.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 的应用程序:
- 确保已安装最新版本的 Visual Studio 2019(任何版本)。
- 确保有用于 Windows 10 版本 1803 或更高版本的 SDK。
- 从 Visual Studio Marketplace 下载并安装 C++/WinRT Visual Studio 扩展 (VSIX)。
- 将
<CppWinRTEnabled>true</CppWinRTEnabled>
属性添加到项目的 .vcxproj 文件中:<Project ...> <PropertyGroup Label="Globals"> <CppWinRTEnabled>true</CppWinRTEnabled> ...
- C++/WinRT 需要 C++17 标准版中的功能,因此,请在项目属性中设置“C/C++”>“语言”>“C++ 语言标准版”>“ISO C++17 标准版(/std:c++17)”。
- 在项目属性中设置“符合性模式:是(/permissive-)”。
- 要注意的另一个项目属性是“C/C++”>“常规”>“将警告视为错误”。 请根据喜好将此项设置为“是(/WX)”或“否(/WX-)”。 有时候,由 cppwinrt.exe 工具生成的源文件会生成警告,除非向其添加实现。
- VSIX 还提供 C++/WinRT 投影类型的 Visual Studio 本机调试可视化效果 (natvis),提供与 C# 调试类似的体验。 Natvis 对于调试版本是自动的。 可以通过定义 WINRT_NATVIS 符号选择加入其发布版本。
- 你的项目现在应该针对 C++/WinRT 设置好了。 有关详细信息,请参阅 C++/WinRT。
相关主题
注意
使用以下资源可获取有关 Windows ML 的帮助:
- 若要提出或回答有关 Windows ML 的技术问题,请在 Stack Overflow 上使用 windows-machine-learning 标记。
- 若要报告 bug,请在 GitHub 上提交问题。