フォーム 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 |