Sdílet prostřednictvím


rozhraní API knihovny CNTK Eval C++

Knihovna CNTK C++ pro vyhodnocení je založená na rozhraní API knihovny CNTK. K vyhodnocení modelu se používají následující metody.


Načtení modelu


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

Tato metoda načte soubor modelu a vrátí ukazatel na funkci, která představuje načtený model. Funkce v CNTK označuje výpočetní graf složený z primitivních funkcí nebo složených funkcí s nulovými nebo více vstupními argumenty a jedním nebo více výstupy. Jedná se modelFile o cestu k souboru modelu. Určuje computeDevice zařízení, které má spustit vyhodnocení.


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

Tato metoda načte model z vyrovnávací paměti a vrátí ukazatel na funkci, která představuje načtený model. Odkazuje modelBuffer na vyrovnávací paměť obsahující serializovaný obsah modelu a modelBufferLength je délka vyrovnávací paměti. Určuje computeDevice zařízení, které má spustit vyhodnocení.


Vyhodnocení funkce


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

Tato metoda spustí vyhodnocení this funkce představující model se zadanými parametry. Obsahuje arguments hodnoty všech vstupních proměnných vyžadovaných pro vyhodnocení a outputs uloží hodnoty výstupních proměnných. Úložiště výstupních hodnot může být buď předem přiděleno volajícím, nebo systémem, pokud je mapování ValuePtr předáno volajícím jako null. Určuje computeDevice zařízení, které má spustit vyhodnocení.


Vytvoření hodnoty pomocí hustého vstupu


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

Vytvoří nový objekt Value obsahující dávku ukázek. Počet vzorků v dávce je počet prvků rozdělených batchData velikostí sampleShape (pokud zbytek není nula), dojde k chybě za běhu. Vytvořený objekt Value obsahuje kopii zadaných dat v batchData. ElementType je datový typ vytvořeného objektu Value. float V současné době a double jsou podporované.

Parametry:

  • sampleShape: tvar tensoru objektu Value.
  • batchData: data, která mají být obsažena v objektu Value.
  • device: na kterém zařízení by se měl vytvořit objekt Value.
  • readOnly: Hodnota objekt je jen pro čtení, pokud je truetento příznak .

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

Vytvoří nový objekt Value obsahující posloupnost ukázek. Vytvořený objekt Value obsahuje kopii zadaných dat v sequenceData. Délka posloupnosti je počet prvků rozdělených sequenceData velikostí sampleShape (pokud zbytek není nula), dojde k chybě za běhu. Vytvořená sekvence je nová sekvence. ElementType je datový typ vytvořeného objektu Value. float V současné době a double jsou podporované.

Parametry:

  • sampleShape: tvar tensoru hodnoty.
  • sequenceData: data, která mají být obsažena v hodnotě.
  • device: na kterém zařízení by se měl vytvořit objekt Value.
  • readOnly: Hodnota je jen pro čtení, pokud je truetento příznak .

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

Vytvoří nový objekt Value obsahující posloupnost ukázek. Vytvořený objekt Value obsahuje kopii zadaných dat v sequenceData. Délka posloupnosti je počet prvků rozdělených sequenceData velikostí sampleShape (pokud zbytek není nula), dojde k chybě za běhu. SequenceStartFlag určuje, zda je tato sekvence novou sekvencí nebo pokračování předchozí sekvence ve stejném indexu v seznamu sekvencí ze předchozího volání této metody. ElementType je datový typ vytvořeného objektu Value. float V současné době a double jsou podporované.

Parametry:

  • sampleShape: tvar tensoru hodnoty.
  • sequenceData: data, která mají být obsažena v hodnotě.
  • sequenceStartFlag: true označuje, že se jedná o novou sekvenci. false znamená pokračování předchozí sekvence.
  • device: na kterém zařízení by se měl vytvořit objekt Value.
  • readOnly: Hodnota je jen pro čtení, pokud je truetento příznak .

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

Vytvoří nový objekt Value obsahující dávku sekvencí délky proměnných. Vytvořený objekt Value obsahuje kopii zadaných dat v batchOfSequences. Počet sekvencí v dávce je velikost .batchOfSequences Délka každé sekvence je počet prvků v odpovídající sekvenci batchOfSequences dělené velikostí sampleShape (k chybě za běhu dochází, pokud zbytek není nula). Každá sekvence je batchOfSequences nová sekvence. ElementType je datový typ vytvořeného objektu Value. float V současné době a double jsou podporované.

