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 jetrue
tento 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 jetrue
tento 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 jetrue
tento 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 jetrue
tento 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 vbatchOfSequences
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 jetrue
tento 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 jetrue
tento 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 jetrue
tento 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 jetrue
tento 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 jetrue
tento 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 vbatchOfSequences
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 jetrue
tento 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 maticinonZeroValues
.colStarts
: matice, která obsahuje indexyrowIndices
do polí anonZeroValues
.
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
anonZeroValues
.rowIndices
: matice obsahující indexy řádků odpovídajících prvků v maticinonZeroValues
.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 jetrue
tento 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
anonZeroValues
.rowIndices
: matice obsahující indexy řádků odpovídajících prvků v maticinonZeroValues
.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 jetrue
tento 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
anonZeroValues
.rowIndices
: matice obsahující indexy řádků odpovídajících prvků v maticinonZeroValues
.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 jetrue
tento 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
anonZeroValues
.rowIndices
: pole obsahující indexy řádků odpovídajících prvků v maticinonZeroValues
.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 jetrue
tento 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 jetrue
tento 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 jesequences
nová sekvence (v případě ) nebo pokračování předchozí sekvence (v případětrue
false
).device
: na kterém zařízení má být vytvořen objekt Value.readOnly
: Hodnota je jen pro čtení, pokud jetrue
tento 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 dosequences
.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 dosequences
.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 colStarts
a 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 dononZeorValues
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é rootFunction
funkce .
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.