tensorflow :: ops :: QuantizeAndDequantizeV2
#include <array_ops.h>
Mengukur kemudian mendequantisasi tensor.
Ringkasan
Operasi ini mensimulasikan kerugian presisi dari forward pass terkuantisasi:
- Menghitung tensor ke angka titik tetap, yang harus sesuai dengan metode kuantisasi target saat digunakan dalam inferensi.
- 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 dariinput
tensor. - input_max: Jika
range_given == True
, ini menentukan nilai input maksimum yang perlu diwakili, jika tidak maka ditentukan dari nilai maksimum tensorinput
.
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:
-
Output
: Tensor keluaran.
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 )