เทนเซอร์โฟลว์:: ปฏิบัติการ:: การหาปริมาณและการลดปริมาณV2

#include <array_ops.h>

การหาปริมาณแล้วจึงแยกเทนเซอร์ออก

สรุป

op นี้จำลองการสูญเสียความแม่นยำจากการส่งต่อเชิงปริมาณโดย:

  1. การหาปริมาณเทนเซอร์ให้เป็นจำนวนจุดคงที่ ซึ่งควรตรงกับวิธีการหาปริมาณเป้าหมายเมื่อใช้ในการอนุมาน
  2. การแยกส่วนกลับเป็นตัวเลขทศนิยมสำหรับการดำเนินการต่อไปนี้ ซึ่งน่าจะเป็นมัทมัล

มีหลายวิธีในการหาปริมาณ เวอร์ชันนี้ใช้เฉพาะการปรับขนาด ดังนั้น 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
)