Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Existe uma interface nativa disponível para avaliar modelos sem necessitar de um leitor de dados ou ficheiros de dados. Esta interface é implementada em C++ dentro do Cntk.Eval DLL em Windows e libCntk.Eval em Linux, respectivamente. O Cntk.Eval DLL, por sua vez, também é utilizado pelo EvalWrapper conjunto (que fornece uma camada gerida) em Windows.
O nome da interface nativa é o seguinte:
template <typename ElemType> class IEvaluateModel
Onde ElemType está o tipo de elemento (float ou double.
Esta interface fornece os seguintes métodos:
void Init(const std::string& config)
Este método inicializa o motor de avaliação com o ficheiro de configuração especificado. As entradas do ficheiro de configuração são analisadas e atribuídas ao motor de avaliação, no entanto, a rede não é criada dentro desta chamada. Além disso, este método irá predefinição da numCPUThreads propriedade para 1, a menos que o ficheiro de configuração contenha um valor diferente para esta propriedade.
void CreateNetwork(const std::string& networkDescription)
Este método constrói a rede a partir da descrição da rede no ficheiro de configuração, ou se o modelPath atributo for especificado, carrega a modelo do disco.
networkDescription: contém a descrição da rede, seja através de uma entrada NetworkBuilder de um atributo modelPath.
void GetNodeDimensions(std::map<std::wstring, size_t>& dimensions, NodeGroup nodeGroup)
Este 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ó é definido através da NodeGroup enumeração:
enum NodeGroup
{
nodeInput, // an input node
nodeOutput, // an output node
nodeSpecified
};
void StartEvaluateMinibatchLoop(const std::wstring& outputNodeName)
Estes métodos preparam a rede para avaliar chamadas.
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)
Este método avalia a rede utilizando a entrada fornecida e recupera várias camadas de saída.
inputs: o dicionário mapeamento de nomes da camada de entrada para valores a utilizar como entrada na rede.outputs: a camada de saída de mapeamento do dicionário dá nomes aos valores a recuperar da rede.
void Evaluate(std::map<std::wstring, std::vector<ElemType>*>& outputs)`
Este método avalia a rede recuperando várias camadas de saída. A avaliação é um passe único para a frente avaliando os nós de saída.
outputs: a camada de saída de mapeamento do dicionário dá nomes aos valores a recuperar da rede.
void Destroy()
Liberta recursos atribuídos durante a criação de rede.
Existem duas implementações desta 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 Exemplos/Avaliação/LegacyEvalDll/CPPEvalClient demonstra o uso desta interface de avaliação.