Condividi tramite


API Eval C++ della libreria CNTK

La libreria di CNTK C++ per la valutazione si basa sull'API libreria di CNTK. I metodi seguenti vengono usati per valutare un modello.


Caricare un modello


static FunctionPtr CNTK::Function::Load(const std::wstring& modelFile, const DeviceDescriptor& computeDevice = DeviceDescriptor::UseDefaultDevice()

Questo metodo carica un file di modello e restituisce il puntatore alla funzione che rappresenta il modello caricato. Una funzione in CNTK indica un grafico di calcolo composto da funzioni primitive o funzioni composte con zero o più argomenti di input e uno o più output. È modelFile il percorso del file del modello. Specifica computeDevice il dispositivo per eseguire la valutazione.


static FunctionPtr CNTK::Function::Load(char *modelBuffer, size_t modelBufferLength, const DeviceDescriptor& computeDevice = DeviceDescriptor::UseDefaultDevice()

Questo metodo carica un modello da un buffer di memoria e restituisce il puntatore alla funzione che rappresenta il modello caricato. Punta modelBuffer al buffer contenente il contenuto del modello serializzato e la modelBufferLength lunghezza del buffer. Specifica computeDevice il dispositivo per eseguire la valutazione.


Valutare una funzione


void CNTK::Function::Evaluate(const std::unordered_map<Variable, ValuePtr>& arguments, std::unordered_map<Variable, ValuePtr>& outputs, const DeviceDescriptor& computeDevice = DeviceDescriptor::UseDefaultDevice()

Questo metodo avvia la valutazione della this funzione che rappresenta il modello con parametri specificati. Contiene arguments valori di tutte le variabili di input necessarie per la outputs valutazione e archivia i valori delle variabili di output. L'archiviazione dei valori di output può essere pre-allocata dal chiamante o dal sistema se il mapping ValuePtr viene passato come Null dal chiamante. Specifica computeDevice il dispositivo per eseguire la valutazione.


Creare un valore usando un input denso


template <typename ElementType> static ValuePtr CNTK::Value::CreateBatch(const NDShape& sampleShape, const std::vector<ElementType>& batchData, const DeviceDescriptor& device, bool readOnly = false

Crea un nuovo oggetto Value contenente un batch di esempi. Il numero di campioni nel batch è il numero di elementi in batchData divisione per le dimensioni di sampleShape (errore di runtime si verifica se il resto non è zero). L'oggetto Value creato contiene una copia dei dati specificati in batchData. ElementType è il tipo di dati dell'oggetto Value creato. float Attualmente e double sono supportati.

Parametri

  • sampleShape: forma tensor dell'oggetto Value.
  • batchData: i dati da contenere nell'oggetto Value.
  • device: in cui deve essere creato l'oggetto Value.
  • readOnly: l'oggetto Value è di sola lettura se questo flag è true.

template <typename ElementType> static ValuePtr CNTK::Value::CreateSequence(const NDShape& sampleShape, const std::vector<ElementType>& sequenceData, const DeviceDescriptor& device, bool readOnly = false

Crea un nuovo oggetto Value contenente una sequenza di esempi. L'oggetto Value creato contiene una copia dei dati specificati in sequenceData. La lunghezza della sequenza è il numero di elementi suddivisi sequenceData per le dimensioni di sampleShape (errore di runtime si verifica se il resto non è zero). La sequenza creata è una nuova sequenza. ElementType è il tipo di dati dell'oggetto Value creato. float Attualmente e double sono supportati.

Parametri

  • sampleShape: forma tensor del valore.
  • sequenceData: i dati da contenere nel valore.
  • device: in cui deve essere creato l'oggetto Value.
  • readOnly: il valore è di sola lettura se questo flag è 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

Crea un nuovo oggetto Value contenente una sequenza di esempi. L'oggetto Value creato contiene una copia dei dati specificati in sequenceData. La lunghezza della sequenza è il numero di elementi suddivisi sequenceData per le dimensioni di sampleShape (errore di runtime si verifica se il resto non è zero). La sequenzaStartFlag specifica se questa sequenza è una nuova sequenza o una continuazione di una sequenza precedente allo stesso indice nell'elenco di sequenze da una chiamata precedente a questo metodo. ElementType è il tipo di dati dell'oggetto Value creato. float Attualmente e double sono supportati.

Parametri

  • sampleShape: forma tensor del valore.
  • sequenceData: i dati da contenere nel valore.
  • sequenceStartFlag: true indica che è una nuova sequenza. false significa una continuazione di una sequenza precedente.
  • device: in cui deve essere creato l'oggetto Value.
  • readOnly: il valore è di sola lettura se questo flag è 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

Crea un nuovo oggetto Value contenente un batch di sequenze di lunghezza variabile. L'oggetto Value creato contiene una copia dei dati specificati in batchOfSequences. Il numero di sequenze nel batch è la dimensione di batchOfSequences. La lunghezza di ogni sequenza è il numero di elementi nella sequenza corrispondente di batchOfSequences divisa per le dimensioni di sampleShape (errore di runtime si verifica se il resto non è zero). Ogni sequenza in batchOfSequences è una nuova sequenza. ElementType è il tipo di dati dell'oggetto Value creato. float Attualmente e double sono supportati.

Parametri

  • sampleShape: forma tensor del valore.
  • batchOfSequences: i dati da archiviare nel valore. L'esterno vector rappresenta una raccolta di sequenze con lunghezza variabile e l'interno vector rappresenta ogni singola sequenza.
  • device: in cui deve essere creato il valore.
  • readOnly: il valore è di sola lettura se questo flag è 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

Crea un nuovo oggetto Value contenente un batch di sequenze di lunghezza variabile. L'oggetto Value creato contiene una copia dei dati specificati in batchOfSequences. Il numero di sequenze nel batch è la dimensione di batchOfSequences. La lunghezza di ogni sequenza è il numero di elementi nella sequenza corrispondente di batchOfSequences divisa per le dimensioni di sampleShape (errore di runtime si verifica se il resto non è zero). ElementType è il tipo di dati dell'oggetto Value creato. float Attualmente e double sono supportati.

Parametri

  • sampleShape: forma tensor del valore.
  • batchOfSequences: i dati da archiviare nel valore. L'esterno vector rappresenta una raccolta di sequenze con lunghezza variabile e l'interno vector rappresenta ogni singola sequenza.
  • sequenceStartFlags: raccolta di valori booleani. Ogni elemento rappresenta se la sequenza corrispondente in batchOfSequences è una nuova sequenza (nel caso di true) o una continuazione di una sequenza precedente (nel caso di false).
  • device: in cui deve essere creato il valore.
  • readOnly: il valore è di sola lettura se questo flag è true.

Creare un valore usando l'input di un vettore a caldo


template <typename ElementType> static ValuePtr CNTK::Value::CreateBatch(size_t dimension, const std::vector<size_t>& batchData, const DeviceDescriptor& device, bool readOnly = false)

Crea un nuovo oggetto Value contenente un batch di esempi. Ogni esempio è rappresentato da un valore di indice che punta al valore non zero nel vettore a caldo degli dimension elementi. Il numero di esempi nel batch è il numero di elementi in batchData. ElementType è il tipo di dati dell'oggetto Value creato. float Attualmente e double sono supportati.

Parametri

  • dimension: dimensione del vettore a caldo.
  • batchData: raccolta di indici che rappresentano il batch di esempi.
  • device: in cui deve essere creato l'oggetto Value.
  • readOnly: il valore è di sola lettura se questo flag è true.

template <typename ElementType> static ValuePtr CNTK::Value::CreateSequence(size_t dimension, const std::vector<size_t>& sequenceData, const DeviceDescriptor& device, bool readOnly = false)

Crea un nuovo oggetto Value contenente una sequenza di esempi. Ogni esempio è rappresentato da un valore di indice che punta al valore non zero nel vettore a caldo degli dimension elementi. La lunghezza della sequenza è il numero di elementi in sequenceData. Ogni sequenza è una nuova sequenza. ElementType è il tipo di dati dell'oggetto Value creato. float Attualmente e double sono supportati.

Parametri

  • dimension: dimensione del vettore a caldo.
  • sequenceData: raccolta di indici che rappresentano la sequenza di esempi.
  • device: in cui deve essere creato l'oggetto Value.
  • readOnly: il valore è di sola lettura se questo flag è 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)

Crea un nuovo oggetto Value contenente una sequenza di campioni. Ogni esempio è rappresentato da un valore di indice che punta al valore diverso da zero nel vettore uno-hot degli dimension elementi. SeqStartFlag specifica se questa sequenza è una nuova sequenza o una continuazione di una sequenza precedente con lo stesso indice nell'elenco di sequenze da una chiamata precedente a questo metodo. La lunghezza della sequenza è il numero di elementi in sequenceData. ElementType è il tipo di dati dell'oggetto Value creato. float Attualmente e double sono supportati.

Parametri

  • dimension: dimensione della dimensione del vettore a accesso frequente.
  • sequenceData: raccolta di indici che rappresentano la sequenza di campioni.
  • sequenceStartFlag: true indica che si tratta di una nuova sequenza. false indica una continuazione di una sequenza precedente.
  • device: nel dispositivo in cui deve essere creato l'oggetto Value.
  • readOnly: il valore è di sola lettura se questo flag è 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

Crea un nuovo oggetto Value contenente un batch di sequenze di lunghezza variabile. Ogni esempio è rappresentato da un valore di indice che punta al valore diverso da zero nel vettore uno-hot degli dimension elementi. Il numero di sequenze è il numero di elementi nell'elenco esterno di batchOfSequences. La lunghezza di ogni sequenza è il numero di elementi della sequenza corrispondente nell'elenco interno di batchOfSequences. Ogni sequenza in batchOfSequences è una nuova sequenza. ElementType è il tipo di dati dell'oggetto Value creato. float Attualmente e double sono supportati.

Parametri

  • dimension: dimensione della dimensione del vettore a accesso frequente.
  • batchOfSequences: raccolta di indici che rappresentano sequenze di campioni. L'elemento esterno vector rappresenta una raccolta di sequenze con lunghezza variabile e l'interno vector rappresenta ogni singola sequenza.
  • device: nel dispositivo in cui deve essere creato l'oggetto Value.
  • readOnly: il valore è di sola lettura se questo flag è 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

Crea un nuovo oggetto Value contenente un batch di sequenze di lunghezza variabile. Ogni esempio è rappresentato da un valore di indice che punta al valore diverso da zero nel vettore uno-hot degli dimension elementi. Il numero di sequenze è il numero di elementi nell'elenco esterno di batchOfSequences. La lunghezza di ogni sequenza è il numero di elementi della sequenza corrispondente nell'elenco interno di batchOfSequences. ElementType è il tipo di dati dell'oggetto Value creato. float Attualmente e double sono supportati.

Parametri

  • dimension: dimensione della dimensione del vettore a accesso frequente.
  • batchOfSequences: raccolta di indici che rappresentano sequenze di campioni. L'elemento esterno vector rappresenta una raccolta di sequenze con lunghezza variabile e l'interno vector rappresenta ogni singola sequenza.
  • sequenceStartFlags: raccolta di valori booleani. Ogni elemento rappresenta se la sequenza corrispondente in batchOfSequences è una nuova sequenza (nel caso di true) o una continuazione di una sequenza precedente (nel caso di false).
  • device: nel dispositivo in cui deve essere creato l'oggetto Value.
  • readOnly: il valore è di sola lettura se questo flag è true.

Creare un valore usando l'input CSC sparse

Attualmente è supportato il formato CSC (Compressed Sparse Column Format). Il formato CSC archivia la matrice in formato colonna-principale e la matrice contenente gli indici di colonna viene compressa. Una matrice in formato CSC è rappresentata dai parametri seguenti:

  • nonZeroValues: matrice di dati che contiene tutti i valori diversi da zero della matrice in formato colonna-principale.
  • rowIndices: matrice che contiene gli indici di riga degli elementi corrispondenti nella matrice nonZeroValues.
  • colStarts: matrice che contiene indici nelle matrici rowIndices e nonZeroValues.

Una descrizione dettagliata del formato CSC è disponibile qui.


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

Crea un nuovo oggetto Value contenente una sequenza di campioni usando il formato di input sparse CSC. La lunghezza della sequenza è il numero di righe della matrice di tipo sparse. La sequenza creata è una nuova sequenza. ElementType è il tipo di dati dell'oggetto Value creato. float Attualmente e double sono supportati.

Parametri

  • sampleShape: forma tensore del valore. Per l'input di tipo sparse, la dimensione iniziale della forma tensore deve corrispondere alla dimensione totale della forma tensore.
  • sequenceLength: lunghezza della sequenza, che corrisponde anche al numero di righe nella matrice di tipo sparse.
  • colStarts: la matrice contiene indici per ogni colonna nelle matrici rowIndices e nonZeroValues.
  • rowIndices: matrice che contiene gli indici di riga degli elementi corrispondenti nella matrice nonZeroValues.
  • nonZeroValues: matrice che contiene tutti i valori diversi da zero nella matrice di tipo sparse.
  • numNonZeroValues: numero di valori diversi da zero nella matrice di tipo sparse.
  • device: nel dispositivo in cui deve essere creato l'oggetto Value.
  • readOnly: il valore è di sola lettura se questo flag è 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

Crea un nuovo oggetto Value contenente una sequenza di campioni usando il formato di input sparse CSC. La lunghezza della sequenza è il numero di righe della matrice di tipo sparse. SequenceStartFlag specifica se questa sequenza è una nuova sequenza o una continuazione di una sequenza precedente da una chiamata precedente a questo metodo. ElementType è il tipo di dati dell'oggetto Value creato. float Attualmente e double sono supportati.

Parametri

  • sampleShape: forma tensore del valore. Per l'input di tipo sparse, la dimensione iniziale della forma tensore deve corrispondere alla dimensione totale della forma tensore.
  • sequenceLength: lunghezza della sequenza, che corrisponde anche al numero di righe nella matrice di tipo sparse.
  • colStarts: la matrice contiene indici per ogni colonna nelle matrici rowIndices e nonZeroValues.
  • rowIndices: matrice che contiene gli indici di riga degli elementi corrispondenti nella matrice nonZeroValues.
  • nonZeroValues: matrice che contiene tutti i valori diversi da zero nella matrice di tipo sparse.
  • numNonZeroValues: numero di valori diversi da zero nella matrice di tipo sparse.
  • sequenceStartFlag: true indica che si tratta di una nuova sequenza. false indica una continuazione di una sequenza precedente.
  • device: nel dispositivo in cui deve essere creato l'oggetto Value.
  • readOnly: il valore è di sola lettura se questo flag è 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

Crea un nuovo oggetto Value contenente una sequenza di campioni usando il formato di input sparse CSC. La lunghezza della sequenza è il numero di righe della matrice di tipo sparse. La sequenza creata è una nuova sequenza. ElementType è il tipo di dati dell'oggetto Value creato. float Attualmente e double sono supportati.

Parametri

  • dimension: dimensione della dimensione del vettore a accesso frequente.
  • sequenceLength: lunghezza della sequenza, che corrisponde anche al numero di righe nella matrice di tipo sparse.
  • colStarts: la matrice contiene indici per ogni colonna nelle matrici rowIndices e nonZeroValues.
  • rowIndices: matrice che contiene gli indici di riga degli elementi corrispondenti nella matrice nonZeroValues.
  • nonZeroValues: matrice che contiene tutti i valori diversi da zero nella matrice di tipo sparse.
  • numNonZeroValues: numero di valori diversi da zero nella matrice di tipo sparse.
  • device: nel dispositivo in cui deve essere creato l'oggetto Value.
  • readOnly: il valore è di sola lettura se questo flag è 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

Crea un nuovo oggetto Value contenente una sequenza di campioni usando il formato di input sparse CSC. La lunghezza della sequenza è il numero di righe della matrice di tipo sparse. SequenceStartFlag specifica se questa sequenza è una nuova sequenza o una continuazione di una sequenza precedente. ElementType è il tipo di dati dell'oggetto Value creato. float Attualmente e double sono supportati.

Parametri

  • dimension: dimensione del vettore a caldo.
  • sequenceLength: lunghezza della sequenza, che è anche il numero di righe nella matrice sparse.
  • colStarts: la matrice contiene indici per ogni colonna nelle matrici rowIndices e nonZeroValues.
  • rowIndices: matrice contenente gli indici di riga degli elementi corrispondenti nella matrice nonZeroValues.
  • nonZeroValues: matrice che contiene tutti i valori non zero nella matrice sparse.
  • numNonZeroValues: numero di valori non zero nella matrice sparse.
  • sequenceStartFlag: true indica che è una nuova sequenza. false significa una continuazione di una sequenza precedente.
  • device: in cui deve essere creato l'oggetto Value.
  • readOnly: il valore è di sola lettura se questo flag è true.

Creare un valore da NDArrayView


static ValuePtr CNTK::Value::Create(const NDShape& sampleShape, const std::vector<NDArrayViewPtr>& sequences, const DeviceDescriptor& device, bool readOnly = false

Crea un nuovo oggetto Value basato su una raccolta di NDArrayViews. Ogni sequenza in sequences è una nuova sequenza.

Parametri

  • sampleShape: forma tensor del valore creato.
  • sequences: raccolta di sequenze rappresentate da NDArrayView. Ogni NDArrayView rappresenta una sequenza.
  • device: in cui deve essere creato l'oggetto Value.
  • readOnly: il valore è di sola lettura se questo flag è 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

Crea un nuovo oggetto Value basato su una raccolta di NDArrayViews. La sequenzaStartFlags specifica se una sequenza è una nuova sequenza o una continuazione di una sequenza precedente.

Parametri

  • sampleShape: forma tensor del valore creato.
  • sequences: raccolta di sequenze rappresentate da NDArrayView. Ogni NDArrayView rappresenta una sequenza.
  • sequenceStartFlags: raccolta di valori booleani. Ogni elemento rappresenta se la sequenza corrispondente in sequences è una nuova sequenza (nel caso di true) o una continuazione di una sequenza precedente (nel caso di false).
  • device: in cui deve essere creato l'oggetto Value.
  • readOnly: il valore è di sola lettura se questo flag è true.

Copiare dati da un oggetto Value


template <typename ElementType> void CNTK::Value::CopyVariableValueTo(const Variable& outputVariable, std::vector<std::vector<ElementType>>& sequences

Copia i dati archiviati nel buffer fornito da sequences. È sequences un elenco di sequenze con lunghezza variabile. Il numero di elementi contenuti nell'elenco esterno di sequences è il numero di sequenze nel valore. Ogni elemento dell'elenco esterno rappresenta una sequenza. Ogni sequenza, rappresentata da vector<ElementType>, contiene un numero variabile di campioni. Ogni esempio è costituito da un numero fisso di elementi con tipo di ElementType. Il numero di elementi di un esempio è determinato dalla forma di outputVariable. La forma della variabile deve corrispondere alla forma del valore. ElementType è il tipo di dati dell'oggetto Value creato. float Attualmente e double sono supportati.

Parametri

  • outputVariable: indica la forma e gli assi dinamici durante la copia dei dati da questo valore a sequences.
  • sequences: buffer di output usato per archiviare i dati copiati dal valore.

void CNTK::Value::CopyVariableValueTo(const Variable& outputVariable, std::vector<std::vector<size_t>>& sequences

Copia i dati archiviati nell'oggetto Value nel buffer fornito da sequences. È sequences un elenco di sequenze con lunghezza variabile. Il numero di elementi contenuti nell'elenco esterno di sequences è il numero di sequenze nel valore. Ogni elemento dell'elenco esterno rappresenta una sequenza. Ogni sequenza, rappresentata da vector<size_t>, contiene un numero variabile di campioni. Ogni esempio è rappresentato da un indice che punta al valore diverso da zero nel vettore a caldo. Le dimensioni della dimensione del vettore one-hot devono corrispondere a quella definita in outputVariable.

Parametri

  • outputVariable: indica la forma e gli assi dinamici durante la copia dei dati da questo valore a sequences.
  • sequences: buffer di output usato per archiviare i dati copiati dal valore.

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)

Copiare i dati archiviati nell'oggetto Value nei buffer che rappresentano una sequenza in formato sparse CSC. Se necessario, il buffer della sequenza verrà ridimensionato. Il valore deve avere la stessa forma tensore dell'outputVariable. In caso di restituzione, sequenceLength viene impostato sulla lunghezza della sequenza archiviata nel valore e rowIndicescolStartsnonZeroValues contengono i dati degli indici start di colonna, degli indici di riga e dei valori non zero e numNonZeroValues viene impostato sul numero di valori non zero contenuti in this Valore.

Parametri

  • outputVariable: indica la forma e gli assi dinamici durante la copia dei dati da questo valore ai buffer.
  • sequenceLength: in caso di restituzione, viene impostato sulla lunghezza della sequenza archiviata nel valore.
  • colStarts: in caso di restituzione, contiene indici nel nonZeorValues primo elemento non zero di ogni colonna della matrice.
  • rowIndices: in caso di restituzione, contiene gli indici di riga di ogni elemento non zero della matrice.
  • nonZeroValues: in caso di restituzione, contiene valori di tutti gli elementi non zero della matrice.
  • numNonZeroValues: in caso di restituzione, restituisce il numero di elementi non zero della matrice.

Funzioni helper per modificare la funzione da valutare


FunctionPtr CNTK::Function::Clone(ParameterCloningMethod parameterCloneMethod = ParameterCloningMethod::Clone, const std::unordered_map<Variable, Variable>& replacements = {}) const

Per la valutazione, questo metodo viene chiamato per creare una funzione clonata che può quindi essere usata da un altro thread per valutare lo stesso modello. A questo scopo, l'oggetto parameterCloneMethod deve essere impostato sul valore ParameterCloningMethod::Sharepredefinito . Il parametro replacements specifica eventuali sostituzioni di variabili applicate nell'istanza di Funzione clonata e in genere non è necessaria per la valutazione.


FunctionPtr CNTK::Function::FindByName(const std::wstring& name, bool nestedSearchInsideBlockFunction = false

Trovare una funzione con l'oggetto specificato name nel grafico della funzione sottostante 'this'. Se esiste più di una funzione con lo stesso nome, viene generata un'eccezione. Se nestedSearchInsideBlockFunction è true, tutte le funzioni all'interno di funzioni a blocchi vengono eseguite anche ricerche.


std::vector<FunctionPtr> CNTK::Function::FindAllWithName(const std::wstring& name, bool nestedSearchInsideBlockFunction = false

Trovare un elenco di funzioni con l'oggetto specificato name nel grafico della funzione sottostante "this". Se nestedSearchInsideBlockFunction è true, tutte le funzioni all'interno di funzioni a blocchi vengono eseguite anche ricerche.


FunctionPtr CNTK::Combine(const std::vector<Variable>& operands, const std::wstring& name = L""

Creare una nuova istanza di funzione che combina gli output dell'elenco specificato di 'operandi' di Funzioni. Gli 'output' della nuova 'funzione' sono l'unione delle funzioni 'Output' di ognuna delle funzioni 'operandi' specificate. Ad esempio, quando si crea un modello di classificazione, in genere la funzione di perdita crossentropia e la funzione ClassificationError costituiscono le radici del grafico di calcolo che può essere "Combine"d per creare una singola funzione con 2 output; Cioè. Perdita crossEntropy e output ClassificationError.


FunctionPtr CNTK::AsComposite(const FunctionPtr& rootFunction, const std::wstring& name = L""

Crea una funzione composita con l'oggetto specificato rootFunction come radice. Il composito indica una funzione di livello superiore che incapsula l'intero grafico di Funzioni sottostante all'oggetto specificato rootFunction.


FunctionPtr CNTK::Alias(const Variable& operand, const std::wstring& name = L""

Crea una nuova istanza di funzione che è solo un alias dell'oggetto specificato operand.


Per informazioni dettagliate sui tipi di dati usati dalle funzioni precedenti, vedere CNTKLibrary.h .

Esempio

Gli esempi C++ CNTKLibraryCPPEvalCPUOnlyExamples e CNTKLibraryCPPEvalGPUExamples illustrano l'utilizzo di CNTK Library per la valutazione. Gli esempi mostrano anche come eseguire più valutazioni in parallelo usando più thread e condividere i parametri del modello tra i thread.