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 為 4) ,則此張量必須具有 (大小{1,1,M,N}
, (如果 {1,1,1,M,N}
DimensionCount 為 5) ,其中 M 是 InputTensor 中的元素總數,而 N 大於或等於 InputTensor的有效排名,最多為輸入的 DimensionCount。
tensor 的有效排名取決於該張量的 DimensionCount ,不包括大小 1 的前置維度。 例如,大小為的 {1,2,3,4}
Tensor 具有有效的排名 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) 。
寫入這個 Tensor 的座標保證會依遞增專案索引排序。 例如,如果輸入張量在座標、 和 上具有 3 個非零值,則寫入 OutputCoordinatesTensor 的值會是 [[0,5], [1,0], [1,2]]
。{0,5}{1,2}{1,0}
雖然這個張量要求其維度 M 等於輸入張量中的元素數目,但此運算符只會將 OutputCount 元素的最大值寫入這個張量。 OutputCount 會透過純量 OutputCountTensor 傳回。
注意
此運算子完成之後,未定義 OutputCount 以外的這個 Tensor 其餘元素。 您不應該依賴這些元素的值。
範例
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], 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 |