Évaluation EvalDLL sur Windows
La bibliothèque EvalDll sur Windows est fournie en tant que bibliothèque C++ et C#. Un package NuGet est également disponible sur nuget.org. Notez que Visual Studio 2015 Update 3 est obligatoire et que la plateforme cible de la propriété de projet doit être X64.
Utilisation de la bibliothèque EvalDll
La bibliothèque EvalDll active l’évaluation du modèle programmatique sur le processeur (LE GPU n’est pas pris en charge).
Le modèle d’utilisation de cette DLL est le suivant :
- Liez la bibliothèque d’importation
Cntk.Eval-<VERSION>.lib
à l’application. Veillez à utiliser le nom de fichier correct . Consultez le début de cet article. - Inclure le fichier d’en-tête d’évaluation « Eval.h »
- Obtenir une instance du moteur d’évaluation spécifique au type de données du modèle (
float
oudouble
). - Chargez le modèle (ou créez le réseau) dans le moteur d’évaluation.
- Évaluez une entrée par rapport au modèle et obtenez la sortie correspondante.
- Supprimez le modèle lorsque vous avez terminé.
Pour plus d’informations sur l’API C++ fournie par EvalDll, reportez-vous à la page de l’API C++ EvalDll .
Le programme CPPEvalClient situé dans le dossier Examples/Evaluation/LegacyEvalDll/CPPEvalClient illustre l’utilisation de cette interface d’évaluation. Consultez la page Exemples EvalDll pour savoir comment générer et exécuter des exemples.
Utilisation de la bibliothèque C# EvalDll
CNTK fournit un wrapper de bibliothèque managé (.Net) nommé Cntk.Eval.Wrapper
. Cette bibliothèque encapsule la bibliothèque EvalDll native et expose une interface managée. Cette interface fournit les mêmes fonctionnalités que l’interface native, avec l’ajout de certaines méthodes pratiques.
À la fois son équivalent natif, cette bibliothèque ne peut effectuer que des évaluations à l’aide de l’UC (aucun GPU utilisé). La bibliothèque est écrite en CLI/C++ et forme ainsi le pont entre .Net (par exemple, C#) et le côté C++ natif.
Pour plus d’informations sur l’API managée fournie par EvalWrapper.DLL, reportez-vous à la page API managée EvalDll .
Le modèle d’utilisation du wrapper managé est simple :
using Microsoft.MSR.CNTK.Extensibility.Managed;
...
try
{
using (var model = new IEvaluateModelManagedF())
{
// Load model
model.CreateNetwork(...);
model.Evaluate(...);
}
}
catch (CNTKException ex)
{
...
}
catch (Exception ex)
{
...
}
Il existe plusieurs exemples d’exécution d’une évaluation de modèle CNTK programmatique en C# dans le projet CSEvalClient. Consultez la page Exemples EvalDll pour savoir comment générer et exécuter des exemples.
Package NuGet
Il existe actuellement un package NuGet à nuget.org (recherchez CNTK) qui fournit à la fois les versions natives et managées de Debug et Release pour les bibliothèques d’évaluation CNTK (processeur uniquement à l’aide de MKL). Avec le NuGet il est possible d’ajouter simplement le CNTK Eval NuGet à un projet .Net ou Win32 et d’appeler les API. Reportez-vous à la page NuGet Package pour plus d’informations sur la prise en main des CNTK et des NuGet.
Si vous ne souhaitez pas utiliser NuGet package, vous pouvez ajouter Cntk.Eval.Wrapper-<VERSION>.dll
comme référence à votre projet. Vérifiez dans ce cas que le chemin d’accès à la Cntk.Eval.Wrapper
DLL et ses dépendances ci-dessous sont inclus dans le chemin de recherche des DLL pour votre application.
Expédition de la bibliothèque EvalDll avec votre application Windows
EvalDll nécessite l’installation du package Visual C++ Redistributable pour Visual Studio 2015 sur le système sur lequel votre application va s’exécuter. Et la plateforme cible dans la propriété de projet doit être X64.
Cette page décrit comment CNTK fichiers binaires sont nommés.
Si votre propre application utilise la bibliothèque EvalDll, vous devez distribuer ces DLL avec votre application :
Cntk.Eval-<VERSION>.dll
Cntk.Eval.Wrapper-<VERSION>.dll
Cntk.Math-<VERSION>.dll
libiomp5md.dll
mklml.dll
Toutes ces DLL sont disponibles dans la version CNTK version de version binaire, consultez la page CNTK Versions.