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 |