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'esternovector
rappresenta una raccolta di sequenze con lunghezza variabile e l'internovector
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'esternovector
rappresenta una raccolta di sequenze con lunghezza variabile e l'internovector
rappresenta ogni singola sequenza.sequenceStartFlags
: raccolta di valori booleani. Ogni elemento rappresenta se la sequenza corrispondente inbatchOfSequences
è una nuova sequenza (nel caso ditrue
) o una continuazione di una sequenza precedente (nel caso difalse
).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 esternovector
rappresenta una raccolta di sequenze con lunghezza variabile e l'internovector
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 esternovector
rappresenta una raccolta di sequenze con lunghezza variabile e l'internovector
rappresenta ogni singola sequenza.sequenceStartFlags
: raccolta di valori booleani. Ogni elemento rappresenta se la sequenza corrispondente inbatchOfSequences
è una nuova sequenza (nel caso ditrue
) o una continuazione di una sequenza precedente (nel caso difalse
).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 matricenonZeroValues
.colStarts
: matrice che contiene indici nelle matricirowIndices
enonZeroValues
.
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 matricirowIndices
enonZeroValues
.rowIndices
: matrice che contiene gli indici di riga degli elementi corrispondenti nella matricenonZeroValues
.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 matricirowIndices
enonZeroValues
.rowIndices
: matrice che contiene gli indici di riga degli elementi corrispondenti nella matricenonZeroValues
.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 matricirowIndices
enonZeroValues
.rowIndices
: matrice che contiene gli indici di riga degli elementi corrispondenti nella matricenonZeroValues
.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 matricirowIndices
enonZeroValues
.rowIndices
: matrice contenente gli indici di riga degli elementi corrispondenti nella matricenonZeroValues
.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 insequences
è una nuova sequenza (nel caso ditrue
) o una continuazione di una sequenza precedente (nel caso difalse
).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 asequences
.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 asequences
.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 rowIndices
colStarts
nonZeroValues
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 nelnonZeorValues
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::Share
predefinito . 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.