Parametry:

  • sampleShape: tvar tensoru hodnoty.
  • batchOfSequences: data, která mají být uložena v hodnotě. vector Vnější představuje kolekci sekvencí s proměnlivou délkou a vnitřní vector představuje každou jednotlivou sekvenci.
  • device: na kterém zařízení by se měla vytvořit hodnota.
  • readOnly: Hodnota je jen pro čtení, pokud je truetento příznak .

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

Vytvoří nový objekt Value obsahující dávku sekvencí délky proměnných. Vytvořený objekt Value obsahuje kopii zadaných dat v batchOfSequences. Počet sekvencí v dávce je velikost .batchOfSequences Délka každé sekvence je počet prvků v odpovídající sekvenci batchOfSequences dělené velikostí sampleShape (k chybě za běhu dochází, pokud zbytek není nula). ElementType je datový typ vytvořeného objektu Value. float V současné době a double jsou podporované.

Parametry:

  • sampleShape: tvar tensoru hodnoty.
  • batchOfSequences: data, která mají být uložena v hodnotě. vector Vnější představuje kolekci sekvencí s proměnlivou délkou a vnitřní vector představuje každou jednotlivou sekvenci.
  • sequenceStartFlags: Kolekce logických hodnot. Každý prvek představuje, zda je odpovídající sekvence v batchOfSequences nové sekvenci (v případě true) nebo pokračování předchozí sekvence (v případě false).
  • device: na kterém zařízení by se měla vytvořit hodnota.
  • readOnly: Hodnota je jen pro čtení, pokud je truetento příznak .

Vytvoření hodnoty pomocí vstupu s jedním horkým vektorem


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

Vytvoří nový objekt Value obsahující dávku ukázek. Každý vzorek je reprezentován hodnotou indexu, která odkazuje na nenulovou hodnotu v jednom horkém vektoru dimension prvků. Počet vzorků v dávce je počet prvků v batchData. ElementType je datový typ vytvořeného objektu Value. float V současné době a double jsou podporované.

Parametry:

  • dimension: velikost rozměru 1-horkého vektoru.
  • batchData: kolekce indexů představující dávku vzorků.
  • device: na kterém zařízení by se měl vytvořit objekt Value.
  • readOnly: Hodnota je jen pro čtení, pokud je truetento příznak .

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

Vytvoří nový objekt Value obsahující posloupnost ukázek. Každý vzorek je reprezentován hodnotou indexu, která odkazuje na nenulovou hodnotu v jednom horkém vektoru dimension prvků. Délka posloupnosti je počet prvků v sequenceData. Každá sekvence je nová sekvence. ElementType je datový typ vytvořeného objektu Value. float V současné době a double jsou podporované.

Parametry:

  • dimension: velikost rozměru 1-horkého vektoru.
  • sequenceData: kolekce indexů představující posloupnost vzorků.
  • device: na kterém zařízení by se měl vytvořit objekt Value.
  • readOnly: Hodnota je jen pro čtení, pokud je truetento příznak .

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)

Vytvoří nový objekt Value obsahující posloupnost ukázek. Každý vzorek je reprezentován hodnotou indexu, která odkazuje na nenulovou hodnotu v jednom horkém vektoru dimension prvků. SeqStartFlag určuje, zda je tato sekvence novou sekvencí nebo pokračování předchozí sekvence ve stejném indexu v seznamu sekvencí ze předchozího volání této metody. Délka posloupnosti je počet prvků v sequenceData. ElementType je datový typ vytvořeného objektu Value. float V současné době a double jsou podporované.

Parametry:

  • dimension: velikost rozměru 1-horkého vektoru.
  • sequenceData: kolekce indexů představující posloupnost vzorků.
  • sequenceStartFlag: true označuje, že se jedná o novou sekvenci. false znamená pokračování předchozí sekvence.
  • device: na kterém zařízení by se měl vytvořit objekt Value.
  • readOnly: Hodnota je jen pro čtení, pokud je truetento příznak .

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

Vytvoří nový objekt Value obsahující dávku sekvencí délky proměnných. Každý vzorek je reprezentován hodnotou indexu, která odkazuje na nenulovou hodnotu v jednom horkém vektoru dimension prvků. Počet sekvencí je počet prvků ve vnějším seznamu batchOfSequences. Délka jednotlivých sekvencí je počet prvků odpovídající sekvence v vnitřním seznamu batchOfSequences. Každá sekvence je batchOfSequences nová sekvence. ElementType je datový typ vytvořeného objektu Value. float V současné době a double jsou podporované.

