DML_SLICE_OPERATOR_DESC结构 (directml.h)
(输入张量 ) 提取单个子区域。
使用每个维度的三个值确定在切片中复制的元素。
- 偏移标记维度中要复制的第一个元素。
- 大小标记维度中要复制的元素数。
- 步幅指示维度中的元素增量或步长。
提供的 Offsets、 Sizes 和 Strides 必须仅复制输入张量边界内的元素, (不允许) 边界外读取。 切片 的大小必须与 输出张量大小完全匹配。 通常,复制的元素的计算方式如下。
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*
要向其写入切片数据结果的张量。
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。 跨距切片
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
。
张量约束
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 |
要求
要求 | 值 |
---|---|
Header | directml.h |