Windows上的 EvalDLL 評估
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提供名為 的 Managed (.Net) 程式庫包裝函式 Cntk.Eval.Wrapper
。 此程式庫會包裝原生 EvalDll 程式庫,並公開 Managed 介面。 此介面提供與原生介面相同的功能,並新增一些便利方法。
與其原生對應專案相同,此程式庫只能使用 CPU 執行評估, (未使用任何 GPU) 。 程式庫是以 CLI/C++ 撰寫,因此形成 .Net (之間的橋接器,例如 C#) 和原生 C++ 端。
如需EvalWrapper.DLL所提供受控 API 的詳細資訊,請參閱 EvalDll 受控 API 頁面。
Managed 包裝函式的使用模式很簡單:
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套件,其會針對CNTK評估程式庫提供原生版本和受控版本, (CPU (使用 MKL) 。 使用 NuGet,您可以直接將 CNTK Eval NuGet新增至 .Net 或 Win32 專案,並呼叫 API。 如需如何開始使用CNTK和NuGet的詳細資訊,請參閱NuGet套件頁面。
如果您不想使用 NuGet Package,您可以新增 Cntk.Eval.Wrapper-<VERSION>.dll
作為專案的參考。 請確定在此情況下, Cntk.Eval.Wrapper
DLL 的路徑及其相 依性 包含在應用程式的 DLL 搜尋路徑中。
使用您的Windows應用程式寄送 EvalDll 程式庫
EvalDll 需要C++ 可轉散發套件套件,才能在應用程式執行所在的系統上安裝 Visual Studio 2015。 而且專案屬性中的目標平臺應該是 X64。
此頁面描述如何命名CNTK二進位檔。
如果您擁有的應用程式使用 EvalDll 程式庫,則必須將這些 DLL 散發至您的應用程式:
Cntk.Eval-<VERSION>.dll
Cntk.Eval.Wrapper-<VERSION>.dll
Cntk.Math-<VERSION>.dll
libiomp5md.dll
mklml.dll
您可以在CNTK二進位版本中找到所有這些 DLL,請參閱CNTK版本頁面。