线性反量化¶
线性反量化 - 23¶
版本¶
名称: 线性反量化 (GitHub)
域:
main
自版本:
23
函数:
False
支持级别:
SupportType.COMMON
形状推断:
True
此版本的运算符自版本23起可用。
摘要¶
线性反量化运算符。它接收一个量化张量、一个比例因子和一个零点来计算全精度张量。反量化公式为 y = (x - x_zero_point) * x_scale
。 x_scale
和 x_zero_point
必须具有相同的形状,确定量化的粒度:标量用于每张量/每层量化,一维张量用于每轴量化,或具有与输入相同的秩用于块量化。有关量化粒度的详细信息,请参阅线性量化。
x_zero_point
和 x
必须具有相同的类型。 x
和 y
必须具有相同的形状。在反量化 int32
的情况下,没有零点(零点应该为0)。在浮点数8类型量化的这种情况下,通常不使用 zero-point
,但为了保持一致性,反量化公式保持不变,并且 x_scale
仍然决定输出类型。
属性¶
轴 - INT(默认为
'1'
)(可选)输入张量反量化维度的轴。用于每轴和块量化。负值表示从后开始计算维度。接受的范围是
[-r, r-1]
,其中r = rank(input)
。块大小 - INT(默认为
'0'
)(可选)量化块的大小(每个比例因子重复的次数)。仅用于块量化。块大小是一个正整数。给定
x
形状(D0, ..., Di, ..., Dn)
、y_scale
形状(S0, ... Si, ...Sn)
和axis=i
,接受的范围是[ceil(Di/Si), ceil(Di/(Si-1))-1]
输入¶
2到3个输入。
x (异构) - T1
要反量化的N维量化输入张量。
x_scale (异构) - T2
输入
x
的比例因子。对于每张量/每层反量化,比例因子是一个标量,对于每轴反量化,它是一个一维张量,对于块反量化,它具有与输入相同的形状,除了执行块操作的一个维度。x_zero_point (可选,异构) - T1
输入
x
的零点。形状必须与 x_scale 匹配。它是可选的。当未指定时,零点为0。
输出¶
y (异构) - T2
N维全精度输出张量。它与输入
x
具有相同的形状。
类型约束¶
T1 in (
tensor(float4e2m1)
,tensor(float8e4m3fn)
,tensor(float8e4m3fnuz)
,tensor(float8e5m2)
,tensor(float8e5m2fnuz)
,tensor(int16)
,tensor(int32)
,tensor(int4)
,tensor(int8)
,tensor(uint16)
,tensor(uint4)
,tensor(uint8)
)输入“x_zero_point”和“x”的类型。
T2 的数据类型为 (
tensor(bfloat16)
,tensor(float)
,tensor(float16)
)‘x_scale’ 决定输出类型。
线性反量化 - 21¶
版本¶
名称: 线性反量化 (GitHub)
域:
main
since_version:
21
函数:
False
支持级别:
SupportType.COMMON
形状推断:
True
该算子的版本从21版本开始可用。
摘要¶
线性反量化算子。它接收一个量化后的张量、一个比例因子和一个零点,来计算全精度张量。反量化公式为 y = (x - x_zero_point) * x_scale
。 x_scale
和 x_zero_point
必须具有相同的形状,决定量化的粒度:标量用于每张量/每层量化,一维张量用于每轴量化,或者具有与输入相同的秩用于块量化。有关量化粒度的详细信息,请参阅 QuantizeLinear。 x_zero_point
和 x
必须具有相同的数据类型。 x
和 y
必须具有相同的形状。在反量化 int32
的情况下,没有零点(零点应该为 0)。在 float8 类型量化的场景下,通常不使用 zero-point
,但为了保持一致性,反量化公式保持不变,并且 x_scale
仍然决定输出类型。
属性¶
轴 - INT(默认为
'1'
)(可选)输入张量反量化维度的轴。用于每轴和块量化。负值表示从后开始计算维度。接受的范围是
[-r, r-1]
,其中r = rank(input)
。块大小 - INT(默认为
'0'
)(可选)量化块的大小(每个比例因子重复的次数)。仅用于块量化。块大小是一个正整数。给定
x
形状(D0, ..., Di, ..., Dn)
、y_scale
形状(S0, ... Si, ...Sn)
和axis=i
,接受的范围是[ceil(Di/Si), ceil(Di/(Si-1))-1]
输入¶
2到3个输入。
x (异构) - T1
要反量化的N维量化输入张量。
x_scale (异构) - T2
输入
x
的比例因子。对于每张量/每层反量化,比例因子是一个标量,对于每轴反量化,它是一个一维张量,对于块反量化,它具有与输入相同的形状,除了执行块操作的一个维度。x_zero_point (可选,异构) - T1
输入
x
的零点。形状必须与 x_scale 匹配。它是可选的。当未指定时,零点为0。
输出¶
y (异构) - T2
N维全精度输出张量。它与输入
x
具有相同的形状。
类型约束¶
T1 的数据类型为 (
tensor(float8e4m3fn)
,tensor(float8e4m3fnuz)
,tensor(float8e5m2)
,tensor(float8e5m2fnuz)
,tensor(int16)
,tensor(int32)
,tensor(int4)
,tensor(int8)
,tensor(uint16)
,tensor(uint4)
,tensor(uint8)
)输入“x_zero_point”和“x”的类型。
T2 的数据类型为 (
tensor(bfloat16)
,tensor(float)
,tensor(float16)
)‘x_scale’ 决定输出类型。
线性反量化 - 19¶
版本¶
名称: 线性反量化 (GitHub)
域:
main
since_version:
19
函数:
False
支持级别:
SupportType.COMMON
形状推断:
True
该算子的版本从19版本开始可用。
摘要¶
线性反量化算子。它接收一个量化后的张量、一个比例因子和一个零点,来计算全精度张量。反量化公式为 y = (x - x_zero_point) * x_scale
。 x_scale
和 x_zero_point
必须具有相同的形状,可以是标量(用于每张量/每层量化),也可以是一维张量(用于每轴量化)。 x_zero_point
和 x
必须具有相同的数据类型。 x
和 y
必须具有相同的形状。在反量化 int32 的情况下,没有零点(零点应该为 0)。在 float8e4m3fn、float8e4m3fnuz、float8e5m2、float8e5m2fnuz 量化的场景下,通常不使用 zero-point
,但为了保持一致性,反量化公式保持不变,并且 ‘x_scale’ 仍然决定输出类型。
属性¶
轴 - INT(默认为
'1'
)(可选) 输入张量反量化维度的轴。仅用于每轴量化。负值表示从后往前计算维度。可接受的范围是
[-r, r-1]
,其中r = rank(input)
。当输入的秩为 1 时,将应用每张量量化,在这种情况下,轴将变得不必要。
输入¶
2到3个输入。
x (异构) - T1
要反量化的N维量化输入张量。
x_scale (异构) - T2
输入 ‘x’ 的比例因子。它可以是标量(表示每张量/层反量化),也可以是一维张量(表示每轴反量化)。
x_zero_point (可选,异构) - T1
输入 ‘x’ 的零点。形状必须与 x_scale 匹配。它是可选的。当未指定时,零点为 0。
输出¶
y (异构) - T2
N 维全精度输出张量。它与输入 ‘x’ 具有相同的形状。
类型约束¶
T1 的数据类型为 (
tensor(float8e4m3fn)
,tensor(float8e4m3fnuz)
,tensor(float8e5m2)
,tensor(float8e5m2fnuz)
,tensor(int32)
,tensor(int8)
,tensor(uint8)
)将 ‘x_zero_point’ 和 ‘x’ 约束为 8 位整数或浮点数,或 32 位整数张量。
T2 的数据类型为 (
tensor(bfloat16)
,tensor(float)
,tensor(float16)
)‘x_scale’ 决定输出类型。
线性反量化 - 13¶
版本¶
名称: 线性反量化 (GitHub)
域:
main
since_version:
13
函数:
False
支持级别:
SupportType.COMMON
形状推断:
True
该算子的版本从13版本开始可用。
摘要¶
线性反量化算子。它接收一个量化后的张量、一个比例因子和一个零点,来计算全精度张量。反量化公式为 y = (x - x_zero_point) * x_scale
。 x_scale
和 x_zero_point
必须具有相同的形状,可以是标量(用于每张量/每层量化),也可以是一维张量(用于每轴量化)。 x_zero_point
和 x
必须具有相同的数据类型。 x
和 y
必须具有相同的形状。在反量化 int32 的情况下,没有零点(零点应该为 0)。
属性¶
轴 - INT(默认为
'1'
)(可选) 输入张量反量化维度的轴。对于每张量量化,此属性将被忽略。负值表示从后往前计算维度。可接受的范围是 [-r, r-1],其中 r = rank(input)。
输入¶
2到3个输入。
x (异构) - T
要反量化的N维量化输入张量。
x_scale (异构) - tensor(float)
输入 ‘x’ 的比例因子。它可以是标量(表示每张量/层反量化),也可以是一维张量(表示每轴反量化)。
x_zero_point (可选,异构) - T
输入 ‘x’ 的零点。形状必须与 x_scale 匹配。它是可选的。当未指定时,零点为 0。
输出¶
y (异构) - tensor(float)
N 维全精度输出张量。它与输入 ‘x’ 具有相同的形状。
类型约束¶
T 的数据类型为 (
tensor(int32)
,tensor(int8)
,tensor(uint8)
)将 ‘x_zero_point’ 和 ‘x’ 约束为 8 位/32 位整数张量。
线性反量化 - 10¶
版本¶
名称: 线性反量化 (GitHub)
域:
main
since_version:
10
函数:
False
支持级别:
SupportType.COMMON
形状推断:
True
该算子的版本从10版本开始可用。
摘要¶
线性反量化算子。它接收一个量化后的张量、一个比例因子、一个零点来计算全精度张量。反量化公式为 y = (x - x_zero_point) * x_scale。‘x_scale’ 和 ‘x_zero_point’ 均为标量。‘x_zero_point’ 和 ‘x’ 必须具有相同的数据类型。‘x’ 和 ‘y’ 必须具有相同的形状。在反量化 int32 的情况下,没有零点(零点应该为 0)。
输入¶
2到3个输入。
x (异构) - T
要反量化的N维量化输入张量。
x_scale (异构) - tensor(float)
输入 ‘x’ 的比例因子。它是一个标量,表示每张量/层量化。
x_zero_point (可选,异构) - T
输入 ‘x’ 的零点。它是一个标量,表示每张量/层量化。它是可选的。当未指定时,默认值为 0。
输出¶
y (异构) - tensor(float)
N 维全精度输出张量。它与输入 ‘x’ 具有相同的形状。
类型约束¶
T 的数据类型为 (
tensor(int32)
,tensor(int8)
,tensor(uint8)
)将 ‘x_zero_point’ 和 ‘x’ 约束为 8 位/32 位整数张量。