常见问题解答(常见问题解答)

此页面包含有关 Windows ML 社区中最受欢迎的问题的解答。

如何知道我是否将使用 Windows ML 运行的 ONNX 模型?

使用 Windows ML 检查模型是否运行的最简单方法是使用 WinML 模型运行程序工具。 或者,可以检查 ONNX 版本和 Windows 版本 ,了解有关给定 Windows 版本支持的所有 ONNX 版本的详细信息。

如何将不同格式的模型转换为 ONNX?

可以使用 WinMLTools 将多种不同格式的模型(如 Apple CoreML 和 scikit-learn)转换为 ONNX。

尝试导出和/或将模型转换为 ONNX 时遇到错误,指出模型具有“不支持的运算符”。 我该怎么做?

ONNX 版本当前可能不支持本机训练框架中的某些运算符。 首先,建议检查 目标 Windows 版本支持的 ONNX 版本,并尝试将模型转换为支持的最大版本。 与以前的版本相比,更高版本的 ONNX 包括对一组较大运算符的支持。

如果继续遇到问题,我们建议与数据科学团队合作,尝试避免不受支持的运算符。 建议的一种方法是在源框架中更改模型的体系结构,并尝试将模型转换为目标 ONNX 版本。 请注意,你尚不需要重新训练模型-可以尝试转换体系结构,如果成功,则可以继续完全重新训练模型。

为什么无法加载模型?

由于文件访问限制,在 UWP 上进行开发时,加载模型时可能会遇到多种原因,但最常见的原因之一。 默认情况下,UWP 应用程序只能访问文件系统的某些部分,并且需要用户权限或额外功能才能访问其他位置。 有关详细信息,请参阅 文件访问权限

应使用哪个版本的 WinMLTools?

我们始终建议下载并安装 最新版本的 winmltools 包。 这将确保可以创建面向最新版本 Windows 的 ONNX 模型。

是否可以使用 onnxmltools 而不是 winmltools?

可以,但需要确保安装正确的 onnxmltools 版本才能面向 ONNX v1.2.2,这是 Windows ML 支持的最低 ONNX 版本。 如果不确定要安装哪个版本,建议改为安装最新版本的 winmltools 。 这将确保你能够面向 Windows 支持的 ONNX 版本。

应使用哪个版本的 Visual Studio 来获取自动代码生成(mlgen)?

支持 mlgenVisual Studio 最低建议版本为 15.8.7。 在 Windows 10 版本 1903 及更高版本中, mlgen 不再包含在 SDK 中,因此需要下载并安装扩展。 Visual Studio 2017Visual Studio 2019 有一个。

尝试运行 mlgen 时收到错误消息,并且未生成任何代码。 会发生什么情况?

尝试执行 mlgen 时最常见的两个错误是:

  • 缺少必需的属性“consumed_inputs”:如果遇到此错误消息,则很可能尝试运行 Windows 10 SDK 版本低于 17763 的 ONNX v1.2 模型;建议检查 SDK 版本并将其更新到版本 17763 或更高版本。
  • 类型错误:输出参数类型(map(string,tensor(float))与预期类型不匹配...:如果遇到此错误,则 ONNX 模型很可能是 WinML 从内部版本 17763 开始接受的版本。 建议将转换器包更新到最新的可用版本,并将模型重新映射到 1.2 版本的 ONNX。

默认情况下,WinML 在哪些方面运行?

如果未指定要使用 LearningModelDeviceKind 运行的设备,或者如果使用 LearningModelDeviceKind.Default,系统将决定哪个设备将评估模型。 这通常是 CPU。 若要使 WinML 在 GPU 上运行,请在创建 LearningModelDevice 时指定以下值之一:

  • LearningModelDeviceKind.DirectX
  • LearningModelDeviceKind.DirectXHighPerformance
  • LearningModelDeviceKind.DirectXMinPower

注意

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

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