Dela via


CNTK Library Eval C++ API

C++ CNTK-biblioteket för utvärdering baseras på CNTK-biblioteks-API:et. Följande metoder används för att utvärdera en modell.


Läsa in en modell


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

Den här metoden läser in en modellfil och returnerar pekaren till den funktion som representerar den inlästa modellen. En funktion i CNTK anger ett beräkningsdiagram som består av primitiva funktioner eller sammansatta funktioner med noll eller flera indataargument och en eller flera utdata. modelFile är modellfilens sökväg. computeDevice Anger vilken enhet som ska köra utvärderingen.


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

Den här metoden läser in en modell från en minnesbuffert och returnerar pekaren till den funktion som representerar den inlästa modellen. Pekar modelBuffer på bufferten som innehåller det serialiserade modellinnehållet modelBufferLength och är buffertlängden. computeDevice Anger vilken enhet som ska köra utvärderingen.


Utvärdera en funktion


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

Den här metoden startar utvärderingen av funktionen this som representerar modellen med angivna parametrar. arguments Innehåller värden för alla indatavariabler som krävs för utvärdering och outputs lagrar värdena för utdatavariabler. Lagringen av utdatavärden kan antingen förallokeras av anroparen eller av systemet om ValuePtr-mappningen skickas som null av anroparen. computeDevice Anger vilken enhet som ska köra utvärderingen.


Skapa ett värde med hjälp av täta indata


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

Skapar ett nytt Värde-objekt som innehåller en batch med exempel. Antalet exempel i batchen är antalet element i batchData dividerat med storleken på sampleShape (ett körningsfel inträffar om resten inte är noll). Det skapade värdeobjektet innehåller en kopia av angivna data i batchData. ElementType är datatypen för det skapade värdeobjektet. float För närvarande och double stöds.

Parametrar:

  • sampleShape: tensorformen för värdeobjektet.
  • batchData: de data som ska finnas i value-objektet.
  • device: på vilken enhet value-objektet ska skapas.
  • readOnly: Värdeobjektet är skrivskyddat om den här flaggan är true.

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

Skapar ett nytt Värde-objekt som innehåller en sekvens med exempel. Det skapade värdeobjektet innehåller en kopia av angivna data i sequenceData. Sekvensens längd är antalet element i sequenceData dividerat med storleken på sampleShape (Ett körningsfel inträffar om resten inte är noll). Den skapade sekvensen är en ny sekvens. ElementType är datatypen för det skapade värdeobjektet. float För närvarande och double stöds.

Parametrar:

  • sampleShape: tensorformen för värdet.
  • sequenceData: de data som ska finnas i värdet.
  • device: på vilken enhet value-objektet ska skapas.
  • readOnly: Värdet är skrivskyddat om den här flaggan är 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

Skapar ett nytt Värde-objekt som innehåller en sekvens med exempel. Det skapade värdeobjektet innehåller en kopia av angivna data i sequenceData. Sekvensens längd är antalet element i sequenceData dividerat med storleken på sampleShape (Ett körningsfel inträffar om resten inte är noll). SekvensenStartFlag anger om den här sekvensen är en ny sekvens eller en fortsättning på en tidigare sekvens i samma index i sekvenslistan från ett tidigare anrop till den här metoden. ElementType är datatypen för det skapade värdeobjektet. float För närvarande och double stöds.

Parametrar:

  • sampleShape: tensorformen för värdet.
  • sequenceData: de data som ska finnas i värdet.
  • sequenceStartFlag: true anger att det är en ny sekvens. false innebär en fortsättning på en tidigare sekvens.
  • device: på vilken enhet value-objektet ska skapas.
  • readOnly: Värdet är skrivskyddat om den här flaggan är 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

Skapar ett nytt Värde-objekt som innehåller en batch med variabellängdssekvenser. Det skapade värdeobjektet innehåller en kopia av angivna data i batchOfSequences. Antalet sekvenser i batchen är storleken batchOfSequencespå . Längden på varje sekvens är antalet element i motsvarande sekvens batchOfSequences dividerat med storleken på sampleShape (Ett körningsfel inträffar om resten inte är noll). Varje sekvens i batchOfSequences är en ny sekvens. ElementType är datatypen för det skapade värdeobjektet. float För närvarande och double stöds.

