tensorflow::ops::Dekuantisasi

#include <array_ops.h>

Dekuantisasi tensor 'input' menjadi Tensor float.

Ringkasan

[min_range, max_range] adalah bilangan float skalar yang menentukan rentang untuk data 'input'. Atribut 'mode' mengontrol secara tepat perhitungan mana yang digunakan untuk mengkonversi nilai float ke nilai kuantisasi yang setara.

Dalam mode 'MIN_COMBINED', setiap nilai tensor akan mengalami hal berikut:

if T == qint8: in[i] += (range(T) + 1)/ 2.0
out[i] = min_range + (in[i]* (max_range - min_range) / range(T))
di sini range(T) = numeric_limits ::max() - numeric_limits ::min()

Contoh Mode MIN_COMBINED

Jika input berasal dari QuantizedRelu6 , tipe outputnya adalah quint8 (rentang 0-255) tetapi rentang yang mungkin untuk QuantizedRelu6 adalah 0-6. Oleh karena itu, nilai min_range dan max_range adalah 0,0 dan 6,0. Dekuantisasi pada quint8 akan mengambil setiap nilai, mengubahnya menjadi float, dan mengalikannya dengan 6 / 255. Perhatikan bahwa jika quantizedtype adalah qint8, operasi ini juga akan menambahkan setiap nilai dengan 128 sebelum diubah.

Jika mode yang dipilih adalah 'MIN_FIRST', maka pendekatan berikut digunakan:

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(input) - lowest_quantized;
result = range_min + ((input - numeric_limits::min()) * range_scale)

Contoh mode SKALA

Mode SCALED sesuai dengan pendekatan kuantisasi yang digunakan dalam QuantizeAndDequantize{V2|V3} .

Jika modenya adalah SCALED , kita tidak menggunakan rentang penuh dari tipe output, melainkan memilih untuk menghilangkan nilai terendah yang mungkin untuk simetri (misalnya, rentang output adalah -127 hingga 127, bukan -128 hingga 127 untuk kuantisasi 8 bit bertanda), sehingga 0,0 dipetakan ke 0.

Pertama-tama kita mencari rentang nilai dalam tensor kita. Rentang yang kita gunakan selalu berpusat pada 0, jadi kita mencari m sedemikian sehingga

  m = max(abs(input_min), abs(input_max))

Rentang tensor input kita adalah [-m, m] .

Selanjutnya, kita memilih bucket kuantisasi titik tetap kita, [min_fixed, max_fixed] . Jika T bertanda, maka ini adalah

  num_bits = sizeof(T) * 8
  [min_fixed, max_fixed] =
      [-(1 << (num_bits - 1) - 1), (1 << (num_bits - 1)) - 1]

Sebaliknya, jika T tidak bertanda, rentang titik tetapnya adalah

  [min_fixed, max_fixed] = [0, (1 << num_bits) - 1]

Dari sini kita menghitung faktor skala kita, s:

  s = (2 * m) / (max_fixed - min_fixed)

Sekarang kita dapat melakukan dekuantisasi elemen-elemen tensor kita:

result = input * s

Argumen:

  • Cakupan: Objek Cakupan
  • min_range: Nilai skalar minimum yang mungkin dihasilkan untuk input.
  • max_range: Nilai skalar maksimum yang mungkin dihasilkan untuk input.

Mengembalikan:

Konstruktor dan Destruktor

Dequantize (const :: tensorflow::Scope & scope, :: tensorflow::Input input, :: tensorflow::Input min_range, :: tensorflow::Input max_range)
Dequantize (const :: tensorflow::Scope & scope, :: tensorflow::Input input, :: tensorflow::Input min_range, :: tensorflow::Input max_range, const Dequantize::Attrs & attrs)

Atribut publik

operation
output

Fungsi publik

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

Fungsi statis publik

Mode (StringPiece x)

Struktur

tensorflow::ops::Dequantize::Attrs

Pengaturan atribut opsional untuk Dequantize .

Atribut publik

operasi

Operation operation

keluaran

::tensorflow::Output output

Fungsi publik

Dekuantisasi

 Dequantize(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input input,
  ::tensorflow::Input min_range,
  ::tensorflow::Input max_range
)

Dekuantisasi

 Dequantize(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input input,
  ::tensorflow::Input min_range,
  ::tensorflow::Input max_range,
  const Dequantize::Attrs & attrs
)

simpul

::tensorflow::Node * node() const 

operator::tensorflow::Input

 operator::tensorflow::Input() const 

operator::tensorflow::Output

 operator::tensorflow::Output() const 

Fungsi statis publik

Mode

Attrs Mode(
  StringPiece x
)