Parametry:

  • dimension: velikost rozměru 1-horkého vektoru.
  • batchOfSequences: kolekce indexů představující sekvence vzorků. vector Vnější představuje kolekci sekvencí s proměnlivou délkou a vnitřní vector představuje každou jednotlivou sekvenci.
  • device: na kterém zařízení by se měl vytvořit objekt Value.
  • readOnly: Hodnota je jen pro čtení, pokud je truetento příznak .

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

Vytvoří nový objekt Value obsahující dávku sekvencí délky proměnných. Každý vzorek je reprezentován hodnotou indexu, která odkazuje na nenulovou hodnotu v jednom horkém vektoru dimension prvků. Počet sekvencí je počet prvků ve vnějším seznamu batchOfSequences. Délka jednotlivých sekvencí je počet prvků odpovídající sekvence v vnitřním seznamu batchOfSequences. ElementType je datový typ vytvořeného objektu Value. float V současné době a double jsou podporované.

Parametry:

  • dimension: velikost rozměru 1-horkého vektoru.
  • batchOfSequences: kolekce indexů představující sekvence vzorků. vector Vnější představuje kolekci sekvencí s proměnlivou délkou a vnitřní vector představuje každou jednotlivou sekvenci.
  • sequenceStartFlags: Kolekce logických hodnot. Každý prvek představuje, zda je odpovídající sekvence v batchOfSequences nové sekvenci (v případě true) nebo pokračování předchozí sekvence (v případě false).
  • device: na kterém zařízení by se měl vytvořit objekt Value.
  • readOnly: Hodnota je jen pro čtení, pokud je truetento příznak .

Vytvoření hodnoty pomocí řídké vstupy CSC

V současné době se podporuje komprimovaný řídký formát sloupce (CSC). Formát CSC ukládá matici ve sloupcovém hlavním formátu a pole obsahující indexy sloupců je komprimované. Matice ve formátu CSC je reprezentována následujícími parametry:

  • nonZeroValues: datové pole, které obsahuje všechny nenulové hodnoty matice ve sloupcovém hlavním formátu.
  • rowIndices: matice obsahující indexy řádků odpovídajících prvků v matici nonZeroValues.
  • colStarts: matice, která obsahuje indexy rowIndices do polí a nonZeroValues.

Podrobný popis formátu CSC najdete zde.


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

Vytvoří nový objekt Value obsahující posloupnost ukázek pomocí řídké vstupního formátu CSC. Délka posloupnosti je počet řádků řídké matice. Vytvořená sekvence je nová sekvence. ElementType je datový typ vytvořeného objektu Value. float V současné době a double jsou podporované.

Parametry:

  • sampleShape: tvar tensoru hodnoty. Pro řídký vstup musí být přední rozměrový tvar tensoru stejný jako celková velikost obrazce tensoru.
  • sequenceLength: délka sekvence, což je také počet řádků v řídké matici.
  • colStarts: Pole obsahuje indexy pro každý sloupec do polí rowIndices a nonZeroValues.
  • rowIndices: matice obsahující indexy řádků odpovídajících prvků v matici nonZeroValues.
  • nonZeroValues: matice, která obsahuje všechny nenulové hodnoty v řídké matici.
  • numNonZeroValues: počet nenulových hodnot v řídké matici.
  • device: na kterém zařízení by se měl vytvořit objekt Value.
  • readOnly: Hodnota je jen pro čtení, pokud je truetento příznak .

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

Vytvoří nový objekt Value obsahující posloupnost ukázek pomocí řídké vstupního formátu CSC. Délka posloupnosti je počet řádků řídké matice. SequenceStartFlag určuje, zda je tato sekvence novou sekvencí nebo pokračováním předchozí sekvence z předchozího volání této metody. ElementType je datový typ vytvořeného objektu Value. float V současné době a double jsou podporované.

Parametry:

  • sampleShape: tvar tensoru hodnoty. Pro řídký vstup musí být přední rozměrový tvar tensoru stejný jako celková velikost obrazce tensoru.
  • sequenceLength: délka sekvence, což je také počet řádků v řídké matici.
  • colStarts: Pole obsahuje indexy pro každý sloupec do polí rowIndices a nonZeroValues.
  • rowIndices: matice obsahující indexy řádků odpovídajících prvků v matici nonZeroValues.
  • nonZeroValues: matice, která obsahuje všechny nenulové hodnoty v řídké matici.
  • numNonZeroValues: počet nenulových hodnot v řídké matici.
  • sequenceStartFlag: true označuje, že se jedná o novou sekvenci. false znamená pokračování předchozí sekvence.
  • device: na kterém zařízení by se měl vytvořit objekt Value.
  • readOnly: Hodnota je jen pro čtení, pokud je truetento příznak .

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