Parametrar:

  • sampleShape: tensorformen för värdet.
  • batchOfSequences: de data som ska lagras i värdet. Det yttre vector representerar en samling sekvenser med variabel längd och det inre vector representerar varje enskild sekvens.
  • device: på vilken enhet värdet ska skapas.
  • readOnly: Värdet är skrivskyddat om den här flaggan är 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

Skapar ett nytt Värde-objekt som innehåller en batch med variabellängdssekvenser. Det skapade värdeobjektet innehåller en kopia av angivna data i batchOfSequences. Antalet sekvenser i batchen är storleken batchOfSequencespå . Längden på varje sekvens är antalet element i motsvarande sekvens batchOfSequences dividerat med storleken på sampleShape (Ett körningsfel inträffar om resten inte är noll). ElementType är datatypen för det skapade värdeobjektet. float För närvarande och double stöds.

Parametrar:

  • sampleShape: tensorformen för värdet.
  • batchOfSequences: de data som ska lagras i värdet. Det yttre vector representerar en samling sekvenser med variabel längd och det inre vector representerar varje enskild sekvens.
  • sequenceStartFlags: En samling booleska värden. Varje element representerar om motsvarande sekvens i batchOfSequences är en ny sekvens (i händelse av true) eller en fortsättning på en tidigare sekvens (i händelse av false).
  • device: på vilken enhet värdet ska skapas.
  • readOnly: Värdet är skrivskyddat om den här flaggan är true.

Skapa ett värde med en frekvent vektorinmatning


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

Skapar ett nytt Värde-objekt som innehåller en batch med exempel. Varje exempel representeras av ett indexvärde som pekar på värdet som inte är noll i elementens enhetsvektor dimension . Antalet exempel i batchen är antalet element i batchData. ElementType är datatypen för det skapade värdeobjektet. float För närvarande och double stöds.

Parametrar:

  • dimension: storleken på dimensionen för en frekvent vektor.
  • batchData: en samling index som representerar batchen med exempel.
  • device: på vilken enhet value-objektet ska skapas.
  • readOnly: Värdet är skrivskyddat om den här flaggan är true.

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

Skapar ett nytt Värde-objekt som innehåller en sekvens med exempel. Varje exempel representeras av ett indexvärde som pekar på värdet som inte är noll i elementens enhetsvektor dimension . Sekvenslängden är antalet element i sequenceData. Varje sekvens är en ny sekvens. ElementType är datatypen för det skapade värdeobjektet. float För närvarande och double stöds.

Parametrar:

  • dimension: storleken på dimensionen för en frekvent vektor.
  • sequenceData: en samling index som representerar sekvensen med exempel.
  • device: på vilken enhet value-objektet ska skapas.
  • readOnly: Värdet är skrivskyddat om den här flaggan är 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)

Skapar ett nytt Värde-objekt som innehåller en sekvens med exempel. Varje exempel representeras av ett indexvärde som pekar på värdet som inte är noll i elementens one-hot-vektor dimension . SeqStartFlag anger om den här sekvensen är en ny sekvens eller en fortsättning av en tidigare sekvens vid samma index i sekvenslistan från ett tidigare anrop till den här metoden. Sekvenslängden är antalet element i sequenceData. ElementType är datatypen för det skapade värdeobjektet. float För närvarande stöds ochdouble.

Parametrar:

  • dimension: storleken på dimensionen för one-hot-vektorn.
  • sequenceData: den samling index som representerar sekvensen med exempel.
  • sequenceStartFlag: true anger att det är en ny sekvens. false innebär en fortsättning av en tidigare sekvens.
  • device: på vilken enhet value-objektet ska skapas.
  • readOnly: Värdet är skrivskyddat om den här flaggan är 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

Skapar ett nytt Värde-objekt som innehåller en batch med variabellängdssekvenser. Varje exempel representeras av ett indexvärde som pekar på värdet som inte är noll i elementens one-hot-vektor dimension . Antalet sekvenser är antalet element i den yttre listan över batchOfSequences. Längden på varje sekvens är antalet element i motsvarande sekvens i den inre listan över batchOfSequences. Varje sekvens i batchOfSequences är en ny sekvens. ElementType är datatypen för det skapade värdeobjektet. float För närvarande stöds ochdouble.

