DML_REVERSE_SUBSEQUENCES_OPERATOR_DESC 结构 (directml.h)
反转张量一个或多个 子序列的 元素。 根据提供的轴和序列长度选择要反转的子序列集。
语法
struct DML_REVERSE_SUBSEQUENCES_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *SequenceLengthsTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT Axis;
};
成员
InputTensor
类型: const DML_TENSOR_DESC*
包含要反转的元素的输入张量。
SequenceLengthsTensor
类型: const DML_TENSOR_DESC*
包含要反转的每个子序列的值的张量,表示该子序列的元素的长度。 仅反转子序列长度内的元素;沿该轴的其余元素将保持不变地复制到输出。
此张量必须具有等于 InputTensor 的维度计数和大小,轴参数指定的维度除外。 轴尺寸的大小必须为 1。 例如,如果 InputTensor 的大小为 {2,3,4,5}
, 而 Axis 为 1,则 SequenceLengthsTensor 的大小必须为 {2,1,4,5}
。
如果子序列的长度超过该轴上的最大元素数,则此运算符的行为就像将值固定到最大值一样。
OutputTensor
类型: const DML_TENSOR_DESC*
要向其写入结果的输出张量。 此张量的大小和数据类型必须与 InputTensor 相同。
Axis
类型: UINT
要反转元素的维度的索引。 此值必须小于 InputTensor 的 DimensionCount。
示例
示例 1
InputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]]]]
SequenceTensor: (Sizes:{1,1,3,1}, DataType:UINT32)
[[[[2],
[4],
[3]]]]
Axis: 3
OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[ 2, 1, 3, 4],
[ 8, 7, 6, 5],
[11, 10, 9, 12]]]]
示例 2。 沿不同轴反转
InputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]]]]
SequenceTensor: (Sizes:{1,1,1,4}, DataType:UINT32)
[[[[2, 3, 1, 0]]]]
Axis: 2
OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[5, 10, 3, 4], // Notice that sequence lengths of 1 and 0 are effective nops
[1, 6, 7, 8],
[9, 2, 11, 12]]]]
可用性
此运算符是在 中引入的 DML_FEATURE_LEVEL_2_1
。
张量约束
- InputTensor、 OutputTensor 和 SequenceLengthsTensor 必须具有相同的 DimensionCount。
- InputTensor 和 OutputTensor 必须具有相同的 数据类型。
Tensor 支持
DML_FEATURE_LEVEL_5_0及更高版本
张 | 种类 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|
InputTensor | 输入 | 1 到 8 | FLOAT64、FLOAT32、FLOAT16、INT64、INT32、INT16、INT8、UINT64、UINT32、UINT16、UINT8 |
SequenceLengthsTensor | 输入 | 1 到 8 | UINT64、UINT32 |
OutputTensor | 输出 | 1 到 8 | FLOAT64、FLOAT32、FLOAT16、INT64、INT32、INT16、INT8、UINT64、UINT32、UINT16、UINT8 |
DML_FEATURE_LEVEL_4_0及更高版本
张 | 种类 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|
InputTensor | 输入 | 1 到 8 | FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8 |
SequenceLengthsTensor | 输入 | 1 到 8 | UINT32 |
OutputTensor | 输出 | 1 到 8 | FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8 |
DML_FEATURE_LEVEL_3_0及更高版本
张 | 种类 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|
InputTensor | 输入 | 4 到 5 | FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8 |
SequenceLengthsTensor | 输入 | 4 到 5 | UINT32 |
OutputTensor | 输出 | 4 到 5 | FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8 |
DML_FEATURE_LEVEL_2_1及更高版本
张 | 种类 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|
InputTensor | 输入 | 4 | FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8 |
SequenceLengthsTensor | 输入 | 4 | UINT32 |
OutputTensor | 输出 | 4 | FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8 |
要求
标头 | directml.h |