tensorflow::ops::QuantizeAndDequantizeV2
#include <array_ops.h>Bir tensörü nicelleştirir ve ardından nicelleştirmeyi tersine çevirir.
Özet
Bu işlem, nicelleştirilmiş ileri geçişten kaynaklanan hassasiyet kaybını şu şekilde simüle eder:
- Tensörün sabit nokta sayılarına dönüştürülmesi, çıkarım işleminde kullanıldığında hedef niceleme yöntemiyle eşleşmelidir.
- Sonraki işlemler için (büyük olasılıkla matris çarpımı) onu tekrar ondalık sayılara dönüştürüyoruz.
Nicelleştirmenin farklı yolları vardır. Bu sürüm yalnızca ölçeklendirme kullanır, bu nedenle 0.0, 0'a eşlenir.
Nicelleştirilmiş çıkış türünde belirtilen 'num_bits' değerinden, temsil edilebilecek minimum ve maksimum nicelleştirilmiş değerleri belirler.
örneğin
- [-128, 127] işaretli için, num_bits = 8 veya
- [0, 255] işaretsiz için, num_bits = 8.
Eğer `range_given` değeri `False` ise, başlangıçtaki `input_min` ve `input_max` değerleri, giriş tensöründeki minimum ve maksimum değerler olarak otomatik olarak belirlenir; aksi takdirde, belirtilen `input_min` ve `input_max` değerleri kullanılır.
Not: input_min ve input_max belirtilmişse, bunların tensördeki gerçek minimum ve maksimum değerlere eşit olması gerekmez. Örneğin, bazı durumlarda, giriş dağılımının düşük olasılıklı uç noktalarının kırpılması için bu değerleri belirtmek faydalı olabilir.
Bu işlem, başlangıçtaki [input_min, input_max] aralığını temsil edilebilir nicelleştirilmiş aralık içinde yer alan bir aralığa eşleyecek maksimum ölçek faktörünü belirler.
Bu, input_min ve input_max değerlerinden birinden ölçeği belirler, ardından temsil edilebilir aralığı en üst düzeye çıkarmak için diğerini günceller.
örneğin
- Çıkış işaretli ise, num_bits = 8, [input_min, input_max] = [-10.0, 5.0]: -128 / -10.0 = 12.8 ölçek faktörü kullanılır. Bu durumda, input_max 127 / 12.8 = 9.921875 olarak güncellenir.
- Çıkış işaretli ise, num_bits = 8, [input_min, input_max] = [-10.0, 10.0]: 127 / 10.0 = 12.7 ölçek faktörü kullanılır. Bu durumda, input_min 128.0 / 12.7 = -10.07874 olarak güncellenir.
- Çıktı işaretsiz ise, input_min değeri 0'a zorlanır ve yalnızca belirtilen input_max değeri kullanılır.
Ölçek faktörünü belirledikten ve giriş aralığını güncelledikten sonra, 'giriş' tensöründeki her değere aşağıdakileri uygular.
Çıktı = yuvarla(sınır(değer, giriş_min, giriş_max) * ölçek_faktörü) / ölçek_faktörü.
Yukarıdaki yuvarlama fonksiyonu, verilen yuvarlama moduna göre değeri yuvarlar.
Argümanlar:
- kapsam: Bir Kapsam nesnesi
- Giriş: Nicelleştirme ve ardından nicelleştirmeyi tersine çevirme işlemine tabi tutulacak tensör .
- input_min: Eğer
range_given == Trueise, temsil edilmesi gereken minimum giriş değerini belirtir; aksi takdirdeinputtensörünün minimum değerinden belirlenir. - input_max: Eğer
range_given == Trueise, temsil edilmesi gereken maksimum giriş değerini belirtir; aksi takdirdeinputtensörünün maksimum değerinden belirlenir.
İsteğe bağlı özellikler (bkz. Attrs ):
- signed_input: Nicelleştirmenin işaretli mi yoksa işaretsiz mi olduğunu belirtir. (Aslında bu parametrenin adı
signed_outputolmalıydı.) - num_bits: Nicelleştirmenin bit genişliği.
- range_given: Aralığın verilip verilmediği veya
inputtensöründen belirlenmesi gerekip gerekmediği. - `round_mode`: `round_mode` özniteliği, ondalık sayıları nicelleştirilmiş karşılıklarına yuvarlarken hangi yuvarlama algoritmasının kullanılacağını kontrol eder. Şu anda aşağıdaki yuvarlama modları desteklenmektedir:
- YARIDAN ÇİFTE: Bu, varsayılan yuvarlama modudur.
- HALF_UP: pozitife doğru yuvarlama. Bu modda 7,5 yukarı yuvarlanarak 8'e, -7,5 ise yukarı yuvarlanarak -7'ye dönüşür.
- narrow_range: Eğer True ise, nicelleştirilmiş minimum değerin mutlak değeri, nicelleştirilmiş maksimum değerle aynıdır, 1 daha büyük değildir. Yani 8 bit nicelleştirme için minimum değer -128 yerine -127'dir.
- Eksen: Belirtilirse, bu eksen bir kanal veya dilim ekseni olarak ele alınır ve bu eksen boyunca her kanal veya dilim için ayrı bir niceleme aralığı kullanılır.
İadeler:
-
Output: Çıktı tensörü.
Yapıcılar ve Yıkıcılar | |
|---|---|
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) |
Genel özellikler | |
|---|---|
operation | |
output | |
Kamusal işlevler | |
|---|---|
node () const | ::tensorflow::Node * |
operator::tensorflow::Input () const | |
operator::tensorflow::Output () const | |
Herkese açık statik fonksiyonlar | |
|---|---|
Axis (int64 x) | |
NarrowRange (bool x) | |
NumBits (int64 x) | |
RangeGiven (bool x) | |
RoundMode (StringPiece x) | |
SignedInput (bool x) | |
Yapılar | |
|---|---|
| tensorflow::ops::QuantizeAndDequantizeV2::Attrs | QuantizeAndDequantizeV2 için isteğe bağlı öznitelik ayarlayıcıları. |
Genel özellikler
operasyon
Operation operation
çıktı
::tensorflow::Output output
Kamusal işlevler
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 )
düğüm
::tensorflow::Node * node() const
operatör::tensorflow::Giriş
operator::tensorflow::Input() const
operatör::tensorflow::Çıktı
operator::tensorflow::Output() const
Herkese açık statik fonksiyonlar
Eksen
Attrs Axis( int64 x )
Dar Aralık
Attrs NarrowRange( bool x )
NumBits
Attrs NumBits( int64 x )
Verilen Aralık
Attrs RangeGiven( bool x )
Yuvarlak Mod
Attrs RoundMode( StringPiece x )
İmzalıGiriş
Attrs SignedInput( bool x )