Parametrar:

  • dimension: storleken på dimensionen för one-hot-vektorn.
  • batchOfSequences: den samling index som representerar sekvenser av exempel. Det yttre vector representerar en samling sekvenser med variabel längd och det inre vector representerar varje enskild sekvens.
  • device: på vilken enhet value-objektet ska skapas.
  • readOnly: Värdet är skrivskyddat om den här flaggan är 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

Skapar ett nytt Värde-objekt som innehåller en batch med variabellängdssekvenser. Varje exempel representeras av ett indexvärde som pekar på värdet som inte är noll i elementens one-hot-vektor dimension . Antalet sekvenser är antalet element i den yttre listan över batchOfSequences. Längden på varje sekvens är antalet element i motsvarande sekvens i den inre listan över batchOfSequences. ElementType är datatypen för det skapade värdeobjektet. float För närvarande stöds ochdouble.

Parametrar:

  • dimension: storleken på dimensionen för one-hot-vektorn.
  • batchOfSequences: den samling index som representerar sekvenser av exempel. Det yttre vector representerar en samling sekvenser med variabel längd och det inre vector representerar varje enskild sekvens.
  • sequenceStartFlags: En samling booleska värden. Varje element representerar om motsvarande sekvens i batchOfSequences är en ny sekvens (i fall av true) eller en fortsättning på en tidigare sekvens (i fall av false).
  • device: på vilken enhet value-objektet ska skapas.
  • readOnly: Värdet är skrivskyddat om den här flaggan är true.

Skapa ett värde med glesa CSC-indata

För närvarande stöds CSC (Compressed Sparse Column Format). CSC-formatet lagrar matrisen i kolumnmajorformat och matrisen som innehåller kolumnindexen komprimeras. En matris i CSC-format representeras av följande parametrar:

  • nonZeroValues: datamatrisen som innehåller alla värden som inte är noll för matrisen i kolumnmajorformat.
  • rowIndices: matrisen som innehåller radindexen för motsvarande element i matrisen nonZeroValues.
  • colStarts: matrisen som innehåller index i matriserna rowIndices och nonZeroValues.

En detaljerad beskrivning av CSC-formatet finns här.


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

Skapar ett nytt Värde-objekt som innehåller en sekvens med exempel med CSC sparse-indataformat. Sekvenslängden är antalet rader i den glesa matrisen. Den skapade sekvensen är en ny sekvens. ElementType är datatypen för det skapade värdeobjektet. float För närvarande stöds ochdouble.

Parametrar:

  • sampleShape: tensorformen för värdet. För glesa indata måste tensorformens inledande dimension vara samma som den totala storleken på tensorformen.
  • sequenceLength: sekvenslängden, som också är antalet rader i den glesa matrisen.
  • colStarts: matrisen innehåller index för varje kolumn i matriserna rowIndices och nonZeroValues.
  • rowIndices: matrisen som innehåller radindexen för motsvarande element i matrisen nonZeroValues.
  • nonZeroValues: matrisen som innehåller alla icke-nollvärden i den glesa matrisen.
  • numNonZeroValues: antalet icke-nollvärden i den glesa matrisen.
  • device: på vilken enhet value-objektet ska skapas.
  • readOnly: Värdet är skrivskyddat om den här flaggan är 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

Skapar ett nytt Värde-objekt som innehåller en sekvens med exempel med CSC sparse-indataformat. Sekvenslängden är antalet rader i den glesa matrisen. SequenceStartFlag anger om den här sekvensen är en ny sekvens eller en fortsättning på en tidigare sekvens från ett tidigare anrop till den här metoden. ElementType är datatypen för det skapade värdeobjektet. float För närvarande stöds ochdouble.

Parametrar:

  • sampleShape: tensorformen för värdet. För glesa indata måste tensorformens inledande dimension vara samma som den totala storleken på tensorformen.
  • sequenceLength: sekvenslängden, som också är antalet rader i den glesa matrisen.
  • colStarts: matrisen innehåller index för varje kolumn i matriserna rowIndices och nonZeroValues.
  • rowIndices: matrisen som innehåller radindexen för motsvarande element i matrisen nonZeroValues.
  • nonZeroValues: matrisen som innehåller alla icke-nollvärden i den glesa matrisen.
  • numNonZeroValues: antalet icke-nollvärden i den glesa matrisen.
  • sequenceStartFlag: true anger att det är en ny sekvens. false innebär en fortsättning av en tidigare sekvens.
  • device: på vilken enhet value-objektet ska skapas.
  • readOnly: Värdet är skrivskyddat om den här flaggan är 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

