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

#include <array_ops.h>

परिमाणीकरण करता है फिर टेंसर का परिमाणीकरण करता है।

सारांश

यह ऑप मात्राबद्ध फॉरवर्ड पास से सटीक हानि का अनुकरण करता है:

  1. टेन्सर को निश्चित बिंदु संख्याओं पर परिमाणित करना, जो अनुमान में उपयोग किए जाने पर लक्ष्य परिमाणीकरण विधि से मेल खाना चाहिए।
  2. निम्नलिखित ऑप्स के लिए इसे फ़्लोटिंग पॉइंट नंबरों पर वापस डिक्वांटाइज़ करना, संभवतः मैटमुल।

मात्रा निर्धारित करने के विभिन्न तरीके हैं। यह संस्करण केवल स्केलिंग का उपयोग करता है, इसलिए 0.0 को 0 पर मैप किया जाता है।

परिमाणित आउटपुट प्रकार में निर्दिष्ट 'num_bits' से, यह न्यूनतम और अधिकतम प्रतिनिधित्व योग्य परिमाणित मान निर्धारित करता है।

उदाहरण के लिए

  • [-128, 127] हस्ताक्षरित के लिए, num_bits = 8, या
  • [0,255] अहस्ताक्षरित के लिए, num_bits = 8.

यदि रेंज_गिवेन == गलत है, तो प्रारंभिक इनपुट_मिन, इनपुट_मैक्स स्वचालित रूप से इनपुट टेंसर में न्यूनतम और अधिकतम मान के रूप में निर्धारित किया जाएगा, अन्यथा इनपुट_मिन, इनपुट_मैक्स के निर्दिष्ट मान का उपयोग किया जाता है।

नोट: यदि इनपुट_मिन, इनपुट_मैक्स निर्दिष्ट हैं, तो उन्हें टेंसर में वास्तविक न्यूनतम और अधिकतम मानों के बराबर होने की आवश्यकता नहीं है। उदाहरण के लिए, कुछ मामलों में इन मानों को इस तरह निर्दिष्ट करना फायदेमंद हो सकता है कि इनपुट वितरण की कम संभावना वाले चरम को काट दिया जाए।

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

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

उदाहरण के लिए

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

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

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

उपरोक्त राउंड फ़ंक्शन दिए गए राउंड_मोड के आधार पर मान को राउंड करता है।

तर्क:

  • स्कोप: एक स्कोप ऑब्जेक्ट
  • इनपुट: मात्रा निर्धारित करने और फिर मात्रा घटाने के लिए टेंसर
  • इनपुट_मिन: यदि range_given == True , तो यह न्यूनतम इनपुट मान निर्दिष्ट करता है जिसे प्रदर्शित करने की आवश्यकता है, अन्यथा यह input टेंसर के न्यूनतम मान से निर्धारित होता है।
  • इनपुट_मैक्स: यदि range_given == True , तो यह अधिकतम इनपुट मान निर्दिष्ट करता है जिसे प्रदर्शित करने की आवश्यकता है, अन्यथा यह input टेंसर के अधिकतम मान से निर्धारित होता है।

वैकल्पिक विशेषताएँ (देखें Attrs ):

  • हस्ताक्षरित_इनपुट: परिमाणीकरण हस्ताक्षरित है या अहस्ताक्षरित। (वास्तव में इस पैरामीटर को signed_output कहा जाना चाहिए था)
  • num_bits: परिमाणीकरण की बिटविड्थ।
  • रेंज_गिवेन: क्या रेंज दी गई है या input टेंसर से निर्धारित की जानी चाहिए।
  • राउंड_मोड: 'राउंड_मोड' विशेषता नियंत्रित करती है कि फ्लोट मानों को उनके परिमाणित समकक्षों में राउंड करते समय किस राउंडिंग टाई-ब्रेकिंग एल्गोरिदम का उपयोग किया जाता है। निम्नलिखित राउंडिंग मोड वर्तमान में समर्थित हैं:
  • HALF_TO_EVEN: यह डिफ़ॉल्ट राउंड_मोड है।
  • HALF_UP: सकारात्मक की ओर गोल। इस मोड में 8 तक 7.5 राउंड और -7 तक -7.5 राउंड होते हैं।
  • नैरो_रेंज: यदि सत्य है, तो परिमाणित न्यूनतम मान का निरपेक्ष मान परिमाणित अधिकतम मान के समान है, न कि 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)

संरचनाएँ

टेंसरफ्लो:: ऑप्स:: क्वांटाइजएंडडिक्वांटाइजवी2:: एटर्स

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
)