DML_GEMM_OPERATOR_DESC 構造体 (directml.h)
フォーム Output = FusedActivation(Alpha * TransA(A) x TransB(B) + Beta * C)
の一般的な行列乗算関数を実行します。ここで x
、行列乗算を表し *
、スカラーを使用した乗算を表します。
この演算子には、レイアウト { BatchCount, ChannelCount, Height, Width }
を持つ 4D テンソルが必要であり、独立した行列乗算の BatchCount * ChannelCount 数が実行されます。
たとえば、ATensor の{ BatchCount, ChannelCount, M, K }
サイズが で、BTensor のサイズ{ BatchCount, ChannelCount, K, N }
が で、OutputTensor のサイズ{ BatchCount, ChannelCount, M, N }
が の場合、この演算子は、ディメンション {M,K} x {K,N} = {M,N} の BatchCount * ChannelCount 独立行列乗算を実行します。
構文
struct DML_GEMM_OPERATOR_DESC {
const DML_TENSOR_DESC *ATensor;
const DML_TENSOR_DESC *BTensor;
const DML_TENSOR_DESC *CTensor;
const DML_TENSOR_DESC *OutputTensor;
DML_MATRIX_TRANSFORM TransA;
DML_MATRIX_TRANSFORM TransB;
FLOAT Alpha;
FLOAT Beta;
const DML_OPERATOR_DESC *FusedActivation;
};
メンバー
ATensor
型: const DML_TENSOR_DESC*
A 行列を含むテンソル。 このテンソルのサイズは、{ BatchCount, ChannelCount, M, K }
TransA がDML_MATRIX_TRANSFORM_NONEの場合、または { BatchCount, ChannelCount, K, M }
TransA がDML_MATRIX_TRANSFORM_TRANSPOSE場合です。
BTensor
型: const DML_TENSOR_DESC*
B 行列を含むテンソル。 このテンソルのサイズは、{ BatchCount, ChannelCount, K, N }
TransB がDML_MATRIX_TRANSFORM_NONEの場合、または { BatchCount, ChannelCount, N, K }
TransB がDML_MATRIX_TRANSFORM_TRANSPOSE場合です。
CTensor
型: _Maybenull_ const DML_TENSOR_DESC*
C 行列 () nullptr
を含むテンソル。 指定しない場合、既定値は 0 です。 指定した場合、このテンソルの サイズ は である { BatchCount, ChannelCount, M, N }
必要があります。
OutputTensor
型: const DML_TENSOR_DESC*
結果を書き込むテンソル。 このテンソルの サイズ は です { BatchCount, ChannelCount, M, N }
。
TransA
ATensor に適用する変換。トランスポーズ、または変換なしのいずれか。
TransB
BTensor に適用する変換。トランスポーズ、または変換なしのいずれか。
Alpha
型: FLOAT
入力 ATensor と BTensor の積のスカラー乗数 の値。
Beta
型: FLOAT
オプションの入力 CTensor のスカラー乗数の値。 CTensor が指定されていない場合、この値は無視されます。
FusedActivation
型: _Maybenull_ const DML_OPERATOR_DESC*
GEMM の後に適用するオプションの融合アクティブ化レイヤー。 詳細については、「 パフォーマンスを向上させるために融合演算子を使用する」を参照してください。
可用性
この演算子は、 で DML_FEATURE_LEVEL_1_0
導入されました。
テンソル制約
- ATensor、 BTensor、 CTensor、 および OutputTensor には 、同じ DataType と DimensionCount が必要です。
- CTensor と OutputTensor のサイズは同じである必要があります。
Tensor のサポート
DML_FEATURE_LEVEL_4_0以上
テンソル | 種類 | Dimensions | サポートされているディメンション数 | サポートされるデータ型 |
---|---|---|---|---|
ATensor | 入力 | { [BatchCount], [ChannelCount], M, K } | 2 から 4 | FLOAT32、FLOAT16 |
BTensor | 入力 | { [BatchCount], [ChannelCount], K, N } | 2 から 4 | FLOAT32、FLOAT16 |
CTensor | 省略可能な入力 | { [BatchCount], [ChannelCount], M, N } | 2 から 4 | FLOAT32、FLOAT16 |
OutputTensor | 出力 | { [BatchCount], [ChannelCount], M, N } | 2 から 4 | FLOAT32、FLOAT16 |
DML_FEATURE_LEVEL_1_0以降
テンソル | 種類 | Dimensions | サポートされているディメンション数 | サポートされるデータ型 |
---|---|---|---|---|
ATensor | 入力 | { BatchCount, ChannelCount, M, K } | 4 | FLOAT32、FLOAT16 |
BTensor | 入力 | { BatchCount, ChannelCount, K, N } | 4 | FLOAT32、FLOAT16 |
CTensor | 省略可能な入力 | { BatchCount, ChannelCount, M, N } | 4 | FLOAT32、FLOAT16 |
OutputTensor | 出力 | { BatchCount, ChannelCount, M, N } | 4 | FLOAT32、FLOAT16 |
要件
要件 | 値 |
---|---|
Header | directml.h |