Skapar ett nytt Värde-objekt som innehåller en sekvens med exempel med CSC sparse-indataformat. Sekvenslängden är antalet rader i den glesa matrisen. Den skapade sekvensen är en ny sekvens. ElementType är datatypen för det skapade värdeobjektet. float För närvarande stöds ochdouble.

Parametrar:

  • dimension: storleken på dimensionen för one-hot-vektorn.
  • sequenceLength: sekvenslängden, som också är antalet rader i den glesa matrisen.
  • colStarts: matrisen innehåller index för varje kolumn i matriserna rowIndices och nonZeroValues.
  • rowIndices: matrisen som innehåller radindexen för motsvarande element i matrisen nonZeroValues.
  • nonZeroValues: matrisen som innehåller alla icke-nollvärden i den glesa matrisen.
  • numNonZeroValues: antalet icke-nollvärden i den glesa matrisen.
  • device: på vilken enhet value-objektet ska skapas.
  • readOnly: Värdet är skrivskyddat om den här flaggan är 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

Skapar ett nytt Värde-objekt som innehåller en sekvens med exempel med CSC sparse-indataformat. Sekvenslängden är antalet rader i den glesa matrisen. SequenceStartFlag anger om den här sekvensen är en ny sekvens eller en fortsättning på en tidigare sekvens. ElementType är datatypen för det skapade värdeobjektet. float För närvarande stöds ochdouble.

Parametrar:

  • dimension: storleken på dimensionen för en frekvent vektor.
  • sequenceLength: sekvenslängden, som också är antalet rader i den glesa matrisen.
  • colStarts: Matrisen innehåller index för varje kolumn i matriserna rowIndices och nonZeroValues.
  • rowIndices: matrisen som innehåller radindexen för motsvarande element i matrisen nonZeroValues.
  • nonZeroValues: matrisen som innehåller alla icke-nollvärden i den glesa matrisen.
  • numNonZeroValues: antalet icke-nollvärden i glesmatrisen.
  • sequenceStartFlag: true anger att det är en ny sekvens. false innebär en fortsättning på en tidigare sekvens.
  • device: på vilken enhet value-objektet ska skapas.
  • readOnly: Värdet är skrivskyddat om den här flaggan är true.

Skapa ett värde från NDArrayView


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

Skapar ett nytt värdeobjekt baserat på en samling NDArrayViews. Varje sekvens i sequences är en ny sekvens.

Parametrar:

  • sampleShape: tensorformen för värdet som skapas.
  • sequences: en samling sekvenser som representeras av NDArrayView. Varje NDArrayView representerar en sekvens.
  • device: på vilken enhet value-objektet ska skapas.
  • readOnly: Värdet är skrivskyddat om den här flaggan är 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

Skapar ett nytt värdeobjekt baserat på en samling NDArrayViews. SekvensenStartFlags anger om en sekvens är en ny sekvens eller en fortsättning på en tidigare sekvens.

Parametrar:

  • sampleShape: tensorformen för värdet som skapas.
  • sequences: en samling sekvenser som representeras av NDArrayView. Varje NDArrayView representerar en sekvens.
  • sequenceStartFlags: En samling booleska värden. Varje element representerar om motsvarande sekvens i sequences är en ny sekvens (i händelse av true) eller en fortsättning på en tidigare sekvens (i händelse av false).
  • device: på vilken enhet value-objektet ska skapas.
  • readOnly: Värdet är skrivskyddat om den här flaggan är true.

Kopiera data från ett värdeobjekt


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

Kopierar data som lagras i värdet till bufferten som tillhandahålls av sequences. sequences är en lista över sekvenser med variabel längd. Antalet objekt som finns i den yttre listan sequences är antalet sekvenser i värdet. Varje element i den yttre listan representerar en sekvens. Varje sekvens, som representeras av vector<ElementType>, innehåller ett variabelt antal exempel. Varje exempel består av ett fast antal element med typen ElementType. Antalet element i ett prov bestäms av formen på outputVariable. Formen på variabeln ska matcha formen på värdet. ElementType är datatypen för det skapade värdeobjektet. float För närvarande och double stöds.

