CNTK ライブラリ Eval C++ API
C++ CNTK ライブラリ for Evaluation は、CNTK ライブラリ API に基づいています。 モデルを評価するには、次のメソッドを使用します。
モデルを読み込む
static FunctionPtr CNTK::Function::Load(const std::wstring& modelFile, const DeviceDescriptor& computeDevice = DeviceDescriptor::UseDefaultDevice()
このメソッドは、モデル ファイルを読み込み、読み込まれたモデルを表す関数へのポインターを返します。 CNTKの関数は、0 個以上の入力引数と 1 つ以上の出力を持つプリミティブ関数または複合関数で構成される計算グラフを示します。 モデル modelFile
ファイルのパスを指定します。 評価 computeDevice
を実行するデバイスを指定します。
static FunctionPtr CNTK::Function::Load(char *modelBuffer, size_t modelBufferLength, const DeviceDescriptor& computeDevice = DeviceDescriptor::UseDefaultDevice()
このメソッドは、メモリ バッファーからモデルを読み込み、読み込まれたモデルを表す関数へのポインターを返します。 シリアル modelBuffer
化されたモデルコンテンツを含むバッファーを指し、バッファーの modelBufferLength
長さです。 評価 computeDevice
を実行するデバイスを指定します。
関数を評価する
void CNTK::Function::Evaluate(const std::unordered_map<Variable, ValuePtr>& arguments, std::unordered_map<Variable, ValuePtr>& outputs, const DeviceDescriptor& computeDevice = DeviceDescriptor::UseDefaultDevice()
このメソッドは、指定されたパラメーターを this
持つモデルを表す関数の評価を開始します。 評価 arguments
に必要なすべての入力変数の値と、出力変数の outputs
値を格納します。 出力値のストレージは、呼び出し元によって事前に割り当てられるか、ValuePtr マッピングが呼び出し元によって null として渡される場合はシステムによって割り当てられます。 評価 computeDevice
を実行するデバイスを指定します。
高密度入力を使用して値を作成する
template <typename ElementType> static ValuePtr CNTK::Value::CreateBatch(const NDShape& sampleShape, const std::vector<ElementType>& batchData, const DeviceDescriptor& device, bool readOnly = false
サンプルのバッチを含む新しい Value オブジェクトを作成します。 バッチ内のサンプルの数は、要素の数をサイズsampleShape
でbatchData
除算したものです (剰余が 0 でない場合は実行時エラーが発生します)。 作成された Value オブジェクトには、指定されたデータ batchData
のコピーが含まれています。 ElementType
は、作成された Value オブジェクトのデータ型です。 現在、 float
サポート double
されています。
パラメーター:
sampleShape
: Value オブジェクトのテンソルシェイプ。batchData
: Value オブジェクトに格納されるデータ。device
: Value オブジェクトを作成するデバイス。readOnly
: このフラグが > の場合、Value オブジェクトは読み取り専用ですtrue
。
template <typename ElementType> static ValuePtr CNTK::Value::CreateSequence(const NDShape& sampleShape, const std::vector<ElementType>& sequenceData, const DeviceDescriptor& device, bool readOnly = false
一連のサンプルを含む新しい Value オブジェクトを作成します。 作成された Value オブジェクトには、指定されたデータ sequenceData
のコピーが含まれています。 シーケンスの長さは、要素の数を (剰余が 0 でない場合に実行時エラーが発生します) のsampleShape
サイズでsequenceData
除算したものです。 作成されたシーケンスは新しいシーケンスです。 ElementType
は、作成された Value オブジェクトのデータ型です。 現在、 float
サポート double
されています。
パラメーター:
sampleShape
: Value のテンソルシェイプ。sequenceData
: 値に含めるデータ。device
: Value オブジェクトを作成するデバイス。readOnly
: このフラグが > の場合、値は読み取り専用ですtrue
。
template <typename ElementType> static ValuePtr CNTK::Value::CreateSequence(const NDShape& sampleShape, const std::vector<ElementType>& sequenceData, bool sequenceStartFlag, const DeviceDescriptor& device, bool readOnly = false
一連のサンプルを含む新しい Value オブジェクトを作成します。 作成された Value オブジェクトには、指定されたデータ sequenceData
のコピーが含まれています。 シーケンスの長さは、要素の数を (剰余が 0 でない場合に実行時エラーが発生します) のsampleShape
サイズでsequenceData
除算したものです。 sequenceStartFlag は、このシーケンスが、このメソッドの前の呼び出しからシーケンス リスト内の同じインデックスにある前のシーケンスの新しいシーケンスか継続かを指定します。 ElementType
は、作成された Value オブジェクトのデータ型です。 現在、 float
サポート double
されています。
パラメーター:
sampleShape
: Value のテンソルシェイプ。sequenceData
: 値に含めるデータ。sequenceStartFlag
:true
新しいシーケンスであることを示します。false
は、前のシーケンスの継続を意味します。device
: Value オブジェクトを作成するデバイス。readOnly
: このフラグが > の場合、値は読み取り専用ですtrue
。
template <typename ElementType> static ValuePtr CNTK::Value::CreateBatchOfSequences(const NDShape& sampleShape, const std::vector<std::vector<ElementType>>& batchOfSequences, const DeviceDescriptor& device, bool readOnly = false
可変長シーケンスのバッチを含む新しい Value オブジェクトを作成します。 作成された Value オブジェクトには、指定されたデータ batchOfSequences
のコピーが含まれています。 バッチ内のシーケンスの数は、次の batchOfSequences
サイズです。 各シーケンスの長さは、対応するシーケンス batchOfSequences
内の要素の数をサイズ sampleShape
で除算したものです (剰余が 0 でない場合は実行時エラーが発生します)。 各シーケンスは batchOfSequences
新しいシーケンスです。 ElementType
は、作成された Value オブジェクトのデータ型です。 現在、 float
サポート double
されています。
パラメーター:
sampleShape
: Value のテンソルシェイプ。batchOfSequences
: 値に格納するデータ。 外側vector
は可変長のシーケンスのコレクションを表し、内側vector
は個々のシーケンスを表します。device
: 値を作成するデバイス。readOnly
: このフラグが > の場合、値は読み取り専用ですtrue
。
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
可変長シーケンスのバッチを含む新しい Value オブジェクトを作成します。 作成された Value オブジェクトには、指定されたデータ batchOfSequences
のコピーが含まれています。 バッチ内のシーケンスの数は、次の batchOfSequences
サイズです。 各シーケンスの長さは、対応するシーケンス batchOfSequences
内の要素の数をサイズ sampleShape
で除算したものです (剰余が 0 でない場合は実行時エラーが発生します)。 ElementType
は、作成された Value オブジェクトのデータ型です。 現在、 float
サポート double
されています。
パラメーター:
sampleShape
: Value のテンソルシェイプ。batchOfSequences
: 値に格納するデータ。 外側vector
は可変長のシーケンスのコレクションを表し、内側vector
は個々のシーケンスを表します。sequenceStartFlags
: ブール値のコレクション。 各要素は、対応するシーケンスが新しいシーケンスbatchOfSequences
(の場合) であるか、前のtrue
シーケンスの継続 (の場合false
) であるかを表します。device
: 値を作成するデバイス。readOnly
: このフラグが > の場合、値は読み取り専用ですtrue
。
ワンホット ベクター入力を使用して値を作成する
template <typename ElementType> static ValuePtr CNTK::Value::CreateBatch(size_t dimension, const std::vector<size_t>& batchData, const DeviceDescriptor& device, bool readOnly = false)
サンプルのバッチを含む新しい Value オブジェクトを作成します。 各サンプルは、要素の 1 ホット ベクター dimension
内の 0 以外の値を指すインデックス値で表されます。 バッチ内のサンプルの数は、次の要素の数です batchData
。 ElementType
は、作成された Value オブジェクトのデータ型です。 現在、 float
サポート double
されています。
パラメーター:
dimension
: 1 ホット ベクトルの次元のサイズ。batchData
: サンプルのバッチを表すインデックスのコレクション。device
: Value オブジェクトを作成するデバイス。readOnly
: このフラグが > の場合、値は読み取り専用ですtrue
。
template <typename ElementType> static ValuePtr CNTK::Value::CreateSequence(size_t dimension, const std::vector<size_t>& sequenceData, const DeviceDescriptor& device, bool readOnly = false)
一連のサンプルを含む新しい Value オブジェクトを作成します。 各サンプルは、要素の 1 ホット ベクター dimension
内の 0 以外の値を指すインデックス値で表されます。 シーケンスの長さは、次の要素の数です sequenceData
。各シーケンスは新しいシーケンスです。 ElementType
は、作成された Value オブジェクトのデータ型です。 現在、 float
サポート double
されています。
パラメーター:
dimension
: 1 ホット ベクトルの次元のサイズ。sequenceData
: サンプルのシーケンスを表すインデックスのコレクション。device
: Value オブジェクトを作成するデバイス。readOnly
: このフラグが > の場合、値は読み取り専用ですtrue
。
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)
一連のサンプルを含む新しい Value オブジェクトを作成します。 各サンプルは、要素の 1 ホット ベクター dimension
内の 0 以外の値を指すインデックス値で表されます。 seqStartFlag は、このシーケンスが、このメソッドの前の呼び出しからシーケンス リスト内の同じインデックスにある前のシーケンスの新しいシーケンスか継続かを指定します。 シーケンスの長さは、次の要素の数です sequenceData
。 ElementType
は、作成された Value オブジェクトのデータ型です。 現在、 float
サポート double
されています。
パラメーター:
dimension
: 1 ホット ベクトルの次元のサイズ。sequenceData
: サンプルのシーケンスを表すインデックスのコレクション。sequenceStartFlag
:true
新しいシーケンスであることを示します。false
は、前のシーケンスの継続を意味します。device
: Value オブジェクトを作成するデバイス。readOnly
: このフラグが > の場合、値は読み取り専用ですtrue
。
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
可変長シーケンスのバッチを含む新しい Value オブジェクトを作成します。 各サンプルは、要素の 1 ホット ベクター dimension
内の 0 以外の値を指すインデックス値で表されます。 シーケンスの数は、外側のリスト内の要素の batchOfSequences
数です。 各シーケンスの長さは、内部リスト内の対応するシーケンスの要素の batchOfSequences
数です。 各シーケンスは batchOfSequences
新しいシーケンスです。 ElementType
は、作成された Value オブジェクトのデータ型です。 現在、 float
サポート double
されています。
パラメーター:
dimension
: 1 ホット ベクトルの次元のサイズ。batchOfSequences
: サンプルのシーケンスを表すインデックスのコレクション。 外側vector
は可変長のシーケンスのコレクションを表し、内側vector
は個々のシーケンスを表します。device
: Value オブジェクトを作成するデバイス。readOnly
: このフラグが > の場合、値は読み取り専用ですtrue
。
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
可変長シーケンスのバッチを含む新しい Value オブジェクトを作成します。 各サンプルは、要素の 1 ホット ベクター dimension
内の 0 以外の値を指すインデックス値で表されます。 シーケンスの数は、外側のリスト内の要素の batchOfSequences
数です。 各シーケンスの長さは、内部リスト内の対応するシーケンスの要素の batchOfSequences
数です。 ElementType
は、作成された Value オブジェクトのデータ型です。 現在、 float
サポート double
されています。
パラメーター:
dimension
: 1 ホット ベクトルの次元のサイズ。batchOfSequences
: サンプルのシーケンスを表すインデックスのコレクション。 外側vector
は可変長のシーケンスのコレクションを表し、内側vector
は個々のシーケンスを表します。sequenceStartFlags
: ブール値のコレクション。 各要素は、対応するシーケンスが新しいシーケンスbatchOfSequences
(の場合) であるか、前のtrue
シーケンスの継続 (の場合false
) であるかを表します。device
: Value オブジェクトを作成するデバイス。readOnly
: このフラグが > の場合、値は読み取り専用ですtrue
。
スパース CSC 入力を使用して値を作成する
現在、圧縮スパース列形式 (CSC) がサポートされています。 CSC 形式では、行列が列メジャー形式で格納され、列インデックスを含む配列が圧縮されます。 CSC 形式のマトリックスは、次のパラメーターで表されます。
nonZeroValues
: 行列のすべての 0 以外の値を列メジャー形式で保持するデータ配列。rowIndices
: 配列内の対応する要素の行インデックスを含む配列nonZeroValues
。colStarts
: 配列にインデックスを保持する配列rowIndices
とnonZeroValues
.
CSC形式の詳細な説明 については、こちらを参照してください。
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
CSC スパース入力形式を使用して、一連のサンプルを含む新しい Value オブジェクトを作成します。 シーケンスの長さは、スパース マトリックスの行数です。 作成されたシーケンスは新しいシーケンスです。 ElementType
は、作成された Value オブジェクトのデータ型です。 現在、 float
サポート double
されています。
パラメーター:
sampleShape
: Value のテンソルシェイプ。 スパース入力の場合、テンソルシェイプの先行次元はテンソルシェイプの合計サイズと同じである必要があります。sequenceLength
: シーケンスの長さ。これはスパース マトリックス内の行数でもあります。colStarts
: 配列は、配列内の各列のインデックスをrowIndices
保持しますnonZeroValues
。rowIndices
: 配列内の対応する要素の行インデックスを含む配列nonZeroValues
。nonZeroValues
: スパース 行列内のすべての 0 以外の値を保持する配列。numNonZeroValues
: スパース マトリックス内の 0 以外の値の数。device
: Value オブジェクトを作成するデバイス。readOnly
: このフラグが > の場合、値は読み取り専用ですtrue
。
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
CSC スパース入力形式を使用して、一連のサンプルを含む新しい Value オブジェクトを作成します。 シーケンスの長さは、スパース マトリックスの行数です。 sequenceStartFlag は、このシーケンスが、このメソッドの前の呼び出しからの前のシーケンスの新しいシーケンスか継続かを指定します。 ElementType
は、作成された Value オブジェクトのデータ型です。 現在、 float
サポート double
されています。
パラメーター:
sampleShape
: Value のテンソルシェイプ。 スパース入力の場合、テンソルシェイプの先行次元はテンソルシェイプの合計サイズと同じである必要があります。sequenceLength
: シーケンスの長さ。これはスパース マトリックス内の行数でもあります。colStarts
: 配列は、配列内の各列のインデックスをrowIndices
保持しますnonZeroValues
。rowIndices
: 配列内の対応する要素の行インデックスを含む配列nonZeroValues
。nonZeroValues
: スパース 行列内のすべての 0 以外の値を保持する配列。numNonZeroValues
: スパース マトリックス内の 0 以外の値の数。sequenceStartFlag
:true
新しいシーケンスであることを示します。false
は、前のシーケンスの継続を意味します。device
: Value オブジェクトを作成するデバイス。readOnly
: このフラグが > の場合、値は読み取り専用ですtrue
。
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
CSC スパース入力形式を使用して、一連のサンプルを含む新しい Value オブジェクトを作成します。 シーケンスの長さは、スパース マトリックスの行数です。 作成されたシーケンスは新しいシーケンスです。 ElementType
は、作成された Value オブジェクトのデータ型です。 現在、 float
サポート double
されています。
パラメーター:
dimension
: 1 ホット ベクトルの次元のサイズ。sequenceLength
: シーケンスの長さ。これはスパース マトリックス内の行数でもあります。colStarts
: 配列は、配列内の各列のインデックスをrowIndices
保持しますnonZeroValues
。rowIndices
: 配列内の対応する要素の行インデックスを含む配列nonZeroValues
。nonZeroValues
: スパース 行列内のすべての 0 以外の値を保持する配列。numNonZeroValues
: スパース マトリックス内の 0 以外の値の数。device
: Value オブジェクトを作成するデバイス。readOnly
: このフラグが > の場合、値は読み取り専用ですtrue
。
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
CSC スパース入力形式を使用して、一連のサンプルを含む新しい Value オブジェクトを作成します。 シーケンスの長さは、スパース マトリックスの行数です。 sequenceStartFlag は、このシーケンスが新しいシーケンスであるか、前のシーケンスの継続であるかを指定します。 ElementType
は、作成された Value オブジェクトのデータ型です。 現在、 float
サポート double
されています。
パラメーター:
dimension
: 1 ホット ベクトルの次元のサイズ。sequenceLength
: シーケンスの長さ。これはスパース マトリックス内の行数でもあります。colStarts
: 配列は、配列内の各列のインデックスをrowIndices
保持しますnonZeroValues
。rowIndices
: 配列内の対応する要素の行インデックスを含む配列nonZeroValues
。nonZeroValues
: スパース 行列内のすべての 0 以外の値を保持する配列。numNonZeroValues
: スパース マトリックス内の 0 以外の値の数。sequenceStartFlag
:true
新しいシーケンスであることを示します。false
は、前のシーケンスの継続を意味します。device
: Value オブジェクトを作成するデバイス。readOnly
: このフラグが > の場合、値は読み取り専用ですtrue
。
NDArrayView から値を作成する
static ValuePtr CNTK::Value::Create(const NDShape& sampleShape, const std::vector<NDArrayViewPtr>& sequences, const DeviceDescriptor& device, bool readOnly = false
NDArrayViews のコレクションに基づいて新しい Value オブジェクトを作成します。 各シーケンスは sequences
新しいシーケンスです。
パラメーター:
sampleShape
: 作成される値のテンソルシェイプ。sequences
: NDArrayView で表されるシーケンスのコレクション。 各 NDArrayView はシーケンスを表します。device
: Value オブジェクトを作成するデバイス。readOnly
: このフラグが > の場合、値は読み取り専用ですtrue
。
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
NDArrayViews のコレクションに基づいて新しい Value オブジェクトを作成します。 sequenceStartFlags は、シーケンスが新しいシーケンスであるか、前のシーケンスの継続であるかを指定します。
パラメーター:
sampleShape
: 作成される値のテンソルシェイプ。sequences
: NDArrayView で表されるシーケンスのコレクション。 各 NDArrayView はシーケンスを表します。sequenceStartFlags
: ブール値のコレクション。 各要素は、対応するシーケンスが新しいシーケンスsequences
(の場合) であるか、前のtrue
シーケンスの継続 (の場合false
) であるかを表します。device
: Value オブジェクトを作成するデバイス。readOnly
: このフラグが > の場合、値は読み取り専用ですtrue
。
Value オブジェクトからデータをコピーする
template <typename ElementType> void CNTK::Value::CopyVariableValueTo(const Variable& outputVariable, std::vector<std::vector<ElementType>>& sequences
Value に格納されているデータを、指定されたバッファー sequences
にコピーします。 これは sequences
、可変長のシーケンスの一覧です。 外側のリストに含まれる項目の sequences
数は、値のシーケンスの数です。 外側のリストの各要素は、シーケンスを表します。 で表される vector<ElementType>
各シーケンスには、可変数のサンプルが含まれています。 各サンプルは、型 ElementType
が . サンプルの要素の数は、次の図形 outputVariable
によって決まります。 変数の図形は、値の図形と一致する必要があります。 ElementType
は、作成された Value オブジェクトのデータ型です。 現在、 float
サポート double
されています。
パラメーター:
outputVariable
: この値からデータをコピーするときの図形軸と動的軸を表しますsequences
。sequences
: Value からコピーされたデータを格納するために使用される出力バッファー。
void CNTK::Value::CopyVariableValueTo(const Variable& outputVariable, std::vector<std::vector<size_t>>& sequences
Value オブジェクトに格納されているデータを、指定されたバッファー sequences
にコピーします。 これは sequences
、可変長のシーケンスの一覧です。 外側のリストに含まれる項目の sequences
数は、値のシーケンスの数です。 外側のリストの各要素は、シーケンスを表します。 で表される vector<size_t>
各シーケンスには、可変数のサンプルが含まれています。 各サンプルは、1 ホット ベクター内の 0 以外の値を指すインデックスによって表されます。 1 ホット ベクターのディメンション サイズは、次で outputVariable
定義したサイズと一致する必要があります。
パラメーター:
outputVariable
: この値からデータをコピーするときの図形軸と動的軸を表しますsequences
。sequences
: Value からコピーされたデータを格納するために使用される出力バッファー。
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)
Value オブジェクトに格納されているデータを、CSC スパース形式のシーケンスを表すバッファーにコピーします。 シーケンス バッファーは、必要に応じてサイズ変更されます。 Value は outputVariable と同じテンソルシェイプを持つ必要があります。 返されるときに、 sequenceLength
Value に格納されているシーケンスの長さに設定されcolStarts
nonZeroValues
rowIndices
、列の開始インデックス、行インデックス、および 0 以外の値のデータが格納されnumNonZeroValues
、Value に含まれる 0 以外の値の数にthis
設定されます。
パラメーター:
outputVariable
: この値からバッファーにデータをコピーするときの図形軸と動的軸を示します。sequenceLength
: 返されるときに、値に格納されているシーケンスの長さに設定されます。colStarts
: 戻り値には、行列の各列の最初のゼロ以外の要素のインデックスnonZeorValues
が含まれます。rowIndices
: 戻り値には、行列の 0 以外の各要素の行インデックスが含まれます。nonZeroValues
: 戻り値には、行列のすべての 0 以外の要素の値が含まれます。numNonZeroValues
: 戻り値に対して、行列の 0 以外の要素の数を返します。
評価する関数を操作するヘルパー関数
FunctionPtr CNTK::Function::Clone(ParameterCloningMethod parameterCloneMethod = ParameterCloningMethod::Clone, const std::unordered_map<Variable, Variable>& replacements = {}) const
評価のために、このメソッドは複製された関数を作成するために呼び出され、別のスレッドが同じモデルを評価するために使用できます。 このためには、 parameterCloneMethod
既定値 ParameterCloningMethod::Share
に設定する必要があります。 このパラメーターは、複製された Function インスタンスに適用され、通常は評価には必要ない変数置換を指定します replacements
。
FunctionPtr CNTK::Function::FindByName(const std::wstring& name, bool nestedSearchInsideBlockFunction = false
'this' 関数の基になる関数グラフで、指定 name
された関数を見つけます。 同じ名前の複数の関数が存在する場合は、例外がスローされます。 true の場合 nestedSearchInsideBlockFunction
、ブロック関数内のすべての関数も検索されます。
std::vector<FunctionPtr> CNTK::Function::FindAllWithName(const std::wstring& name, bool nestedSearchInsideBlockFunction = false
"this" 関数の基になる関数グラフで、指定 name
された関数の一覧を見つけます。 true の場合 nestedSearchInsideBlockFunction
、ブロック関数内のすべての関数も検索されます。
FunctionPtr CNTK::Combine(const std::vector<Variable>& operands, const std::wstring& name = L""
関数の指定したリスト 'オペランド' の出力を結合する新しい Function インスタンスを作成します。 新しい '関数' の 'Outputs' は、指定された各 'オペランド' 関数の 'Outputs' の和集合です。 たとえば、分類モデルを作成する場合、通常、CrossEntropy loss 関数と ClassificationError 関数は計算グラフのルートを構成します。これは、"結合" d で 2 つの出力を持つ単一の関数を作成できます。すなわち。 CrossEntropy Loss と ClassificationError の出力。
FunctionPtr CNTK::AsComposite(const FunctionPtr& rootFunction, const std::wstring& name = L""
指定した関数をルートとして持つ複合関数を作成します rootFunction
。 複合は、指定された基になる Functions のグラフ全体をカプセル化する上位レベルの関数を表します rootFunction
。
FunctionPtr CNTK::Alias(const Variable& operand, const std::wstring& name = L""
指定した単なるエイリアスである新しい Function インスタンスを作成します operand
。
上記の関数で使用されるデータ型の詳細については、 CNTKLibrary.h を参照してください。
例
C++ の CNTKLibraryCPPEvalCPUOnlyExamples と CNTKLibraryCPPEvalGPUExamples の例は、評価のための CNTK ライブラリの使用方法を示しています。 サンプルでは、複数のスレッドを使用して複数の評価を並列で実行し、スレッド間でモデル パラメーターを共有する方法も示しています。