tensorflow :: operaciones :: QuantizeAndDequantizeV2

#include <array_ops.h>

Cuantiza luego descuantifica un tensor.

Resumen

Esta operación simula la pérdida de precisión del paso hacia adelante cuantificado por:

  1. Cuantizar el tensor en números de punto fijo, que deben coincidir con el método de cuantificación objetivo cuando se usa en inferencia.
  2. Descuantizarlo de nuevo a números de punto flotante para las siguientes operaciones, muy probablemente matmul.

Hay diferentes formas de cuantificar. Esta versión solo usa escala, por lo que 0.0 se asigna a 0.

A partir de los 'num_bits' especificados en el tipo de salida cuantificado, determina los valores cuantificados representables mínimos y máximos.

p.ej

  • [-128, 127] para con signo, num_bits = 8, o
  • [0, 255] para sin firmar, num_bits = 8.

Si range_given == False, el input_min inicial, input_max se determinará automáticamente como los valores mínimo y máximo en el tensor de entrada; de lo contrario, se utilizan los valores especificados de input_min, input_max.

Nota: Si se especifican input_min, input_max, no es necesario que sean iguales a los valores mínimos y máximos reales en el tensor. por ejemplo, en algunos casos puede ser beneficioso especificar estos valores de manera que se recorten los extremos de baja probabilidad de la distribución de entrada.

Esta operación determina el factor de escala máximo que mapeará el rango inicial [input_min, input_max] a un rango que se encuentra dentro del rango cuantificado representable.

Determina la escala de una de input_min y input_max, luego actualiza la otra para maximizar el rango representable.

p.ej

  • si la salida está firmada, num_bits = 8, [input_min, input_max] = [-10.0, 5.0]: usaría un factor de escala de -128 / -10.0 = 12.8 En este caso, actualizaría input_max a 127 / 12.8 = 9,921875
  • si la salida está firmada, num_bits = 8, [input_min, input_max] = [-10.0, 10.0]: usaría un scale_factor de 127 / 10.0 = 12.7 En este caso, actualizaría input_min a 128.0 / 12.7 = -10.07874
  • si la salida no tiene signo, input_min se fuerza a ser 0, y solo se usa el input_max especificado.

Después de determinar el factor de escala y actualizar el rango de entrada, aplica lo siguiente a cada valor en el tensor de 'entrada'.

salida = round (abrazadera (valor, input_min, input_max) * scale_factor) / scale_factor.

La función de redondeo anterior redondea el valor según el round_mode dado.

Argumentos:

  • alcance: un objeto de alcance
  • input: Tensor para cuantificar y luego descuantificar.
  • input_min: Si range_given == True , esto especifica el valor de entrada mínimo que debe representarse; de ​​lo contrario, se determina a partir del valor mínimo del tensor de input .
  • input_max: Si range_given == True , esto especifica el valor de entrada máximo que necesita ser representado; de lo contrario, se determina a partir del valor máximo del tensor de input .

Atributos opcionales (consulte Attrs ):

  • Sign_input: si la cuantificación está firmada o no firmada. (en realidad, este parámetro debería haberse signed_output )
  • num_bits: el ancho de bits de la cuantificación.
  • range_given: si el rango está dado o debe determinarse a partir del tensor de input .
  • round_mode: el atributo 'round_mode' controla qué algoritmo de redondeo de desempate se usa al redondear valores flotantes a sus equivalentes cuantificados. Actualmente se admiten los siguientes modos de redondeo:
  • HALF_TO_EVEN: este es el modo round_mode predeterminado.
  • HALF_UP: redondeo hacia positivo. En este modo, 7.5 redondea a 8 y -7.5 redondea a -7.
  • rango_ estrecho: si es Verdadero, entonces el valor absoluto del valor mínimo cuantificado es el mismo que el valor máximo cuantificado, en lugar de 1 mayor. es decir, para la cuantificación de 8 bits, el valor mínimo es -127 en lugar de -128.

Devoluciones:

  • Output : el tensor de salida.

Constructores y Destructores

QuantizeAndDequantizeV2 (const :: tensorflow::Scope & scope, :: tensorflow::Input input, :: tensorflow::Input input_min, :: tensorflow::Input input_max)
QuantizeAndDequantizeV2 (const :: tensorflow::Scope & scope, :: tensorflow::Input input, :: tensorflow::Input input_min, :: tensorflow::Input input_max, const QuantizeAndDequantizeV2::Attrs & attrs)

Atributos públicos

operation
output

Funciones publicas

node () const
::tensorflow::Node *
operator::tensorflow::Input () const
operator::tensorflow::Output () const

Funciones estáticas públicas

NarrowRange (bool x)
NumBits (int64 x)
RangeGiven (bool x)
RoundMode (StringPiece x)
SignedInput (bool x)

Estructuras

tensorflow :: ops :: QuantizeAndDequantizeV2 :: Attrs

Establecedores de atributos opcionales para QuantizeAndDequantizeV2 .

Atributos públicos

operación

Operation operation

producción

::tensorflow::Output output

Funciones publicas

QuantizeAndDequantizeV2

 QuantizeAndDequantizeV2(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input input,
  ::tensorflow::Input input_min,
  ::tensorflow::Input input_max
)

QuantizeAndDequantizeV2

 QuantizeAndDequantizeV2(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input input,
  ::tensorflow::Input input_min,
  ::tensorflow::Input input_max,
  const QuantizeAndDequantizeV2::Attrs & attrs
)

nodo

::tensorflow::Node * node() const 

operador :: tensorflow :: Entrada

 operator::tensorflow::Input() const 

operador :: tensorflow :: Salida

 operator::tensorflow::Output() const 

Funciones estáticas públicas

Rango estrecho

Attrs NarrowRange(
  bool x
)

NumBits

Attrs NumBits(
  int64 x
)

RangeDiven

Attrs RangeGiven(
  bool x
)

RoundMode

Attrs RoundMode(
  StringPiece x
)

SignedInput

Attrs SignedInput(
  bool x
)