tensorflow :: ops :: QuantizeAndDequantizeV2
#include <array_ops.h>
Kwantyzuje, a następnie dekwantyzuje tensor.
streszczenie
Ta operacja symuluje utratę precyzji z kwantowanego przejścia do przodu przez:
- Kwantyzacja tensora do stałych liczb punktowych, która powinna pasować do metody kwantyzacji docelowej, gdy jest używana w wnioskowaniu.
- Dekwantyzacja z powrotem do liczb zmiennoprzecinkowych dla następujących operacji, najprawdopodobniej matmul.
Istnieją różne sposoby kwantyzacji. Ta wersja używa tylko skalowania, więc 0.0 jest mapowane na 0.
Z podanych „num_bits” w kwantowanym typie wyjściowym określa minimalne i maksymalne skwantowane wartości, które można przedstawić.
na przykład
- [-128, 127] dla podpisanych, liczba_bitów = 8 lub
- [0, 255] dla bez znaku, liczba_bitów = 8.
Jeśli range_given == False, początkowa input_min, input_max zostanie określona automatycznie jako minimalna i maksymalna wartość w tensorze wejściowym, w przeciwnym razie zostaną użyte określone wartości input_min, input_max.
Uwaga: Jeśli określono parametry input_min, input_max, nie muszą one równać się z rzeczywistymi minimalnymi i maksymalnymi wartościami w tensorze. np. w niektórych przypadkach korzystne może być określenie tych wartości w taki sposób, aby obcinać krańce o niskim prawdopodobieństwie rozkładu wejściowego.
Ta operacja określa maksymalny współczynnik scale_factor, który odwzorowałby początkowy zakres [input_min, input_max] na zakres mieszczący się w reprezentowalnym skwantowanym zakresie.
Określa skalę z jednej z input_min i input_max, a następnie aktualizuje drugą, aby zmaksymalizować reprezentowany zakres.
na przykład
- jeśli dane wyjściowe są podpisane, num_bits = 8, [input_min, input_max] = [-10,0, 5,0]: użyłby współczynnika skali -128 / -10,0 = 12,8 W tym przypadku wartość input_max wynosiłaby 127 / 12,8 = 9,921875
- jeśli dane wyjściowe są podpisane, num_bits = 8, [input_min, input_max] = [-10,0, 10,0]: użyje scale_factor 127 / 10,0 = 12,7 W tym przypadku wartość input_min zostanie zaktualizowana do 128,0 / 12,7 = -10,07874
- jeśli wyjście jest bez znaku, wartość input_min jest wymuszana na 0 i używane jest tylko określone wejście_max.
Po określeniu scale_factor i zaktualizowaniu zakresu wejściowego, stosuje następujące wartości do każdej wartości w tensorze „input”.
wyjście = okrągłe (zacisk (wartość, min_wejścia, maks_wejście) * współczynnik_skali) / współczynnik_skali.
Powyższa funkcja round zaokrągla wartość na podstawie podanego trybu round_mode.
Argumenty:
- zakres: obiekt Scope
- dane wejściowe: Tensor do kwantyzacji, a następnie dekwantyzacji.
- input_min: Jeśli
range_given == True
, określa minimalną wartość wejściową, która ma być reprezentowana, w przeciwnym razie jest określana na podstawie minimalnej wartości tensorainput
. - input_max: Jeśli
range_given == True
, określa maksymalną wartość wejściową, która ma być reprezentowana, w przeciwnym razie jest określana na podstawie maksymalnej wartości tensorainput
.
Atrybuty opcjonalne (patrz Attrs
):
- signed_input: czy kwantyzacja jest podpisana czy nie. (właściwie ten parametr powinien być nazwany
signed_output
) - num_bits: przepustowość kwantyzacji.
- podany_zakres: Czy zakres jest podany lub powinien być określony na podstawie tensora
input
. - round_mode: Atrybut „round_mode” kontroluje, który algorytm zaokrąglania łamania rozstrzygania jest używany podczas zaokrąglania wartości zmiennoprzecinkowych do ich skwantyzowanych odpowiedników. Obecnie obsługiwane są następujące tryby zaokrąglania:
- HALF_TO_EVEN: jest to domyślny tryb round_mode.
- HALF_UP: zaokrąglenie w kierunku dodatnim. W tym trybie 7,5 zaokrągla do 8, a -7,5 zaokrągla do -7.
- wąski zakres: Jeśli prawda, to wartość bezwzględna skwantowanej wartości minimalnej jest taka sama, jak skwantowana wartość maksymalna, a nie 1 większa. tzn. dla kwantyzacji 8-bitowej minimalna wartość to -127 zamiast -128.
Zwroty:
-
Output
: tensor wyjściowy.
Konstruktorzy i niszczyciele | |
---|---|
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) |
Atrybuty publiczne | |
---|---|
operation | |
output |
Funkcje publiczne | |
---|---|
node () const | ::tensorflow::Node * |
operator::tensorflow::Input () const | |
operator::tensorflow::Output () const |
Publiczne funkcje statyczne | |
---|---|
NarrowRange (bool x) | |
NumBits (int64 x) | |
RangeGiven (bool x) | |
RoundMode (StringPiece x) | |
SignedInput (bool x) |
Struktury | |
---|---|
tensorflow :: ops :: QuantizeAndDequantizeV2 :: Attrs | Opcjonalne metody ustawiające atrybuty dla QuantizeAndDequantizeV2 . |
Atrybuty publiczne
operacja
Operation operation
wynik
::tensorflow::Output output
Funkcje publiczne
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 )
węzeł
::tensorflow::Node * node() const
operator :: tensorflow :: Input
operator::tensorflow::Input() const
operator :: tensorflow :: Output
operator::tensorflow::Output() const
Publiczne funkcje statyczne
Wąski zakres
Attrs NarrowRange( bool x )
NumBits
Attrs NumBits( int64 x )
Podany zakres
Attrs RangeGiven( bool x )
RoundMode
Attrs RoundMode( StringPiece x )
SignedInput
Attrs SignedInput( bool x )