Vytvoří nový objekt Value obsahující posloupnost ukázek pomocí řídké vstupního formátu CSC. Délka posloupnosti je počet řádků řídké matice. Vytvořená sekvence je nová sekvence. ElementType je datový typ vytvořeného objektu Value. float V současné době a double jsou podporované.

Parametry:

  • dimension: velikost rozměru 1-horkého vektoru.
  • sequenceLength: délka sekvence, což je také počet řádků v řídké matici.
  • colStarts: Pole obsahuje indexy pro každý sloupec do polí rowIndices a nonZeroValues.
  • rowIndices: matice obsahující indexy řádků odpovídajících prvků v matici nonZeroValues.
  • nonZeroValues: matice, která obsahuje všechny nenulové hodnoty v řídké matici.
  • numNonZeroValues: počet nenulových hodnot v řídké matici.
  • device: na kterém zařízení by se měl vytvořit objekt Value.
  • readOnly: Hodnota je jen pro čtení, pokud je truetento příznak .

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

Vytvoří nový objekt Value obsahující posloupnost ukázek pomocí řídké vstupního formátu CSC. Délka posloupnosti je počet řádků řídké matice. SekvenceStartFlag určuje, zda je tato sekvence novou posloupností nebo pokračováním předchozí sekvence. ElementType je datový typ vytvořeného objektu Value. float V současné době a double jsou podporované.

Parametry:

  • dimension: velikost rozměru 1-horkého vektoru.
  • sequenceLength: délka sekvence, což je také počet řádků v řídké matici.
  • colStarts: Pole obsahuje indexy pro každý sloupec do polí rowIndices a nonZeroValues.
  • rowIndices: pole obsahující indexy řádků odpovídajících prvků v matici nonZeroValues.
  • nonZeroValues: matice, která obsahuje všechny nenulové hodnoty v řídké matici.
  • numNonZeroValues: počet nenulových hodnot v řídké matici.
  • sequenceStartFlag: true označuje, že se jedná o novou sekvenci. false znamená pokračování předchozí sekvence.
  • device: na kterém zařízení má být vytvořen objekt Value.
  • readOnly: Hodnota je jen pro čtení, pokud je truetento příznak .

Vytvoření hodnoty z NDArrayView


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

Vytvoří nový objekt Value založený na kolekci NDArrayViews. Každá posloupnost v sequences je nová posloupnost.

Parametry:

  • sampleShape: tvar tensoru vytvářené hodnoty.
  • sequences: kolekce sekvencí reprezentovaných NDArrayView. Každý NDArrayView představuje posloupnost.
  • device: na kterém zařízení má být vytvořen objekt Value.
  • readOnly: Hodnota je jen pro čtení, pokud je truetento příznak .

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

Vytvoří nový objekt Value založený na kolekci NDArrayViews. SequenceStartFlags určuje, zda je sekvence novou posloupností nebo pokračováním předchozí sekvence.

Parametry:

  • sampleShape: tvar tensoru vytvářené hodnoty.
  • sequences: kolekce sekvencí reprezentovaných NDArrayView. Každý NDArrayView představuje posloupnost.
  • sequenceStartFlags: Kolekce logických hodnot. Každý prvek představuje, zda odpovídající sekvence je sequences nová sekvence (v případě ) nebo pokračování předchozí sekvence (v případě truefalse).
  • device: na kterém zařízení má být vytvořen objekt Value.
  • readOnly: Hodnota je jen pro čtení, pokud je truetento příznak .

Kopírování dat z objektu Value


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

Zkopíruje data uložená v hodnotě do vyrovnávací paměti poskytnuté nástrojem sequences. Jedná se sequences o seznam sekvencí s proměnlivou délkou. Počet položek obsažených ve vnějším seznamu sequences je počet sekvencí v hodnotě. Každý prvek vnějšího seznamu představuje posloupnost. Každá posloupnost reprezentovaná vector<ElementType>hodnotou obsahuje proměnlivý počet vzorků. Každý vzorek se skládá z pevného počtu prvků s typem ElementType. Počet prvků vzorku je určen tvarem outputVariable. Tvar proměnné by měl odpovídat tvaru hodnoty. ElementType je datový typ vytvořeného objektu Value. float V současné době se podporují.double

