DML_SLICE_OPERATOR_DESC結構 (directml.h)
擷取輸入張量 (「配量」) 。
配量中複製的專案會使用每個維度的三個值來決定。
- 位移會標記要複製到維度中的第一個專案。
- 大小會標示要複製到維度中的項目數目。
- stride 表示維度中的元素遞增或步驟。
提供的 Offsets、 Sizes 和 Strides 只能複製輸入 tensor (超出界限讀取範圍的元素,不允許) 。 配量 的大小 必須完全符合輸出張量大小。 一般而言,複製的項目會計算如下。
OutputTensor[OutputCoordinates] = InputTensor[Offsets + Strides * OutputCoordinates]
語法
struct DML_SLICE_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT DimensionCount;
const UINT *Offsets;
const UINT *Sizes;
const UINT *Strides;
};
成員
InputTensor
類型: const DML_TENSOR_DESC*
要從中擷取配量的張量。
OutputTensor
類型: const DML_TENSOR_DESC*
要寫入交叉分析數據結果的 Tensor。
DimensionCount
類型: UINT
維度的數目。 此欄位會決定 Offsets、 Size 和 Strides 陣列的大小。 此值必須符合輸入和輸出張量的 DimensionCount 。 此值必須介於 1 到 8 之間,包括從 DML_FEATURE_LEVEL_3_0
開始;先前的功能層級需要 4 或 5 的值。
Offsets
類型:_Field_size_ (DimensionCount) const UINT*
數位,包含元素中輸入張量之每個維度的配量開頭。
Sizes
類型:_Field_size_ (DimensionCount) const UINT*
數位,包含元素中每個維度的配量大小。 這個陣列中的值必須符合輸出張量中指定的大小。
Strides
類型:_Field_size_ (DimensionCount) const UINT*
數位,包含元素中輸入張量之每個維度的配量步幅。 大於 1 的步幅表示輸入張量的專案可能會略過 (例如,2 的步調會沿著維度) 選取每秒一個元素。
範例
下列範例使用相同的輸入張量:
InputTensor: (Sizes:{1, 1, 4, 4}, DataType:FLOAT32)
[[[[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12],
[13, 14, 15, 16]]]]
範例 1. 連續配量
Offsets = {0, 0, 1, 2}
Sizes = {1, 1, 3, 2}
Strides = {1, 1, 1, 1}
OutputTensor: (Sizes:{1, 1, 3, 2}, DataType:FLOAT32)
[[[[ 7, 8],
[11, 12],
[15, 16]]]]
範例 2. Strided 配量
Offsets = {0, 0, 1, 0}
Sizes = {1, 1, 2, 2}
Strides = {1, 1, 2, 3}
OutputTensor: (Sizes:{1, 1, 2, 2}, DataType:FLOAT32)
[[[[ 5, 8],
[13, 16]]]]
備註
在 中DML_FEATURE_LEVEL_2_1
引進了較新版本的這個運算元DML_SLICE1_OPERATOR_DESC。
可用性
這個運算子是在 中 DML_FEATURE_LEVEL_1_0
引進的。
Tensor 條件約束
InputTensor 和 OutputTensor 必須具有相同 的 DataType 和 DimensionCount。
Tensor 支援
DML_FEATURE_LEVEL_4_1和更新版本
張 | 種類 | 支援的維度計數 | 支援的資料類型 |
---|---|---|---|
InputTensor | 輸入 | 1 到 8 | FLOAT64、FLOAT32、FLOAT16、INT64、INT32、INT16、INT8、UINT64、UINT32、UINT16、UINT8 |
OutputTensor | 輸出 | 1 到 8 | FLOAT64、FLOAT32、FLOAT16、INT64、INT32、INT16、INT8、UINT64、UINT32、UINT16、UINT8 |
DML_FEATURE_LEVEL_3_0和更新版本
張 | 種類 | 支援的維度計數 | 支援的資料類型 |
---|---|---|---|
InputTensor | 輸入 | 1 到 8 | FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8 |
OutputTensor | 輸出 | 1 到 8 | FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8 |
DML_FEATURE_LEVEL_2_1和更新版本
張 | 種類 | 支援的維度計數 | 支援的資料類型 |
---|---|---|---|
InputTensor | 輸入 | 4 到 5 | FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8 |
OutputTensor | 輸出 | 4 到 5 | FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8 |
DML_FEATURE_LEVEL_1_0和更新版本
張 | 種類 | 支援的維度計數 | 支援的資料類型 |
---|---|---|---|
InputTensor | 輸入 | 4 到 5 | FLOAT32、FLOAT16、INT32、INT16、UINT32、UINT16 |
OutputTensor | 輸出 | 4 到 5 | FLOAT32、FLOAT16、INT32、INT16、UINT32、UINT16 |
規格需求
需求 | 值 |
---|---|
標頭 | directml.h |