Parametrar:

  • outputVariable: anger formen och dynamiska axlar när du kopierar data från det här värdet till sequences.
  • sequences: utdatabufferten som används för att lagra data som kopierats från värdet.

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

Kopierar data som lagras i value-objektet till bufferten som tillhandahålls av sequences. sequences är en lista över sekvenser med variabel längd. Antalet objekt som finns i den yttre listan sequences är antalet sekvenser i värdet. Varje element i den yttre listan representerar en sekvens. Varje sekvens, som representeras av vector<size_t>, innehåller ett variabelt antal exempel. Varje exempel representeras av ett index som pekar på värdet som inte är noll i en frekvent vektor. Dimensionsstorleken för en frekvent vektor ska matcha den som definieras i outputVariable.

Parametrar:

  • outputVariable: anger formen och dynamiska axlar när du kopierar data från det här värdet till sequences.
  • sequences: utdatabufferten som används för att lagra data som kopierats från värdet.

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)

Kopiera data som lagras i value-objektet till buffertar som representerar en sekvens i CSC-sparsformat. Sekvensbufferten kommer att ändras om det behövs. Värdet ska ha samma tensorform som outputVariable. Vid retur sequenceLength anges längden på sekvensen som lagras i Värdet och colStarts, rowIndices och nonZeroValues innehåller data för kolumnstartindex, radindex och icke-nollvärden, och numNonZeroValues anges till antalet värden som inte är noll i this Värde.

Parametrar:

  • outputVariable: anger formen och dynamiska axlar när du kopierar data från det här värdet till buffertarna.
  • sequenceLength: Vid retur är den inställd på längden på sekvensen som lagras i värdet.
  • colStarts: Vid retur innehåller den index till det första elementet nonZeorValues som inte är noll i varje kolumn i matrisen.
  • rowIndices: Vid retur innehåller den radindex för varje element som inte är noll i matrisen.
  • nonZeroValues: Vid retur innehåller den värden för alla element som inte är noll i matrisen.
  • numNonZeroValues: Vid retur returnerar den antalet icke-noll-element i matrisen.

Hjälpfunktioner för att manipulera funktionen som ska utvärderas


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

För utvärdering anropas den här metoden för att skapa en klonad funktion som sedan kan användas av en annan tråd för att utvärdera samma modell. För det här ändamålet parameterCloneMethod ska anges till standardvärdet ParameterCloningMethod::Share. Parametern replacements anger eventuella variabelbyten som tillämpas i den klonade funktionsinstansen och som vanligtvis inte behövs för utvärdering.


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

Hitta en funktion med angiven name i funktionsdiagrammet som ligger till grund för funktionen "this". Om det finns fler än en funktion med samma namn utlöses ett undantag. Om nestedSearchInsideBlockFunction är sant genomsöks även alla funktioner i blockfunktioner.


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

Hitta en lista över funktioner med angiven name i funktionsdiagrammet som ligger till grund för funktionen "this". Om nestedSearchInsideBlockFunction är sant genomsöks även alla funktioner i blockfunktioner.


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

Skapa en ny funktionsinstans som kombinerar utdata från den angivna listan med "operander" för Functions. "Utdata" för den nya funktionen är en union av "Outputs" för var och en av de angivna operandernas funktioner. När du till exempel skapar en klassificeringsmodell utgör funktionen CrossEntropy loss och Funktionen ClassificationError rötterna i beräkningsdiagrammet som kan vara "Kombinera"d för att skapa en enda funktion med 2 utdata. Viz. CrossEntropy-förlust och ClassificationError-utdata.


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

Skapar en sammansatt funktion som har den angivna rootFunction som rot. Den sammansatta anger en funktion på högre nivå som kapslar in hela diagrammet med funktioner som ligger till grund för den angivna rootFunction.


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

Skapar en ny funktionsinstans som bara är ett alias för den angivna operand.


Mer information om datatyper som används av funktionerna ovan finns i CNTKLibrary.h .

Exempel

C++-exemplen CNTKLibraryCPPEvalCPUOnlyExamples och CNTKLibraryCPPEvalGPUExamples visar användningen av CNTK Library för utvärdering. Exemplen visar också hur du gör flera utvärderingar parallellt med flera trådar och delar modellparametrar mellan trådar.