Sdílet prostřednictvím


EvalDLL C# API

Pro vyhodnocování modelů je k dispozici spravované rozhraní bez nutnosti čtečky dat nebo datových souborů. Toto rozhraní se implementuje ve spravovaném kódu rozhraní příkazového EvalWrapper řádku uvnitř knihovny. Tato knihovna zase používá Evaldll knihovnu k provádění skutečných vyhodnocení sítě (v nativním jazyce C++).

Název spravovaného rozhraní (v jazyce C#) je následující:

public interface IEvaluateModelManaged<T> : IDisposable

Kde T je typ prvku (float nebo double)

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


void Init(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. Kromě toho tato metoda výchozí numCPUThreads vlastnost , pokud 1konfigurační soubor neobsahuje jinou hodnotu pro tuto vlastnost.


void CreateNetwork(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 CreateNetwork(string networkDescription, List<string> outputNodeNames)

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. Kromě toho nahradí seznam výstupních uzlů z konfiguračního souboru seznamem předaným jako argument. To umožňuje volajícímu načíst výstupní hodnoty jiných uzlů, jako jsou ty ve skrytých vrstvách.

  • networkDescription : obsahuje popis sítě, a to buď prostřednictvím položky NetworkBuilder atributu modelPath.
  • outputNodeNames : seznam uzlů, které se mají označit jako výstup, aby bylo možné je vyhodnotit.

void CreateNetwork(string networkDescription, int deviceId)

Tato metoda sestaví síť z popisu sítě v konfiguračním souboru. Jedná se pouze o pohodlnou metodunetworkDescription, která předpřipravená deviceId=<deviceId> na text.

  • networkDescription : obsahuje popis sítě, a to buď prostřednictvím NetworkBuilder vlastnosti, nebo atributu modelPath .
  • deviceId : určuje hodnotu ID zařízení, která se má předem nastavit na vlastnost popisu deviceId sítě.

void CreateNetwork(string networkDescription, int deviceId, List<string> outputNodeNames)

Tato metoda sestaví síť z popisu sítě v konfiguračním souboru. Jedná se pouze o pohodlnou metodunetworkDescription, která předpřipravená deviceId=<deviceId> na text.

  • networkDescription : obsahuje popis sítě, a to buď prostřednictvím položky NetworkBuilder atributu modelPath.
  • deviceId : určuje hodnotu ID zařízení, která se má předem nastavit na vlastnost popisu deviceId sítě.
  • outputNodeNames : seznam uzlů, které se mají označit jako výstup, aby bylo možné je vyhodnotit.

List<T> Evaluate(string outputKey, int outputSize)

Tato metoda vyhodnotí síť s jedním předáváním (bez vstupu) a vrátí hodnoty přidružené k zadané vrstvě outputKey.

  • outputKey : Název vrstvy pro vrácení hodnot z.
  • outputSize : počet hodnot ve výstupní vrstvě.
    Tato metoda je zastaralá. Místo toho použijte metodu List<T> Evaluate(string outputKey) .

List<T> Evaluate(string outputKey)

Tato metoda vyhodnotí síť s jedním předáváním (bez vstupu) a vrátí hodnoty přidružené k zadané vrstvě outputKey.

  • outputKey : Název vrstvy pro vrácení hodnot z. Interně metoda určuje požadovanou velikost vyrovnávací paměti dat pro výstup a přidělí potřebnou vyrovnávací paměť.

void Evaluate(Dictionary<string, List<T>> inputs, Dictionary<string, List<T>> 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ích vrstev na hodnoty, které se mají načíst ze sítě.

List<T> Evaluate(Dictionary<string, List<T>> inputs, string outputKey, int outputSize)

Tato metoda vyhodnotí síť se zadaným vstupem a načte jednu výstupní vrstvu.

  • inputs : Slovník mapuje názvy vstupních vrstev na hodnoty, které se mají použít jako vstup do sítě.
  • outputKey : název požadované výstupní vrstvy.
  • outputSize : počet hodnot ve výstupní vrstvě.
    Tato metoda je zastaralá. Místo toho použijte metodu List<T> Evaluate(Dictionary<string, List<T>> inputs, string outputKey) .

List<T> Evaluate(Dictionary<string, List<T>> inputs, string outputKey)

Tato metoda vyhodnotí síť se zadaným vstupem a načte jednu výstupní vrstvu.

  • inputs : Slovník mapuje názvy vstupních vrstev na hodnoty, které se mají použít jako vstup do sítě.
  • outputKey : název požadované výstupní vrstvy.
    Interně metoda určuje požadovanou velikost vyrovnávací paměti dat pro výstup a přidělí potřebnou vyrovnávací paměť.

List<T> EvaluateRgbImage(Bitmap image, string outputKey)

Tato metoda vyhodnotí rastrový obrázek a načte jednu výstupní vrstvu.

  • image : rastrový obrázek vstup ve formátu RGB. Musí být již znovu nastavená tak, aby odpovídala velikosti očekávané síti.
  • outputKey : název požadované výstupní vrstvy.
    Interně metoda nejprve extrahuje vektor funkce, který obsahuje 3 kanály, a pak ho jako vstup do sítě. Přidělí také potřebnou vyrovnávací paměť pro výstup.

Dictionary<string, int> GetNodeDimensions(NodeGroup nodeGroup)

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

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

Spravovanému klientovi jsou k dispozici dvě implementace tohoto rozhraní:

class IEvaluateModelManagedF : IEvaluateModelManaged<float> // Assumes data elements of type float

a

class IEvaluateModelManagedD : IEvaluateModelManaged<double> // Assumes data elements of type double

Příklad

Program CSEvalClient umístěný zde ukazuje použití tohoto zkušebního rozhraní.