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 निर्दिष्ट किए गए हैं, तो यह आवश्यक नहीं है कि वे टेंसर में वास्तविक न्यूनतम और अधिकतम मानों के बराबर हों। उदाहरण के लिए, कुछ मामलों में इन मानों को इस प्रकार निर्दिष्ट करना लाभकारी हो सकता है कि इनपुट वितरण के निम्न संभाव्यता वाले चरम मानों को हटा दिया जाए।

यह ऑपरेशन अधिकतम स्केल फैक्टर निर्धारित करता है जो प्रारंभिक [इनपुट_मिन, इनपुट_मैक्स] रेंज को एक ऐसी रेंज में मैप करेगा जो प्रतिनिधित्व योग्य क्वांटाइज्ड रेंज के भीतर आती है।

यह इनपुट_मिन और इनपुट_मैक्स में से किसी एक से स्केल निर्धारित करता है, फिर प्रतिनिधित्व योग्य सीमा को अधिकतम करने के लिए दूसरे को अपडेट करता है।

उदाहरण के लिए

  • यदि आउटपुट साइन्ड है, num_bits = 8, [input_min, input_max] = [-10.0, 5.0]: तो यह -128 / -10.0 = 12.8 के स्केल फैक्टर का उपयोग करेगा। इस स्थिति में, यह input_max को 127 / 12.8 = 9.921875 में अपडेट करेगा।
  • यदि आउटपुट साइन्ड है, num_bits = 8, [input_min, input_max] = [-10.0, 10.0]: तो यह 127 / 10.0 = 12.7 के स्केल फैक्टर का उपयोग करेगा। इस स्थिति में, यह input_min को 128.0 / 12.7 = -10.07874 में अपडेट करेगा।
  • यदि आउटपुट अहस्ताक्षरित है, तो input_min को 0 पर बाध्य किया जाता है, और केवल निर्दिष्ट input_max का उपयोग किया जाता है।

स्केल फैक्टर निर्धारित करने और इनपुट रेंज को अपडेट करने के बाद, यह 'इनपुट' टेंसर में प्रत्येक मान पर निम्नलिखित लागू करता है।

आउटपुट = राउंड(क्लैंप(वैल्यू, इनपुट_मिन, इनपुट_मैक्स) * स्केल_फैक्टर) / स्केल_फैक्टर.

उपरोक्त राउंड फंक्शन दिए गए 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-बिट क्वांटाइजेशन के लिए, न्यूनतम मान -128 के बजाय -127 होता है।
  • अक्ष: यदि निर्दिष्ट किया गया है, तो इस अक्ष को चैनल या स्लाइस अक्ष के रूप में माना जाता है, और इस अक्ष के साथ प्रत्येक चैनल या स्लाइस के लिए एक अलग क्वांटाइजेशन रेंज का उपयोग किया जाता है।

प्रतिफल:

  • 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)

संरचनाएँ

टेन्सरफ्लो::ऑप्स::क्वांटाइज़एंडडीक्वांटाइज़V2::एट्रिब्यूट्स

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 

ऑपरेटर::टेन्सरफ्लो::इनपुट

 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
)