Delen via


Evaluatie van EvalDLL op Windows

De EvalDll-bibliotheek op Windows wordt geleverd als C++- en C#-bibliotheek. Er is ook een NuGet-pakket beschikbaar op nuget.org. Houd er rekening mee dat Visual Studio 2015 Update 3 is vereist en dat het doelplatform in de projecteigenschap X64 moet zijn.

De EvalDll-bibliotheek gebruiken

De EvalDll-bibliotheek maakt programmatische modelevaluatie op CPU mogelijk (GPU wordt niet ondersteund).
Het gebruikspatroon voor deze DLL is het volgende:

  1. Koppel de Cntk.Eval-<VERSION>.lib importbibliotheek aan de toepassing. Zorg ervoor dat u de juiste bestandsnaam gebruikt. Zie het begin van dit artikel.
  2. Neem het evaluatieheaderbestand 'Eval.h' op
  3. Haal een exemplaar op van de evaluatie-engine die specifiek is voor het gegevenstype van het model (float of double).
  4. Laad het model (of maak het netwerk) in de evaluatie-engine.
  5. Evalueer enkele invoer op basis van het model en haal de bijbehorende uitvoer op.
  6. Verwijder het model wanneer u klaar bent.

Raadpleeg de pagina met de EvalDll-API voor meer informatie over de C++-API van EvalDll.

Het CPPEvalClient-programma in de map Examples/Evaluation/LegacyEvalDll/CPPEvalClient demonstreert het gebruik van deze evaluatie-interface. Zie de pagina EvalDll-voorbeelden voor het bouwen en uitvoeren van voorbeelden.

De EvalDll C#-bibliotheek gebruiken

CNTK biedt een beheerde (.Net) bibliotheek wrapper met de naam Cntk.Eval.Wrapper. Deze bibliotheek verpakt de systeemeigen EvalDll-bibliotheek en maakt een beheerde interface beschikbaar. Deze interface biedt dezelfde functionaliteit als de systeemeigen interface, met toevoeging van enkele handige methoden. Dezelfde systeemeigen tegenhanger kan deze bibliotheek alleen evaluaties uitvoeren met behulp van de CPU (geen GPU gebruikt). De bibliotheek is geschreven in CLI/C++ en vormt dus de brug tussen .Net (bijvoorbeeld C#) en de systeemeigen C++-zijde.

Raadpleeg de pagina Beheerde API van EvalDll voor meer informatie over de beheerde API van EvalWrapper.DLL.

Het gebruikspatroon voor de beheerde wrapper is eenvoudig:

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

Er zijn verschillende voorbeelden van het uitvoeren van een programmatische CNTK modelevaluatie in C# in het CSEvalClient-project. Zie de pagina EvalDll-voorbeelden voor het bouwen en uitvoeren van voorbeelden.

NuGet-pakket

Er is momenteel een NuGet-pakket op nuget.org (zoeken naar CNTK) die zowel de systeemeigen als beheerde versies biedt voor foutopsporing en release voor de CNTK evaluatiebibliotheken (ALLEEN CPU met MKL). Met nuGet kunt u eenvoudig de CNTK Eval NuGet toevoegen aan een .Net- of Win32-project en de API's aanroepen. Raadpleeg de nuGet-pakketpagina voor meer informatie over hoe u aan de slag gaat met CNTK en NuGet.

Als u NuGet Package niet wilt gebruiken, kunt u toevoegen Cntk.Eval.Wrapper-<VERSION>.dll als verwijzing naar uw project. Zorg ervoor dat in dit geval het pad naar de Cntk.Eval.Wrapper DLL en de bijbehorende afhankelijkheden hieronder zijn opgenomen in het zoekpad van DLL's voor uw toepassing.

EvalDll-bibliotheek verzenden met uw Windows-toepassing

EvalDll vereist dat het Visual C++ Redistributable Package voor Visual Studio 2015 wordt geïnstalleerd op het systeem waarop uw toepassing wordt uitgevoerd. En het doelplatform in de projecteigenschap moet X64 zijn.

Op deze pagina wordt beschreven hoe CNTK binaire bestanden een naam krijgen.

Als u eigenaar bent van de EvalDll-bibliotheek, moet u deze DLL's distribueren met uw toepassing:

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

Al deze DLL's vindt u in de CNTK binaire releaseversie, zie de pagina CNTK Releases.