หน้านี้ได้รับการแปลโดย Cloud Translation API
Switch to English

tf.quantization.dequantize

TensorFlow 1 รุ่น ดูโค้ดบน GitHub

Dequantize ของการป้อนข้อมูล 'เมตริกซ์ลงไปลอยหรือ bfloat16 Tensor

[min_range, max_range] มีลอยเกลาที่ระบุช่วงของการส่งออก ว่า '' ในโหมดควบคุมแอตทริบิวต์ว่าการคำนวณที่จะใช้ในการแปลงค่าลอยเทียบเท่าวอนของพวกเขา

ในโหมด 'MIN_COMBINED' ค่าของเมตริกซ์แต่ละคนจะได้รับการต่อไปนี้:

 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<T>::max() - numeric_limits<T>::min()

MIN_COMBINED ตัวอย่างโหมด

ถ้าใส่มาจาก QuantizedRelu6 พิมพ์ออกเป็น quint8 (ช่วง 0-255) แต่ในช่วงที่เป็นไปได้ของ QuantizedRelu6 เป็น 0-6 min_range และ max_range ค่าจึง 0.0 และ 6.0 Dequantize บน quint8 จะใช้เวลาแต่ละค่าหล่อลอยและคูณด้วย 6/255 หมายเหตุว่าถ้า quantizedtype เป็น qint8 การดำเนินการนอกจากนี้จะเพิ่มแต่ละค่า 128 ก่อนที่จะมีการคัดเลือกนักแสดง

ถ้าอยู่ในโหมด 'MIN_FIRST' แล้วใช้วิธีการนี้:

 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<double>(input) - lowest_quantized;
result = range_min + ((input - numeric_limits<T>::min()) * range_scale)
 

ถ้าอยู่ในโหมด SCALED , dequantization จะดำเนินการโดยการคูณค่าที่ป้อนแต่ละ scaling_factor (ดังนั้นการป้อนข้อมูลจาก 0 แผนที่เสมอ 0.0)

scaling_factor จะถูกกำหนดจาก min_range , max_range และ narrow_range ในทางที่เข้ากันได้กับ QuantizeAndDequantize{V2|V3} และ QuantizeV2 โดยใช้ขั้นตอนวิธีการต่อไปนี้:

 
  const int min_expected_T = std::numeric_limits<T>::min() +
    (narrow_range ? 1 : 0);
  const int max_expected_T = std::numeric_limits<T>::max();
  const float max_expected_T = std::numeric_limits<float>::max();

  const float scale_factor =
    (std::numeric_limits<T>::min() == 0) ? (max_range / max_expected_T)
                                         : std::max(min_range / min_expected_T,
                                                    max_range / max_expected_T);
 

input Tensor ต้องเป็นหนึ่งในประเภทต่อไปนี้: qint8 , quint8 , qint32 , qint16 , quint16
min_range Tensor ประเภท float32 ค่าสเกลาขั้นต่ำอาจจะผลิตเพื่อป้อนข้อมูล
max_range Tensor ประเภท float32 ค่าสเกลาสูงสุดอาจจะผลิตเพื่อป้อนข้อมูล
mode ตัวเลือก string จาก: "MIN_COMBINED", "MIN_FIRST", "SCALED" เริ่มต้นที่ "MIN_COMBINED"
narrow_range ตัวเลือก bool เริ่มต้นที่ False
axis ตัวเลือก int เริ่มต้นที่ -1
dtype ตัวเลือก tf.DType จาก: tf.bfloat16, tf.float32 เริ่มต้นที่ tf.float32 ประเภทของเมตริกซ์เอาท์พุท ปัจจุบัน Dequantize สนับสนุนลอยและ bfloat16 หาก 'dtype' เป็น 'bfloat16' ก็เพียงโหมดสนับสนุน 'MIN_COMBINED'
name ชื่อสำหรับการดำเนินงาน (ถ้ามี)

Tensor ประเภท dtype