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 static UniformRequantize.Options outputQuantizationAxis (Long outputQuantizationAxis)
Parameters
outputQuantizationAxis | The new quantization axis to use to quantize original data that `input` represents. |
---|