Dequantize

clase final pública Descuantificar

Descuantifique el tensor de 'entrada' en un tensor flotante o bfloat16.

[min_range, max_range] son ​​flotantes escalares que especifican el rango de la salida. El atributo 'modo' controla exactamente qué cálculos se utilizan para convertir los valores flotantes a sus equivalentes cuantificados.

En el modo 'MIN_COMBINED', cada valor del tensor pasará por lo siguiente:

if T == qint8: in[i] += (range(T) + 1)/ 2.0
 out[i] = min_range + (in[i]* (max_range - min_range) / range(T))
 
aquí `rango(T) = límites_numéricos ::max() - límites_numéricos ::min()`

Ejemplo de modo MIN_COMBINED

Si la entrada proviene de QuantizedRelu6, el tipo de salida es quint8 (rango de 0-255) pero el rango posible de QuantizedRelu6 es 0-6. Los valores min_range y max_range son, por tanto, 0,0 y 6,0. Descuantificar en quint8 tomará cada valor, lo convertirá a flotante y lo multiplicará por 6/255. Tenga en cuenta que si el tipo cuantificado es qint8, la operación agregará adicionalmente cada valor en 128 antes de realizar la conversión.

Si el modo es 'MIN_FIRST', entonces se utiliza este enfoque:

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)
 
Si el modo es "ESCALADO", la descuantización se realiza multiplicando cada valor de entrada por un factor de escala. (Por lo tanto, una entrada de 0 siempre se asigna a 0,0).

El factor de escala se determina a partir de `min_range`, `max_range` y `narrow_range` de una manera que sea compatible con `QuantizeAndDequantize{V2|V3}` y `QuantizeV2`, utilizando el siguiente algoritmo:

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);
 

Clases anidadas

clase Descuantificar.Opciones Atributos opcionales para Dequantize

Constantes

Cadena OP_NOMBRE El nombre de esta operación, como lo conoce el motor central de TensorFlow.

Métodos públicos

Salida <U>
como salida ()
Devuelve el identificador simbólico del tensor.
Opciones estáticas de descuantificación
eje (eje largo)
estático <U extiende TNumber > Descuantificar <U>
crear ( alcance alcance , Operando <? extiende TType > entrada, Operando < TFloat32 > minRange, Operando < TFloat32 > maxRange, Clase <U> dtype, Opciones... opciones)
Método de fábrica para crear una clase que envuelve una nueva operación de descuantificación.
Descuantificación estática <TFloat32>
crear (alcance alcance , operando <? extiende TType > entrada, operando <TFloat32> minRange, operando <TFloat32> maxRange, opciones... opciones)
Método de fábrica para crear una clase que envuelve una nueva operación de descuantificación utilizando tipos de salida predeterminados.
Opciones estáticas de descuantificación
modo (modo cadena)
Opciones estáticas de descuantificación
rango estrecho (rango estrecho booleano)
Salida <U>

Métodos heredados

Constantes

Cadena final estática pública OP_NAME

El nombre de esta operación, como lo conoce el motor central de TensorFlow.

Valor constante: "Descuantificar"

Métodos públicos

Salida pública <U> como Salida ()

Devuelve el identificador simbólico del tensor.

Las entradas a las operaciones de TensorFlow son salidas de otra operación de TensorFlow. Este método se utiliza para obtener un identificador simbólico que representa el cálculo de la entrada.

eje público estático Dequantize.Options (eje largo)

public static Descuantificar <U> crear ( Alcance alcance, Operando <? extiende TType > entrada, Operando < TFloat32 > minRange, Operando < TFloat32 > maxRange, Clase <U> dtype, Opciones... opciones)

Método de fábrica para crear una clase que envuelve una nueva operación de descuantificación.

Parámetros
alcance alcance actual
rango mínimo El valor escalar mínimo posiblemente producido para la entrada.
rango máximo El valor escalar máximo posiblemente producido para la entrada.
tipo d Tipo de tensor de salida. Actualmente, Dequantize admite float y bfloat16. Si 'dtype' es 'bfloat16', solo admite el modo 'MIN_COMBINED'.
opciones lleva valores de atributos opcionales
Devoluciones
  • una nueva instancia de Descuantificar

public static Dequantize < TFloat32 > create ( Alcance alcance, Operando <? extiende TType > entrada, Operando < TFloat32 > minRange, Operando < TFloat32 > maxRange, Opciones... opciones)

Método de fábrica para crear una clase que envuelve una nueva operación de descuantificación utilizando tipos de salida predeterminados.

Parámetros
alcance alcance actual
rango mínimo El valor escalar mínimo posiblemente producido para la entrada.
rango máximo El valor escalar máximo posiblemente producido para la entrada.
opciones lleva valores de atributos opcionales
Devoluciones
  • una nueva instancia de Descuantificar

modo público estático Dequantize.Options (modo cadena)

Dequantize.Options estático público de rango estrecho (rango estrecho booleano)

Salida pública <U> salida ()