Merken Sie den Termin vor! Google I / O kehrt vom 18. bis 20. Mai zurück Registrieren Sie sich jetzt
Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Tensorflow :: ops :: QuantizeAndDequantizeV2

#include <array_ops.h>

Quantisiert und dequantisiert dann einen Tensor.

Zusammenfassung

Diese Operation simuliert den Präzisionsverlust aus dem quantisierten Vorwärtsdurchlauf durch:

  1. Quantisierung des Tensors auf Festpunktzahlen, die mit der Zielquantisierungsmethode übereinstimmen sollten, wenn sie in der Inferenz verwendet wird.
  2. Dequantisierung auf Gleitkommazahlen für die folgenden Operationen, höchstwahrscheinlich matmul.

Es gibt verschiedene Möglichkeiten zur Quantisierung. Diese Version verwendet nur Skalierung, daher wird 0.0 auf 0 abgebildet.

Aus den angegebenen 'num_bits' im quantisierten Ausgabetyp werden minimale und maximale darstellbare quantisierte Werte bestimmt.

z.B

  • [-128, 127] für signiert, num_bits = 8 oder
  • [0, 255] für unsigned, num_bits = 8.

Wenn range_given == False, wird der anfängliche input_min, input_max automatisch als Minimal- und Maximalwert im Eingangstensor bestimmt, andernfalls werden die angegebenen Werte von input_min, input_max verwendet.

Hinweis: Wenn input_min, input_max angegeben sind, müssen sie nicht den tatsächlichen Minimal- und Maximalwerten im Tensor entsprechen. In einigen Fällen kann es beispielsweise vorteilhaft sein, diese Werte so anzugeben, dass die Extreme mit geringer Wahrscheinlichkeit der Eingabeverteilung abgeschnitten werden.

Diese Operation bestimmt den maximalen Skalierungsfaktor, der den anfänglichen Bereich [input_min, input_max] einem Bereich zuordnen würde, der innerhalb des darstellbaren quantisierten Bereichs liegt.

Es bestimmt die Skalierung von input_min und input_max und aktualisiert dann die andere, um den darstellbaren Bereich zu maximieren.

z.B

  • Wenn die Ausgabe signiert ist, num_bits = 8, [input_min, input_max] = [-10.0, 5.0]: Es würde ein scale_factor von -128 / -10.0 = 12.8 verwendet. In diesem Fall würde input_max auf 127 / 12.8 = aktualisiert 9,921875
  • Wenn die Ausgabe signiert ist, ist num_bits = 8, [input_min, input_max] = [-10.0, 10.0]: In diesem Fall wird input_min auf 128,0 / 12.7 = -10.07874 aktualisiert
  • Wenn die Ausgabe ohne Vorzeichen ist, muss input_min 0 sein, und es wird nur die angegebene input_max verwendet.

Nach dem Bestimmen des scale_factor und dem Aktualisieren des Eingabebereichs wird auf jeden Wert im 'Eingabe'-Tensor Folgendes angewendet.

output = round (Klemme (Wert, input_min, input_max) * scale_factor) / scale_factor.

Die obige Rundungsfunktion rundet den Wert basierend auf dem angegebenen round_mode.

Argumente:

  • scope: Ein Scope- Objekt
  • Eingabe: Tensor zum Quantisieren und anschließenden Quantifizieren.
  • input_min: Wenn range_given == True , gibt dies den minimalen Eingangswert, die Bedürfnisse dargestellt werden, sonst ist es aus dem Minimalwert des bestimmt wird , input Tensor.
  • input_max: Wenn range_given == True , gibt dies den maximalen Eingabewert an, der dargestellt werden muss, andernfalls wird er aus dem Maximalwert des input .

Optionale Attribute (siehe Attrs ):

  • signierter_Eingang: Gibt an, ob die Quantisierung signiert oder nicht signiert ist. (Eigentlich sollte dieser Parameter signed_output heißen)
  • num_bits: Die Bitbreite der Quantisierung.
  • range_given: Gibt an, ob der Bereich angegeben ist oder aus dem input werden soll.
  • round_mode: Das Attribut 'round_mode' steuert, welcher Algorithmus zum Brechen von Rundungsbindungen verwendet wird, wenn Float-Werte auf ihre quantisierten Äquivalente gerundet werden. Die folgenden Rundungsmodi werden derzeit unterstützt:
  • HALF_TO_EVEN: Dies ist der Standard-Round_Mode.
  • HALF_UP: Runde in Richtung positiv. In diesem Modus runden 7,5 auf 8 und -7,5 auf -7.
  • eng_bereich: Wenn True, ist der Absolutwert des quantisierten Minimalwerts der gleiche wie der quantisierte Maximalwert, anstatt 1 größer. dh für die 8-Bit-Quantisierung ist der Minimalwert -127 anstelle von -128.

Kehrt zurück:

  • Output : Der Ausgangstensor.

Konstruktoren und Destruktoren

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)

Öffentliche Attribute

operation
output

Öffentliche Funktionen

node () const
::tensorflow::Node *
operator::tensorflow::Input () const
operator::tensorflow::Output () const

Öffentliche statische Funktionen

NarrowRange (bool x)
NumBits (int64 x)
RangeGiven (bool x)
RoundMode (StringPiece x)
SignedInput (bool x)

Strukturen

tensorflow :: ops :: QuantizeAndDequantizeV2 :: Attrs

Optionale Attributsetzer für QuantizeAndDequantizeV2 .

Öffentliche Attribute

Operation

Operation operation

Ausgabe

::tensorflow::Output output

Öffentliche Funktionen

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
)

Knoten

::tensorflow::Node * node() const 

operator :: tensorflow :: Input

 operator::tensorflow::Input() const 

operator :: tensorflow :: Output

 operator::tensorflow::Output() const 

Öffentliche statische Funktionen

Engen Bereich

Attrs NarrowRange(
  bool x
)

NumBits

Attrs NumBits(
  int64 x
)

RangeGiven

Attrs RangeGiven(
  bool x
)

RoundMode

Attrs RoundMode(
  StringPiece x
)

SignedInput

Attrs SignedInput(
  bool x
)