Partilhar via


Avaliação EvalDLL sobre Windows

A biblioteca EvalDll na Windows é fornecida tanto como biblioteca C++ e C#. Um pacote NuGet também está disponível no nuget.org. Por favor, note que Visual Studio 2015 Update 3 é necessário e a plataforma alvo na propriedade do projeto deve ser X64.

Usando a biblioteca EvalDll

A biblioteca EvalDll permite a avaliação programática modelo no CPU (GPU não é suportado).
O padrão de utilização deste DLL é o seguinte:

  1. Ligue a Cntk.Eval-<VERSION>.lib biblioteca de importação à aplicação. Certifique-se de que utiliza o nome do ficheiro correto - consulte o início deste artigo.
  2. Incluir o ficheiro do cabeçalho de avaliação "Eval.h"
  3. Obtenha uma instância do motor de avaliação específico para o tipo de dados do modelo (floatou double.
  4. Carregue o modelo (ou crie a rede) no motor de avaliação.
  5. Avalie algumas entradas contra a modelo e obtenha a saída correspondente.
  6. Elimine a modelo quando terminar.

Para mais informações sobre a API C++ fornecida pela EvalDll, consulte a página API EvalDll C++ .

O programa CPPEvalClient localizado na pasta Exemplos/Avaliação/LegacyEvalDll/CPPEvalClient demonstra o uso desta interface de avaliação. Consulte a página EvalDll Examples para saber como construir e executar exemplos.

Usando a biblioteca EvalDll C#

CNTK fornece um invólucro de biblioteca gerido (.Net) chamado Cntk.Eval.Wrapper. Esta biblioteca envolve a biblioteca nativa de EvalDll e expõe uma interface gerida. Esta interface fornece a mesma funcionalidade que a interface nativa, com a adição de alguns métodos de conveniência. Tal como a sua congénere nativa, esta biblioteca só pode efetuar avaliações utilizando o CPU (sem GPU usado). A biblioteca está escrita em CLI/C++ e forma assim a ponte entre .Net (por exemplo.C#) e o lado C++ nativo.

Para obter mais informações sobre a API gerida fornecida por EvalWrapper.DLL, consulte a página da API gerida pela EvalDll .

O padrão de utilização do invólucro gerido é simples:

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

Existem vários exemplos de realização de uma avaliação programática CNTK modelo em C# dentro do projeto CSEvalClient. Consulte a página EvalDll Examples para saber como construir e executar exemplos.

Pacote NuGet

Existe atualmente um pacote NuGet na nuget.org (search for CNTK) que fornece as versões nativas e geridas para Debug e Release para as bibliotecas de avaliação CNTK (CPU apenas usando MKL). Com o NuGet é possível simplesmente adicionar o CNTK Eval NuGet a um projeto .Net ou Win32 e chamar as APIs. Consulte a página Do Pacote NuGet para obter mais detalhes sobre como começar com CNTK e NuGet.

Se não quiser utilizar o Pacote NuGet, pode adicionar Cntk.Eval.Wrapper-<VERSION>.dll como referência ao seu projeto. Por favor, certifique-se, neste caso, de que o caminho para o Cntk.Eval.Wrapper DLL e as suas dependências abaixo estão incluídos no caminho de pesquisa de DLLs para a sua aplicação.

Envio da Biblioteca EvalDll com a sua aplicação Windows

O EvalDll requer que o Pacote Redistribuable Visual C++ para Visual Studio 2015 seja instalado no sistema onde a sua aplicação vai ser executada. E a plataforma-alvo na propriedade do projeto deve ser X64.

Esta página descreve como CNTK ficheiros binários são nomeados.

Se possuir aplicação utiliza a biblioteca EvalDll, tem de distribuir estes DLLs com a sua aplicação:

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

Todos estes DLLs podem ser encontrados na versão de lançamento binária CNTK, consulte a página CNTK Releases.