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))
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:
-
Output: Tensor output.
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 )