当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.quantization.quantize_and_dequantize_v2用法及代码示例


量化然后去量化一个张量。

用法

tf.quantization.quantize_and_dequantize_v2(
    input, input_min, input_max, signed_input=True, num_bits=8, range_given=False,
    round_mode='HALF_TO_EVEN', name=None, narrow_range=False, axis=None
)

参数

  • input 用于量化和去量化的Tensor
  • input_min 如果range_given=True,最小输入值,需要在量化表示中表示。如果指定了轴,则这应该是沿轴的每个切片的最小值向量。
  • input_max 如果range_given=True,则量化表示中需要表示的最大输入值。如果指定了轴,则这应该是沿轴的每个切片的最大值向量。
  • signed_input 如果量化有符号或无符号则为真。
  • num_bits 量化的位宽。
  • range_given 如果为真,则使用 input_mininput_max 作为输入范围,否则从输入 Tensor 确定最小值和最大值。
  • round_mode 从浮点值舍入到量化值时的舍入模式。 ['HALF_TO_EVEN','HALF_UP'] 之一
  • name 操作的可选名称。
  • narrow_range 如果为真,则量化最小值的绝对值与量化最大值相同,而不是大 1。即对于 8 位量化,最小值是 -127 而不是 -128。
  • axis 整数。如果指定,则指输入张量的维度,这样量化将是沿该维度的每个切片。

返回

  • 一个Tensor。每个元素都是对 input 的相应元素进行量化和反量化的结果。

将超出范围的量化梯度定义更新为 0。要模拟 V1 的行为 tf.quantization.quantize_and_dequantize(...) 使用 tf.grad_pass_through(tf.quantization.quantize_and_dequantize_v2) (...)。

示例用法:

def getQuantizeOp(input):
    input_tensor = tf.placeholder(tf.float32, shape=[4, 4])
    net = tf.quantization.quantize_and_dequantize(input,
                                                  input_min=min_threshold,
                                                  input_max=max_threshold,
                                                  range_given=True)

To simulate v1 behavior:

def testDecomposeQuantizeDequantize(self):
    def f(input_tensor):
      return tf.quantization.quantize_and_dequantize_v2(input_tensor,
                                                        input_min = 5.0,
                                                        input_max= -10.0,
                                                        range_given=True)
    input_tensor = tf.placeholder(tf.float32, shape=[4, 4])
    net = tf.grad_pass_through(f)(input_tensor)

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.quantization.quantize_and_dequantize_v2。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。