次の方法で共有


EvalDLL C# API

データ リーダーまたはデータ ファイルを必要とせずにモデルを評価するために使用できるマネージド インターフェイスがあります。 このインターフェイスは、ライブラリ内の CLI マネージド コードで EvalWrapper 実装されます。 このライブラリでは、ライブラリを使用 Evaldll して実際のネットワーク評価を (ネイティブ C++ で) 実行します。

マネージド インターフェイス名 (C#) は次のとおりです。

public interface IEvaluateModelManaged<T> : IDisposable

要素の型 (floatまたは) はどこにあるTdouble

このインターフェイスには、次のメソッドが用意されています。


void Init(string config)

このメソッドは、指定された構成ファイルを使用して評価エンジンを初期化します。 構成ファイルからのエントリは解析され、評価エンジンに割り当てられますが、この呼び出し内にネットワークは作成されません。 さらに、構成ファイルにこのプロパティ1の別のnumCPUThreads値が含まれている場合を除き、このメソッドは既定でプロパティを設定します。


void CreateNetwork(string networkDescription)

このメソッドは、構成ファイル内のネットワーク記述からネットワークを構築するか、属性が modelPath 指定されている場合は、ディスクからモデルを読み込みます。

  • networkDescription : modelPath 属性の NetworkBuilder エントリを介して、ネットワークの説明が含まれます。

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

このメソッドは、構成ファイル内のネットワーク記述からネットワークを構築するか、属性が modelPath 指定されている場合は、ディスクからモデルを読み込みます。 さらに、構成ファイルからの出力ノードのリストを、引数として渡されたリストに置き換えます。 これにより、呼び出し元は、非表示レイヤー内のノードなど、他のノードの出力値を取得できます。

  • networkDescription : modelPath 属性の NetworkBuilder エントリを介して、ネットワークの説明が含まれます。
  • outputNodeNames : 出力としてマークされるノードの一覧。評価できます。

void CreateNetwork(string networkDescription, int deviceId)

このメソッドは、構成ファイル内のネットワークの説明からネットワークを構築します。 これは、テキストの前に追加される便利なdeviceId=<deviceId>networkDescriptionメソッドにすぎません。

  • networkDescription : プロパティまたは属性を介した NetworkBuilder ネットワークの説明が modelPath 含まれます。
  • deviceId : ネットワーク記述 deviceId のプロパティの前に追加するデバイス ID 値を指定します。

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

このメソッドは、構成ファイル内のネットワークの説明からネットワークを構築します。 これは、テキストの前に追加される便利なdeviceId=<deviceId>networkDescriptionメソッドにすぎません。

  • networkDescription : modelPath 属性の NetworkBuilder エントリを介して、ネットワークの説明が含まれます。
  • deviceId : ネットワーク記述 deviceId のプロパティの前に追加するデバイス ID 値を指定します。
  • outputNodeNames : 出力としてマークされるノードの一覧。評価できます。

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

このメソッドは、単一の前方パス (入力なし) でネットワークを評価し、指定されたレイヤー outputKeyに関連付けられている値を返します。

  • outputKey : 値を返すレイヤー名。
  • outputSize : 出力レイヤー内の値の数。
    このメソッドは非推奨とされます。 代わりに、メソッドを使用します List<T> Evaluate(string outputKey)

List<T> Evaluate(string outputKey)

このメソッドは、単一の前方パス (入力なし) でネットワークを評価し、指定されたレイヤー outputKeyに関連付けられている値を返します。

  • outputKey : 値を返すレイヤー名。 メソッド内部では、出力に必要なデータ バッファー サイズを決定し、必要なバッファーを割り当てます。

void Evaluate(Dictionary<string, List<T>> inputs, Dictionary<string, List<T>> outputs)

このメソッドは、指定された入力を使用してネットワークを評価し、複数の出力レイヤーを取得します。

  • inputs : 入力レイヤー名を、ネットワークへの入力として使用する値にマッピングするディクショナリ。
  • outputs : 出力レイヤー名をネットワークから取得する値にマッピングするディクショナリ。

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

このメソッドは、指定された入力を使用してネットワークを評価し、単一の出力レイヤーを取得します

  • inputs : 入力レイヤー名を、ネットワークへの入力として使用する値にマッピングするディクショナリ。
  • outputKey : 目的の出力レイヤーの名前。
  • outputSize : 出力レイヤー内の値の数。
    このメソッドは非推奨とされます。 代わりに、メソッドを使用します List<T> Evaluate(Dictionary<string, List<T>> inputs, string outputKey)

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

このメソッドは、指定された入力を使用してネットワークを評価し、単一の出力レイヤーを取得します

  • inputs : 入力レイヤー名を、ネットワークへの入力として使用する値にマッピングするディクショナリ。
  • outputKey : 目的の出力レイヤーの名前。
    メソッド内部では、出力に必要なデータ バッファー サイズを決定し、必要なバッファーを割り当てます。

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

このメソッドは、ビットマップ イメージを評価し、単一の出力レイヤーを取得します。

  • image : RGB 形式のビットマップ 画像入力。 ネットワークで予想されるサイズと一致するように、既にサイズを変更する必要があります。
  • outputKey : 目的の出力レイヤーの名前。
    内部的には、メソッドは最初に 3 つのチャネルを含む特徴ベクトルを抽出し、それをネットワークへの入力としてフィードします。 また、出力に必要なバッファーも割り当てます。

Dictionary<string, int> GetNodeDimensions(NodeGroup nodeGroup)

このメソッドはアイテムのディクショナリを返し、各アイテムはレイヤー名 (キー) をディメンション サイズにマッピングします。 ノード グループは、列挙によって NodeGroup 定義されます。

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

このインターフェイスには、マネージド クライアントで使用できる 2 つの実装があります。

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

および

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

ここにある CSEvalClient プログラムは、この評価インターフェイスの使用方法を示しています。