Avaliação de EvalDLL em Windows
A biblioteca EvalDll no Windows é fornecida como biblioteca C++ e C#. Um pacote de NuGet também está disponível em nuget.org. Observe que Visual Studio atualização 3 de 2015 é necessária e que a plataforma de destino na propriedade do projeto deve ser X64.
Usando a biblioteca EvalDll
A biblioteca EvalDll habilita a avaliação de modelo programático na CPU (não há suporte para GPU).
O padrão de uso para essa DLL é o seguinte:
- Vincule a
Cntk.Eval-<VERSION>.lib
biblioteca de importação ao aplicativo. Certifique-se de usar o nome de arquivo correto – consulte o início deste artigo. - Incluir o arquivo de cabeçalho de avaliação "Eval.h"
- Obter uma instância do mecanismo de avaliação específica para o tipo de dados do modelo (
float
oudouble
). - Carregue o modelo (ou crie a rede) no mecanismo de avaliação.
- Avalie algumas entradas em relação ao modelo e obtenha a saída correspondente.
- Descarte o modelo quando terminar.
Para obter detalhes sobre a API C++ fornecida pelo EvalDll, consulte a página de API C++ do EvalDll .
O programa CPPEvalClient localizado na pasta Examples/Evaluation/LegacyEvalDll/CPPEvalClient demonstra o uso dessa interface de avaliação. Consulte a página Exemplos de EvalDll para saber como criar e executar exemplos.
Usando a biblioteca EvalDll C#
CNTK fornece um wrapper de biblioteca gerenciado (.Net) chamado Cntk.Eval.Wrapper
. Essa biblioteca encapsula a biblioteca EvalDll nativa e expõe uma interface gerenciada. Essa interface fornece a mesma funcionalidade que a interface nativa, com a adição de alguns métodos de conveniência.
Da mesma forma que sua contraparte nativa, essa biblioteca só pode executar avaliações usando a CPU (nenhuma GPU usada). A biblioteca é escrita na CLI/C++ e, portanto, forma a ponte entre .Net (por exemplo, C#) e o lado nativo do C++.
Para obter detalhes sobre a API gerenciada fornecida pelo EvalWrapper.DLL, consulte a página de API Gerenciada do EvalDll .
O padrão de uso do wrapper gerenciado é 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)
{
...
}
Há vários exemplos de execução de uma avaliação de modelo de CNTK programática em C# dentro do projeto CSEvalClient. Consulte a página Exemplos de EvalDll para saber como criar e executar exemplos.
Pacote NuGet
Atualmente, há um pacote NuGet em nuget.org (pesquisa por CNTK) que fornece as versões nativas e gerenciadas para depuração e versão para as bibliotecas de avaliação de CNTK (CPU usando apenas 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 NuGet Pacote para obter detalhes sobre como começar a usar CNTK e NuGet.
Se você não quiser usar NuGet Pacote, poderá adicionar Cntk.Eval.Wrapper-<VERSION>.dll
como referência ao seu projeto. Nesse caso, verifique se o caminho para a Cntk.Eval.Wrapper
DLL e suas dependências abaixo estão incluídos no caminho de pesquisa de DLLs para seu aplicativo.
Enviando a Biblioteca EvalDll com seu aplicativo Windows
O EvalDll requer que o pacote Pacote Redistribuível do Visual C++ para Visual Studio 2015 seja instalado no sistema em que seu aplicativo será executado. E a plataforma de destino na propriedade do projeto deve ser X64.
Esta página descreve como CNTK arquivos binários são nomeados.
Se seu próprio aplicativo usa a biblioteca EvalDll, você precisa distribuir essas DLLs com seu aplicativo:
Cntk.Eval-<VERSION>.dll
Cntk.Eval.Wrapper-<VERSION>.dll
Cntk.Math-<VERSION>.dll
libiomp5md.dll
mklml.dll
Todas essas DLLs podem ser encontradas na versão de versão binária CNTK, consulte a página CNTK Versões.