Partager via


API Eval C++ de la bibliothèque CNTK

La bibliothèque CNTK C++ pour l’évaluation est basée sur l’API bibliothèque CNTK. Les méthodes suivantes sont utilisées pour évaluer un modèle.


Charger un modèle


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

Cette méthode charge un fichier de modèle et retourne le pointeur vers la fonction qui représente le modèle chargé. Une fonction dans CNTK désigne un graphique de calcul composé de fonctions primitives ou de fonctions composites avec zéro ou plusieurs arguments d’entrée et une ou plusieurs sorties. Il modelFile s’agit du chemin d’accès du fichier de modèle. Spécifie computeDevice l’appareil à exécuter l’évaluation.


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

Cette méthode charge un modèle à partir d’une mémoire tampon et retourne le pointeur vers la fonction qui représente le modèle chargé. Pointe modelBuffer vers la mémoire tampon contenant le contenu du modèle sérialisé et la longueur de la modelBufferLength mémoire tampon. Spécifie computeDevice l’appareil à exécuter l’évaluation.


Évaluer une fonction


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

Cette méthode démarre l’évaluation de la this fonction représentant le modèle avec des paramètres spécifiés. Contient arguments les valeurs de toutes les variables d’entrée requises pour l’évaluation et stocke outputs les valeurs des variables de sortie. Le stockage des valeurs de sortie peut être pré-alloué par l’appelant ou par le système si le mappage ValuePtr est passé comme null par l’appelant. Spécifie computeDevice l’appareil à exécuter l’évaluation.


Créer une valeur à l’aide d’une entrée dense


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

Crée un objet Value contenant un lot d’exemples. Le nombre d’échantillons dans le lot est le nombre d’éléments divisé par batchData la taille ( sampleShape une erreur d’exécution se produit si le reste n’est pas égal à zéro). L’objet Value créé contient une copie des données spécifiées dans batchData. ElementType est le type de données de l’objet Value créé. Actuellement, float et double sont pris en charge.

Paramètres :

  • sampleShape: forme deensoriel de l’objet Value.
  • batchData: données à contenir dans l’objet Value.
  • device: sur quel appareil l’objet Value doit être créé.
  • readOnly: l’objet Value est en lecture seule si cet indicateur est true.

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

Crée un objet Value contenant une séquence d’exemples. L’objet Value créé contient une copie des données spécifiées dans sequenceData. La longueur de séquence est le nombre d’éléments divisé par sequenceData la taille ( sampleShape une erreur d’exécution se produit si le reste n’est pas égal à zéro). La séquence créée est une nouvelle séquence. ElementType est le type de données de l’objet Value créé. Actuellement, float et double sont pris en charge.

Paramètres :

  • sampleShape: forme de tenseur de la valeur.
  • sequenceData: données à contenir dans la valeur.
  • device: sur quel appareil l’objet Value doit être créé.
  • readOnly: la valeur est en lecture seule si cet indicateur est 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

Crée un objet Value contenant une séquence d’exemples. L’objet Value créé contient une copie des données spécifiées dans sequenceData. La longueur de séquence est le nombre d’éléments divisé par sequenceData la taille ( sampleShape une erreur d’exécution se produit si le reste n’est pas égal à zéro). SequenceStartFlag spécifie si cette séquence est une nouvelle séquence ou une continuation d’une séquence précédente au même index dans la liste des séquences d’un appel précédent à cette méthode. ElementType est le type de données de l’objet Value créé. Actuellement, float et double sont pris en charge.

Paramètres :

  • sampleShape: forme de tenseur de la valeur.
  • sequenceData: données à contenir dans la valeur.
  • sequenceStartFlag: true indique qu’il s’agit d’une nouvelle séquence. false signifie une continuation d’une séquence précédente.
  • device: sur quel appareil l’objet Value doit être créé.
  • readOnly: la valeur est en lecture seule si cet indicateur est 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

Crée un objet Value contenant un lot de séquences de longueur variable. L’objet Value créé contient une copie des données spécifiées dans batchOfSequences. Le nombre de séquences dans le lot est la taille de batchOfSequences. La longueur de chaque séquence est le nombre d’éléments dans la séquence correspondante divisée batchOfSequences par la taille ( sampleShape une erreur d’exécution se produit si le reste n’est pas égal à zéro). Chaque séquence dans batchOfSequences est une nouvelle séquence. ElementType est le type de données de l’objet Value créé. Actuellement, float et double sont pris en charge.

