反量化线性

DequantizeLinear - 23

版本

  • 名称: DequantizeLinear (GitHub)

  • 域名: main

  • since_version: 23

  • 函数: False

  • support_level: SupportType.COMMON

  • 形状推断: True

此版本的运算符自版本23起可用。

摘要

线性反量化操作符。它消耗一个量化张量、一个比例和一个零点来计算全精度张量。反量化公式为 y = (x - x_zero_point) * x_scalex_scalex_zero_point 必须具有相同的形状,确定量化的粒度:标量用于每张量/每层量化,一维张量用于每轴量化,或者具有与输入相同的秩用于块量化。有关量化粒度的详细信息,请参见 QuantizeLinear。

x_zero_pointx 必须具有相同的类型。xy 必须具有相同的形状。在反量化 int32 的情况下,没有零点(零点应为0)。 zero-point 通常在 float8 和 4 位类型量化的情况下不使用,但反量化公式保持一致以确保一致性。输出类型由属性 output_dtype 决定。如果未提供 output_dtype,则输出类型与 x_scale 相同。输出类型还决定了乘法操作的精度。

属性

  • axis - INT (默认为 '1'):

    (可选)输入张量的去量化维度的轴。用于逐轴和块量化。负值表示从后向前计算维度。接受的范围是 [-r, r-1],其中 r = rank(input)

  • block_size - INT (默认值为 '0'):

    (可选)量化块的大小(每个比例复制的次数)。仅用于块量化。块大小是一个正整数。给定x形状(D0, ..., Di, ..., Dn)y_scale形状(S0, ... Si, ...Sn)axis=i,可接受的范围是[ceil(Di/Si), ceil(Di/(Si-1))-1]

  • output_dtype - INT (默认为 '0'):

    (可选)输出数据类型。如果未提供,则从x_scale数据类型(T2)推断输出数据类型。

输入

在2到3个输入之间。

  • x(异构) - T1:

    需要反量化的N维量化输入张量。

  • x_scale (异构) - T2:

    输入 x 的缩放比例。对于每张量/每层的反量化,缩放比例是一个标量;对于每轴的反量化,它是一个一维张量;对于分块反量化,它具有与输入相同的形状,除了执行分块的维度。

  • x_zero_point(可选,异构) - T1:

    输入 x 的零点。形状必须与 x_scale 匹配。它是可选的。如果未指定,零点为 0。

输出

  • y (异构) - T3:

    N-D 全精度输出张量。它与输入 x 具有相同的形状。数据类型由 output_dtype 属性指定,如果该属性不存在,则由 x_scale 的类型决定。

类型约束

  • T1 在 ( 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’的类型。

  • T3 在 ( tensor(bfloat16), tensor(float), tensor(float16) ) 中:

    输出‘y’的类型。

DequantizeLinear - 21

版本

  • 名称: DequantizeLinear (GitHub)

  • 域名: main

  • since_version: 21

  • 函数: False

  • support_level: SupportType.COMMON

  • 形状推断: True

此版本的运算符自版本21起可用。

摘要

线性反量化操作符。它消耗一个量化张量、一个比例和一个零点来计算全精度张量。反量化公式为 y = (x - x_zero_point) * x_scalex_scalex_zero_point 必须具有相同的形状,决定量化的粒度:标量用于每张量/每层量化,一维张量用于每轴量化,或者具有与输入相同的秩用于块量化。有关量化粒度的详细信息,请参见 QuantizeLinear。 x_zero_pointx 必须具有相同的类型。 xy 必须具有相同的形状。在反量化 int32 的情况下,没有零点(零点应为 0)。 zero-point 通常在 float8 类型量化的情况下不使用,但为了保持一致性,反量化公式保持不变,并且 x_scale 仍然决定输出类型。

属性

  • axis - INT (默认为 '1'):

    (可选)输入张量的去量化维度的轴。用于逐轴和块量化。负值表示从后向前计算维度。接受的范围是 [-r, r-1],其中 r = rank(input)

  • block_size - 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-D 全精度输出张量。它与输入 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’ 决定了输出类型。

DequantizeLinear - 19

版本

  • 名称: DequantizeLinear (GitHub)

  • 域名: main

  • since_version: 19

  • 函数: False

  • support_level: SupportType.COMMON

  • 形状推断: True

此版本的运算符自版本19起可用。

总结

线性反量化操作符。它消耗一个量化张量、一个比例和一个零点来计算全精度张量。 反量化公式为 y = (x - x_zero_point) * x_scalex_scalex_zero_point 必须具有相同的形状,并且可以是标量 用于每张量/每层量化,或者是一维张量用于每轴量化。 x_zero_pointx 必须具有相同的类型。 xy 必须具有相同的形状。在反量化 int32 的情况下, 没有零点(零点应为 0)。 zero-point 通常在 float8e4m3fn、float8e4m3fnuz、float8e5m2、float8e5m2fnuz 量化的情况下不使用, 但反量化公式保持一致,并且 'x_scale' 仍然决定输出类型。

属性

  • axis - 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-D 全精度输出张量。它与输入 '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’ 决定了输出类型。

DequantizeLinear - 13

版本

  • 名称: DequantizeLinear (GitHub)

  • 域名: main

  • since_version: 13

  • 函数: False

  • support_level: SupportType.COMMON

  • 形状推断: True

此版本的运算符自版本13起可用。

摘要

线性反量化操作符。它消耗一个量化张量、一个比例和一个零点来计算全精度张量。 反量化公式为 y = (x - x_zero_point) * x_scalex_scalex_zero_point 必须具有相同的形状,并且可以是标量 用于每张量/每层量化,或者是一维张量用于每轴量化。 x_zero_pointx 必须具有相同的类型。 xy 必须具有相同的形状。在反量化 int32 的情况下, 没有零点(零点应为 0)。

属性

  • axis - 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-D 全精度输出张量。它与输入 'x' 具有相同的形状。

类型约束

  • T 在 ( tensor(int32), tensor(int8), tensor(uint8) ):

    将‘x_zero_point’和‘x’限制为8位/32位整数张量。

DequantizeLinear - 10

版本

  • 名称: DequantizeLinear (GitHub)

  • 域名: main

  • since_version: 10

  • 函数: False

  • support_level: 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-D 全精度输出张量。它与输入 'x' 具有相同的形状。

类型约束

  • T 在 ( tensor(int32), tensor(int8), tensor(uint8) ):

    将‘x_zero_point’和‘x’限制为8位/32位整数张量。