DML_NONZERO_COORDINATES_OPERATOR_DESC 结构 (directml.h)
计算输入张量的所有非零元素的 N 维坐标。
此运算符生成值 MxN 矩阵,其中每行 M 都包含输入的非零值的 N 维坐标。 使用 FLOAT32 或 FLOAT16 输入时,负和正 0 (0.0f 和 -0.0f) 将被视为零,以用于此运算符。
运算符要求 OutputCoordinatesTensor 的大小足够大,以适应输入的每个元素都非零的最坏情况。 此运算符通过 OutputCountTensor 返回非零元素的计数,调用方可以检查该计数以确定写入 OutputCoordinatesTensor 的坐标数。
语法
struct DML_NONZERO_COORDINATES_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *OutputCountTensor;
const DML_TENSOR_DESC *OutputCoordinatesTensor;
};
成员
InputTensor
类型: const DML_TENSOR_DESC*
输入张量。
OutputCountTensor
类型: const DML_TENSOR_DESC*
一个输出张量,用于保存输入张量中非零元素的计数。 此张量必须是标量 ,即此张量的大小必须全部为 1。 此张量的类型必须为 UINT32。
OutputCoordinatesTensor
类型: const DML_TENSOR_DESC*
一个输出张量,用于保存非零输入元素的 N 维坐标。
如果 DimensionCount为{1,1,M,N}
4) ,则此张量的大小必须为 (;{1,1,1,M,N}
如果 DimensionCount 为 5) ,则此张量的大小必须为 (,其中 M 是 InputTensor 中的元素总数,N 大于或等于 InputTensor的有效排名,最高为输入的 DimensionCount。
张量的有效排名由该张量(不包括大小 1 的前导维度)的 DimensionCount 确定。 例如,大小为 的 {1,2,3,4}
张量的有效排名为 3,大小为 的张量同样有效 {1,1,5,5,5}
。 具有大小的 {1,1,1,1}
张量的有效排名为 0。
请考虑大小为 的 {1,1,12,5}
InputTensor。 此输入张量包含 60 个元素,有效秩为 2。 在此示例中 ,OutputCoordinatesTensor 的所有有效大小都采用 形式 {1,1,60,N}
,其中 N >= 2,但不大于本示例中的 DimensionCount (4) 。
写入此张量中的坐标保证按升序元素索引进行排序。 例如,如果输入张量在坐标 、 和 处有 3 个非零值,则写入 OutputCoordinatesTensor 的值将为 [[0,5], [1,0], [1,2]]
。{0,5}{1,2}{1,0}
虽然此张量要求其维度 M 等于输入张量中的元素数,但此运算符将只向此张量写入 OutputCount 元素的最大数目。 OutputCount 通过标量 OutputCountTensor 返回。
注意
此运算符完成后,将不定义 OutputCount 之外的此张量的其他元素。 不应依赖于这些元素的值。
示例
InputTensor: (Sizes:{1,1,2,4}, DataType:FLOAT32)
[[1.0f, 0.0f, 0.0f, 2.0f],
[-0.0f, 3.5f, 0.0f, -5.2f]]
OutputCountTensor: (Sizes:{1,1,1,1}, DataType:UINT32)
[4]
OutputCoordinatesTensor: (Sizes:{1,1,8,3}, DataType:UINT32)
[[0, 0, 0],
[0, 0, 3],
[0, 1, 1],
[0, 1, 3],
[0, 0, 0], //
[0, 0, 0], // Values in rows >= OutputCountTensor (4 in
[0, 0, 0], // this case) are left undefined
[0, 0, 0]] //
注解
可用性
此运算符是在 中引入的 DML_FEATURE_LEVEL_3_0
。
Tensor 支持
DML_FEATURE_LEVEL_4_0及更高版本
张 | 种类 | 维度 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|---|
InputTensor | 输入 | { [D0], [D1], [D2], [D3], [D4], [D5], [D6], D7 } | 1 到 8 | FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8 |
OutputCountTensor | 输出 | { [1], [1], [1], [1], [1], [1], [1], 1 } | 1 到 8 | UINT32 |
OutputCoordinatesTensor | 输出 | { [1], [1], [1], [1], [1], [1], [1], M, N } | 2 到 8 | UINT32 |
DML_FEATURE_LEVEL_3_0及更高版本
张 | 种类 | 维度 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|---|
InputTensor | 输入 | { [D0], D1, D2, D3, D4 } | 4 到 5 | FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8 |
OutputCountTensor | 输出 | { [1], 1, 1, 1, 1 } | 4 到 5 | UINT32 |
OutputCoordinatesTensor | 输出 | { [1], 1, 1, M, N } | 4 到 5 | UINT32 |
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 10内部版本 20348 |
最低受支持的服务器 | Windows 10内部版本 20348 |
标头 | directml.h |