সেন্সরফ্লো :: অপস :: কোয়ান্টিজভি 2

#include <array_ops.h>

টাইপ ফ্লোটের 'ইনপুট' সেন্সরটির পরিমাণ 'আউটপুট' টাইপ 'টি' করুন an

সারসংক্ষেপ

[মিনি_রেঞ্জ, ম্যাক্স অ্যারেঞ্জ] স্কেলার ফ্লোট যা 'ইনপুট' ডেটার জন্য সীমা নির্দিষ্ট করে। 'মোড' অ্যাট্রিবিউট নিয়ন্ত্রণ করে ঠিক কোন গণনাগুলি ভাসমান মানকে তাদের কোয়ান্টাইজড সমতলে রূপান্তর করতে ব্যবহৃত হয়। 'রাউন্ড_মোড' অ্যাট্রিবিউট নিয়ন্ত্রণ করে যে রাউন্ডিং টাই-ব্রেকিং অ্যালগরিদম ব্যবহৃত হয় যখন তাদের কোয়ান্টাইজড সমতুল্যে ভাসমান মানগুলিকে গোল করে।

'MIN_COMBINED' মোডে, টেনসারের প্রতিটি মান নীচে থেকে যাবে:

out[i] = (in[i] - min_range) * range(T) / (max_range - min_range)
if T == qint8: out[i] -= (range(T) + 1) / 2.0

এখানে range(T) = numeric_limits ::max() - numeric_limits ::min() range(T) = numeric_limits ::max() - numeric_limits ::min() range(T) = numeric_limits ::max() - numeric_limits ::min()

MIN_COMBINED মোড উদাহরণ

ধরুন ইনপুটটি টাইপ ফ্লোট এবং এর সম্ভাব্য পরিসীমা [0.0, 6.0] এবং আউটপুট টাইপটি কুইন্ট 8 ([0, 255])। মিনি_রেঞ্জ এবং সর্বোচ্চ_আরজ মানগুলি 0.0 এবং 6.0 হিসাবে নির্দিষ্ট করা উচিত। ভাসা থেকে কুইন্ট 8-তে পরিমাণ নির্ধারণ করা ইনপুটটির প্রতিটি মান 255/6 দ্বারা গুণিত করে কুইন্ট 8 এ ফেলে দেবে।

যদি আউটপুট ধরণটি কুইন্ট 8 ([-128, 127]) হয়, অপারেশনটি কাস্টিংয়ের আগে প্রতিটি মান 128 দ্বারা বিয়োগ করবে, যাতে মানগুলির পরিসীমা Qint8 এর পরিসরের সাথে একত্রিত হয়।

যদি মোডটি 'MIN_FIRST' হয় তবে এই পদ্ধতির ব্যবহার করা হবে:

