แยกเทนเซอร์ 'อินพุต' ออกเป็นโฟลตหรือ bfloat16 เทนเซอร์
[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ตัวอย่างโหมด MIN_COMBINED
หากอินพุตมาจาก QuantizedRelu6 ประเภทเอาต์พุตจะเป็น quint8 (ช่วง 0-255) แต่ช่วงที่เป็นไปได้ของ QuantizedRelu6 คือ 0-6 ค่า min_range และ max_range จึงเป็น 0.0 และ 6.0 การแยกปริมาณใน quint8 จะใช้แต่ละค่า แคสต์จนลอย และคูณด้วย 6/255 โปรดทราบว่าหากประเภทเชิงปริมาณคือ 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" การลดปริมาณจะดำเนินการโดยการคูณค่าอินพุตแต่ละค่าด้วย 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);
คลาสที่ซ้อนกัน
ระดับ | ลดปริมาณตัวเลือก | แอ็ตทริบิวต์ทางเลือกสำหรับ Dequantize |
ค่าคงที่
สตริง | OP_NAME | ชื่อของ op นี้ ซึ่งรู้จักกันในชื่อของเอ็นจิ้นหลัก TensorFlow |
วิธีการสาธารณะ
เอาท์พุต <U> | เป็นเอาท์พุต () ส่งกลับค่าแฮนเดิลสัญลักษณ์ของเทนเซอร์ |
Dequantize.Options แบบคงที่ | แกน (แกนยาว) |
คงที่ <U ขยาย TNumber > ลดปริมาณ <U> | สร้าง (ขอบเขต ขอบเขต ตัว ดำเนินการ <? ขยาย TType > อินพุต ตัว ดำเนินการ < TFloat32 > minRange, ตัวดำเนินการ < TFloat32 > maxRange, Class<U> dtype, ตัวเลือก... ตัวเลือก) วิธีการจากโรงงานเพื่อสร้างคลาสที่รวมการดำเนินการ Dequantize ใหม่ |
Dequantize แบบคงที่ < TFloat32 > | สร้าง (ขอบเขต ขอบเขต ตัว ดำเนินการ <? ขยาย TType > อินพุต ตัวดำเนินการ < TFloat32 > minRange, ตัวดำเนินการ < TFloat32 > maxRange, ตัวเลือก... ตัวเลือก) วิธีการจากโรงงานเพื่อสร้างคลาสที่รวมการดำเนินการ Dequantize ใหม่โดยใช้ประเภทเอาต์พุตเริ่มต้น |
Dequantize.Options แบบคงที่ | โหมด (โหมดสตริง) |
Dequantize.Options แบบคงที่ | แคบช่วง (บูลีน แคบช่วง) |
เอาท์พุต <U> | เอาท์พุท () |
วิธีการสืบทอด
ค่าคงที่
สตริงสุดท้ายแบบคงที่สาธารณะ OP_NAME
ชื่อของ op นี้ ซึ่งรู้จักกันในชื่อของเอ็นจิ้นหลัก TensorFlow
วิธีการสาธารณะ
เอาท์พุท สาธารณะ <U> asOutput ()
ส่งกลับค่าแฮนเดิลสัญลักษณ์ของเทนเซอร์
อินพุตสำหรับการดำเนินการ TensorFlow คือเอาต์พุตของการดำเนินการ TensorFlow อื่น วิธีการนี้ใช้เพื่อรับหมายเลขอ้างอิงสัญลักษณ์ที่แสดงถึงการคำนวณอินพุต
สาธารณะ Dequantize คงที่ <U> สร้าง (ขอบเขตขอบเขต ตัว ดำเนินการ <? ขยาย TType > อินพุต ตัว ดำเนินการ < TFloat32 > minRange, ตัวดำเนินการ < TFloat32 > maxRange, Class<U> dtype, ตัวเลือก... ตัวเลือก)
วิธีการจากโรงงานเพื่อสร้างคลาสที่ห่อการดำเนินการ Dequantize ใหม่
พารามิเตอร์
ขอบเขต | ขอบเขตปัจจุบัน |
---|---|
นาที | ค่าสเกลาร์ขั้นต่ำที่อาจเกิดขึ้นสำหรับอินพุต |
ช่วงสูงสุด | ค่าสเกลาร์สูงสุดที่อาจเกิดขึ้นสำหรับอินพุต |
ประเภท | ประเภทของเทนเซอร์เอาท์พุต ปัจจุบัน Dequantize รองรับ float และ bfloat16 หาก 'dtype' เป็น 'bfloat16' จะรองรับเฉพาะโหมด 'MIN_COMBINED' เท่านั้น |
ตัวเลือก | มีค่าแอตทริบิวต์ทางเลือก |
การส่งคืน
- ตัวอย่างใหม่ของ Dequantize
Dequantize สาธารณะแบบคงที่ < TFloat32 > สร้าง (ขอบเขต ขอบเขต , ตัวดำเนินการ <? ขยาย TType > อินพุต, ตัวดำเนินการ < TFloat32 > minRange, ตัวดำเนินการ < TFloat32 > maxRange, ตัวเลือก... ตัวเลือก)
วิธีการจากโรงงานเพื่อสร้างคลาสที่รวมการดำเนินการ Dequantize ใหม่โดยใช้ประเภทเอาต์พุตเริ่มต้น
พารามิเตอร์
ขอบเขต | ขอบเขตปัจจุบัน |
---|---|
นาที | ค่าสเกลาร์ขั้นต่ำที่อาจเกิดขึ้นสำหรับอินพุต |
ช่วงสูงสุด | ค่าสเกลาร์สูงสุดที่อาจเกิดขึ้นสำหรับอินพุต |
ตัวเลือก | มีค่าแอตทริบิวต์ทางเลือก |
การส่งคืน
- ตัวอย่างใหม่ของ Dequantize