tensorflow :: ops :: QuantizeAndDequantizeV2

#include <array_ops.h>

Quantiza então desquantiza um tensor.

Resumo

Esta operação simula a perda de precisão da passagem para frente quantizada:

  1. Quantizar o tensor para números de pontos fixos, que devem corresponder ao método de quantização de destino quando ele é usado em inferência.
  2. Desquantizando-o de volta para números de ponto flutuante para as seguintes operações, provavelmente matmul.

Existem diferentes maneiras de quantizar. Esta versão usa apenas escala, então 0.0 mapeia para 0.

A partir dos 'num_bits' especificados no tipo de saída quantizada, ele determina os valores quantizados representáveis ​​mínimos e máximos.

por exemplo

  • [-128, 127] para assinado, num_bits = 8 ou
  • [0, 255] para não assinado, num_bits = 8.

Se range_given == False, o input_min inicial, input_max será determinado automaticamente como os valores mínimo e máximo no tensor de entrada, caso contrário, os valores especificados de input_min, input_max serão usados.

Nota: Se input_min, input_max forem especificados, eles não precisam ser iguais aos valores mínimo e máximo reais no tensor. por exemplo, em alguns casos, pode ser benéfico especificar esses valores de forma que os extremos de baixa probabilidade da distribuição de entrada sejam cortados.

Esta op determina o fator de escala máximo que mapearia o intervalo inicial [input_min, input_max] para um intervalo que está dentro do intervalo quantizado representável.

Ele determina a escala de um de input_min e input_max, então atualiza o outro para maximizar o intervalo representável.

por exemplo

  • se a saída for assinada, num_bits = 8, [input_min, input_max] = [-10,0, 5,0]: ele usaria um fator de escala de -128 / -10,0 = 12,8 Neste caso, ele atualizaria input_max para 127 / 12,8 = 9,921875
  • se a saída for assinada, num_bits = 8, [input_min, input_max] = [-10,0, 10,0]: ele usaria um fator de escala de 127 / 10,0 = 12,7. Nesse caso, ele atualizaria input_min para 128,0 / 12,7 = -10,07874
  • se a saída não tiver sinal, input_min é forçado a ser 0 e apenas o input_max especificado é usado.

Depois de determinar o fator de escala e atualizar a faixa de entrada, ele aplica o seguinte a cada valor no tensor de 'entrada'.

output = round (clamp (value, input_min, input_max) * scale_factor) / scale_factor.

A função round acima arredonda o valor com base no round_mode fornecido.

Argumentos:

  • escopo: um objeto Scope
  • entrada: Tensor para quantizar e depois desquantizar.
  • input_min: Se range_given == True , isso especifica o valor mínimo de entrada que precisa ser representado, caso contrário, é determinado a partir do valor mínimo do tensor de input .
  • input_max: Se range_given == True , isso especifica o valor máximo de entrada que precisa ser representado, caso contrário, é determinado a partir do valor máximo do tensor de input .

Atributos opcionais (consulte Attrs ):

  • entrada_com_sinal: se a quantização é assinada ou não. (na verdade, este parâmetro deveria ter sido chamado de signed_output )
  • num_bits: a largura de bits da quantização.
  • range_given: Se o intervalo é dado ou deve ser determinado a partir do tensor de input .
  • round_mode: O atributo 'round_mode' controla qual algoritmo de desempate de arredondamento é usado ao arredondar valores flutuantes para seus equivalentes quantizados. Os seguintes modos de arredondamento são atualmente suportados:
  • HALF_TO_EVEN: este é o round_mode padrão.
  • HALF_UP: arredondar para positivo. Neste modo, 7,5 arredonda para 8 e -7,5 arredonda para -7.
  • intervalo_estrito: se True, o valor absoluto do valor mínimo quantizado é o mesmo que o valor máximo quantizado, em vez de 1 maior. ou seja, para quantização de 8 bits, o valor mínimo é -127 em vez de -128.
  • eixo: se especificado, este eixo é tratado como um canal ou eixo de fatia, e um intervalo de quantização separado é usado para cada canal ou fatia ao longo deste eixo.

Retorna:

  • Output : o tensor de saída.

Construtores e Destruidores

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

Funções públicas

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

Funções estáticas públicas

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

Structs

tensorflow :: ops :: QuantizeAndDequantizeV2 :: Attrs

Configuradores de atributos opcionais para QuantizeAndDequantizeV2 .

Atributos públicos

Operação

Operation operation

resultado

::tensorflow::Output output

Funções públicas

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
)

::tensorflow::Node * node() const 

operador :: tensorflow :: Input

 operator::tensorflow::Input() const 

operador :: tensorflow :: Saída

 operator::tensorflow::Output() const 

Funções estáticas públicas

Eixo

Attrs Axis(
  int64 x
)

Curto alcance

Attrs NarrowRange(
  bool x
)

NumBits

Attrs NumBits(
  int64 x
)

RangeGiven

Attrs RangeGiven(
  bool x
)

RoundMode

Attrs RoundMode(
  StringPiece x
)

SignedInput

Attrs SignedInput(
  bool x
)