tensorflow :: ops :: QuantizeAndDequantizeV2

#include <array_ops.h>

Mengukur kemudian mendequantisasi tensor.

Ringkasan

Operasi ini mensimulasikan kerugian presisi dari forward pass terkuantisasi:

  1. Menghitung tensor ke angka titik tetap, yang harus sesuai dengan metode kuantisasi target saat digunakan dalam inferensi.
  2. Dequantizing kembali ke bilangan floating point untuk operasi berikut, kemungkinan besar matmul.

Ada berbagai cara untuk mengukur. Versi ini hanya menggunakan penskalaan, jadi 0.0 dipetakan ke 0.

Dari 'num_bits' yang ditentukan dalam jenis keluaran terkuantisasi, ini menentukan nilai terkuantisasi minimum dan maksimum yang dapat diwakili.

misalnya

  • [-128, 127] untuk bertanda tangan, num_bits = 8, atau
  • [0, 255] untuk unsigned, num_bits = 8.

Jika range_given == False, input_min awal, input_max akan ditentukan secara otomatis sebagai nilai minimum dan maksimum dalam tensor input, jika tidak, nilai input_min, input_max yang ditentukan akan digunakan.

Catatan: Jika input_min, input_max ditentukan, mereka tidak perlu sama dengan nilai minimum dan maksimum aktual di tensor. misalnya dalam beberapa kasus, mungkin bermanfaat untuk menentukan nilai-nilai ini sedemikian rupa sehingga probabilitas ekstrim rendah dari distribusi input terpotong.

Operasi ini menentukan scale_factor maksimum yang akan memetakan kisaran [input_min, input_max] awal ke kisaran yang berada dalam kisaran terkuantisasi yang dapat direpresentasikan.

Ini menentukan skala dari salah satu input_min dan input_max, kemudian memperbarui yang lain untuk memaksimalkan rentang yang dapat direpresentasikan.

misalnya

  • jika output ditandatangani, num_bits = 8, [input_min, input_max] = [-10.0, 5.0]: ini akan menggunakan scale_factor -128 / -10.0 = 12.8 Dalam hal ini, itu akan memperbarui input_max menjadi 127 / 12.8 = 9,921875
  • jika output ditandatangani, num_bits = 8, [input_min, input_max] = [-10.0, 10.0]: ini akan menggunakan scale_factor 127 / 10.0 = 12.7 Dalam hal ini, itu akan memperbarui input_min menjadi 128.0 / 12.7 = -10.07874
  • jika output tidak ditandatangani, input_min dipaksa menjadi 0, dan hanya input_max yang ditentukan digunakan.

Setelah menentukan scale_factor dan memperbarui rentang input, ini menerapkan hal berikut ke setiap nilai di tensor 'input'.

output = round (penjepit (nilai, input_min, input_max) * scale_factor) / scale_factor.

Fungsi putaran di atas membulatkan nilai berdasarkan round_mode yang diberikan.

Argumen:

  • scope: Objek Scope
  • input: Tensor untuk mengukur dan kemudian mendequantisasi.
  • input_min: Jika range_given == True , ini menentukan nilai input minimum yang perlu diwakili, jika tidak maka ditentukan dari nilai min dari input tensor.
  • input_max: Jika range_given == True , ini menentukan nilai input maksimum yang perlu diwakili, jika tidak maka ditentukan dari nilai maksimum tensor input .

Atribut opsional (lihat Attrs ):

  • signed_input: Apakah kuantisasi ditandatangani atau tidak. (sebenarnya parameter ini seharusnya disebut signed_output )
  • num_bits: Lebar bit kuantisasi.
  • range_given: Apakah kisaran diberikan atau harus ditentukan dari tensor input .
  • round_mode: Atribut 'round_mode' mengontrol pembulatan algoritma tie-breaking yang digunakan saat membulatkan nilai float ke padanan terkuantisasi. Mode pembulatan berikut saat ini didukung:
  • HALF_TO_EVEN: ini adalah round_mode default.
  • HALF_UP: bulat menuju positif. Dalam mode ini 7,5 membulatkan menjadi 8 dan -7,5 membulatkan ke -7.
  • narrow_range: Jika True, maka nilai absolut dari nilai minimum terkuantisasi sama dengan nilai maksimum terkuantisasi, bukan 1 lebih besar. yaitu untuk kuantisasi 8 bit, nilai minimumnya adalah -127, bukan -128.
  • sumbu: Jika ditentukan, sumbu ini diperlakukan sebagai sumbu saluran atau irisan, dan rentang kuantisasi terpisah digunakan untuk setiap saluran atau irisan di sepanjang sumbu ini.

Pengembalian:

Pembuat dan Penghancur

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)

Atribut publik

operation
output

Fungsi publik

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

Fungsi statis publik

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

Structs

tensorflow :: ops :: QuantizeAndDequantizeV2 :: Attrs

Penyetel atribut opsional untuk QuantizeAndDequantizeV2 .

Atribut publik

operasi

Operation operation

keluaran

::tensorflow::Output output

Fungsi publik

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
)

simpul

::tensorflow::Node * node() const 

operator :: tensorflow :: Input

 operator::tensorflow::Input() const 

operator :: tensorflow :: Keluaran

 operator::tensorflow::Output() const 

Fungsi statis publik

Sumbu

Attrs Axis(
  int64 x
)

NarrowRange

Attrs NarrowRange(
  bool x
)

NumBits

Attrs NumBits(
  int64 x
)

RangeDiberikan

Attrs RangeGiven(
  bool x
)

RoundMode

Attrs RoundMode(
  StringPiece x
)

SignedInput

Attrs SignedInput(
  bool x
)