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:
- 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.
- 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 deinput
. - 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 deinput
.
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 a 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 )
nó
::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 )