Odpowiedz już dziś na lokalne wydarzenie TensorFlow Everywhere!
Ta strona została przetłumaczona przez Cloud Translation API.
Switch to English

tensorflow :: ops :: QuantizeAndDequantizeV2

#include <array_ops.h>

Kwantyzuje, a następnie dekwantyzuje tensor.

Podsumowanie

Ta operacja symuluje utratę precyzji z kwantowanego przejścia do przodu przez:

  1. Kwantyzacja tensora do stałych liczb punktowych, która powinna być zgodna z metodą kwantyzacji docelowej, gdy jest używana w wnioskowaniu.
  2. 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, num_bits = 8.

Jeśli range_given == False, początkowe input_min, input_max zostaną określone automatycznie jako wartości minimalne i maksymalne 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ę na podstawie jednej z wartości input_min i input_max, a następnie aktualizuje drugą, aby zmaksymalizować reprezentowalny zakres.

na przykład

  • jeśli wyjście jest podpisane, num_bits = 8, [input_min, input_max] = [-10,0, 5,0]: użyłby scale_factor -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 będzie wynosiła 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, maksymalne_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
  • wejście: 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 tensora input .
  • 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 tensora input .

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 rozstrzygający 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 rundy.
  • 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, wówczas wartość bezwzględna skwantowanej wartości minimalnej jest taka sama, jak skwantyzowana wartość maksymalna, a nie 1 większa. tzn. dla kwantyzacji 8-bitowej minimalna wartość to -127 zamiast -128.
  • oś: jeśli jest określona, ​​ta oś jest traktowana jako oś kanału lub wycinka, a dla każdego kanału lub wycinka wzdłuż tej osi używany jest oddzielny zakres kwantyzacji.

Zwroty:

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

Axis (int64 x)
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

Attrs Axis(
  int64 x
)

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
)