共用方式為


DML_ELEMENT_WISE_IF_OPERATOR_DESC 結構 (directml.h)

根據ConditionTensor中對應元素的值,從ATensorBTensor中選取專案。 ConditionTensor的非零元素會從ATensor選取,而零值元素則從BTensor選取。

f(cond, a, b) = a, if cond != 0
                b, otherwise

Example:
    [[1, 0], [1, 1]] // ConditionTensor
    [[1, 2], [3, 4]] // ATensor
    [[9, 8], [7, 6]] // BTensor

    [[1, 8], [3, 4]] // Output

語法

struct DML_ELEMENT_WISE_IF_OPERATOR_DESC {
  const DML_TENSOR_DESC *ConditionTensor;
  const DML_TENSOR_DESC *ATensor;
  const DML_TENSOR_DESC *BTensor;
  const DML_TENSOR_DESC *OutputTensor;
};

成員

ConditionTensor

類型:const DML_TENSOR_DESC*

要從中讀取的條件張量。

ATensor

類型:const DML_TENSOR_DESC*

包含左側輸入的張量。

BTensor

類型:const DML_TENSOR_DESC*

包含右側輸入的張量。

OutputTensor

類型:const DML_TENSOR_DESC*

要寫入結果的輸出張量。

備註

可用來在功能上建置其他匯總運算子,例如 LeakyRelu。 以下是虛擬程式碼中的圖例, (不是最有效率的方式,但可能) : LeakyRelu(x) = If(Less(x, 0), Mul(x, alpha), x)

可用性

這個運算子是在 中 DML_FEATURE_LEVEL_2_0 引進的。

Tensor 條件約束

  • ATensor、BTensorConditionTensorOutputTensor必須具有相同的DimensionCount大小
  • ATensorBTensor 和OutputTensor 必須具有相同 的 DataType

Tensor 支援

DML_FEATURE_LEVEL_5_0和更新版本

種類 支援的維度計數 支援的資料類型
ConditionTensor 輸入 1 到 8 UINT8
ATensor 輸入 1 到 8 FLOAT64、FLOAT32、FLOAT16、INT64、INT32、INT16、INT8、UINT64、UINT32、UINT16、UINT8
BTensor 輸入 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和更新版本

種類 支援的維度計數 支援的資料類型
ConditionTensor 輸入 1 到 8 UINT8
ATensor 輸入 1 到 8 FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8
BTensor 輸入 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_0和更新版本

種類 支援的維度計數 支援的資料類型
ConditionTensor 輸入 4 UINT8
ATensor 輸入 4 FLOAT16
BTensor 輸入 4 FLOAT16
OutputTensor 輸出 4 FLOAT16

需求

   
最低支援的用戶端 Windows 10版本 2004 (10.0;組建 19041)
最低支援的伺服器 Windows Server 版本 2004 (10.0;組建 19041)
標頭 directml.h