Compartir a través de


Evaluación de EvalDLL en Windows

La biblioteca EvalDll de Windows se proporciona tanto como biblioteca de C++ como de C#. También hay disponible un paquete NuGet en nuget.org. Tenga en cuenta que Visual Studio 2015 Update 3 es obligatorio y la plataforma de destino en la propiedad del proyecto debe ser X64.

Uso de la biblioteca EvalDll

La biblioteca EvalDll habilita la evaluación del modelo mediante programación en la CPU (no se admite GPU).
El patrón de uso de este archivo DLL es el siguiente:

  1. Vincule la Cntk.Eval-<VERSION>.lib biblioteca de importación a la aplicación. Asegúrese de usar el nombre de archivo correcto: consulte el principio de este artículo.
  2. Incluir el archivo de encabezado de evaluación "Eval.h"
  3. Obtenga una instancia del motor de evaluación específico para el tipo de datos del modelo (float o double).
  4. Cargue el modelo (o cree la red) en el motor de evaluación.
  5. Evalúe alguna entrada en el modelo y obtenga la salida correspondiente.
  6. Elimine el modelo cuando haya terminado.

Para más información sobre la API de C++ proporcionada por EvalDll, consulte la página api de C++ de EvalDll .

El programa CPPEvalClient ubicado en la carpeta Examples/Evaluation/LegacyEvalDll/CPPEvalClient muestra el uso de esta interfaz de evaluación. Consulte la página Ejemplos de EvalDll para ver cómo compilar y ejecutar ejemplos.

Uso de la biblioteca de C# de EvalDll

CNTK proporciona un contenedor de biblioteca administrado (.Net) denominado Cntk.Eval.Wrapper. Esta biblioteca encapsula la biblioteca nativa de EvalDll y expone una interfaz administrada. Esta interfaz proporciona la misma funcionalidad que la interfaz nativa, con la adición de algunos métodos de conveniencia. Por igual, su homólogo nativo, esta biblioteca solo puede realizar evaluaciones mediante la CPU (no se usa ninguna GPU). La biblioteca se escribe en CLI/C++ y, por tanto, forma el puente entre .Net (por ejemplo, C#) y el lado nativo de C++.

Para más información sobre la API administrada proporcionada por EvalWrapper.DLL, consulte la página api administrada de EvalDll .

El patrón de uso del contenedor administrado es sencillo:

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

Hay varios ejemplos de cómo realizar una evaluación de modelos CNTK mediante programación en C# dentro del proyecto CSEvalClient. Consulte la página Ejemplos de EvalDll para ver cómo compilar y ejecutar ejemplos.

Paquete NuGet

Actualmente hay un paquete de NuGet en nuget.org (busque CNTK) que proporciona las versiones nativas y administradas para Depurar y Liberar para las bibliotecas de evaluación de CNTK (solo con MKL). Con el NuGet es posible simplemente agregar el CNTK Eval NuGet a un proyecto de .Net o Win32 y llamar a las API. Consulte la página paquete de NuGet para obtener más información sobre cómo empezar a trabajar con CNTK y NuGet.

Si no desea usar NuGet Paquete, puede agregar Cntk.Eval.Wrapper-<VERSION>.dll como referencia al proyecto. Asegúrese de que, en este caso, la ruta de acceso al Cntk.Eval.Wrapper archivo DLL y sus dependencias siguientes se incluyen en la ruta de acceso de búsqueda de archivos DLL para la aplicación.

Envío de la biblioteca EvalDll con la aplicación de Windows

EvalDll requiere que se instale el paquete Visual C++ Redistributable para Visual Studio 2015 en el sistema en el que se va a ejecutar la aplicación. Y la plataforma de destino de la propiedad del proyecto debe ser X64.

En esta página se describe cómo se denominan CNTK archivos binarios.

Si su propia aplicación usa la biblioteca EvalDll, debe distribuir estos archivos DLL con la aplicación:

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

Todos estos archivos DLL se pueden encontrar en la versión de versión binaria de CNTK, consulte la página versiones de CNTK.