Valutazione EvalDLL su Windows
La libreria EvalDll in Windows viene fornita sia come libreria C++ che C#. Un pacchetto NuGet è disponibile anche in nuget.org. Si noti che Visual Studio 2015 Update 3 è necessario e la piattaforma di destinazione nella proprietà del progetto deve essere X64.
Uso della libreria EvalDll
La libreria EvalDll abilita la valutazione del modello a livello di codice sulla CPU (GPU non è supportata).
Il modello di utilizzo per questa DLL è il seguente:
- Collegare la
Cntk.Eval-<VERSION>.lib
libreria di importazione all'applicazione. Assicurarsi di usare il nome del file corretto: vedere l'inizio di questo articolo. - Includere il file di intestazione di valutazione "Eval.h"
- Ottenere un'istanza del motore di valutazione specifica per il tipo di dati del modello (
float
odouble
). - Caricare il modello (o creare la rete) nel motore di valutazione.
- Valutare un input rispetto al modello e ottenere l'output corrispondente.
- Eliminare il modello al termine.
Per informazioni dettagliate sull'API C++ fornita da EvalDll, vedere la pagina API EvalDll C++ .
Il programma CPPEvalClient situato nella cartella Esempi/Valutazione/LegacyEvalDll/CPPEvalClient illustra l'utilizzo di questa interfaccia di valutazione. Per creare ed eseguire esempi, vedere la pagina Esempi di EvalDll .
Uso della libreria C# EvalDll
CNTK fornisce un wrapper di libreria gestito (.Net) denominato Cntk.Eval.Wrapper
. Questa libreria esegue il wrapping della libreria EvalDll nativa ed espone un'interfaccia gestita. Questa interfaccia offre la stessa funzionalità dell'interfaccia nativa, con l'aggiunta di alcuni metodi pratici.
Allo stesso modo della controparte nativa, questa libreria può eseguire solo valutazioni usando la CPU (nessuna GPU usata). La libreria viene scritta nell'interfaccia della riga di comando/C++ e quindi forma il bridge tra .Net (ad esempio C#) e il lato C++ nativo.
Per informazioni dettagliate sull'API gestita fornita da EvalWrapper.DLL, vedere la pagina API gestita EvalDll .
Il modello di utilizzo per il wrapper gestito è semplice:
using Microsoft.MSR.CNTK.Extensibility.Managed;
...
try
{
using (var model = new IEvaluateModelManagedF())
{
// Load model
model.CreateNetwork(...);
model.Evaluate(...);
}
}
catch (CNTKException ex)
{
...
}
catch (Exception ex)
{
...
}
Esistono diversi esempi di esecuzione di una valutazione del modello di CNTK a livello di codice in C# all'interno del progetto CSEvalClient. Per creare ed eseguire esempi, vedere la pagina Esempi di EvalDll .
Pacchetto NuGet
Attualmente è disponibile un pacchetto NuGet in nuget.org (ricerca di CNTK) che fornisce sia le versioni native che gestite per Debug e Release per le librerie di valutazione CNTK (CPU solo usando MKL). Con il NuGet è possibile aggiungere semplicemente la CNTK Eval NuGet a un progetto .Net o Win32 e chiamare le API. Per informazioni dettagliate su come iniziare a usare CNTK e NuGet, vedere la pagina del pacchetto NuGet.
Se non si vuole usare NuGet Package, è possibile aggiungere Cntk.Eval.Wrapper-<VERSION>.dll
come riferimento al progetto. Assicurarsi in questo caso che il percorso della DLL e le relative dipendenze seguenti siano inclusi nel percorso di ricerca delle DLL per l'applicazioneCntk.Eval.Wrapper
.
Spedizione della libreria EvalDll con l'applicazione Windows
EvalDll richiede l'installazione del pacchetto Visual C++ Redistributable per Visual Studio 2015 nel sistema in cui verrà eseguita l'applicazione. E la piattaforma di destinazione nella proprietà del progetto deve essere X64.
Questa pagina descrive come vengono denominati CNTK file binari.
Se si usa la libreria EvalDll, è necessario distribuire queste DLL con l'applicazione:
Cntk.Eval-<VERSION>.dll
Cntk.Eval.Wrapper-<VERSION>.dll
Cntk.Math-<VERSION>.dll
libiomp5md.dll
mklml.dll
Tutte queste DLL sono disponibili nella versione CNTK versione binaria, vedere la pagina CNTK Release.