Se usó la API de Cloud Translation para traducir esta página.
Switch to English

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 a números de punto fijo, que deben coincidir con el método de cuantificación objetivo cuando se usa en inferencia.
  2. Decuntándolo de nuevo a números de punto flotante para las siguientes operaciones, muy probablemente matmul.

Hay diferentes formas de cuantificar. Esta versión usa solo escalado, 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 firmado, 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ínimo y máximo 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 a partir 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 scale_factor 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 para que sea 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 scale_factor 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 ronda anterior redondea el valor en función del modo de ronda 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 debe representarse; de ​​lo contrario, se determina a partir del valor máximo del tensor de input .

Atributos opcionales (ver Attrs ):

  • Sign_input: si la cuantificación está firmada o no firmada. (en realidad, este parámetro debería haber sido signed_output )
  • num_bits: el ancho de bits de la cuantificación.
  • range_given: si el rango se da o debe determinarse a partir del tensor de input .
  • round_mode: el atributo 'round_mode' controla qué algoritmo de redondeo de desempate se utiliza 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

salida

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

Rango dado

Attrs RangeGiven(
  bool x
)

RoundMode

Attrs RoundMode(
  StringPiece x
)

SignedInput

Attrs SignedInput(
  bool x
)