Paramètres :

  • sampleShape: forme de tenseur de la valeur.
  • batchOfSequences: données à stocker dans la valeur. L’extérieur vector représente une collection de séquences de longueur variable, et l’intérieur vector représente chaque séquence individuelle.
  • device: sur quel appareil la valeur doit être créée.
  • readOnly: la valeur est en lecture seule si cet indicateur est 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

Crée un objet Value contenant un lot de séquences de longueur variable. L’objet Value créé contient une copie des données spécifiées dans batchOfSequences. Le nombre de séquences dans le lot est la taille de batchOfSequences. La longueur de chaque séquence est le nombre d’éléments dans la séquence correspondante divisée batchOfSequences par la taille ( sampleShape une erreur d’exécution se produit si le reste n’est pas égal à zéro). ElementType est le type de données de l’objet Value créé. Actuellement, float et double sont pris en charge.

Paramètres :

  • sampleShape: forme de tenseur de la valeur.
  • batchOfSequences: données à stocker dans la valeur. L’extérieur vector représente une collection de séquences de longueur variable, et l’intérieur vector représente chaque séquence individuelle.
  • sequenceStartFlags: collection de valeurs booléennes. Chaque élément indique si la séquence correspondante est batchOfSequences une nouvelle séquence (en cas de true) ou une continuation d’une séquence précédente (en cas de false).
  • device: sur quel appareil la valeur doit être créée.
  • readOnly: la valeur est en lecture seule si cet indicateur est true.

Créer une valeur à l’aide d’une entrée vectorielle à chaud


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

Crée un objet Value contenant un lot d’exemples. Chaque exemple est représenté par une valeur d’index qui pointe vers la valeur non nulle dans le vecteur à chaud d’éléments dimension . Le nombre d’échantillons dans le lot est le nombre d’éléments dans batchData. ElementType est le type de données de l’objet Value créé. Actuellement, float et double sont pris en charge.

Paramètres :

  • dimension: taille de dimension du vecteur à chaud.
  • batchData: collection d’index représentant le lot d’échantillons.
  • device: sur quel appareil l’objet Value doit être créé.
  • readOnly: la valeur est en lecture seule si cet indicateur est true.

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

Crée un objet Value contenant une séquence d’exemples. Chaque exemple est représenté par une valeur d’index qui pointe vers la valeur non nulle dans le vecteur à chaud d’éléments dimension . La longueur de séquence est le nombre d’éléments dans sequenceData. Chaque séquence est une nouvelle séquence. ElementType est le type de données de l’objet Value créé. Actuellement, float et double sont pris en charge.

Paramètres :

  • dimension: taille de dimension du vecteur à chaud.
  • sequenceData: collection d’index représentant la séquence d’échantillons.
  • device: sur quel appareil l’objet Value doit être créé.
  • readOnly: la valeur est en lecture seule si cet indicateur est 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)

Crée un objet Value contenant une séquence d’exemples. Chaque exemple est représenté par une valeur d’index qui pointe vers la valeur non nulle dans le vecteur à chaud d’éléments dimension . Le seqStartFlag spécifie si cette séquence est une nouvelle séquence ou une continuation d’une séquence précédente au même index dans la liste des séquences d’un appel précédent à cette méthode. La longueur de séquence est le nombre d’éléments dans sequenceData. ElementType est le type de données de l’objet Value créé. Actuellement, float et double sont pris en charge.

Paramètres :

  • dimension: taille de dimension du vecteur à chaud.
  • sequenceData: collection d’index représentant la séquence d’échantillons.
  • sequenceStartFlag: true indique qu’il s’agit d’une nouvelle séquence. false signifie une continuation d’une séquence précédente.
  • device: sur quel appareil l’objet Value doit être créé.
  • readOnly: la valeur est en lecture seule si cet indicateur est 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

Crée un objet Value contenant un lot de séquences de longueur variable. Chaque exemple est représenté par une valeur d’index qui pointe vers la valeur non nulle dans le vecteur à chaud d’éléments dimension . Le nombre de séquences est le nombre d’éléments dans la liste externe de batchOfSequences. La longueur de chaque séquence est le nombre d’éléments de la séquence correspondante dans la liste interne de batchOfSequences. Chaque séquence dans batchOfSequences est une nouvelle séquence. ElementType est le type de données de l’objet Value créé. Actuellement, float et double sont pris en charge.

