共用方式為


DML_CUMULATIVE_SUMMATION_OPERATOR_DESC 結構 (directml.h)

在座標軸上加總張量的專案,將總和的執行中總和寫入輸出張量。

語法

struct DML_CUMULATIVE_SUMMATION_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *OutputTensor;
  UINT                  Axis;
  DML_AXIS_DIRECTION    AxisDirection;
  BOOL                  HasExclusiveSum;
};

成員

InputTensor

類型:const DML_TENSOR_DESC*

包含要加總之專案的輸入張量。

OutputTensor

類型:const DML_TENSOR_DESC*

要寫入結果累計總和的輸出張量。 這個張量的大小和資料類型必須與 InputTensor相同。

Axis

類型: UINT

要加總專案之維度的索引。 此值必須小於InputTensorDimensionCount

AxisDirection

類型: DML_AXIS_DIRECTION

DML_AXIS_DIRECTION列舉的其中一個值。 如果設定為 DML_AXIS_DIRECTION_INCREASING,則總和會透過遞增元素索引沿著指定座標軸周遊張量。 如果設定為 DML_AXIS_DIRECTION_DECREASING,則反向為 true,而總和會藉由遞減索引周遊元素。

HasExclusiveSum

類型: BOOL

如果 為 TRUE,則當將執行中的 Tally 寫入輸出張量時,會排除目前元素的值。 如果 為 FALSE,則目前元素的值會包含在執行中的 Tally 中。

範例

本節中的範例全都使用具有下列屬性的輸入張量。

InputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[2, 1, 3, 5],
   [3, 8, 7, 3],
   [9, 6, 2, 4]]]]

範例 1. 跨水準斜線的累計總和

Axis: 3
AxisDirection: DML_AXIS_DIRECTION_INCREASING
HasExclusiveSum: FALSE

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[2,  3,  6, 11],     // i.e. [2, 2+1, 2+1+3, 2+1+3+5]
   [3, 11, 18, 21],     //      [...                   ]
   [9, 15, 17, 21]]]]   //      [...                   ]

範例 2. 獨佔總和

HasExclusiveSum 設定為 TRUE 的效果,就是在寫入輸出張量時,將目前元素的值從執行中的 Tally 中排除。

Axis: 3
AxisDirection: DML_AXIS_DIRECTION_INCREASING
HasExclusiveSum: TRUE

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[0, 2,  3,  6],      // Notice the sum is written before adding the input,
   [0, 3, 11, 18],      // and the final total is not written to any output.
   [0, 9, 15, 17]]]]

範例 3. 軸方向

AxisDirection 設定為 DML_AXIS_DIRECTION_DECREASING 在計算執行中 Tally 時,會反轉元素周遊順序的效果。

Axis: 3
AxisDirection: DML_AXIS_DIRECTION_DECREASING
HasExclusiveSum: FALSE

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[11,  9,  8,  5],    // i.e. [2+1+3+5, 1+3+5, 3+5, 5]
   [21, 18, 10,  3],    //      [...                   ]
   [21, 12,  6,  4]]]]  //      [...                   ]

範例 4. 沿著不同軸加總

在此範例中,總和會沿著高度軸 (維度 2) 垂直發生。

Axis: 2
AxisDirection: DML_AXIS_DIRECTION_INCREASING
HasExclusiveSum: FALSE

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[ 2,  1,  3,  5],   // i.e. [2,    ...]
   [ 5,  9, 10,  8],   //      [2+3,  ...]
   [14, 15, 12, 12]]]] //      [2+3+9 ...]

備註

此運算子支援就地執行,這表示 OutputTensor 可在系結期間將 InputTensor 別名。

可用性

這個運算子是在 中 DML_FEATURE_LEVEL_2_1 引進的。

Tensor 條件約束

InputTensorOutputTensor 必須具有相同 的 DataTypeDimensionCount大小

Tensor 支援

DML_FEATURE_LEVEL_5_0和更新版本

種類 支援的維度計數 支援的資料類型
InputTensor 輸入 1 到 8 FLOAT32、FLOAT16、INT64、INT32、UINT64、UINT32
OutputTensor 輸出 1 到 8 FLOAT32、FLOAT16、INT64、INT32、UINT64、UINT32

DML_FEATURE_LEVEL_4_0和更新版本

種類 支援的維度計數 支援的資料類型
InputTensor 輸入 1 到 8 FLOAT32、FLOAT16、INT32、UINT32
OutputTensor 輸出 1 到 8 FLOAT32、FLOAT16、INT32、UINT32

DML_FEATURE_LEVEL_2_1和更新版本

種類 支援的維度計數 支援的資料類型
InputTensor 輸入 4 FLOAT32、FLOAT16、INT32、UINT32
OutputTensor 輸出 4 FLOAT32、FLOAT16、INT32、UINT32

需求

   
最低支援的用戶端 Windows 10組建 20348
最低支援的伺服器 Windows 10組建 20348
標頭 directml.h