你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Windows上的 EvalDLL 评估

Windows上的 EvalDll 库作为 C++ 和 C# 库提供。 nuget.org 还提供NuGet包。请注意,Visual Studio 2015 Update 3 是必需的,项目属性中的目标平台应为 X64。

使用 EvalDll 库

不支持 EvalDll 库在 CPU (GPU 上启用编程模型评估) 。
此 DLL 的使用模式如下:

  1. Cntk.Eval-<VERSION>.lib 导入库链接到应用程序。 确保使用正确的文件名 - 请参阅本文的开头。
  2. 包括评估头文件“Eval.h”
  3. 获取特定于模型数据类型的计算引擎实例 (floatdouble) 。
  4. 加载模型 (或在评估引擎中创建网络) 。
  5. 针对模型评估一些输入并获取相应的输出。
  6. 完成后释放模型。

有关 EvalDll 提供的 C++ API 的详细信息,请参阅 EvalDll C++ API 页。

位于文件夹 Examples/Evaluation/LegacyEvalDll/CPPEvalClient 中的 CPPEvalClient 程序演示了此评估接口的用法。 有关如何生成和运行示例,请参阅 EvalDll 示例 页。

使用 EvalDll C# 库

CNTK provides a managed (.Net) library wrapper named Cntk.Eval.Wrapper. 此库包装本机 EvalDll 库并公开托管接口。 此接口提供与本机接口相同的功能,并添加了一些便利方法。 与本机对应库一样,此库只能使用 CPU 执行评估, (不使用任何 GPU) 。 库以 CLI/C++ 编写,从而形成 .Net ((例如 C#) 和本机 C++ 端)之间的桥梁。

有关EvalWrapper.DLL提供的托管 API 的详细信息,请参阅 EvalDll 托管 API 页。

托管包装器的使用模式很简单:

using Microsoft.MSR.CNTK.Extensibility.Managed;
...
try
{
    using (var model = new IEvaluateModelManagedF())
    {
        // Load model
        model.CreateNetwork(...);
        model.Evaluate(...);
    }
}
catch (CNTKException ex)
{
...
}
catch (Exception ex)
{
...
}

CSEvalClient 项目中的 C# 中执行编程CNTK模型评估的几个示例。 有关如何生成和运行示例,请参阅 EvalDll 示例 页。

NuGet 包

目前,nuget.org (搜索CNTK) 有一个NuGet包,该包仅使用 MKL) 为 CNTK 评估库提供本机版本和托管版本 (CPU。 使用 NuGet,只需将 CNTK Eval NuGet添加到 .Net 或 Win32 项目并调用 API 即可。 有关如何开始使用CNTK和NuGet的详细信息,请参阅NuGet包页。

如果不想使用NuGet包,可以添加Cntk.Eval.Wrapper-<VERSION>.dll为对项目的引用。 在这种情况下,请确保 DLL 的路径 Cntk.Eval.Wrapper 及其 依赖项 包含在应用程序的 DLL 搜索路径中。

使用 Windows 应用程序传送 EvalDll 库

EvalDll 要求在运行应用程序的系统上安装 Visual Studio 2015 Visual C++ 可再发行程序包 包。 项目属性中的目标平台应为 X64。

本页介绍了如何命名CNTK二进制文件。

如果拥有应用程序使用 EvalDll 库,则需要将这些 DLL 分发到应用程序:

  • Cntk.Eval-<VERSION>.dll
  • Cntk.Eval.Wrapper-<VERSION>.dll
  • Cntk.Math-<VERSION>.dll
  • libiomp5md.dll
  • mklml.dll

所有这些 DLL 都可以在CNTK二进制版本中找到,请参阅“CNTK版本”页