Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Há uma interface nativa disponível para avaliar modelos sem exigir um leitor de dados ou arquivos de dados. Essa interface é implementada em C++ dentro da Cntk.Eval DLL no Windows e libCntk.Eval no Linux, respectivamente. A Cntk.Eval DLL, por sua vez, também é usada pelo EvalWrapper assembly (que fornece uma camada gerenciada) em Windows.
O nome da interface nativa é o seguinte:
template <typename ElemType> class IEvaluateModel
Onde ElemType está o tipo de elemento (float ou double).
Essa interface fornece os seguintes métodos:
void Init(const std::string& config)
Esse método inicializa o mecanismo de avaliação com o arquivo de configuração especificado. As entradas do arquivo de configuração são analisadas e atribuídas ao mecanismo de avaliação, no entanto, a rede não é criada dentro dessa chamada. Além disso, esse método usará como padrão a numCPUThreads propriedade, 1a menos que o arquivo de configuração contenha um valor diferente para essa propriedade.
void CreateNetwork(const std::string& networkDescription)
Esse método cria a rede a partir da descrição da rede no arquivo de configuração ou, se o modelPath atributo for especificado, ele carregará o modelo do disco.
networkDescription: contém a descrição da rede, por meio de uma entrada networkbuilder de um atributo modelPath.
void GetNodeDimensions(std::map<std::wstring, size_t>& dimensions, NodeGroup nodeGroup)
Esse método preenche um dicionário de dimensões, com cada item de dimensão mapeando o nome da camada (chave) para o tamanho da dimensão. O grupo de nós é definido por meio da NodeGroup enumeração:
enum NodeGroup
{
nodeInput, // an input node
nodeOutput, // an output node
nodeSpecified
};
void StartEvaluateMinibatchLoop(const std::wstring& outputNodeName)
Esses métodos preparam a rede para chamadas de Avaliação.
outputNodeName: o nome do nó que será avaliado
void Evaluate(std::map<std::wstring, std::vector<ElemType>*>& inputs, std::map<std::wstring, std::vector<ElemType>*>& outputs)
Esse método avalia a rede usando a entrada fornecida e recupera várias camadas de saída.
inputs: o dicionário mapeando nomes de camada de entrada para valores a serem usados como entrada para a rede.outputs: o dicionário mapeando nomes de camada de saída para valores a serem recuperados da rede.
void Evaluate(std::map<std::wstring, std::vector<ElemType>*>& outputs)`
Esse método avalia a rede que recupera várias camadas de saída. A avaliação é um passe de avanço único avaliando os nós de saída.
outputs: o dicionário mapeando nomes de camada de saída para valores a serem recuperados da rede.
void Destroy()
Libera recursos alocados durante a criação da rede.
Há duas implementações dessa interface disponíveis para o cliente:
IEvaluateModelF : IEvaluateModel<float> // Assumes data elements of type float
e
IEvaluateModelD : IEvaluateModel<double> // Assumes data elements of type double
Exemplo
O programa CPPEvalClient localizado na pasta Examples/Evaluation/LegacyEvalDll/CPPEvalClient demonstra o uso dessa interface de avaliação.