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:
- 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. - Incluir o ficheiro do cabeçalho de avaliação "Eval.h"
- Obtenha uma instância do motor de avaliação específico para o tipo de dados do modelo (
float
oudouble
. - Carregue o modelo (ou crie a rede) no motor de avaliação.
- Avalie algumas entradas contra a modelo e obtenha a saída correspondente.
- 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.