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.
A Biblioteca de CNTK C++ baseia-se na API da Biblioteca CNTK. Os seguintes métodos são utilizados para avaliar uma modelo.
Carregue um modelo
static FunctionPtr CNTK::Function::Load(const std::wstring& modelFile, const DeviceDescriptor& computeDevice = DeviceDescriptor::UseDefaultDevice()
Este método carrega um ficheiro modelo e devolve o ponteiro à Função que representa o modelo carregado. Uma Função em CNTK denota um gráfico de cálculo composto por funções primitivas ou funções compostas com argumentos de entrada zero ou mais e uma ou mais saídas. É modelFile o caminho modelo arquivo. O computeDevice dispositivo especifica o dispositivo para executar a avaliação.
static FunctionPtr CNTK::Function::Load(char *modelBuffer, size_t modelBufferLength, const DeviceDescriptor& computeDevice = DeviceDescriptor::UseDefaultDevice()
Este método carrega um modelo de um tampão de memória e devolve o ponteiro à Função que representa o modelo carregado. Os modelBuffer pontos para o tampão que contém o conteúdo de modelo serializado, e o modelBufferLength comprimento do tampão. O computeDevice dispositivo especifica o dispositivo para executar a avaliação.
Avaliar uma Função
void CNTK::Function::Evaluate(const std::unordered_map<Variable, ValuePtr>& arguments, std::unordered_map<Variable, ValuePtr>& outputs, const DeviceDescriptor& computeDevice = DeviceDescriptor::UseDefaultDevice()
Este método inicia a this avaliação da Função que representa o modelo com parâmetros especificados. Contém arguments valores de todas as variáveis de entrada necessárias para avaliação, e a outputs loja os valores das variáveis de saída. O armazenamento dos valores de saída pode ser pré-atribuído pelo chamador, ou pelo sistema se o mapeamento ValuePtr for passado como nulo pelo autor da chamada. O computeDevice dispositivo especifica o dispositivo para executar a avaliação.
Criar um valor usando a entrada densa
template <typename ElementType> static ValuePtr CNTK::Value::CreateBatch(const NDShape& sampleShape, const std::vector<ElementType>& batchData, const DeviceDescriptor& device, bool readOnly = false
Cria um novo objeto Value contendo um lote de amostras. O número de amostras no lote é o número de elementos divididos batchData pelo tamanho de (Um erro de sampleShape tempo de execução ocorre se o restante não for zero). O objeto Valor criado contém uma cópia dos dados especificados em batchData. ElementType é o tipo de dados do objeto Valor criado. Atualmente, float e double são apoiados.
Parâmetros:
sampleShape: a forma de tensor do objeto Valor.batchData: os dados a conter no objeto Valor.device: em que dispositivo deve ser criado o objeto Valor.readOnly: o objeto Valor só é lido se esta bandeira fortrue.
template <typename ElementType> static ValuePtr CNTK::Value::CreateSequence(const NDShape& sampleShape, const std::vector<ElementType>& sequenceData, const DeviceDescriptor& device, bool readOnly = false
Cria um novo objeto Value contendo uma sequência de amostras. O objeto Valor criado contém uma cópia dos dados especificados em sequenceData. O comprimento da sequência é o número de elementos divididos sequenceData pelo tamanho de (Um erro de sampleShape tempo de execução ocorre se o restante não for zero). A sequência criada é uma nova sequência. ElementType é o tipo de dados do objeto Valor criado. Atualmente, float e double são apoiados.
Parâmetros:
sampleShape: a forma de tensor do Valor.sequenceData: os dados a conter no Valor.device: em que dispositivo deve ser criado o objeto Valor.readOnly: o Valor só é lido se esta bandeira fortrue.
template <typename ElementType> static ValuePtr CNTK::Value::CreateSequence(const NDShape& sampleShape, const std::vector<ElementType>& sequenceData, bool sequenceStartFlag, const DeviceDescriptor& device, bool readOnly = false
Cria um novo objeto Value contendo uma sequência de amostras. O objeto Valor criado contém uma cópia dos dados especificados em sequenceData. O comprimento da sequência é o número de elementos divididos sequenceData pelo tamanho de (Um erro de sampleShape tempo de execução ocorre se o restante não for zero). A sequênciaStartFlag especifica se esta sequência é uma nova sequência ou continuação de uma sequência anterior no mesmo índice na lista de sequências de uma chamada anterior a este método. ElementType é o tipo de dados do objeto Valor criado. Atualmente, float e double são apoiados.
Parâmetros:
sampleShape: a forma de tensor do Valor.sequenceData: os dados a conter no Valor.sequenceStartFlag:trueindica que é uma nova sequência.falsesignifica uma continuação de uma sequência anterior.device: em que dispositivo deve ser criado o objeto Valor.readOnly: o Valor só é lido se esta bandeira fortrue.
template <typename ElementType> static ValuePtr CNTK::Value::CreateBatchOfSequences(const NDShape& sampleShape, const std::vector<std::vector<ElementType>>& batchOfSequences, const DeviceDescriptor& device, bool readOnly = false
Cria um novo objeto Value contendo um lote de sequências de comprimento variável. O objeto Valor criado contém uma cópia dos dados especificados em batchOfSequences. O número de sequências no lote é do tamanho de batchOfSequences. O comprimento de cada sequência é o número de elementos na sequência correspondente de batchOfSequences dividido pelo tamanho de (Um erro de sampleShape tempo de execução ocorre se o restante não for zero). Cada sequência batchOfSequences é uma nova sequência. ElementType é o tipo de dados do objeto Valor criado. Atualmente, float e double são apoiados.
Parâmetros:
sampleShape: a forma de tensor do Valor.batchOfSequences: os dados a armazenar no Valor. O exteriorvectorrepresenta uma coleção de sequências com comprimento variável, e o interiorvectorrepresenta cada sequência individual.device: em que dispositivo o Valor deve ser criado.readOnly: o Valor só é lido se esta bandeira fortrue.
template <typename ElementType> static ValuePtr CNTK::Value::CreateBatchOfSequences(const NDShape& sampleShape, const std::vector<std::vector<ElementType>>& batchOfSequences, const std::vector<bool>& sequenceStartFlags, const DeviceDescriptor& device, bool readOnly = false
Cria um novo objeto Value contendo um lote de sequências de comprimento variável. O objeto Valor criado contém uma cópia dos dados especificados em batchOfSequences. O número de sequências no lote é do tamanho de batchOfSequences. O comprimento de cada sequência é o número de elementos na sequência correspondente de batchOfSequences dividido pelo tamanho de (Um erro de sampleShape tempo de execução ocorre se o restante não for zero). ElementType é o tipo de dados do objeto Valor criado. Atualmente, float e double são apoiados.
Parâmetros:
sampleShape: a forma de tensor do Valor.batchOfSequences: os dados a armazenar no Valor. O exteriorvectorrepresenta uma coleção de sequências com comprimento variável, e o interiorvectorrepresenta cada sequência individual.sequenceStartFlags: Uma coleção de valores boolean. Cada elemento representa se a sequênciabatchOfSequencescorrespondente é uma nova sequência (em caso detrue) ou uma continuação de uma sequência anterior (em caso defalse).device: em que dispositivo o Valor deve ser criado.readOnly: o Valor só é lido se esta bandeira fortrue.
Criar um valor usando a entrada de vetor de um só quente
template <typename ElementType> static ValuePtr CNTK::Value::CreateBatch(size_t dimension, const std::vector<size_t>& batchData, const DeviceDescriptor& device, bool readOnly = false)
Cria um novo objeto Value contendo um lote de amostras. Cada amostra é representada por um valor de índice que aponta para o valor não-zero no vetor de um só quente de dimension elementos. O número de amostras no lote é o número de elementos em batchData. ElementType é o tipo de dados do objeto Valor criado. Atualmente, float e double são apoiados.
Parâmetros:
dimension: o tamanho da dimensão do vetor de um só calor.batchData: a recolha de índices que representem o lote de amostras.device: em que dispositivo deve ser criado o objeto Valor.readOnly: o Valor só é lido se esta bandeira fortrue.
template <typename ElementType> static ValuePtr CNTK::Value::CreateSequence(size_t dimension, const std::vector<size_t>& sequenceData, const DeviceDescriptor& device, bool readOnly = false)
Cria um novo objeto Value contendo uma sequência de amostras. Cada amostra é representada por um valor de índice que aponta para o valor não-zero no vetor de um só quente de dimension elementos. O comprimento da sequência é o número de elementos em sequenceData. Cada sequência é uma nova sequência. ElementType é o tipo de dados do objeto Valor criado. Atualmente, float e double são apoiados.
Parâmetros:
dimension: o tamanho da dimensão do vetor de um só calor.sequenceData: a recolha de índices que representem a sequência de amostras.device: em que dispositivo deve ser criado o objeto Valor.readOnly: o Valor só é lido se esta bandeira fortrue.
template <typename ElementType> static ValuePtr CNTK::Value::CreateSequence(size_t dimension, const std::vector<size_t>& sequenceData, bool sequenceStartFlag, const DeviceDescriptor& device, bool readOnly = false)
Cria um novo objeto Value contendo uma sequência de amostras. Cada amostra é representada por um valor de índice que aponta para o valor não-zero no vetor de um só quente de dimension elementos. O seqStartFlag especifica se esta sequência é uma nova sequência ou continuação de uma sequência anterior no mesmo índice na lista de sequências de uma chamada anterior a este método. O comprimento da sequência é o número de elementos em sequenceData. ElementType é o tipo de dados do objeto Valor criado. Atualmente, float e double são apoiados.
Parâmetros:
dimension: o tamanho da dimensão do vetor de um só calor.sequenceData: a recolha de índices que representem a sequência de amostras.sequenceStartFlag:trueindica que é uma nova sequência.falsesignifica uma continuação de uma sequência anterior.device: em que dispositivo deve ser criado o objeto Valor.readOnly: o Valor só é lido se esta bandeira fortrue.
template <typename ElementType> static ValuePtr CNTK::Value::CreateBatchOfSequences(size_t dimension, const std::vector<std::vector<size_t>>& batchOfSequences, const DeviceDescriptor& device, bool readOnly = false
Cria um novo objeto Value contendo um lote de sequências de comprimento variável. Cada amostra é representada por um valor de índice que aponta para o valor não-zero no vetor de um só quente de dimension elementos. O número de sequências é o número de elementos na lista exterior de batchOfSequences. O comprimento de cada sequência é o número de elementos da sequência correspondente na lista interna de batchOfSequences. Cada sequência batchOfSequences é uma nova sequência. ElementType é o tipo de dados do objeto Valor criado. Atualmente, float e double são apoiados.
Parâmetros:
dimension: o tamanho da dimensão do vetor de um só calor.batchOfSequences: a recolha de índices que representam sequências de amostras. O exteriorvectorrepresenta uma coleção de sequências com comprimento variável, e o interiorvectorrepresenta cada sequência individual.device: em que dispositivo deve ser criado o objeto Valor.readOnly: o Valor só é lido se esta bandeira fortrue.
template <typename ElementType> static ValuePtr CNTK::Value::CreateBatchOfSequences(size_t dimension, const std::vector<std::vector<size_t>>& batchOfSequences, const std::vector<bool>& sequenceStartFlags, const DeviceDescriptor& device, bool readOnly = false
Cria um novo objeto Value contendo um lote de sequências de comprimento variável. Cada amostra é representada por um valor de índice que aponta para o valor não-zero no vetor de um só quente de dimension elementos. O número de sequências é o número de elementos na lista exterior de batchOfSequences. O comprimento de cada sequência é o número de elementos da sequência correspondente na lista interna de batchOfSequences. ElementType é o tipo de dados do objeto Valor criado. Atualmente, float e double são apoiados.
Parâmetros:
dimension: o tamanho da dimensão do vetor de um só calor.batchOfSequences: a recolha de índices que representam sequências de amostras. O exteriorvectorrepresenta uma coleção de sequências com comprimento variável, e o interiorvectorrepresenta cada sequência individual.sequenceStartFlags: Uma coleção de valores boolean. Cada elemento representa se a sequênciabatchOfSequencescorrespondente é uma nova sequência (em caso detrue) ou uma continuação de uma sequência anterior (em caso defalse).device: em que dispositivo deve ser criado o objeto Valor.readOnly: o Valor só é lido se esta bandeira fortrue.
Criar um Valor utilizando uma entrada CSC escassa
Atualmente, o Formato da Coluna Sparse Comprimida (CSC) é suportado. O formato CSC armazena a matriz em formato de coluna-grande, e a matriz que contém os índices de coluna é comprimido. Uma matriz no formato CSC é representada pelos seguintes parâmetros:
nonZeroValues: a matriz de dados que detém todos os valores não zero da matriz em formato coluna-major.rowIndices: a matriz que contém os índices de linha dos elementos correspondentes na matriznonZeroValues.colStarts: a matriz que mantém os índices nas matrizesrowIndicesenonZeroValues.
Uma descrição detalhada do formato CSC pode ser encontrada aqui.
template <typename ElementType> static ValuePtr CNTK::Value::CreateSequence(const NDShape& sampleShape, size_t sequenceLength, const SparseIndexType* colStarts, const SparseIndexType* rowIndices, const ElementType* nonZeroValues, size_t numNonZeroValues, const DeviceDescriptor& device, bool readOnly = false
Cria um novo objeto Value contendo uma sequência de amostras utilizando o formato de entrada escasso do CSC. O comprimento da sequência é o número de linhas da matriz escassa. A sequência criada é uma nova sequência. ElementType é o tipo de dados do objeto Valor criado. Atualmente, float e double são apoiados.
Parâmetros:
sampleShape: a forma de tensor do Valor. Para uma entrada escassa, a modelar a dimensão líder da forma do tensor deve ser a mesma do tamanho total da forma do tensor.sequenceLength: o comprimento da sequência, que é também o número de linhas na matriz escassa.colStarts: a matriz contém índices para cada coluna nas matrizesrowIndicesenonZeroValues.rowIndices: a matriz que contém os índices de linha dos elementos correspondentes na matriznonZeroValues.nonZeroValues: a matriz que detém todos os valores não zero na matriz escassa.numNonZeroValues: o número de valores não zero na matriz escassa.device: em que dispositivo deve ser criado o objeto Valor.readOnly: o Valor só é lido se esta bandeira fortrue.
template <typename ElementType> static ValuePtr CNTK::Value::CreateSequence(const NDShape& sampleShape, size_t sequenceLength, const SparseIndexType* colStarts, const SparseIndexType* rowIndices, const ElementType* nonZeroValues, size_t numNonZeroValues, bool sequenceStartFlag, const DeviceDescriptor& device, bool readOnly = false
Cria um novo objeto Value contendo uma sequência de amostras utilizando o formato de entrada escasso do CSC. O comprimento da sequência é o número de linhas da matriz escassa. A sequênciaStartFlag especifica se esta sequência é uma nova sequência ou continuação de uma sequência anterior de uma chamada anterior a este método. ElementType é o tipo de dados do objeto Valor criado. Atualmente, float e double são apoiados.
Parâmetros:
sampleShape: a forma de tensor do Valor. Para uma entrada escassa, a modelar a dimensão líder da forma do tensor deve ser a mesma do tamanho total da forma do tensor.sequenceLength: o comprimento da sequência, que é também o número de linhas na matriz escassa.colStarts: a matriz contém índices para cada coluna nas matrizesrowIndicesenonZeroValues.rowIndices: a matriz que contém os índices de linha dos elementos correspondentes na matriznonZeroValues.nonZeroValues: a matriz que detém todos os valores não zero na matriz escassa.numNonZeroValues: o número de valores não zero na matriz escassa.sequenceStartFlag:trueindica que é uma nova sequência.falsesignifica uma continuação de uma sequência anterior.device: em que dispositivo deve ser criado o objeto Valor.readOnly: o Valor só é lido se esta bandeira fortrue.
template <typename ElementType> static ValuePtr CNTK::Value::CreateSequence(size_t dimension, size_t sequenceLength, const SparseIndexType* colStarts, const SparseIndexType* rowIndices, const ElementType* nonZeroValues, size_t numNonZeroValues, const DeviceDescriptor& device, bool readOnly = false
Cria um novo objeto Value contendo uma sequência de amostras utilizando o formato de entrada escasso do CSC. O comprimento da sequência é o número de linhas da matriz escassa. A sequência criada é uma nova sequência. ElementType é o tipo de dados do objeto Valor criado. Atualmente, float e double são apoiados.
Parâmetros:
dimension: o tamanho da dimensão do vetor de um só calor.sequenceLength: o comprimento da sequência, que é também o número de linhas na matriz escassa.colStarts: a matriz contém índices para cada coluna nas matrizesrowIndicesenonZeroValues.rowIndices: a matriz que contém os índices de linha dos elementos correspondentes na matriznonZeroValues.nonZeroValues: a matriz que detém todos os valores não zero na matriz escassa.numNonZeroValues: o número de valores não zero na matriz escassa.device: em que dispositivo deve ser criado o objeto Valor.readOnly: o Valor só é lido se esta bandeira fortrue.
template <typename ElementType> static ValuePtr CNTK::Value::CreateSequence(size_t dimension, size_t sequenceLength, const SparseIndexType* colStarts, const SparseIndexType* rowIndices, const ElementType* nonZeroValues, size_t numNonZeroValues, bool sequenceStartFlag, const DeviceDescriptor& device, bool readOnly = false
Cria um novo objeto Value contendo uma sequência de amostras utilizando o formato de entrada escasso do CSC. O comprimento da sequência é o número de linhas da matriz escassa. A sequênciaStartFlag especifica se esta sequência é uma nova sequência ou continuação de uma sequência anterior. ElementType é o tipo de dados do objeto Valor criado. Atualmente, float e double são apoiados.
Parâmetros:
dimension: o tamanho da dimensão do vetor de um só calor.sequenceLength: o comprimento da sequência, que é também o número de linhas na matriz escassa.colStarts: a matriz contém índices para cada coluna nas matrizesrowIndicesenonZeroValues.rowIndices: a matriz que contém os índices de linha dos elementos correspondentes na matriznonZeroValues.nonZeroValues: a matriz que detém todos os valores não zero na matriz escassa.numNonZeroValues: o número de valores não zero na matriz escassa.sequenceStartFlag:trueindica que é uma nova sequência.falsesignifica uma continuação de uma sequência anterior.device: em que dispositivo deve ser criado o objeto Valor.readOnly: o Valor só é lido se esta bandeira fortrue.
Criar um valor a partir do NDArrayView
static ValuePtr CNTK::Value::Create(const NDShape& sampleShape, const std::vector<NDArrayViewPtr>& sequences, const DeviceDescriptor& device, bool readOnly = false
Cria um novo objeto Value baseado numa coleção de NDArrayViews. Cada sequência sequences é uma nova sequência.
Parâmetros:
sampleShape: a forma de tensor do Valor que está a ser criado.sequences: uma coleção de sequências representadas pelo NDArrayView. Cada NDArrayView representa uma sequência.device: em que dispositivo deve ser criado o objeto Valor.readOnly: o Valor só é lido se esta bandeira fortrue.
static ValuePtr CNTK::Value::Create(const NDShape& sampleShape, const std::vector<NDArrayViewPtr>& sequences, const std::vector<bool>& sequenceStartFlags, const DeviceDescriptor& device, bool readOnly, bool createNewCopy
Cria um novo objeto Value baseado numa coleção de NDArrayViews. A sequênciaStartFlags especifica se uma sequência é uma nova sequência ou continuação de uma sequência anterior.
Parâmetros:
sampleShape: a forma de tensor do Valor que está a ser criado.sequences: uma coleção de sequências representadas pelo NDArrayView. Cada NDArrayView representa uma sequência.sequenceStartFlags: Uma coleção de valores boolean. Cada elemento representa se a sequênciasequencescorrespondente é uma nova sequência (em caso detrue) ou uma continuação de uma sequência anterior (em caso defalse).device: em que dispositivo deve ser criado o objeto Valor.readOnly: o Valor só é lido se esta bandeira fortrue.
Copiar dados de um objeto de valor
template <typename ElementType> void CNTK::Value::CopyVariableValueTo(const Variable& outputVariable, std::vector<std::vector<ElementType>>& sequences
Copia os dados armazenados no Valor no tampão fornecido por sequences. É sequences uma lista de sequências com comprimento variável. O número de itens contidos na lista sequences exterior é o número de sequências no Valor. Cada elemento da lista exterior representa uma sequência. Cada sequência, representada por vector<ElementType>, contém um número variável de amostras. Cada amostra consiste num número fixo de elementos com tipo de ElementType. O número de elementos de uma amostra é determinado pela forma de outputVariable. A forma da variável deve corresponder à forma do Valor. ElementType é o tipo de dados do objeto Valor criado. Atualmente, float e double são apoiados.
Parâmetros:
outputVariable: denota a forma e os eixos dinâmicos ao copiar dados deste Valor para osequences.sequences: o tampão de saída utilizado para armazenar os dados copiados do Valor.
void CNTK::Value::CopyVariableValueTo(const Variable& outputVariable, std::vector<std::vector<size_t>>& sequences
Copia os dados armazenados no objeto Valor no tampão fornecido por sequences. É sequences uma lista de sequências com comprimento variável. O número de itens contidos na lista sequences exterior é o número de sequências no Valor. Cada elemento da lista exterior representa uma sequência. Cada sequência, representada por vector<size_t>, contém um número variável de amostras. Cada amostra é representada por um índice que aponta para o valor não zero no vetor de um só hot. O tamanho do vetor de uma única altura deve corresponder ao definido no outputVariable.
Parâmetros:
outputVariable: denota a forma e os eixos dinâmicos ao copiar dados deste Valor para osequences.sequences: o tampão de saída utilizado para armazenar os dados copiados do Valor.
template <typename ElementType> void CopyVariableValueTo(const Variable& outputVariable, size_t& sequenceLength, std::vector<SparseIndexType>& colStarts, std::vector<SparseIndexType>& rowIndices, std::vector<ElementType>& nonZeroValues, size_t& numNonZeroValues)
Copie os dados armazenados no objeto Valor para os tampão que representam uma sequência no formato escasso do CSC. O tampão de sequência será redimensionado se necessário. O Valor deve ter a mesma forma de tensor que a saída Variabilidade. No retorno, sequenceLength é definido para o comprimento da sequência armazenada no Valor, e colStartscontém rowIndicesnonZeroValues os dados dos índices de arranque da coluna, índices de linha e valores não nulos, e numNonZeroValues é definido para um número de valores não nus contidos no this Valor.
Parâmetros:
outputVariable: denota a forma e os eixos dinâmicos ao copiar dados deste Valor para os tampões.sequenceLength: no retorno, é definido ao comprimento da sequência armazenada no Valor.colStarts: no retorno, contém índices nononZeorValuesprimeiro elemento não-zero de cada coluna da matriz.rowIndices: no retorno, contém os índices de linha de cada elemento não-zero da matriz.nonZeroValues: no retorno, contém valores de todos os elementos não nulos da matriz.numNonZeroValues: no retorno, devolve o número de elementos não nulos da matriz.
Funções do ajudante para manipular a Função a avaliar
FunctionPtr CNTK::Function::Clone(ParameterCloningMethod parameterCloneMethod = ParameterCloningMethod::Clone, const std::unordered_map<Variable, Variable>& replacements = {}) const
Para avaliação, este método é chamado para criar uma Função clonada que pode ser usada por outro fio para avaliar o mesmo modelo. Para o efeito, o deve ser definido para o parameterCloneMethod seu valor ParameterCloningMethod::Sharepredefinido . O parâmetro replacements especifica quaisquer substituições variáveis que são aplicadas na instância de Função clonada, e geralmente não é necessário para avaliação.
FunctionPtr CNTK::Function::FindByName(const std::wstring& name, bool nestedSearchInsideBlockFunction = false
Encontre uma função com o dado name no gráfico de função subjacente à função 'this' Função. Se existir mais de uma função com o mesmo nome, é lançada uma exceção. Se nestedSearchInsideBlockFunction for verdade, todas as funções dentro do bloco também são pesquisadas.
std::vector<FunctionPtr> CNTK::Function::FindAllWithName(const std::wstring& name, bool nestedSearchInsideBlockFunction = false
Encontre uma lista de funções com o dado name no gráfico de função subjacente à função 'esta' Função. Se nestedSearchInsideBlockFunction for verdade, todas as funções dentro do bloco também são pesquisadas.
FunctionPtr CNTK::Combine(const std::vector<Variable>& operands, const std::wstring& name = L""
Crie uma nova instância de função que combine as saídas da lista especificada de 'operands' de Funções. As 'Saídas' da nova 'Função' são a união das 'Saídas' de cada uma das funções 'operands' especificadas. Como exemplo, ao criar uma classificação modelo, tipicamente a Função de Perda de CrossEntropy e a Função ClassificaçãoError compreendem as raízes do gráfico de cálculo que pode ser "Combine"d para criar uma única Função com 2 saídas; viz. Perda de CrossEntropy e saída do ClassificationError.
FunctionPtr CNTK::AsComposite(const FunctionPtr& rootFunction, const std::wstring& name = L""
Cria uma função composta que tem a especificada rootFunction como raiz. O composto denota uma função de nível superior que encapsula todo o gráfico de funções subjacentes à especificada rootFunction.
FunctionPtr CNTK::Alias(const Variable& operand, const std::wstring& name = L""
Cria uma nova instância de função que é apenas um pseudónimo do especificado operand.
Consulte cNTKLibrary.h para obter detalhes sobre os tipos de dados utilizados pelas funções acima.
Exemplos
Os exemplos CNTKLibraryCPPEvalCPUOnlyExamples e CNTKLibraryCPPEvalGPUExamples demonstram o uso de CNTK Biblioteca para avaliação. As amostras também mostram como fazer múltiplas avaliações em paralelo usando múltiplos fios e compartilhando modelo parâmetros entre os fios.