UniformRequantize

public final class UniformRequantize

Given quantized tensor `input`, requantize it with new quantization parameters.

Given quantized tensor `input`, which was quantized using {input_scales, input_zero_points, input_quantization_axis, input_quantization_min_val, input_quantization_max_val}, requantize it to a tensor, which is quantized using {output_scales, output_zero_points, output_quantization_axis, output_quantization_min_val, output_quantization_max_val}. The requantization is done by using the formula: output_quantized_data = clip( (input_quantized_data - input_zero_point) * (input_scale / output_scale) + output_zero_point, output_quantization_min_val, output_quantization_max_val)

Per-tensor and per-axis quantization supported cases are followings:

  • per-tensor -> per-tensor
  • per-tensor -> per-axis
  • per-axis -> per-axis where input_quantization_axis equals output_quantization_axis. i.e. At least one among input_quantization_axis and output_quantization_axis must be -1, or two must be equal.

Nested Classes

class UniformRequantize.Options Optional attributes for UniformRequantize  

Public Methods

Output<U>
asOutput()
Returns the symbolic handle of a tensor.
static <U, T> UniformRequantize<U>
create(Scope scope, Operand<T> input, Operand<Float> inputScales, Operand<Integer> inputZeroPoints, Operand<Float> outputScales, Operand<Integer> outputZeroPoints, Class<U> Tout, Long inputQuantizationMinVal, Long inputQuantizationMaxVal, Long outputQuantizationMinVal, Long outputQuantizationMaxVal, Options... options)
Factory method to create a class wrapping a new UniformRequantize operation.
static UniformRequantize.Options
inputQuantizationAxis(Long inputQuantizationAxis)
Output<U>
output()
The output quantized Tensor of Tout, whose shape is same as input.
static UniformRequantize.Options
outputQuantizationAxis(Long outputQuantizationAxis)

Inherited Methods

Public Methods

public Output<U> asOutput ()

Returns the symbolic handle of a tensor.

Inputs to TensorFlow operations are outputs of another TensorFlow operation. This method is used to obtain a symbolic handle that represents the computation of the input.

public static UniformRequantize<U> create (Scope scope, Operand<T> input, Operand<Float> inputScales, Operand<Integer> inputZeroPoints, Operand<Float> outputScales, Operand<Integer> outputZeroPoints, Class<U> Tout, Long inputQuantizationMinVal, Long inputQuantizationMaxVal, Long outputQuantizationMinVal, Long outputQuantizationMaxVal, Options... options)

Factory method to create a class wrapping a new UniformRequantize operation.

Parameters
scope current scope
input Must be a Tensor of Tin.
inputScales The float value(s) used as scale(s) when quantizing original data that `input` represents. Must be a scalar Tensor if quantization_axis is -1 (per-tensor quantization), otherwise 1D Tensor of size (input.dim_size(quantization_axis),) (per-axis quantization).
inputZeroPoints The int32 value(s) used as zero_point(s) when quantizing original data that `input` represents. Same shape condition as scales.
outputScales The float value(s) to use as new scale(s) to quantize original data that `input` represents. Must be a scalar Tensor if quantization_axis is -1 (per-tensor quantization), otherwise 1D Tensor of size (input.dim_size(quantization_axis),) (per-axis quantization).
outputZeroPoints The int32 value(s) to use as new zero_point(s) to quantize original data that `input` represents. Same shape condition as scales.
Tout The type of output Tensor. A tf.DType from: tf.qint8, tf.qint32
inputQuantizationMinVal The quantization min value that was used when quantizing original data that `input` represents. The purpose of this attribute is typically (but not limited to) to indicate narrow range, where this is set to: `(Tin lowest) + 1` if narrow range, and `(Tin lowest)` otherwise. For example, if Tin is qint8, this is set to -127 if narrow range quantized or -128 if not.
inputQuantizationMaxVal The quantization max value that was used when quantizing original data that `input` represents. The purpose of this attribute is typically (but not limited to) indicate narrow range, where this is set to: `(Tout max)` for both narrow range and not narrow range. For example, if Tin is qint8, this is set to 127.
outputQuantizationMinVal The new quantization min value to quantize original data that `input` represents.
outputQuantizationMaxVal The new quantization max value to quantize original data that `input` represents.
options carries optional attributes values
Returns
  • a new instance of UniformRequantize

public static UniformRequantize.Options inputQuantizationAxis (Long inputQuantizationAxis)

Parameters
inputQuantizationAxis The quantization axis that was used when quantizing original data that `input` represents. Indicates the dimension index of the tensor where per-axis quantization is applied for the slices along that dimension. If set to -1 (default), this indicates per-tensor quantization. Otherwise, it must be set within range [0, input.dims()).

public Output<U> output ()

The output quantized Tensor of Tout, whose shape is same as input.

public static UniformRequantize.Options outputQuantizationAxis (Long outputQuantizationAxis)

Parameters
outputQuantizationAxis The new quantization axis to use to quantize original data that `input` represents.