เทนเซอร์โฟลว์:: ปฏิบัติการ:: การหาปริมาณและการลดปริมาณV2
#include <array_ops.h>
การหาปริมาณแล้วจึงแยกเทนเซอร์ออก
สรุป
op นี้จำลองการสูญเสียความแม่นยำจากการส่งต่อเชิงปริมาณโดย:
- การหาปริมาณเทนเซอร์ให้เป็นจำนวนจุดคงที่ ซึ่งควรตรงกับวิธีการหาปริมาณเป้าหมายเมื่อใช้ในการอนุมาน
- การแยกส่วนกลับเป็นตัวเลขทศนิยมสำหรับการดำเนินการต่อไปนี้ ซึ่งน่าจะเป็นมัทมัล
มีหลายวิธีในการหาปริมาณ เวอร์ชันนี้ใช้เฉพาะการปรับขนาด ดังนั้น 0.0 จึงแมปเป็น 0
จาก 'num_bits' ที่ระบุในประเภทเอาต์พุตเชิงปริมาณ จะกำหนดค่าเชิงปริมาณต่ำสุดและสูงสุดที่เป็นตัวแทนได้
เช่น
- [-128, 127] สำหรับการลงนาม num_bits = 8 หรือ
- [0, 255] สำหรับไม่ได้ลงนาม num_bits = 8
หาก range_given == False เริ่มต้น input_min, input_max จะถูกกำหนดโดยอัตโนมัติเป็นค่าต่ำสุดและสูงสุดในเทนเซอร์อินพุต มิฉะนั้นจะใช้ค่าที่ระบุของ input_min, input_max
หมายเหตุ: หากระบุ input_min, input_max ไว้ ก็ไม่จำเป็นต้องเท่ากับค่าต่ำสุดและค่าสูงสุดจริงในเทนเซอร์ เช่น ในบางกรณี อาจเป็นประโยชน์ที่จะระบุค่าเหล่านี้ เช่น ความน่าจะเป็นต่ำสุดขั้วของการแจกแจงอินพุตถูกตัดออก
op นี้กำหนด scale_factor สูงสุดที่จะแมปช่วง [input_min, input_max] เริ่มต้นกับช่วงที่อยู่ภายในช่วงเชิงปริมาณที่เป็นตัวแทนได้
โดยจะกำหนดมาตราส่วนจากหนึ่งใน input_min และ input_max จากนั้นอัปเดตอีกอันหนึ่งเพื่อเพิ่มช่วงที่เป็นตัวแทนได้สูงสุด
เช่น
- หากเอาต์พุตถูกเซ็นชื่อ num_bits = 8, [input_min, input_max] = [-10.0, 5.0]: จะใช้ scale_factor เป็น -128 / -10.0 = 12.8 ในกรณีนี้ มันจะอัปเดต input_max เป็น 127 / 12.8 = 9.921875
- หากเอาต์พุตถูกลงนาม num_bits = 8, [input_min, input_max] = [-10.0, 10.0]: จะใช้ scale_factor เป็น 127 / 10.0 = 12.7 ในกรณีนี้ มันจะอัปเดต input_min เป็น 128.0 / 12.7 = -10.07874
- หากเอาต์พุตไม่ได้ลงนาม input_min จะถูกบังคับให้เป็น 0 และใช้เฉพาะ input_max ที่ระบุเท่านั้น
หลังจากกำหนด scale_factor และอัปเดตช่วงอินพุตแล้ว ระบบจะใช้สิ่งต่อไปนี้กับแต่ละค่าในเทนเซอร์ 'อินพุต'
เอาท์พุท = รอบ (แคลมป์ (ค่า, input_min, input_max) * scale_factor) / scale_factor.
ฟังก์ชัน Round ด้านบนจะปัดเศษค่าตาม Round_mode ที่กำหนด
ข้อโต้แย้ง:
- ขอบเขต: วัตถุ ขอบเขต
- อินพุต: เทนเซอร์ เพื่อหาปริมาณแล้วแยกส่วน
- input_min: หาก
range_given == True
ค่านี้จะระบุค่าอินพุตขั้นต่ำที่ต้องแสดง ไม่เช่นนั้นจะถูกกำหนดจากค่าต่ำสุดของเทนเซอร์input
- input_max: ถ้า
range_given == True
ค่านี้จะระบุค่าอินพุตสูงสุดที่ต้องแสดง ไม่เช่นนั้นจะถูกกำหนดจากค่าสูงสุดของเทนเซอร์input
แอ็ตทริบิวต์ทางเลือก (ดู Attrs
):
- signed_input: ไม่ว่าการวัดปริมาณจะมีการลงนามหรือไม่ได้ลงนาม (จริงๆ แล้วพารามิเตอร์นี้ควรเรียกว่า
signed_output
) - num_bits: บิตความกว้างของการหาปริมาณ
- range_given: กำหนดช่วงหรือควรกำหนดจากเทนเซอร์
input
- round_mode: แอ็ตทริบิวต์ 'round_mode' ควบคุมว่าอัลกอริธึมการปัดเศษการปัดเศษใดที่จะใช้เมื่อปัดเศษค่าทศนิยมให้เทียบเท่ากับเชิงปริมาณ ปัจจุบันรองรับโหมดการปัดเศษต่อไปนี้:
- HALF_TO_EVEN: นี่เป็นค่าเริ่มต้นของ round_mode
- HALF_UP: ปัดเศษไปทางบวก ในโหมดนี้ 7.5 ปัดขึ้นเป็น 8 และ -7.5 ปัดขึ้นเป็น -7
- ช่วงแคบ: หากเป็น True ค่าสัมบูรณ์ของค่าต่ำสุดเชิงปริมาณจะเหมือนกับค่าสูงสุดเชิงปริมาณ แทนที่จะมากกว่า 1 เช่น สำหรับการหาปริมาณ 8 บิต ค่าต่ำสุดคือ -127 แทนที่จะเป็น -128
- แกน: หากระบุไว้ แกนนี้จะถือเป็นช่องหรือแกนชิ้น และใช้ช่วงการแยกปริมาณที่แยกกันสำหรับแต่ละช่องหรือชิ้นตามแกนนี้
ผลตอบแทน:
-
Output
: เทนเซอร์เอาท์พุต
ตัวสร้างและผู้ทำลาย | |
---|---|
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) |
คุณลักษณะสาธารณะ | |
---|---|
operation | |
output |
งานสาธารณะ | |
---|---|
node () const | ::tensorflow::Node * |
operator::tensorflow::Input () const | |
operator::tensorflow::Output () const |
ฟังก์ชันคงที่สาธารณะ | |
---|---|
Axis (int64 x) | |
NarrowRange (bool x) | |
NumBits (int64 x) | |
RangeGiven (bool x) | |
RoundMode (StringPiece x) | |
SignedInput (bool x) |
โครงสร้าง | |
---|---|
เทนเซอร์โฟลว์ :: ops :: QuantizeAndDequantizeV2 :: Attrs | ตัวตั้งค่าแอ็ตทริบิวต์ทางเลือกสำหรับ QuantizeAndDequantizeV2 |
คุณลักษณะสาธารณะ
การดำเนินการ
Operation operation
เอาท์พุท
::tensorflow::Output output
งานสาธารณะ
การหาปริมาณและการลดปริมาณV2
QuantizeAndDequantizeV2( const ::tensorflow::Scope & scope, ::tensorflow::Input input, ::tensorflow::Input input_min, ::tensorflow::Input input_max )
การหาปริมาณและการลดปริมาณV2
QuantizeAndDequantizeV2( const ::tensorflow::Scope & scope, ::tensorflow::Input input, ::tensorflow::Input input_min, ::tensorflow::Input input_max, const QuantizeAndDequantizeV2::Attrs & attrs )
โหนด
::tensorflow::Node * node() const
ตัวดำเนินการ::tensorflow::อินพุต
operator::tensorflow::Input() const
ตัวดำเนินการ::tensorflow::เอาต์พุต
operator::tensorflow::Output() const
ฟังก์ชันคงที่สาธารณะ
แกน
Attrs Axis( int64 x )
ช่วงแคบ
Attrs NarrowRange( bool x )
นัมบิตส์
Attrs NumBits( int64 x )
ช่วงที่กำหนด
Attrs RangeGiven( bool x )
โหมดกลม
Attrs RoundMode( StringPiece x )
ลงนามอินพุต
Attrs SignedInput( bool x )