เทนเซอร์โฟลว์ :: ops :: QuantizeAndDequantizeV2

#include <array_ops.h>

Quantizes แล้ว dequantizes เทนเซอร์

สรุป

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

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

มีหลายวิธีในการหาปริมาณ เวอร์ชันนี้ใช้การปรับขนาดเท่านั้นดังนั้น 0.0 จึงแมปเป็น 0

จาก 'num_bits' ที่ระบุในประเภทเอาต์พุตเชิงปริมาณจะกำหนดค่าเชิงปริมาณขั้นต่ำและสูงสุดที่แสดงได้

เช่น

  • [-128, 127] สำหรับเซ็น, num_bits = 8 หรือ
  • [0, 255] สำหรับไม่ได้ลงนาม num_bits = 8

ถ้า range_given == False input_min เริ่มต้น input_max จะถูกกำหนดโดยอัตโนมัติเป็นค่าต่ำสุดและสูงสุดใน input tensor มิฉะนั้นจะใช้ค่า input_min ที่ระบุ

หมายเหตุ: หากระบุ 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 และอัปเดตช่วงอินพุตแล้วจะใช้สิ่งต่อไปนี้กับแต่ละค่าในเทนเซอร์ 'อินพุต'

output = round (แคลมป์ (ค่า input_min, input_max) * scale_factor) / scale_factor

ฟังก์ชันรอบด้านบนจะปัดเศษค่าตาม round_mode ที่กำหนด

อาร์กิวเมนต์:

  • ขอบเขต: วัตถุ ขอบเขต
  • อินพุต: Tensor เพื่อหาปริมาณแล้ว dequantize
  • input_min: ถ้า range_given == True นี้จะระบุค่าอินพุตขั้นต่ำที่ต้องแสดงมิฉะนั้นจะถูกกำหนดจากค่าต่ำสุดของเทนเซอร์ input
  • input_max: ถ้า range_given == True นี้จะระบุค่าอินพุตสูงสุดที่ต้องการแสดงมิฉะนั้นจะถูกกำหนดจากค่าสูงสุดของเทนเซอร์ input

แอตทริบิวต์เสริม (ดู Attrs ):

  • signed_input: ไม่ว่าจะมีการเซ็นชื่อหรือไม่ได้ลงนามการวัดปริมาณ (จริงๆแล้วควรเรียกพารามิเตอร์นี้ว่า signed_output )
  • num_bits: bitwidth ของ quantization
  • range_given: ไม่ว่าจะกำหนดช่วงหรือควรกำหนดจากเทนเซอร์ input
  • round_mode: แอตทริบิวต์ 'round_mode' ควบคุมว่าจะใช้อัลกอริธึมการแบ่งการผูกแบบปัดเศษใดเมื่อปัดเศษค่า float ให้เทียบเท่ากับเชิงปริมาณ ปัจจุบันรองรับโหมดการปัดเศษต่อไปนี้:
  • HALF_TO_EVEN: นี่คือ round_mode เริ่มต้น
  • HALF_UP: ปัดไปทางบวก ในโหมดนี้ 7.5 รอบสูงสุด 8 และ -7.5 รอบขึ้นไป -7
  • narrow_range: ถ้าเป็นจริงค่าสัมบูรณ์ของค่าต่ำสุดเชิงปริมาณจะเหมือนกับค่าสูงสุดเชิงปริมาณแทนที่จะเป็น 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

ฟังก์ชันคงที่สาธารณะ

NarrowRange (bool x)
NumBits (int64 x)
RangeGiven (bool x)
RoundMode (StringPiece x)
SignedInput (bool x)

โครงสร้าง

tensorflow :: ops :: QuantizeAndDequantizeV2 :: Attrs

ตัวตั้งค่าแอตทริบิวต์ทางเลือกสำหรับ QuantizeAndDequantizeV2

คุณลักษณะสาธารณะ

การดำเนินการ

Operation operation

เอาท์พุท

::tensorflow::Output output

หน้าที่สาธารณะ

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
)

โหนด

::tensorflow::Node * node() const 

ตัวดำเนินการ :: tensorflow :: อินพุต

 operator::tensorflow::Input() const 

ตัวดำเนินการ :: tensorflow :: เอาท์พุท

 operator::tensorflow::Output() const 

ฟังก์ชันคงที่สาธารณะ

ช่วงแคบ ๆ

Attrs NarrowRange(
  bool x
)

NumBits

Attrs NumBits(
  int64 x
)

ช่วง

Attrs RangeGiven(
  bool x
)

RoundMode

Attrs RoundMode(
  StringPiece x
)

ลงชื่อเข้าใช้

Attrs SignedInput(
  bool x
)