ML Topluluk Günü 9 Kasım! TensorFlow, JAX güncellemeler için bize katılın ve daha fazla bilgi edinin

tensorflow :: ops :: QuantizeAndDequantizeV2

#include <array_ops.h>

Ardından bir tensörü nicelendirir.

Özet

Bu işlem, nicelleştirilmiş ileri geçişten kaynaklanan hassasiyet kaybını simüle eder:

  1. Çıkarımda kullanıldığında hedef niceleme yöntemiyle eşleşmesi gereken tensörün sabit nokta sayılarına nicelendirilmesi.
  2. Büyük olasılıkla matmul, sonraki operasyonlar için kayan nokta sayılarına geri döndürmek.

Nicelleştirmenin farklı yolları vardır. Bu sürüm yalnızca ölçeklendirme kullanır, bu nedenle 0.0, 0 ile eşleşir.

Nicelleştirilmiş çıktı türünde belirtilen 'sayı_bitleri'nden, minimum ve maksimum gösterilebilir nicelleştirilmiş değerleri belirler.

Örneğin

  • [-128, 127] imzalı, num_bits = 8 veya
  • [0, 255] işaretsiz için, num_bits = 8.

Range_given == False ise, ilk input_min, input_max giriş tensöründeki minimum ve maksimum değerler olarak otomatik olarak belirlenecektir, aksi takdirde belirtilen input_min, input_max değerleri kullanılır.

Not: Eğer input_min, input_max belirtilirse, tensördeki gerçek minimum ve maksimum değerlere eşit olmaları gerekmez. örneğin bazı durumlarda, bu değerleri, giriş dağılımının düşük olasılıklı uçlarının kırpılacağı şekilde belirtmek faydalı olabilir.

Bu işlem, başlangıçtaki [input_min, input_max] aralığını temsil edilebilir nicemlenmiş aralıkta bulunan bir aralıkla eşleştirecek maksimum scale_factor'ı belirler.

Ölçeği input_min ve input_max değerlerinden birinden belirler, ardından diğerini, sayılabilen aralığı maksimize etmek için günceller.

Örneğin

  • çıkış işaretliyse, num_bits = 8, [input_min, input_max] = [-10.0, 5.0]: -128 / -10.0 = 12.8'lik bir scale_factor kullanır Bu durumda, input_max'ı 127 / 12.8 = olarak günceller 9.921875
  • çıkış işaretliyse, num_bits = 8, [input_min, input_max] = [-10.0, 10.0]: 127 / 10.0 = 12.7 ölçek_faktörü kullanır Bu durumda, input_min'i 128.0 / 12.7 = -10.07874 olarak günceller
  • çıktı işaretsiz ise, input_min 0 olmaya zorlanır ve sadece belirtilen input_max kullanılır.

Scale_factor'ı belirledikten ve giriş aralığını güncelledikten sonra, aşağıdakileri 'input' tensöründeki her bir değere uygular.

çıktı = yuvarlak (kelepçe (değer, giriş_min, giriş_maks.) * ölçek_faktörü) / ölçek_faktörü.

Yukarıdaki round işlevi, verilen round_mode'a göre değeri yuvarlar.

Argümanlar:

  • kapsam: Bir Scope nesnesi
  • input: Nicelemek ve sonra dequantize etmek için tensör .
  • input_min: range_given == True , bu temsil edilmesi gereken minimum giriş değerini belirtir, aksi takdirde input tensörünün minimum değerinden belirlenir.
  • input_max: range_given == True , bu 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 ):

  • işaretli_ girdi: Nicemlemenin işaretli veya işaretsiz olup olmadığı. (aslında bu parametre signed_output olarak adlandırılmış signed_output )
  • num_bits: Nicemlemenin bit genişliği.
  • aralık_ verilen: Aralığın verilip verilmeyeceği veya input tensöründen belirlenmesi gerekip gerekmediği.
  • round_mode: 'round_mode' özniteliği, float değerleri nicelleştirilmiş eşdeğerlerine yuvarlarken hangi yuvarlama bağ-kırma algoritmasının kullanılacağını denetler. Şu anda aşağıdaki yuvarlama modları desteklenmektedir:
  • HALF_TO_EVEN: bu varsayılan round_mode'dur.
  • HALF_UP: pozitife doğru yuvarlayın. Bu modda 7,5, 8'e, -7,5 ise -7'ye yuvarlanır.
  • dar_aralık: True ise, nicelleştirilmiş minimum değerin mutlak değeri, 1 büyük yerine nicelenmiş maksimum değer ile aynıdır. yani 8 bit nicemleme için minimum değer -128 yerine -127'dir.

İadeler:

  • Output : Çıkış 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

Genel statik işlevler

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 

operator :: tensorflow :: Girdi

 operator::tensorflow::Input() const 

operator :: tensorflow :: Çıktı

 operator::tensorflow::Output() const 

Genel statik işlevler

NarrowRange

Attrs NarrowRange(
  bool x
)

NumBits

Attrs NumBits(
  int64 x
)

Aralık Verilen

Attrs RangeGiven(
  bool x
)

RoundMode

Attrs RoundMode(
  StringPiece x
)

SignedInput

Attrs SignedInput(
  bool x
)