EvalDLL C# API
データ リーダーまたはデータ ファイルを必要とせずにモデルを評価するために使用できるマネージド インターフェイスがあります。 このインターフェイスは、ライブラリ内の CLI マネージド コードで EvalWrapper
実装されます。 このライブラリでは、ライブラリを使用 Evaldll
して実際のネットワーク評価を (ネイティブ C++ で) 実行します。
マネージド インターフェイス名 (C#) は次のとおりです。
public interface IEvaluateModelManaged<T> : IDisposable
要素の型 (float
または) はどこにあるT
かdouble
このインターフェイスには、次のメソッドが用意されています。
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 プログラムは、この評価インターフェイスの使用方法を示しています。