Dequantize

public final class Dequantize

Dequantize the 'input' tensor into a float or bfloat16 Tensor.

[min_range, max_range] are scalar floats that specify the range for the output. The 'mode' attribute controls exactly which calculations are used to convert the float values to their quantized equivalents.

In 'MIN_COMBINED' mode, each value of the tensor will undergo the following:

if T == qint8: in[i] += (range(T) + 1)/ 2.0
 out[i] = min_range + (in[i]* (max_range - min_range) / range(T))
 
here `range(T) = numeric_limits ::max() - numeric_limits ::min()`

MIN_COMBINED Mode Example

If the input comes from a QuantizedRelu6, the output type is quint8 (range of 0-255) but the possible range of QuantizedRelu6 is 0-6. The min_range and max_range values are therefore 0.0 and 6.0. Dequantize on quint8 will take each value, cast to float, and multiply by 6 / 255. Note that if quantizedtype is qint8, the operation will additionally add each value by 128 prior to casting.

If the mode is 'MIN_FIRST', then this approach is used:

num_discrete_values = 1 << (# of bits in T)
 range_adjust = num_discrete_values / (num_discrete_values - 1)
 range = (range_max - range_min) * range_adjust
 range_scale = range / num_discrete_values
 const double offset_input = static_cast<double>(input) - lowest_quantized;
 result = range_min + ((input - numeric_limits<T>::min()) * range_scale)
 
If the mode is `SCALED`, dequantization is performed by multiplying each input value by a scaling_factor. (Thus an input of 0 always maps to 0.0).

The scaling_factor is determined from `min_range`, `max_range`, and `narrow_range` in a way that is compatible with `QuantizeAndDequantize{V2|V3}` and `QuantizeV2`, using the following algorithm:

const int min_expected_T = std::numeric_limits<T>::min() +
     (narrow_range ? 1 : 0);
   const int max_expected_T = std::numeric_limits<T>::max();
   const float max_expected_T = std::numeric_limits<float>::max();
 
   const float scale_factor =
     (std::numeric_limits<T>::min() == 0) ? (max_range / max_expected_T)
                                          : std::max(min_range / min_expected_T,
                                                     max_range / max_expected_T);
 

Nested Classes

class Dequantize.Options Optional attributes for Dequantize

Constants

String OP_NAME The name of this op, as known by TensorFlow core engine

Public Methods

Output <U>
asOutput ()
Returns the symbolic handle of the tensor.
static Dequantize.Options
axis (Long axis)
static <U extends TNumber > Dequantize <U>
create ( Scope scope, Operand <? extends TType > input, Operand < TFloat32 > minRange, Operand < TFloat32 > maxRange, Class<U> dtype, Options... options)
Factory method to create a class wrapping a new Dequantize operation.
static Dequantize < TFloat32 >
create ( Scope scope, Operand <? extends TType > input, Operand < TFloat32 > minRange, Operand < TFloat32 > maxRange, Options... options)
Factory method to create a class wrapping a new Dequantize operation using default output types.
static Dequantize.Options
mode (String mode)
static Dequantize.Options
narrowRange (Boolean narrowRange)
Output <U>

Inherited Methods

Constants

public static final String OP_NAME

The name of this op, as known by TensorFlow core engine

Constant Value: "Dequantize"

Public Methods

public Output <U> asOutput ()

Returns the symbolic handle of the 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 Dequantize.Options axis (Long axis)

public static Dequantize <U> create ( Scope scope, Operand <? extends TType > input, Operand < TFloat32 > minRange, Operand < TFloat32 > maxRange, Class<U> dtype, Options... options)

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

Parameters
scope current scope
minRange The minimum scalar value possibly produced for the input.
maxRange The maximum scalar value possibly produced for the input.
dtype Type of the output tensor. Currently Dequantize supports float and bfloat16. If 'dtype' is 'bfloat16', it only supports 'MIN_COMBINED' mode.
options carries optional attributes values
Returns
  • a new instance of Dequantize

public static Dequantize < TFloat32 > create ( Scope scope, Operand <? extends TType > input, Operand < TFloat32 > minRange, Operand < TFloat32 > maxRange, Options... options)

Factory method to create a class wrapping a new Dequantize operation using default output types.

Parameters
scope current scope
minRange The minimum scalar value possibly produced for the input.
maxRange The maximum scalar value possibly produced for the input.
options carries optional attributes values
Returns
  • a new instance of Dequantize

public static Dequantize.Options mode (String mode)

public static Dequantize.Options narrowRange (Boolean narrowRange)

public Output <U> output ()