tensorflow::ops::QuantizeAndDequantizeV2
#include <array_ops.h>Quantiza e depois desquantiza um tensor.
Resumo
Esta operação simula a perda de precisão da passagem direta quantizada por meio de:
- Quantizar o tensor em números de ponto fixo, que devem corresponder ao método de quantização alvo quando usado na inferência.
- Convertendo-o de volta para números de ponto flutuante para as operações seguintes, provavelmente multiplicação de matrizes.
Existem diferentes maneiras de quantizar. Esta versão usa apenas escala, portanto 0,0 corresponde a 0.
A partir do 'num_bits' especificado no tipo de saída quantizada, ele determina os valores quantizados mínimo e máximo representáveis.
por exemplo
- [-128, 127] para com sinal, num_bits = 8, ou
- [0, 255] para unsigned, num_bits = 8.
Se range_given == False, os valores iniciais de input_min e input_max serão determinados automaticamente como os valores mínimo e máximo no tensor de entrada; caso contrário, os valores especificados para input_min e input_max serão utilizados.
Nota: Se os parâmetros `input_min` e `input_max` forem especificados, não precisam ser iguais aos valores mínimo e máximo reais do tensor. Por exemplo, em alguns casos, pode ser vantajoso especificar esses valores de forma que os extremos de baixa probabilidade da distribuição de entrada sejam limitados.
Esta operação determina o fator de escala máximo que mapearia o intervalo inicial [input_min, input_max] para um intervalo que esteja dentro do intervalo quantizado representável.
Ele determina a escala a partir de um dos valores input_min ou input_max e, em seguida, atualiza o outro para maximizar o intervalo representável.
por exemplo
- Se a saída for com sinal, num_bits = 8, [input_min, input_max] = [-10.0, 5.0]: usaria um fator de escala de -128 / -10.0 = 12.8. Nesse caso, atualizaria input_max para 127 / 12.8 = 9.921875.
- Se a saída for com sinal, num_bits = 8, [input_min, input_max] = [-10.0, 10.0]: usaria um fator de escala de 127 / 10.0 = 12.7. Nesse caso, atualizaria input_min para 128.0 / 12.7 = -10.07874.
- Se a saída não tiver sinal, input_min será forçado a ser 0 e apenas o input_max especificado será usado.
Após determinar o fator de escala e atualizar o intervalo de entrada, aplica-se o seguinte a cada valor no tensor 'input'.
saída = arredondar(limitar(valor, entrada_min, entrada_max) * fator_de_escala) / fator_de_escala.
A função de arredondamento acima arredonda o valor com base no modo de arredondamento fornecido.
Argumentos:
- escopo: Um objeto de escopo
- Entrada: Tensor a ser quantizado e, em seguida, desquantizado.
- input_min: Se
range_given == True, isso especifica o valor mínimo de entrada que precisa ser representado; caso contrário, ele é determinado a partir do valor mínimo do tensorinput. - input_max: Se
range_given == True, isso especifica o valor máximo de entrada que precisa ser representado; caso contrário, ele é determinado a partir do valor máximo do tensorinput.
Atributos opcionais (ver Attrs ):
- signed_input: Indica se a quantização é com sinal ou sem sinal. (na verdade, este parâmetro deveria se chamar
signed_output) - num_bits: A largura em bits da quantização.
- range_given: Indica se o intervalo é fornecido ou se deve ser determinado a partir do tensor
input. - round_mode: O atributo 'round_mode' controla qual algoritmo de desempate de arredondamento é usado ao arredondar valores float para seus equivalentes quantizados. Os seguintes modos de arredondamento são suportados atualmente:
- HALF_TO_EVEN: este é o modo de arredondamento padrão.
- HALF_UP: arredonda para o número positivo mais próximo. Nesse modo, 7,5 é arredondado para 8 e -7,5 é arredondado para -7.
- narrow_range: Se True, o valor absoluto do valor mínimo quantizado é o mesmo que o valor máximo quantizado, em vez de ser 1 maior. Ou seja, para quantização de 8 bits, o valor mínimo é -127 em vez de -128.
Devoluções:
-
Output: O tensor de saída.
Construtores e Destrutores | |
|---|---|
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 | |
|---|---|
NarrowRange (bool x) | |
NumBits (int64 x) | |
RangeGiven (bool x) | |
RoundMode (StringPiece x) | |
SignedInput (bool x) | |
Estruturas | |
|---|---|
| tensorflow::ops::QuantizeAndDequantizeV2::Attrs | Definidores de atributos opcionais para QuantizeAndDequantizeV2 . |
Atributos públicos
operação
Operation operation
saída
::tensorflow::Output output
Funções públicas
Quantizar e DequantizarV2
QuantizeAndDequantizeV2( const ::tensorflow::Scope & scope, ::tensorflow::Input input, ::tensorflow::Input input_min, ::tensorflow::Input input_max )
Quantizar e DequantizarV2
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
Faixa estreita
Attrs NarrowRange( bool x )
NumBits
Attrs NumBits( int64 x )
Intervalo fornecido
Attrs RangeGiven( bool x )
Modo redondo
Attrs RoundMode( StringPiece x )
Entrada assinada
Attrs SignedInput( bool x )