EvalDLL-Auswertung auf Windows

Die EvalDll-Bibliothek auf Windows wird sowohl als C++ als auch als C#-Bibliothek bereitgestellt. Ein NuGet Paket ist auch bei nuget.org verfügbar. Bitte beachten Sie, dass Visual Studio 2015 Update 3 erforderlich ist und die Zielplattform in der Projekteigenschaft X64 sein sollte.

Verwenden der EvalDll-Bibliothek

Die EvalDll-Bibliothek ermöglicht die programmgesteuerte Modellbewertung auf CPU (GPU wird nicht unterstützt).
Das Verwendungsmuster für diese DLL ist folgendes:

  1. Verknüpfen Sie die Cntk.Eval-<VERSION>.lib Importbibliothek in die Anwendung. Stellen Sie sicher, dass Sie den richtigen Dateinamen verwenden – siehe Anfang dieses Artikels.
  2. Fügen Sie die Auswertungsheaderdatei "Eval.h" ein.
  3. Rufen Sie eine Instanz des Auswertungsmoduls für den Datentyp des Modells (float oder double) ab.
  4. Laden Sie das Modell (oder erstellen Sie das Netzwerk) im Auswertungsmodul.
  5. Bewerten Sie einige Eingaben gegen das Modell, und erhalten Sie die entsprechende Ausgabe.
  6. Entsorgen Sie das Modell, wenn Sie fertig sind.

Details zur C++-API, die von EvalDll bereitgestellt wird, finden Sie auf der EvalDll C++-API-Seite .

Das CPPEvalClient-Programm im Ordner "Beispiele/Auswertung/LegacyEvalDll/CPPEvalClient " veranschaulicht die Verwendung dieser Auswertungsschnittstelle. Weitere Informationen finden Sie auf der Seite "EvalDll-Beispiele ", um Beispiele zu erstellen und auszuführen.

Verwenden der EvalDll C#-Bibliothek

CNTK bietet einen verwalteten (.Net)-Bibliotheksumbruch namens Cntk.Eval.Wrapper. Diese Bibliothek umschließt die native EvalDll-Bibliothek und stellt eine verwaltete Schnittstelle zur Verfügung. Diese Schnittstelle bietet dieselbe Funktionalität wie die native Schnittstelle mit der Ergänzung einiger Komfortmethoden. Ebenso wie ihr natives Gegenstück kann diese Bibliothek nur Auswertungen mithilfe der CPU (keine GPU verwendet) ausführen. Die Bibliothek wird in CLI/C++ geschrieben und bildet somit die Brücke zwischen .Net (z. B. C#) und der nativen C++-Seite.

Ausführliche Informationen zur verwalteten API, die von EvalWrapper.DLL bereitgestellt wird, finden Sie auf der Seite "Verwaltete EvalDll-API ".

Das Verwendungsmuster für den verwalteten Wrapper ist einfach:

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

Es gibt mehrere Beispiele für das Ausführen einer programmgesteuerten CNTK Modellbewertung in C# im CSEvalClient-Projekt. Weitere Informationen finden Sie auf der Seite "EvalDll-Beispiele ", um Beispiele zu erstellen und auszuführen.

NuGet-Paket

Es gibt derzeit ein NuGet-Paket bei nuget.org (Suchen nach CNTK), das sowohl die nativen als auch verwalteten Versionen für Debug- und Release-Versionen für die CNTK Auswertungsbibliotheken (CPU nur mit MKL) bereitstellt. Mit dem NuGet ist es möglich, einfach die CNTK Eval NuGet zu einem .Net- oder Win32-Projekt hinzuzufügen und die APIs aufzurufen. Weitere Informationen dazu, wie Sie mit CNTK und NuGet beginnen können, finden Sie auf der NuGet-Seite "Paket".

Wenn Sie NuGet Package nicht verwenden möchten, können Sie als Verweis auf Ihr Projekt hinzufügenCntk.Eval.Wrapper-<VERSION>.dll. Stellen Sie in diesem Fall sicher, dass der Pfad zur Cntk.Eval.Wrapper DLL und deren Abhängigkeiten unten im Suchpfad von DLLs für Ihre Anwendung enthalten sind.

EvalDll-Bibliothek mit Ihrer Windows Anwendung senden

EvalDll erfordert, dass das Visual C++ Redistributable Package für Visual Studio 2015 auf dem System installiert wird, auf dem Ihre Anwendung ausgeführt wird. Und die Zielplattform in der Projekteigenschaft sollte X64 sein.

Auf dieser Seite wird beschrieben, wie CNTK binärdateien benannt werden.

Wenn Sie eigene Anwendung EvalDll-Bibliothek verwendet, müssen Sie diese DLLs mit Ihrer Anwendung verteilen:

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

Alle diese DLLs finden Sie auf der CNTK binärversion, finden Sie auf der Seite CNTK Versionen.