Paramètres :

  • dimension: taille de dimension du vecteur à chaud.
  • batchOfSequences: collection d’index représentant des séquences d’échantillons. L’extérieur vector représente une collection de séquences de longueur variable, et l’intérieur vector représente chaque séquence individuelle.
  • device: sur quel appareil l’objet Value doit être créé.
  • readOnly: la valeur est en lecture seule si cet indicateur est 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

Crée un objet Value contenant un lot de séquences de longueur variable. Chaque exemple est représenté par une valeur d’index qui pointe vers la valeur non nulle dans le vecteur à chaud d’éléments dimension . Le nombre de séquences est le nombre d’éléments dans la liste externe de batchOfSequences. La longueur de chaque séquence est le nombre d’éléments de la séquence correspondante dans la liste interne de batchOfSequences. ElementType est le type de données de l’objet Value créé. Actuellement, float et double sont pris en charge.

Paramètres :

  • dimension: taille de dimension du vecteur à chaud.
  • batchOfSequences: collection d’index représentant des séquences d’échantillons. L’extérieur vector représente une collection de séquences de longueur variable, et l’intérieur vector représente chaque séquence individuelle.
  • sequenceStartFlags: collection de valeurs booléennes. Chaque élément indique si la séquence correspondante est batchOfSequences une nouvelle séquence (en cas de true) ou une continuation d’une séquence précédente (en cas de false).
  • device: sur quel appareil l’objet Value doit être créé.
  • readOnly: la valeur est en lecture seule si cet indicateur est true.

Créer une valeur à l’aide d’une entrée CSC éparse

Actuellement, le format de colonne éparse compressé (CSC) est pris en charge. Le format CSC stocke la matrice au format principal de colonne et le tableau contenant les index de colonne est compressé. Une matrice au format CSC est représentée par les paramètres suivants :

  • nonZeroValues: tableau de données qui contient toutes les valeurs non nulles de la matrice au format principal de colonne.
  • rowIndices: tableau qui contient les index de ligne des éléments correspondants dans le tableau nonZeroValues.
  • colStarts: tableau qui contient des index dans les rowIndices tableaux et nonZeroValues.

Vous trouverez ici une description détaillée du format CSC.


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

Crée un objet Value contenant une séquence d’exemples à l’aide du format d’entrée éparse CSC. La longueur de séquence est le nombre de lignes de la matrice éparse. La séquence créée est une nouvelle séquence. ElementType est le type de données de l’objet Value créé. Actuellement, float et double sont pris en charge.

Paramètres :

  • sampleShape: forme de tenseur de la valeur. Pour les entrées éparses, la dimension de début de la forme de tenseur doit être identique à la taille totale de la forme de tenseur.
  • sequenceLength: longueur de séquence, qui est également le nombre de lignes dans la matrice éparse.
  • colStarts: le tableau contient des index pour chaque colonne dans les rowIndices tableaux et nonZeroValues.
  • rowIndices: tableau qui contient les index de ligne des éléments correspondants dans le tableau nonZeroValues.
  • nonZeroValues: tableau qui contient toutes les valeurs non nulles dans la matrice éparse.
  • numNonZeroValues: nombre de valeurs différente de zéro dans la matrice éparse.
  • device: sur quel appareil l’objet Value doit être créé.
  • readOnly: la valeur est en lecture seule si cet indicateur est 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

Crée un objet Value contenant une séquence d’exemples à l’aide du format d’entrée éparse CSC. La longueur de séquence est le nombre de lignes de la matrice éparse. SequenceStartFlag spécifie si cette séquence est une nouvelle séquence ou une continuation d’une séquence précédente à partir d’un appel précédent à cette méthode. ElementType est le type de données de l’objet Value créé. Actuellement, float et double sont pris en charge.

Paramètres :

  • sampleShape: forme de tenseur de la valeur. Pour les entrées éparses, la dimension de début de la forme de tenseur doit être identique à la taille totale de la forme de tenseur.
  • sequenceLength: longueur de séquence, qui est également le nombre de lignes dans la matrice éparse.
  • colStarts: le tableau contient des index pour chaque colonne dans les rowIndices tableaux et nonZeroValues.
  • rowIndices: tableau qui contient les index de ligne des éléments correspondants dans le tableau nonZeroValues.
  • nonZeroValues: tableau qui contient toutes les valeurs non nulles dans la matrice éparse.
  • numNonZeroValues: nombre de valeurs différente de zéro dans la matrice éparse.
  • sequenceStartFlag: true indique qu’il s’agit d’une nouvelle séquence. false signifie une continuation d’une séquence précédente.
  • device: sur quel appareil l’objet Value doit être créé.
  • readOnly: la valeur est en lecture seule si cet indicateur est 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

