阅读(9.1k) 书签 (0)

怎么对TensorFlow进行假量化

2018-10-16 18:04 更新

tf.fake_quant_with_min_max_args

fake_quant_with_min_max_args(
    inputs,
    min=None,
    max=None,
    num_bits=None,
    narrow_range=None,
    name=None
)

参见指南:张量变换>假量化

假量化的 '输入(inputs)' 张量,类型浮动到相同类型的 '输出(outputs)' 张量.

属性 [min; max] 定义 inputs 数据的钳位范围.inputs 值被量化为量化范围([0; 2^num_bits - 1] 当 narrow_range为假的,并且 [1; 2^num_bits - 1] 为真时),然后被去量化(de-quantized)并作为 [min; max] 间隔中的浮点输出.num_bits 是量化的位宽;介于 2 和 8 之间(包含).

量化被称为假,因为输出仍处于浮点状态.

参数:

  • inputs:float32 类型的张量.
  • min:可选浮点型.默认值为-6.
  • max:可选浮点型.默认值为6.
  • num_bits:可选的整数型.默认值为8.
  • narrow_range:可选布尔值.默认取值为 False.
  • name:操作的名称(可选).

返回:

float32 类型的张量.

tf.fake_quant_with_min_max_args_gradient

fake_quant_with_min_max_args_gradient(
    gradients,
    inputs,
    min=None,
    max=None,
    num_bits=None,
    narrow_range=None,
    name=None
)

参见指南:张量变换>假量化


计算 FakeQuantWithMinMaxArgs 操作的梯度.

参数:

  • gradients:float32 类型的张量.在 FakeQuantWithMinMaxArgs 操作之上的反向传播(Backpropagated)梯度.
  • inputs:float32 类型的张量.作为 FakeQuantWithMinMaxArgs 操作的输入传递的值.
  • min:可选的浮点型,默认为-6.
  • max:可选的浮点型,默认为6.
  • num_bits:可选的整数型,默认为8.
  • narrow_range:可选的布尔值,默认为 False.
  • name:操作的名称(可选).

返回:

float32 类型的张量.FakeQuantWithMinMaxArgs 操作之下的反向传播(Backpropagated)梯度:gradients * (inputs >= min && inputs <= max).