Parametry:

  • outputVariable: Označuje tvar a dynamické osy při kopírování dat z této hodnoty do sequences.
  • sequences: Výstupní vyrovnávací paměť použitá k uložení dat zkopírovaných z hodnoty.

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

Zkopíruje data uložená v objektu Value do vyrovnávací paměti poskytnuté .sequences Jedná se sequences o seznam sekvencí s proměnlivou délkou. Počet položek obsažených ve vnějším seznamu sequences je počet sekvencí v hodnotě. Každý prvek vnějšího seznamu představuje posloupnost. Každá posloupnost reprezentovaná vector<size_t>hodnotou obsahuje proměnlivý počet vzorků. Každý vzorek je reprezentován indexem odkazující na nenulovou hodnotu ve vektoru 1-horký. Velikost rozměru vektoru typu 1-hot by měla odpovídat rozměru definovanému v objektu outputVariable.

Parametry:

  • outputVariable: Označuje tvar a dynamické osy při kopírování dat z této hodnoty do sequences.
  • sequences: Výstupní vyrovnávací paměť použitá k uložení dat zkopírovaných z hodnoty.

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)

Zkopírujte data uložená v objektu Value do vyrovnávací paměti představující posloupnost v řídkém formátu CSC. V případě potřeby se velikost vyrovnávací paměti sekvence změní. Hodnota by měla mít stejný tvar tensoru jako outputVariable. Při vrácení sequenceLength je nastavena na délku sekvence uložené v hodnotě a colStartsa nonZeroValues obsahují rowIndices data počátečních indexů sloupců, indexy řádků a nenulové hodnoty a numNonZeroValues je nastavena na počet nenulových hodnot obsažených v this hodnotě Hodnota.

Parametry:

  • outputVariable: Označuje tvar a dynamické osy při kopírování dat z této hodnoty do vyrovnávací paměti.
  • sequenceLength: Při vrácení je nastavena na délku sekvence uložené v hodnotě.
  • colStarts: při vrácení obsahuje indexy do nonZeorValues prvního nenulového prvku každého sloupce matice.
  • rowIndices: Při vrácení obsahuje indexy řádků každého nenulového prvku matice.
  • nonZeroValues: při vrácení obsahuje hodnoty všech nenulových prvků matice.
  • numNonZeroValues: při vrácení vrátí počet nenulových prvků matice.

Pomocné funkce pro manipulaci s funkcí, které se mají vyhodnotit


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

Pro vyhodnocení se tato metoda volá k vytvoření naklonované funkce, kterou pak může použít jiné vlákno k vyhodnocení stejného modelu. Pro tento účel by měla být nastavena parameterCloneMethod na výchozí hodnotu ParameterCloningMethod::Share. Parametr replacements určuje všechny nahrazení proměnných, které se použijí v instanci klonované funkce, a obvykle není potřeba pro vyhodnocení.


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

Najděte funkci s danou name funkcí v podkladovém grafu funkce "this". Pokud existuje více než jedna funkce se stejným názvem, vyvolá se výjimka. Pokud nestedSearchInsideBlockFunction je pravda, prohledávají se také všechny funkce uvnitř blokových funkcí.


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

Najděte seznam funkcí s danou name funkcí v podkladovém grafu funkce "this". Pokud nestedSearchInsideBlockFunction je pravda, prohledávají se také všechny funkce uvnitř blokových funkcí.


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

Vytvořte novou instanci funkce, která kombinuje výstupy zadaného seznamu operandů funkcí. "Výstupy" nové funkce "Funkce" jsou sjednocením "Výstupy" jednotlivých zadaných funkcí "operands". Jako příklad při vytváření klasifikačního modelu obvykle funkce CrossEntropy loss Function a ClassificationError Funkce tvoří kořeny výpočetního grafu, který může být "Kombinovat"d vytvořit jednu funkci s 2 výstupy; viz. Výstup chyby CrossEntropy a ClassificationError


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

Vytvoří složenou funkci, která má zadanou rootFunction kořenovou funkci. Složená funkce označuje zapouzdření celého grafu funkcí, který je základem zadané rootFunctionfunkce .


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

Vytvoří novou instanci funkce, která je pouze aliasem zadaného operand.


Podrobnosti o datových typech používaných výše funkcemi najdete v CNTKLibrary.h .

Příklady

Příklady C++ CNTKLibraryCPPEvalCPUOnlyExamples a CNTKLibraryCPPEvalGPUExamples ukazují použití knihovny CNTK pro vyhodnocení. Ukázky také ukazují, jak paralelně provádět více vyhodnocení pomocí více vláken a sdílet parametry modelu mezi vlákny.