Crée un objet Value contenant une séquence d’exemples à l’aide du format d’entrée éparse CSC. La longueur de séquence est le nombre de lignes de la matrice éparse. La séquence créée est une nouvelle séquence. ElementType est le type de données de l’objet Value créé. Actuellement, float et double sont pris en charge.

Paramètres :

  • dimension: taille de dimension du vecteur à chaud.
  • sequenceLength: longueur de séquence, qui est également le nombre de lignes dans la matrice éparse.
  • colStarts: le tableau contient des index pour chaque colonne dans les rowIndices tableaux et nonZeroValues.
  • rowIndices: tableau qui contient les index de ligne des éléments correspondants dans le tableau nonZeroValues.
  • nonZeroValues: tableau qui contient toutes les valeurs non nulles dans la matrice éparse.
  • numNonZeroValues: nombre de valeurs différente de zéro dans la matrice éparse.
  • device: sur quel appareil l’objet Value doit être créé.
  • readOnly: la valeur est en lecture seule si cet indicateur est 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

Crée un objet Value contenant une séquence d’exemples à l’aide du format d’entrée éparse CSC. La longueur de séquence est le nombre de lignes de la matrice éparse. SequenceStartFlag spécifie si cette séquence est une nouvelle séquence ou une continuation d’une séquence précédente. ElementType est le type de données de l’objet Value créé. Actuellement, float et double sont pris en charge.

Paramètres :

  • dimension: taille de dimension du vecteur à chaud.
  • sequenceLength: longueur de séquence, qui est également le nombre de lignes dans la matrice éparse.
  • colStarts: le tableau contient des index pour chaque colonne dans les rowIndices tableaux et nonZeroValues.
  • rowIndices: tableau qui contient les index de ligne des éléments correspondants dans le tableau nonZeroValues.
  • nonZeroValues: tableau qui contient toutes les valeurs non nulles dans la matrice éparse.
  • numNonZeroValues: nombre de valeurs différente de zéro dans la matrice éparse.
  • sequenceStartFlag: true indique qu’il s’agit d’une nouvelle séquence. false signifie une continuation d’une séquence précédente.
  • device: sur quel appareil l’objet Value doit être créé.
  • readOnly: la valeur est en lecture seule si cet indicateur est true.

Créer une valeur à partir de NDArrayView


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

Crée un objet Value basé sur une collection de NDArrayViews. Chaque séquence dans sequences est une nouvelle séquence.

Paramètres :

  • sampleShape: forme de tenseur de la valeur en cours de création.
  • sequences: collection de séquences représentées par NDArrayView. Chaque NDArrayView représente une séquence.
  • device: sur quel appareil l’objet Value doit être créé.
  • readOnly: la valeur est en lecture seule si cet indicateur est 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

Crée un objet Value basé sur une collection de NDArrayViews. SequenceStartFlags spécifie si une séquence est une nouvelle séquence ou une continuation d’une séquence précédente.

Paramètres :

  • sampleShape: forme de tenseur de la valeur en cours de création.
  • sequences: collection de séquences représentées par NDArrayView. Chaque NDArrayView représente une séquence.
  • sequenceStartFlags: collection de valeurs booléennes. Chaque élément indique si la séquence correspondante est sequences une nouvelle séquence (en cas de true) ou une continuation d’une séquence précédente (en cas de false).
  • device: sur quel appareil l’objet Value doit être créé.
  • readOnly: la valeur est en lecture seule si cet indicateur est true.

Copier des données à partir d’un objet Value


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

Copie les données stockées dans la valeur dans la mémoire tampon fournie par sequences. Il sequences s’agit d’une liste de séquences de longueur variable. Le nombre d’éléments contenus dans la liste externe correspond sequences au nombre de séquences dans la valeur. Chaque élément de la liste externe représente une séquence. Chaque séquence, représentée par vector<ElementType>, contient un nombre variable d’échantillons. Chaque exemple se compose d’un nombre fixe d’éléments avec le type de ElementType. Le nombre d’éléments d’un échantillon est déterminé par la forme de outputVariable. La forme de la variable doit correspondre à la forme de la valeur. ElementType est le type de données de l’objet Value créé. Actuellement, float et double sont pris en charge.

Paramètres :

  • outputVariable: indique la forme et les axes dynamiques lors de la copie de données de cette valeur vers le sequences.
  • sequences: mémoire tampon de sortie utilisée pour stocker les données copiées à partir de la valeur.

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

