Sdílet prostřednictvím


EvalDLL C++ API

K dispozici je nativní rozhraní pro vyhodnocování modelů bez nutnosti čtečky dat nebo datových souborů. Toto rozhraní je implementováno v jazyce C++ uvnitř Cntk.Eval knihovny DLL v Windows a libCntk.Eval v Linuxu v uvedeném pořadí. Knihovna Cntk.Eval DLL je zase používána EvalWrapper sestavením (který poskytuje spravovanou vrstvu) v Windows.

Název nativního rozhraní je následující:

template <typename ElemType> class IEvaluateModel

Kde ElemType je typ prvku (float nebo double).

Toto rozhraní poskytuje následující metody:


void Init(const std::string& config)

Tato metoda inicializuje vyhodnocovací modul se zadaným konfiguračním souborem. Položky z konfiguračního souboru se analyzují a přiřazují k vyhodnocovacímu modulu, ale síť se v rámci tohoto volání nevytvořila. Tato metoda navíc ve výchozím nastavení numCPUThreads vlastnost na 1, pokud konfigurační soubor neobsahuje jinou hodnotu pro tuto vlastnost.


void CreateNetwork(const std::string& networkDescription)

Tato metoda sestaví síť buď z popisu sítě v konfiguračním souboru, nebo pokud modelPath je atribut zadán, načte model z disku.

  • networkDescription : obsahuje popis sítě, a to buď prostřednictvím položky NetworkBuilder atributu modelPath.

void GetNodeDimensions(std::map<std::wstring, size_t>& dimensions, NodeGroup nodeGroup)

Tato metoda vyplní slovník dimenzí, přičemž každá položka dimenze mapuje název vrstvy (klíč) na velikost dimenze. Skupina uzlů je definována prostřednictvím výčtu NodeGroup :

    enum NodeGroup     
    {      
        nodeInput,  // an input node     
        nodeOutput, // an output node     
        nodeSpecified     
    };

void StartEvaluateMinibatchLoop(const std::wstring& outputNodeName)

Tyto metody připraví síť na volání Evaluate.

  • outputNodeName : název uzlu, který se vyhodnotí

void Evaluate(std::map<std::wstring, std::vector<ElemType>*>& inputs, std::map<std::wstring, std::vector<ElemType>*>& outputs)

Tato metoda vyhodnotí síť pomocí zadaného vstupu a načte více výstupních vrstev.

  • inputs : Slovník mapuje názvy vstupních vrstev na hodnoty, které se mají použít jako vstup do sítě.
  • outputs : slovník mapuje názvy výstupní vrstvy na hodnoty, které se mají načíst ze sítě.

void Evaluate(std::map<std::wstring, std::vector<ElemType>*>& outputs)`

Tato metoda vyhodnocuje síť, která načítá více výstupních vrstev. Vyhodnocení je předávání s jedním předáváním, které vyhodnocuje výstupní uzly.

  • outputs : slovník mapuje názvy výstupní vrstvy na hodnoty, které se mají načíst ze sítě.

void Destroy()

Uvolní prostředky přidělené během vytváření sítě.


Pro klienta jsou k dispozici dvě implementace tohoto rozhraní:

IEvaluateModelF : IEvaluateModel<float> // Assumes data elements of type float

a

IEvaluateModelD : IEvaluateModel<double> // Assumes data elements of type double

Příklad

Program CPPEvalClient umístěný ve složce Examples/Evaluation/LegacyEvalDll/CPPEvalClient ukazuje použití tohoto zkušebního rozhraní.