DML_ELEMENT_WISE_QUANTIZED_LINEAR_ADD_OPERATOR_DESC結構 (directml.h)
將 ATensor 中的每個元素新增至其對應元素,BTensor中,將結果放入 outputTensor 的對應元素中。 ATensor 和 BTensor 中包含的值會使用下列方程式來取消量化,然後加入並重新量化。
AValue = (A - AZeroPoint) * AScale
BValue = (B - BZeroPoint) * BScale
OutputValue = AValue + BValue
// For uint8 output, Min = 0, Max = 255
// For int8 output, Min = -128, Max = 127
OutputTensor = clamp(round(OutputValue / OutputScale) + OutputZeroPoint, Min, Max)
語法
struct DML_ELEMENT_WISE_QUANTIZED_LINEAR_ADD_OPERATOR_DESC {
const DML_TENSOR_DESC *ATensor;
const DML_TENSOR_DESC *AScaleTensor;
const DML_TENSOR_DESC *AZeroPointTensor;
const DML_TENSOR_DESC *BTensor;
const DML_TENSOR_DESC *BScaleTensor;
const DML_TENSOR_DESC *BZeroPointTensor;
const DML_TENSOR_DESC *OutputScaleTensor;
const DML_TENSOR_DESC *OutputZeroPointTensor;
const DML_TENSOR_DESC *OutputTensor;
};
成員
ATensor
類型:const DML_TENSOR_DESC*
包含左側輸入的張量。
AScaleTensor
類型:const DML_TENSOR_DESC*
包含 ATensor所需縮放比例的張量。 AScaleTensor 中預期的元素數目為 1。
注意
小數位數 0 會導致未定義的行為。
AZeroPointTensor
類型:_Maybenull_ const DML_TENSOR_DESC*
包含 ATensor所需零點的張量。 AZeroPointTensor 中預期的元素數目為 1。 AZeroPointTensor 是選擇性的張量,如果未提供,則預設為 0。
BTensor
類型:const DML_TENSOR_DESC*
包含右側輸入的張量。
BScaleTensor
類型:const DML_TENSOR_DESC*
包含 BTensor所需縮放比例的張量。 BScaleTensor 中預期的元素數目為 1。
注意
小數位數 0 會導致未定義的行為。
BZeroPointTensor
類型:_Maybenull_ const DML_TENSOR_DESC*
包含 BTensor所需零點的張量。 BZeroPointTensor 中預期的元素數目為 1。 BZeroPointTensor 是選擇性的張量,如果未提供,則預設為 0。
OutputScaleTensor
類型:const DML_TENSOR_DESC*
包含 OutputTensor所需縮放比例的張量。 這是輸入張量,定義在量化輸出值時要使用的輸出量化縮放比例。 OutputScaleTensor 中預期的元素數目為 1。
注意
小數位數 0 會導致未定義的行為。
OutputZeroPointTensor
類型:_Maybenull_ const DML_TENSOR_DESC*
包含 OutputTensor所需零點的張量。 這是輸入張量,定義在量化輸出值時要使用的輸出量化零點。 OutputZeroPointTensor 中預期的元素數目為 1。 OutputZeroPointTensor 是選擇性的張量,如果未提供,則預設為 0。
OutputTensor
類型:const DML_TENSOR_DESC*
要寫入結果的輸出張量。
言論
可用性
此運算子是在 DML_FEATURE_LEVEL_4_0中引進的。
Tensor 條件約束
- AScaleTensor、ATensor、AZeroPointTensor、BScaleTensor、BTensor、BZeroPointTensor、OutputScaleTensor、OutputTensor和 OutputZeroPointTensor 必須具有相同 DimensionCount。
- BTensor 和 BZeroPointTensor 必須具有相同 的 DataType。
- OutputTensor 和 OutputZeroPointTensor 必須具有相同的 DataType 。
- ATensor 和 AZeroPointTensor 必須具有相同 的 DataType。
Tensor 支援
張肌 | 類 | 支援的維度計數 | 支援的數據類型 |
---|---|---|---|
ATensor | 輸入 | 1 到 8 | INT8、UINT8 |
AScaleTensor | 輸入 | 1 到 8 | FLOAT32 |
AZeroPointTensor | 選擇性輸入 | 1 到 8 | INT8、UINT8 |
BTensor | 輸入 | 1 到 8 | INT8、UINT8 |
BScaleTensor | 輸入 | 1 到 8 | FLOAT32 |
BZeroPointTensor | 選擇性輸入 | 1 到 8 | INT8、UINT8 |
OutputScaleTensor | 輸入 | 1 到 8 | FLOAT32 |
OutputZeroPointTensor | 選擇性輸入 | 1 到 8 | INT8、UINT8 |
OutputTensor | 輸出 | 1 到 8 | INT8、UINT8 |
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 組建 22000 |
支援的最低伺服器 | Windows 組建 22000 |
標頭 | directml.h |