Copie les données stockées dans l’objet Value dans la mémoire tampon fournie par sequences. Il sequences s’agit d’une liste de séquences de longueur variable. Le nombre d’éléments contenus dans la liste externe correspond sequences au nombre de séquences dans la valeur. Chaque élément de la liste externe représente une séquence. Chaque séquence, représentée par vector<size_t>, contient un nombre variable d’échantillons. Chaque échantillon est représenté par un index pointant vers la valeur différente de zéro dans le vecteur à chaud. La taille de dimension du vecteur à chaud doit correspondre à celle définie dans le outputVariable.

Paramètres :

  • outputVariable: indique la forme et les axes dynamiques lors de la copie de données de cette valeur vers le sequences.
  • sequences: mémoire tampon de sortie utilisée pour stocker les données copiées à partir de la valeur.

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)

Copiez les données stockées dans l’objet Value dans les mémoires tampons représentant une séquence au format éparse CSC. La mémoire tampon de séquence est redimensionnée si nécessaire. La valeur doit avoir la même forme de tenseur que outputVariable. En retour, sequenceLength est défini sur la longueur de la séquence stockée dans la valeur, et colStartsrowIndicesnonZeroValues contient les données des index de début de colonne, des index de ligne et des valeurs non nulles, et numNonZeroValues est définie sur le nombre de valeurs non nulles contenues dans this Value.

Paramètres :

  • outputVariable: indique la forme et les axes dynamiques lors de la copie de données de cette valeur vers les mémoires tampons.
  • sequenceLength: lors du retour, il est défini sur la longueur de la séquence stockée dans la valeur.
  • colStarts: en retour, il contient des index dans le nonZeorValues premier élément non nul de chaque colonne de la matrice.
  • rowIndices: en retour, il contient les index de ligne de chaque élément non nul de la matrice.
  • nonZeroValues: en retour, il contient des valeurs de tous les éléments non nuls de la matrice.
  • numNonZeroValues: en retour, il retourne le nombre d’éléments non nuls de la matrice.

Fonctions d’assistance pour manipuler la fonction à évaluer


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

Pour l’évaluation, cette méthode est appelée pour créer une fonction cloné qui peut ensuite être utilisée par un autre thread pour évaluer le même modèle. À cet effet, la parameterCloneMethod valeur ParameterCloningMethod::Sharepar défaut doit être définie. Le paramètre replacements spécifie les remplacements de variables appliqués dans l’instance de fonction cloné et n’est généralement pas nécessaire pour l’évaluation.


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

Recherchez une fonction avec la fonction donnée name dans le graphique de fonction sous-jacent « this ». Si plusieurs fonctions portant le même nom existent, une exception est levée. Si nestedSearchInsideBlockFunction la valeur est true, toutes les fonctions à l’intérieur des fonctions de bloc sont également recherchées.


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

Recherchez une liste de fonctions avec le name graphique de fonction sous-jacent « this ». Si nestedSearchInsideBlockFunction la valeur est true, toutes les fonctions à l’intérieur des fonctions de bloc sont également recherchées.


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

Créez une instance de fonction qui combine les sorties de la liste spécifiée de « opérandes » de Functions. Les « sorties » du nouveau « Function » sont l’union des « Sorties » de chacune des fonctions « opérandes » spécifiées. Par exemple, lors de la création d’un modèle de classification, généralement la fonction de perte CrossEntropy et la fonction ClassificationError comprennent les racines du graphique de calcul qui peut être « Combiner » d pour créer une fonction unique avec 2 sorties ; Viz. Perte crossEntropy et sortie ClassificationError.


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

Crée une fonction composite dont la racine est spécifiée rootFunction . Le composite désigne une fonction de niveau supérieur encapsulant l’intégralité du graphique functions sous-jacent au niveau spécifié rootFunction.


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

Crée une instance de fonction qui n’est qu’un alias du .operand


Reportez-vous à CNTKLibrary.h pour plus d’informations sur les types de données utilisés par les fonctions ci-dessus.

Exemples

Les exemples C++ CNTKLibraryCPPEvalCPUOnlyExamples et CNTKLibraryCPPEvalGPUExamples illustrent l’utilisation de CNTK Library à des fins d’évaluation. Les exemples montrent également comment effectuer plusieurs évaluations en parallèle à l’aide de plusieurs threads et partager des paramètres de modèle entre les threads.