Partilhar via


Biblioteca CNTK Eval C++ API

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 for true.

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 for true.

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: true indica que é uma nova sequência. false significa 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 for true.

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 exterior vector representa uma coleção de sequências com comprimento variável, e o interior vector representa cada sequência individual.
  • device: em que dispositivo o Valor deve ser criado.
  • readOnly: o Valor só é lido se esta bandeira for true.

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 exterior vector representa uma coleção de sequências com comprimento variável, e o interior vector representa cada sequência individual.
  • sequenceStartFlags: Uma coleção de valores boolean. Cada elemento representa se a sequência batchOfSequences correspondente é uma nova sequência (em caso de true) ou uma continuação de uma sequência anterior (em caso de false).
  • device: em que dispositivo o Valor deve ser criado.
  • readOnly: o Valor só é lido se esta bandeira for true.

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 for true.

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 for true.

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: true indica que é uma nova sequência. false significa 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 for true.

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 exterior vector representa uma coleção de sequências com comprimento variável, e o interior vector representa cada sequência individual.
  • device: em que dispositivo deve ser criado o objeto Valor.
  • readOnly: o Valor só é lido se esta bandeira for true.

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 exterior vector representa uma coleção de sequências com comprimento variável, e o interior vector representa cada sequência individual.
  • sequenceStartFlags: Uma coleção de valores boolean. Cada elemento representa se a sequência batchOfSequences correspondente é uma nova sequência (em caso de true) ou uma continuação de uma sequência anterior (em caso de false).
  • device: em que dispositivo deve ser criado o objeto Valor.
  • readOnly: o Valor só é lido se esta bandeira for true.

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 matriz nonZeroValues.
  • colStarts: a matriz que mantém os índices nas matrizes rowIndices e nonZeroValues.

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 matrizes rowIndices e nonZeroValues.
  • rowIndices: a matriz que contém os índices de linha dos elementos correspondentes na matriz nonZeroValues.
  • 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 for true.

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 matrizes rowIndices e nonZeroValues.
  • rowIndices: a matriz que contém os índices de linha dos elementos correspondentes na matriz nonZeroValues.
  • 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: true indica que é uma nova sequência. false significa 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 for true.

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 matrizes rowIndices e nonZeroValues.
  • rowIndices: a matriz que contém os índices de linha dos elementos correspondentes na matriz nonZeroValues.
  • 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 for true.

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 matrizes rowIndices e nonZeroValues.
  • rowIndices: a matriz que contém os índices de linha dos elementos correspondentes na matriz nonZeroValues.
  • 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: true indica que é uma nova sequência. false significa 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 for true.

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 for true.

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ência sequences correspondente é uma nova sequência (em caso de true) ou uma continuação de uma sequência anterior (em caso de false).
  • device: em que dispositivo deve ser criado o objeto Valor.
  • readOnly: o Valor só é lido se esta bandeira for true.

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 o sequences.
  • 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 o sequences.
  • 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 no nonZeorValues primeiro 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.