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 gerida disponível para avaliar modelos sem necessitar de um leitor de dados ou ficheiros de dados. Esta interface é implementada em código gerido pelo CLI dentro da EvalWrapper biblioteca. Esta biblioteca, por sua vez, utiliza Evaldll a biblioteca para realizar as avaliações reais da rede (em C++) nativos.
O nome de interface gerido (em C#) é o seguinte:
public interface IEvaluateModelManaged<T> : IDisposable
Onde T está o tipo de elemento (float ou double)
Esta interface fornece os seguintes métodos:
void Init(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(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 CreateNetwork(string networkDescription, List<string> outputNodeNames)
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. Além disso, substitui a lista de nós de saída do ficheiro de configuração, com a lista passada como argumento. Isto permite ao chamador recuperar os valores de saída de outros nóns, tais como os da camada escondida.
networkDescription: contém a descrição da rede, seja através de uma entrada NetworkBuilder de um atributo modelPath.outputNodeNames: lista de nós a marcar como Saída, para que possam ser avaliados.
void CreateNetwork(string networkDescription, int deviceId)
Este método constrói a rede a partir da descrição da rede no ficheiro de configuração. É apenas um método de conveniência que se prepara deviceId=<deviceId> para o networkDescription texto.
networkDescription: contém a descrição da rede, seja através de umaNetworkBuilderpropriedade ou de ummodelPathatributo.deviceId: especifica o valor de identificação do dispositivo para preparar para a propriedade da descrição dadeviceIdrede.
void CreateNetwork(string networkDescription, int deviceId, List<string> outputNodeNames)
Este método constrói a rede a partir da descrição da rede no ficheiro de configuração. É apenas um método de conveniência que se prepara deviceId=<deviceId> para o networkDescription texto.
networkDescription: contém a descrição da rede, seja através de uma entrada NetworkBuilder de um atributo modelPath.deviceId: especifica o valor de identificação do dispositivo para preparar para a propriedade da descrição dadeviceIdrede.outputNodeNames: lista de nós a marcar como Saída, para que possam ser avaliados.
List<T> Evaluate(string outputKey, int outputSize)
Este método avalia a rede com um único passe para a frente (sem entrada) e devolve os valores associados à camada outputKeyespecificada .
outputKey: nome da camada para devolver os valores de.outputSize: número de valores na camada de saída.
Este método é precotado. Em vez disso, use oList<T> Evaluate(string outputKey)método.
List<T> Evaluate(string outputKey)
Este método avalia a rede com um único passe para a frente (sem entrada) e devolve os valores associados à camada outputKeyespecificada .
outputKey: nome da camada para devolver os valores de. Internamente, o método, determina o tamanho do tampão de dados necessário para a saída e atribui o tampão necessário.
void Evaluate(Dictionary<string, List<T>> inputs, Dictionary<string, List<T>> 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.
List<T> Evaluate(Dictionary<string, List<T>> inputs, string outputKey, int outputSize)
Este método avalia uma rede com a entrada fornecida e recupera uma única camada de saída
inputs: o dicionário mapeamento de nomes da camada de entrada para valores a utilizar como entrada na rede.outputKey: o nome da camada de saída desejada.outputSize: o número de valores na camada de saída.
Este método é precotado. Em vez disso, use oList<T> Evaluate(Dictionary<string, List<T>> inputs, string outputKey)método.
List<T> Evaluate(Dictionary<string, List<T>> inputs, string outputKey)
Este método avalia uma rede com a entrada fornecida e recupera uma única camada de saída
inputs: o dicionário mapeamento de nomes da camada de entrada para valores a utilizar como entrada na rede.outputKey: o nome da camada de saída desejada.
Internamente, o método, determina o tamanho do tampão de dados necessário para a saída e atribui o tampão necessário.
List<T> EvaluateRgbImage(Bitmap image, string outputKey)
Este método avalia uma imagem de bitmap e recupera uma única camada de saída
image: a entrada de imagem bitmap no formato RGB. Já deve ser redimensionado para corresponder ao tamanho esperado pela rede.outputKey: o nome da camada de saída desejada.
Internamente, o método primeiro extrai o vetor de recurso que contém 3 canais, e depois alimentá-lo como a entrada para a rede. Também atribui o tampão necessário para a saída.
Dictionary<string, int> GetNodeDimensions(NodeGroup nodeGroup)
Este método devolve um dicionário de itens, com cada item a mapear o nome da camada (chave) para o tamanho da dimensão. O grupo de nó é definido através da NodeGroup enumeração:
public enum class NodeGroup
{
nodeInput, // an input node
nodeOutput, // an output node
nodeSpecified
};
Existem duas implementações desta interface disponíveis para o cliente gerido:
class IEvaluateModelManagedF : IEvaluateModelManaged<float> // Assumes data elements of type float
e
class IEvaluateModelManagedD : IEvaluateModelManaged<double> // Assumes data elements of type double
Exemplo
O programa CSEvalClient localizado aqui demonstra o uso desta interface de avaliação.