共用方式為


DML_NONZERO_COORDINATES_OPERATOR_DESC 結構 (directml.h)

計算輸入張量之所有非零元素的 N 維座標。

這個運算符會產生值的 MxN 矩陣,其中每個數據列 M 都包含輸入中非零值的 N 維座標。 使用 FLOAT32FLOAT16 輸入時,負數和正數 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