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:

  1. 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.
  2. 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 == True ise, temsil edilmesi gereken minimum giriş değerini belirtir; aksi takdirde input tensörünün minimum değerinden belirlenir.
  • input_max: Eğer range_given == True ise, temsil edilmesi gereken maksimum giriş değerini belirtir; aksi takdirde input tensö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_output olmalıydı.)
  • num_bits: Nicelleştirmenin bit genişliği.
  • range_given: Aralığın verilip verilmediği veya input tensö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
)