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:
- Koppel de
Cntk.Eval-<VERSION>.lib
importbibliotheek aan de toepassing. Zorg ervoor dat u de juiste bestandsnaam gebruikt. Zie het begin van dit artikel. - Neem het evaluatieheaderbestand 'Eval.h' op
- Haal een exemplaar op van de evaluatie-engine die specifiek is voor het gegevenstype van het model (
float
ofdouble
). - Laad het model (of maak het netwerk) in de evaluatie-engine.
- Evalueer enkele invoer op basis van het model en haal de bijbehorende uitvoer op.
- 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.