num_discrete_values = 1 << (# of bits in T)
range_adjust = num_discrete_values / (num_discrete_values - 1)
range = (range_max - range_min) * range_adjust
range_scale = num_discrete_values / range
quantized = round(input * range_scale) - round(range_min * range_scale) +
  numeric_limits::min()
quantized = max(quantized, numeric_limits::min())
quantized = min(quantized, numeric_limits::max())

এটির এবং MIN_COMBINED এর মধ্যে সবচেয়ে বড় পার্থক্য হ'ল গোলাকার মান থেকে বিয়োগের আগে সর্বনিম্নতম পরিসরটি প্রথমে গোল করা হয়। MIN_COMBINED এর সাহায্যে একটি ছোট পক্ষপাত চালু করা হয়েছে যেখানে কোয়ান্টাইজিং এবং ডিসকান্টাইজিংয়ের পুনরাবৃত্তি পুনরাবৃত্তি একটি বৃহত্তর এবং বৃহত্তর ত্রুটির পরিচয় দেয়।

স্কেলড মোড উদাহরণ

SCALED মোড QuantizeAndDequantize{V2|V3} ব্যবহৃত কোয়ান্টাইজেশন পদ্ধতির সাথে মেলে QuantizeAndDequantize{V2|V3}

মোডটি যদি SCALED , তবে প্রতিটি ইনপুট মানকে একটি স্কেলিং_ফ্যাক্টর দিয়ে গুণ করে কোয়ান্টাইজেশন করা হয়। স্কেলিং_ফ্যাক্টরটি min_range এবং max_range থেকে min_range বৃহত্তর হিসাবে min_range যাতে max_range থেকে min_range পর্যন্ত max_range টি টাইপের মানগুলির মধ্যে উপস্থাপনযোগ্য is

  

  const int min_T = std::numeric_limits::min();
  const int max_T = std::numeric_limits::max();
  const float max_float = std::numeric_limits::max();

  const float scale_factor_from_min_side =
      (min_T * min_range > 0) ? min_T / min_range : max_float;
  const float scale_factor_from_max_side =
      (max_T * max_range > 0) ? max_T / max_range : max_float;

  const float scale_factor = std::min(scale_factor_from_min_side,
                                      scale_factor_from_max_side);

আমরা পরবর্তীকালে মিনি_আরঞ্জ এবং সর্বোচ্চ_আরঞ্জ সমন্বিত করতে স্কেল_ফ্যাক্টরটি ব্যবহার করি:

      min_range = min_T / scale_factor;
      max_range = max_T / scale_factor;

উদাহরণস্বরূপ যদি টি = কুইন্ট 8, এবং শুরুতে মিনি_রেঞ্জ = -10, এবং সর্বোচ্চ_রেঞ্জ = 9, আমরা -128 / -10.0 = 12.8 থেকে 127 / 9.0 = 14.11 এর তুলনা করব এবং স্কেলিং_ফ্যাক্টর = 12.8 সেট করব এই ক্ষেত্রে, মিনি_আরঞ্জ -10 থাকবে, তবে সর্বোচ্চ_আরঞ্জ 127 / 12.8 = 9.921875 এ সামঞ্জস্য করা হবে

সুতরাং আমরা ইনপুট মানগুলি (-10, 9.921875) থেকে (-128, 127) পরিমাপ করব।

ইনপুট min_range এখন min_range থেকে max_range min_range ক্লিপিংয়ের মাধ্যমে পরিমাপ করা যেতে পারে, তারপরে স্কেল_ফ্যাক্টর দ্বারা নিম্নরূপে গুণ করা:

result = round(min(max_range, max(min_range, input)) * scale_factor)

এই ক্রিয়াকলাপের 2 এবং 3 আউটপুট হিসাবে সামঞ্জস্য হওয়া min_range এবং max_range ফিরিয়ে দেওয়া হয়েছে। এই ফলাফলগুলি আরও কোনও গণনার জন্য পরিসীমা হিসাবে ব্যবহার করা উচিত।

সরু_আরঞ্জ (বুল) বৈশিষ্ট্য

যদি সত্য হয় তবে আমরা সর্বনিম্ন পরিমাণযুক্ত মানটি ব্যবহার করি না। অর্থাত্ আটকের জন্য কোয়ান্টাইজড আউটপুট, এটি পুরো -128..127 ব্যাপ্তির পরিবর্তে -127..127 সীমাতে সীমাবদ্ধ থাকবে। এটি নির্দিষ্ট অনুমান ব্যাকএন্ডের সাথে সামঞ্জস্যের জন্য সরবরাহ করা হয়। (শুধুমাত্র এসসিএএলডি মোডে প্রযোজ্য)

অক্ষ (int) গুণ

একটি al axis বৈশিষ্ট্য ইনপুট টেনসরটির একটি মাত্রা সূচক নির্দিষ্ট করতে পারে, যেমন পরিমাণের রেঞ্জগুলি সেই মাত্রাটির সাথে সেন্সরের প্রতিটি স্লাইসের জন্য পৃথকভাবে গণনা করা হবে এবং প্রয়োগ করা হবে। এটি প্রতি চ্যানেল পরিমাণের জন্য কার্যকর useful

অক্ষ নির্দিষ্ট করা থাকলে, মিনি_আরঞ্জ এবং সর্বোচ্চ_আরেঞ্জ range

যদি axis = কোনও নয়, প্রতি-সেন্সর কোয়ান্টাইজেশন স্বাভাবিক হিসাবে সম্পাদিত হয়।

নিশ্চিত_মিনিমাম_রেঞ্জ (ফ্লোট) বৈশিষ্ট্য

ন্যূনতম পরিমাণের পরিধি অন্তত এই মানটি নিশ্চিত করে। এর জন্য উত্তরাধিকারের ডিফল্ট মান 0.01, তবে নতুন ব্যবহারের জন্য এটি 0 তে সেট করার জন্য দৃ strongly়ভাবে পরামর্শ দেওয়া হচ্ছে।

যুক্তি:

  • সুযোগ: একটি স্কোপ অবজেক্ট
  • মিনি_রেঞ্জ: কোয়ান্টাইজেশন সীমার সর্বনিম্ন মান। এই মানটি অন্যান্য পরামিতিগুলির উপর নির্ভর করে অপের মাধ্যমে সামঞ্জস্য করা যেতে পারে। সমন্বিত মান output_min লেখা হয় output_min যদি axis বৈশিষ্ট্যটি নির্দিষ্ট করা থাকে তবে এটি অবশ্যই 1-ডি টেনসর হতে হবে যার আকার ইনপুট এবং আউটপুট টেনেসরের axis মাত্রার সাথে মিলে।
  • সর্বাধিক_রেঞ্জ: কোয়ান্টাইজেশন সীমার সর্বাধিক মান। এই মানটি অন্যান্য পরামিতিগুলির উপর নির্ভর করে অপের মাধ্যমে সামঞ্জস্য করা যেতে পারে। সমন্বিত মান output_max লেখা হয়। যদি axis বৈশিষ্ট্যটি নির্দিষ্ট করা থাকে তবে এটি অবশ্যই 1-ডি টেনসর হতে হবে যার আকার ইনপুট এবং আউটপুট টেনেসরের axis মাত্রার সাথে মিলে।

রিটার্নস:

  • Output আউটপুট: ভাসমান ইনপুট থেকে উত্পাদিত কোয়ান্টাইটিসড ডেটা।
  • Output আউটপুট_মিন: চূড়ান্ত কোয়ান্টাইজেশন পরিসীমা ন্যূনতম, স্কেলিং এবং কোয়ান্টাইজড মানগুলিতে গোল করার আগে ইনপুট মানগুলি ক্লিপ করতে ব্যবহৃত হয়। যদি axis বৈশিষ্ট্যটি নির্দিষ্ট করা থাকে তবে এটি 1-ডি টেনসর হবে যার আকার ইনপুট এবং আউটপুট টেনসরগুলির axis মিলবে।
  • Output আউটপুট_ম্যাক্স: চূড়ান্ত কোয়ান্টাইজেশন রেঞ্জ সর্বাধিক, স্কেলিং এবং কোয়ান্টাইজড মানগুলিকে গোল করার আগে ইনপুট মানগুলি ক্লিপ করতে ব্যবহৃত হয়। যদি axis বৈশিষ্ট্যটি নির্দিষ্ট করা থাকে তবে এটি 1-ডি টেনসর হবে যার আকার ইনপুট এবং আউটপুট টেনসরগুলির axis মিলবে।

নির্মাণকারী এবং ধ্বংসকারী

QuantizeV2 (const :: tensorflow::Scope & scope, :: tensorflow::Input input, :: tensorflow::Input min_range, :: tensorflow::Input max_range, DataType T)
QuantizeV2 (const :: tensorflow::Scope & scope, :: tensorflow::Input input, :: tensorflow::Input min_range, :: tensorflow::Input max_range, DataType T, const QuantizeV2::Attrs & attrs)

জনসাধারণের গুণাবলী

operation
output
output_max
output_min

পাবলিক স্ট্যাটিক ফাংশন

Axis (int64 x)
EnsureMinimumRange (float x)
Mode (StringPiece x)
NarrowRange (bool x)
RoundMode (StringPiece x)

স্ট্রাক্টস

টেনসরফ্লো :: অপ্স :: কোয়ান্টিজভি 2 :: অ্যাটারস

কোয়ান্টিজভি 2 এর জন্য .চ্ছিক অ্যাট্রিবিউট সেটটার

জনসাধারণের গুণাবলী

অপারেশন

Operation operation

আউটপুট

::tensorflow::Output output

আউটপুট_ম্যাক্স

::tensorflow::Output output_max

আউটপুট_মিনি

::tensorflow::Output output_min

পাবলিক ফাংশন

কোয়ান্টিজভি 2

 QuantizeV2(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input input,
  ::tensorflow::Input min_range,
  ::tensorflow::Input max_range,
  DataType T
)

কোয়ান্টিজভি 2

 QuantizeV2(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input input,
  ::tensorflow::Input min_range,
  ::tensorflow::Input max_range,
  DataType T,
  const QuantizeV2::Attrs & attrs
)

পাবলিক স্ট্যাটিক ফাংশন

অক্ষ

Attrs Axis(
  int64 x
)

নিশ্চিত করুন ন্যূনতমতম রেঞ্জ R

Attrs EnsureMinimumRange(
  float x
)

মোড

Attrs Mode(
  StringPiece x
)

সংকীর্ণ পরিসর

Attrs NarrowRange(
  bool x
)

রাউন্ডমোড

Attrs RoundMode(
  StringPiece x
)