tensorflow::ops::QuantizeAndDequantizeV2
#include <array_ops.h>Quantizza e poi dequantizza un tensore.
Riepilogo
Questa operazione simula la perdita di precisione dal passaggio in avanti quantizzato tramite:
- Quantizzazione del tensore a numeri a virgola fissa, che devono corrispondere al metodo di quantizzazione di destinazione quando viene utilizzato nell'inferenza.
- Dequantizzando nuovamente i dati in numeri a virgola mobile per le operazioni successive, molto probabilmente la moltiplicazione matriciale.
Esistono diversi modi per quantizzare. Questa versione utilizza solo la scalatura, quindi 0,0 corrisponde a 0.
In base al valore specificato di 'num_bits' nel tipo di output quantizzato, determina i valori quantizzati minimi e massimi rappresentabili.
per esempio
- [-128, 127] per i numeri con segno, num_bits = 8, oppure
- [0, 255] per senza segno, num_bits = 8.
Se range_given == False, i valori iniziali di input_min e input_max verranno determinati automaticamente come valori minimo e massimo nel tensore di input; altrimenti, verranno utilizzati i valori specificati per input_min e input_max.
Nota: se input_min e input_max sono specificati, non è necessario che corrispondano ai valori minimi e massimi effettivi del tensore. Ad esempio, in alcuni casi può essere utile specificare questi valori in modo da eliminare gli estremi a bassa probabilità della distribuzione di input.
Questa operazione determina il fattore di scala massimo che mapperebbe l'intervallo iniziale [input_min, input_max] a un intervallo che rientra nell'intervallo quantizzato rappresentabile.
Determina la scala in base a uno tra input_min e input_max, quindi aggiorna l'altro per massimizzare l'intervallo rappresentabile.
per esempio
- se l'output è con segno, num_bits = 8, [input_min, input_max] = [-10.0, 5.0]: userebbe un fattore di scala di -128 / -10.0 = 12.8 In questo caso, aggiornerebbe input_max a 127 / 12.8 = 9.921875
- se l'output è con segno, num_bits = 8, [input_min, input_max] = [-10.0, 10.0]: userebbe un fattore di scala di 127 / 10.0 = 12.7 In questo caso, aggiornerebbe input_min a 128.0 / 12.7 = -10.07874
- Se l'output non è di tipo signage, input_min viene forzato a 0 e viene utilizzato solo il valore specificato in input_max.
Dopo aver determinato il fattore di scala e aggiornato l'intervallo di input, applica quanto segue a ciascun valore nel tensore 'input'.
output = round(clamp(value, input_min, input_max) * scale_factor) / scale_factor.
La funzione round sopra riportata arrotonda il valore in base alla modalità round_mode specificata.
Argomentazioni:
- ambito: un oggetto Scope
- Input: Tensore da quantizzare e poi dequantizzare.
- input_min: Se
range_given == True, questo parametro specifica il valore minimo di input che deve essere rappresentato; altrimenti, viene determinato dal valore minimo del tensoreinput. - input_max: Se
range_given == True, questo parametro specifica il valore massimo di input che deve essere rappresentato; altrimenti, viene determinato dal valore massimo del tensoreinput.
Attributi opzionali (vedere Attrs ):
- signed_input: Indica se la quantizzazione è con segno o senza segno. (in realtà questo parametro avrebbe dovuto chiamarsi
signed_output) - num_bits: Larghezza in bit della quantizzazione.
- range_given: Indica se l'intervallo è fornito o se deve essere determinato dal tensore
input. - round_mode: L'attributo 'round_mode' controlla quale algoritmo di risoluzione dei casi di arrotondamento viene utilizzato quando si arrotondano i valori float ai loro equivalenti quantizzati. Attualmente sono supportate le seguenti modalità di arrotondamento:
- HALF_TO_EVEN: questa è la modalità di arrotondamento predefinita.
- HALF_UP: arrotondamento per eccesso verso il valore positivo. In questa modalità 7,5 viene arrotondato a 8 e -7,5 viene arrotondato a -7.
- narrow_range: Se True, il valore assoluto del valore minimo quantizzato è uguale al valore massimo quantizzato, anziché essere maggiore di 1. Ad esempio, per la quantizzazione a 8 bit, il valore minimo è -127 invece di -128.
- asse: se specificato, questo asse viene trattato come un asse di canale o di fetta e viene utilizzato un intervallo di quantizzazione separato per ciascun canale o fetta lungo questo asse.
Resi:
-
Output: Il tensore di output.
Costruttori e distruttori | |
|---|---|
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) |
attributi pubblici | |
|---|---|
operation | |
output | |
Funzioni pubbliche | |
|---|---|
node () const | ::tensorflow::Node * |
operator::tensorflow::Input () const | |
operator::tensorflow::Output () const | |
Funzioni statiche pubbliche | |
|---|---|
Axis (int64 x) | |
NarrowRange (bool x) | |
NumBits (int64 x) | |
RangeGiven (bool x) | |
RoundMode (StringPiece x) | |
SignedInput (bool x) | |
Strutture | |
|---|---|
| tensorflow::ops::QuantizeAndDequantizeV2::Attrs | Impostatori di attributi opzionali per QuantizeAndDequantizeV2 . |
attributi pubblici
operazione
Operation operation
produzione
::tensorflow::Output output
Funzioni pubbliche
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
operatore::tensorflow::Input
operator::tensorflow::Input() const
operatore::tensoreflusso::output
operator::tensorflow::Output() const
Funzioni statiche pubbliche
Asse
Attrs Axis( int64 x )
Gamma ristretta
Attrs NarrowRange( bool x )
NumBits
Attrs NumBits( int64 x )
Intervallo fornito
Attrs RangeGiven( bool x )
Modalità rotonda
Attrs RoundMode( StringPiece x )
SignedInput
Attrs SignedInput( bool x )