Dequantize

publiczna klasa końcowa Dekwantyzacja

Dekwantyzuj tensor „wejściowy” na tensor zmiennoprzecinkowy lub tensor bfloat16.

[min_range, max_range] to skalarne liczby zmiennoprzecinkowe, które określają zakres danych wyjściowych. Atrybut „mode” dokładnie kontroluje, które obliczenia są używane do konwersji wartości zmiennoprzecinkowych na ich skwantowane odpowiedniki.

W trybie „MIN_COMBINED” każda wartość tensora zostanie poddana następującym czynnościom:

if T == qint8: in[i] += (range(T) + 1)/ 2.0
 out[i] = min_range + (in[i]* (max_range - min_range) / range(T))
 
tutaj „zakres (T) = limity_numeryczne ::max() - limity_numeryczne ::min()`

Przykład trybu MIN_COMBINED

Jeśli dane wejściowe pochodzą z QuantizedRelu6, typem wyjścia jest quint8 (zakres 0-255), ale możliwy zakres QuantizedRelu6 to 0-6. Wartości min_range i max_range wynoszą zatem 0,0 i 6,0. Dekwantyzacja na kwincie8 pobierze każdą wartość, rzutuje na liczbę zmiennoprzecinkową i pomnoży przez 6/255. Należy zauważyć, że jeśli typem kwantyzacji jest qint8, operacja dodatkowo doda każdą wartość o 128 przed rzutowaniem.

Jeśli tryb to „MIN_FIRST”, stosowane jest następujące podejście:

num_discrete_values = 1 << (# of bits in T)
 range_adjust = num_discrete_values / (num_discrete_values - 1)
 range = (range_max - range_min) * range_adjust
 range_scale = range / num_discrete_values
 const double offset_input = static_cast<double>(input) - lowest_quantized;
 result = range_min + ((input - numeric_limits<T>::min()) * range_scale)
 
Jeśli tryb to „SKALOWANY”, dekwantyzacja jest wykonywana poprzez pomnożenie każdej wartości wejściowej przez współczynnik skalowania. (Zatem wartość wejściowa 0 zawsze odpowiada wartości 0,0).

Współczynnik skalowania jest określany na podstawie „min_range”, „max_range” i „narrow_range” w sposób zgodny z `QuantizeAndDequantize{V2|V3}` i `QuantizeV2`, przy użyciu następującego algorytmu:

const int min_expected_T = std::numeric_limits<T>::min() +
     (narrow_range ? 1 : 0);
   const int max_expected_T = std::numeric_limits<T>::max();
   const float max_expected_T = std::numeric_limits<float>::max();
 
   const float scale_factor =
     (std::numeric_limits<T>::min() == 0) ? (max_range / max_expected_T)
                                          : std::max(min_range / min_expected_T,
                                                     max_range / max_expected_T);
 

Klasy zagnieżdżone

klasa Dekwantyzacja.Opcje Opcjonalne atrybuty Dequantize

Stałe

Smyczkowy OP_NAME Nazwa tej operacji znana silnikowi rdzenia TensorFlow

Metody publiczne

Wyjście <U>
jako wyjście ()
Zwraca symboliczny uchwyt tensora.
statyczne Dekwantyzuj.Opcje
(oś długa)
statyczny <U rozszerza TNumber > Dekwantyzuj <U>
utwórz ( Zakres zakresu, Operand <? rozszerza TType > input, Operand < TFloat32 > minRange, Operand < TFloat32 > maxRange, Class<U> dtype, Opcje... opcje)
Metoda fabryczna służąca do tworzenia klasy opakowującej nową operację dekwantyzacji.
statyczny Dekwantyzacja < TFloat32 >
utwórz (zakres zakresu , Operand <? rozszerza TType > wejście, Operand < TFloat32 > minRange, Operand < TFloat32 > maxRange, Opcje... opcje)
Metoda fabryczna służąca do tworzenia klasy opakowującej nową operację dekwantyzacji przy użyciu domyślnych typów wyników.
statyczne Dekwantyzuj.Opcje
tryb (tryb ciągowy)
statyczne Dekwantyzuj.Opcje
wąski zakres (Boolean wąski zakres)
Wyjście <U>

Metody dziedziczone

Stałe

publiczny statyczny końcowy ciąg znaków OP_NAME

Nazwa tej operacji znana silnikowi rdzenia TensorFlow

Wartość stała: „Dekwantyzacja”

Metody publiczne

publiczne wyjście <U> asOutput ()

Zwraca symboliczny uchwyt tensora.

Dane wejściowe operacji TensorFlow są wynikami innej operacji TensorFlow. Ta metoda służy do uzyskania symbolicznego uchwytu reprezentującego obliczenia danych wejściowych.

public static Dequantize.Options (długa oś)

public static Dekwantyzacja <U> utwórz ( Zakres zakresu, Operand <? rozszerza TType > wejście, Operand < TFloat32 > minRange, Operand < TFloat32 > maxRange, Class<U> dtype, Opcje... opcje)

Metoda fabryczna służąca do tworzenia klasy opakowującej nową operację dekwantyzacji.

Parametry
zakres aktualny zakres
minZakres Minimalna wartość skalarna, jaką można uzyskać dla wejścia.
Maks.Zakres Maksymalna wartość skalarna, jaką można uzyskać dla wejścia.
typ Typ tensora wyjściowego. Obecnie Dekwantyzacja obsługuje float i bfloat16. Jeśli „dtype” to „bfloat16”, obsługuje tylko tryb „MIN_COMBINED”.
opcje przenosi opcjonalne wartości atrybutów
Powroty
  • nowa instancja Dequantize

public static Dekwantyzacja < TFloat32 > utwórz (Zakres zasięgu , Operand <? rozszerza TType > wejście, Operand < TFloat32 > minRange, Operand < TFloat32 > maxRange, Opcje... opcje)

Metoda fabryczna służąca do tworzenia klasy opakowującej nową operację dekwantyzacji przy użyciu domyślnych typów wyników.

Parametry
zakres aktualny zakres
minZakres Minimalna wartość skalarna, jaką można uzyskać dla sygnału wejściowego.
Maks.Zakres Maksymalna wartość skalarna, jaką można uzyskać dla wejścia.
opcje przenosi opcjonalne wartości atrybutów
Powroty
  • nowa instancja Dequantize

public static Dequantize.Options tryb (tryb String)

public static Dequantize.Options wąskiRange (Boolean wąskiRange)

publiczne wyjście <U> wyjście ()