# tf.raw_ops.UniformRequantize

<br />

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

#### View aliases


**Compat aliases for migration**

See
[Migration guide](https://www.tensorflow.org/guide/migrate) for
more details.

[`tf.compat.v1.raw_ops.UniformRequantize`](https://www.tensorflow.org/api_docs/python/tf/raw_ops/UniformRequantize)

<br />

    tf.raw_ops.UniformRequantize(
        input,
        input_scales,
        input_zero_points,
        output_scales,
        output_zero_points,
        Tout,
        input_quantization_min_val,
        input_quantization_max_val,
        output_quantization_min_val,
        output_quantization_max_val,
        input_quantization_axis=-1,
        output_quantization_axis=-1,
        name=None
    )

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.

<br />

<br />

<br />

| ## Args ||
|---|---|
| `input` | A `Tensor`. Must be one of the following types: `qint8`, `qint32`. Must be a Tensor of Tin. |
| `input_scales` | A `Tensor` of type `float32`. 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). |
| `input_zero_points` | A `Tensor` of type `int32`. The int32 value(s) used as zero_point(s) when quantizing original data that `input` represents. Same shape condition as scales. |
| `output_scales` | A `Tensor` of type `float32`. 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). |
| `output_zero_points` | A `Tensor` of type `int32`. The int32 value(s) to use as new zero_point(s) to quantize original data that `input` represents. Same shape condition as scales. |
| `Tout` | A [`tf.DType`](https://www.tensorflow.org/versions/r2.13/api_docs/python/tf/dtypes/DType) from: `tf.qint8, tf.qint32`. The type of output Tensor. A tf.DType from: tf.qint8, tf.qint32 |
| `input_quantization_min_val` | An `int`. 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. |
| `input_quantization_max_val` | An `int`. 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. |
| `output_quantization_min_val` | An `int`. The new quantization min value to quantize original data that `input` represents. |
| `output_quantization_max_val` | An `int`. The new quantization max value to quantize original data that `input` represents. |
| `input_quantization_axis` | An optional `int`. Defaults to `-1`. 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()). |
| `output_quantization_axis` | An optional `int`. Defaults to `-1`. The new quantization axis to use to quantize original data that `input` represents. |
| `name` | A name for the operation (optional). |

<br />

<br />

<br />

<br />

| ## Returns ||
|---|---|
| A `Tensor` of type `Tout`. ||

<br />