تدفق التوتر:: العمليات:: تخلص من الكمية
#include <array_ops.h>
قم بإلغاء ضبط موتر "الإدخال" في موتر عائم أو bfloat16.
ملخص
[min_range, max_range] عبارة عن عوامات عددية تحدد نطاق الإخراج. تتحكم السمة "mode" بالضبط في الحسابات المستخدمة لتحويل القيم العائمة إلى معادلاتها الكمية.
في الوضع "MIN_COMBINED"، ستخضع كل قيمة للموتر لما يلي:
if T == qint8: in[i] += (range(T) + 1)/ 2.0 out[i] = min_range + (in[i]* (max_range - min_range) / range(T))
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
إذا كان الإدخال يأتي من QuantizedRelu6 ، فإن نوع الإخراج هو quint8 (نطاق من 0-255) ولكن النطاق المحتمل لـ QuantizedRelu6 هو 0-6. وبالتالي فإن قيمتي min_range وmax_range هي 0.0 و6.0. سوف يأخذ Dequantize على quint8 كل قيمة، ويلقيها لتطفو، ويضربها في 6/255. لاحظ أنه إذا كان النوع الكمي هو qint8، فإن العملية ستضيف بالإضافة إلى ذلك كل قيمة بمقدار 128 قبل الصب.
إذا كان الوضع هو "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 = range / num_discrete_values const double offset_input = static_cast(input) - lowest_quantized; result = range_min + ((input - numeric_limits ::min()) * range_scale)
إذا كان الوضع SCALED
، يتم تنفيذ عملية الاستخلاص عن طريق ضرب كل قيمة مدخلة بعامل التحجيم. (وبالتالي فإن إدخال 0 يعين دائمًا 0.0).
يتم تحديد عامل القياس من min_range
و max_range
و narrow_range
بطريقة متوافقة مع QuantizeAndDequantize{V2|V3}
و QuantizeV2
، باستخدام الخوارزمية التالية:
const int min_expected_T = std::numeric_limits::min() + (narrow_range ? 1 : 0); const int max_expected_T = std::numeric_limits ::max(); const float max_expected_T = std::numeric_limits ::max(); const float scale_factor = (std::numeric_limits::min() == 0) ? (max_range / max_expected_T) : std::max(min_range / min_expected_T, max_range / max_expected_T); الحجج:
- النطاق: كائن النطاق
- min_range: الحد الأدنى للقيمة العددية التي يمكن إنتاجها للإدخال.
- max_range: الحد الأقصى للقيمة العددية التي يمكن إنتاجها للإدخال.
السمات الاختيارية (انظر Attrs
):
- dtype: نوع موتر الإخراج. يدعم Dequantize حاليًا التعويم وbfloat16. إذا كان 'dtype' هو 'bfloat16'، فإنه يدعم الوضع 'MIN_COMBINED' فقط.
العوائد:
-
Output
: موتر الإخراج.
البنائين والمدمرين | |
---|---|
Dequantize (const :: tensorflow::Scope & scope, :: tensorflow::Input input, :: tensorflow::Input min_range, :: tensorflow::Input max_range) | |
Dequantize (const :: tensorflow::Scope & scope, :: tensorflow::Input input, :: tensorflow::Input min_range, :: tensorflow::Input max_range, const Dequantize::Attrs & attrs) |
الصفات العامة | |
---|---|
operation | |
output |
الوظائف العامة | |
---|---|
node () const | ::tensorflow::Node * |
operator::tensorflow::Input () const | |
operator::tensorflow::Output () const |
وظائف ثابتة العامة | |
---|---|
Axis (int64 x) | |
Dtype (DataType x) | |
Mode (StringPiece x) | |
NarrowRange (bool x) |
الهياكل | |
---|---|
Tensorflow:: ops:: Dequantize:: Attrs | محددات السمة الاختيارية لـ Dequantize . |
الصفات العامة
عملية
Operation operation
الإخراج
::tensorflow::Output output
الوظائف العامة
تخلص من الكمية
Dequantize( const ::tensorflow::Scope & scope, ::tensorflow::Input input, ::tensorflow::Input min_range, ::tensorflow::Input max_range )
تخلص من الكمية
Dequantize( const ::tensorflow::Scope & scope, ::tensorflow::Input input, ::tensorflow::Input min_range, ::tensorflow::Input max_range, const Dequantize::Attrs & attrs )
العقدة
::tensorflow::Node * node() const