tensorflow::ops::QuantizeAndDequantizeV2

#include <array_ops.h>

ทำการแปลงเทนเซอร์ให้เป็นค่าควอนตัมแล้วแปลงกลับเป็นค่าดีควอนตัม

สรุป

การดำเนินการนี้จำลองการสูญเสียความแม่นยำจากการส่งผ่านไปข้างหน้าแบบควอนไทซ์โดย:

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

การดำเนินการนี้จะกำหนดค่า 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'

output = round(clamp(value, 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: นี่คือโหมดการปัดเศษเริ่มต้น
  • HALF_UP: ปัดเศษขึ้นเป็นค่าบวก ในโหมดนี้ 7.5 จะปัดขึ้นเป็น 8 และ -7.5 จะปัดขึ้นเป็น -7
  • narrow_range: ถ้าเป็น 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)

โครงสร้าง

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 

ตัวดำเนินการ::เทนเซอร์โฟลว์::อินพุต

 operator::tensorflow::Input() const 

ตัวดำเนินการ::เทนเซอร์โฟลว์::เอาต์พุต

 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
)