创建会话

在加载 LearningModel后,请创建一个 LearningModelSession,将模型绑定到运行的设备并对模型进行评估。

选择设备

可以在创建会话时选择设备。 选择类型为 LearningModelDeviceKind 的设备:

如果未指定设备,系统会使用默认设置。 建议使用默认设置,这样就可以灵活地让系统在将来为你进行选择。

以下视频详细介绍了每种设备类型。


高级设备创建

Windows AI 支持使用调用方已创建的设备。 执行此操作时,有一些选项可供选择,并且有一些注意事项需要考虑:

  • CreateFromDirect3D11Device。 如果已有现有的 IDirect3DDevice,请使用此方法。 Windows AI 将使用同一适配器为其 ML 工作负荷创建 d3d12 设备。 这在以下情况下非常有用:你的照相机将 d3d11 设备用于 VideoFrame,并且你想要将该同一设备用于 LearningModelSession。 在许多情况下,它可以避免内存复制。 备注:VideoFrame 张量化是 Windows AI 具有的唯一 d3d11 工作负荷。 如果不使用该功能,则共享或创建 d3d11 设备没有任何优势。
  • CreateFromD3D12CommandQueue(本机)。 如果要重复使用 d3d12 设备,请使用此方法。 Windows AI 会将此命令队列用于其 ML 工作负荷。 它还将使用 D3D11On12CreateDevice 创建 d3d11 设备。 这仅在需要时才执行,并且将用于所有 d3d11 工作负荷,例如 VideoFrame 张量化。 可以通过 LearningModelDevice.Direct3D11Device 属性访问此新设备。

示例

下面的示例演示如何从模型和设备创建会话:

private void CreateSession(LearningModel model, LearningModelDeviceKind kind)
{
    // Create the evaluation session with the model and device
    LearningModelSession session =
        new LearningModelSession(model, new LearningModelDevice(kind));
}

另请参阅

注意

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

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