共用方式為


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提供名為 的 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版本頁面