tensorflow:: ops:: QuantizeAndDequantizeV2

#include <array_ops.h>

একটি টেনসরকে প্রথমে কোয়ান্টাইজ এবং পরে ডিকোয়ান্টাইজ করে।

সারসংক্ষেপ

এই অপারেশনটি কোয়ান্টাইজড ফরোয়ার্ড পাস থেকে উদ্ভূত প্রিসিশন লসকে নিম্নোক্তভাবে সিমুলেট করে:

  1. টেনসরকে ফিক্সড পয়েন্ট সংখ্যায় কোয়ান্টাইজ করা, যা ইনফারেন্সে ব্যবহারের সময় টার্গেট কোয়ান্টাইজেশন পদ্ধতির সাথে মিলতে হবে।
  2. পরবর্তী অপারেশনগুলোর জন্য, সম্ভবত ম্যাটমাল্টিপল (matmul), এটিকে ডিকোয়ান্টাইজ করে আবার ফ্লোটিং পয়েন্ট সংখ্যায় রূপান্তর করা হচ্ছে।

কোয়ান্টাইজ করার বিভিন্ন উপায় আছে। এই সংস্করণটি শুধুমাত্র স্কেলিং ব্যবহার করে, তাই 0.0, 0-তে রূপান্তরিত হয়।

কোয়ান্টাইজড আউটপুট টাইপে নির্দিষ্ট 'num_bits' থেকে এটি সর্বনিম্ন এবং সর্বোচ্চ উপস্থাপনযোগ্য কোয়ান্টাইজড মান নির্ধারণ করে।

যেমন

  • স্বাক্ষরিত হলে [-১২৮, ১২৭], num_bits = ৮, অথবা
  • অচিহ্নিত সংখ্যার জন্য [0, 255], num_bits = 8।

যদি range_given == False হয়, তাহলে প্রাথমিক input_min ও input_max স্বয়ংক্রিয়ভাবে ইনপুট টেনসরের সর্বনিম্ন ও সর্বোচ্চ মান হিসেবে নির্ধারিত হবে, অন্যথায় input_min ও input_max-এর নির্দিষ্ট মানগুলো ব্যবহৃত হবে।

দ্রষ্টব্য: যদি 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 এর একটি scale_factor ব্যবহার করবে। এই ক্ষেত্রে, এটি input_max কে 127 / 12.8 = 9.921875 এ আপডেট করবে।
  • যদি আউটপুটটি সাইনড হয়, num_bits = 8, [input_min, input_max] = [-10.0, 10.0]: তাহলে এটি 127 / 10.0 = 12.7 এর একটি scale_factor ব্যবহার করবে। এই ক্ষেত্রে, এটি input_min কে 128.0 / 12.7 = -10.07874 এ আপডেট করবে।
  • আউটপুটটি আনসাইনড হলে, input_min-কে ০ হতে বাধ্য করা হয় এবং শুধুমাত্র নির্দিষ্ট input_max ব্যবহৃত হয়।

scale_factor নির্ধারণ এবং input range আপডেট করার পর, এটি 'input' টেনসরের প্রতিটি মানের উপর নিম্নলিখিত বিষয়গুলো প্রয়োগ করে।

আউটপুট = রাউন্ড(ক্ল্যাম্প(মান, ইনপুট_মিনিমাম, ইনপুট_ম্যাক্স) * স্কেল_ফ্যাক্টর) / স্কেল_ফ্যাক্টর।

উপরের 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: এটি হলো ডিফল্ট রাউন্ড মোড।
  • হাফ_আপ: ধনাত্মক সংখ্যার দিকে রাউন্ড করা। এই মোডে 7.5 রাউন্ড হয়ে 8 হয় এবং -7.5 রাউন্ড হয়ে -7 হয়।
  • narrow_range: যদি True হয়, তাহলে কোয়ান্টাইজড সর্বনিম্ন মানের পরম মান, কোয়ান্টাইজড সর্বোচ্চ মানের সমান হবে, ১ বেশি নয়। অর্থাৎ, ৮-বিট কোয়ান্টাইজেশনের ক্ষেত্রে সর্বনিম্ন মান -১২৮ এর পরিবর্তে -১২৭ হবে।
  • অক্ষ: যদি নির্দিষ্ট করা থাকে, তাহলে এই অক্ষটিকে একটি চ্যানেল বা স্লাইস অক্ষ হিসেবে গণ্য করা হয় এবং এই অক্ষ বরাবর প্রতিটি চ্যানেল বা স্লাইসের জন্য একটি পৃথক কোয়ান্টাইজেশন পরিসর ব্যবহৃত হয়।

ফেরত:

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