你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Windows上的 EvalDll 库作为 C++ 和 C# 库提供。 nuget.org 还提供NuGet包。请注意,Visual Studio 2015 Update 3 是必需的,项目属性中的目标平台应为 X64。
使用 EvalDll 库
不支持 EvalDll 库在 CPU (GPU 上启用编程模型评估) 。
此 DLL 的使用模式如下:
- 将
Cntk.Eval-<VERSION>.lib导入库链接到应用程序。 确保使用正确的文件名 - 请参阅本文的开头。 - 包括评估头文件“Eval.h”
- 获取特定于模型数据类型的计算引擎实例 (
float或double) 。 - 加载模型 (或在评估引擎中创建网络) 。
- 针对模型评估一些输入并获取相应的输出。
- 完成后释放模型。
有关 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>.dllCntk.Eval.Wrapper-<VERSION>.dllCntk.Math-<VERSION>.dlllibiomp5md.dllmklml.dll
所有这些 DLL 都可以在CNTK二进制版本中找到,请参阅“CNTK版本”页。