將 'input' 張量反量化為 float 或 bfloat16 張量。
用法
tf.raw_ops.Dequantize(
input, min_range, max_range, mode='MIN_COMBINED', narrow_range=False,
axis=-1, dtype=tf.dtypes.float32, name=None
)
參數
-
input
一個Tensor
。必須是以下類型之一:qint8
,quint8
,qint32
,qint16
,quint16
。 -
min_range
Tensor
類型為float32
。可能為輸入產生的最小標量值。 -
max_range
Tensor
類型為float32
。可能為輸入產生的最大標量值。 -
mode
一個可選的string
來自:"MIN_COMBINED", "MIN_FIRST", "SCALED"
。默認為"MIN_COMBINED"
。 -
narrow_range
可選的bool
。默認為False
。 -
axis
可選的int
。默認為-1
。 -
dtype
一個可選的tf.DType
來自:tf.bfloat16, tf.float32
。默認為tf.float32
。輸出張量的類型。目前 Dequantize 支持 float 和 bfloat16。如果'dtype'為'bfloat16',則隻支持'MIN_COMBINED'模式。 -
name
操作的名稱(可選)。
返回
-
Tensor
類型為dtype
。
[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<T>::max() - numeric_limits<T>::min()
MIN_COMBINED 模式示例
如果輸入來自 QuantizedRelu6,則輸出類型為 quint8(範圍為 0-255),但 QuantizedRelu6 的可能範圍為 0-6。因此,min_range 和 max_range 值為 0.0 和 6.0。 quint8 上的反量化將獲取每個值,轉換為浮點數,然後乘以 6 /255。請注意,如果 quantizedtype 是 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<double>(input) - lowest_quantized;
result = range_min + ((input - numeric_limits<T>::min()) * range_scale)
如果模式是SCALED
,則通過將每個輸入值乘以scaling_factor來執行去量化。 (因此輸入 0 總是映射到 0.0)。
scaling_factor 是從 min_range
, max_range
和 narrow_range
以與 QuantizeAndDequantize{V2|V3}
和 QuantizeV2
兼容的方式確定的,使用以下算法:
const int min_expected_T = std::numeric_limits<T>::min() +
(narrow_range ? 1:0);
const int max_expected_T = std::numeric_limits<T>::max();
const float max_expected_T = std::numeric_limits<float>::max();
const float scale_factor =
(std::numeric_limits<T>::min() == 0) ? (max_range / max_expected_T)
:std::max(min_range / min_expected_T,
max_range / max_expected_T);
相關用法
- Python tf.raw_ops.DecodeGif用法及代碼示例
- Python tf.raw_ops.DepthToSpace用法及代碼示例
- Python tf.raw_ops.DepthwiseConv2dNative用法及代碼示例
- Python tf.raw_ops.DeserializeManySparse用法及代碼示例
- Python tf.raw_ops.DeserializeSparse用法及代碼示例
- Python tf.raw_ops.DecodeProtoV2用法及代碼示例
- Python tf.raw_ops.Dilation2D用法及代碼示例
- Python tf.raw_ops.DynamicPartition用法及代碼示例
- Python tf.raw_ops.DataFormatVecPermute用法及代碼示例
- Python tf.raw_ops.DiagPart用法及代碼示例
- Python tf.raw_ops.Diag用法及代碼示例
- Python tf.raw_ops.DynamicStitch用法及代碼示例
- Python tf.raw_ops.TPUReplicatedInput用法及代碼示例
- Python tf.raw_ops.Bitcast用法及代碼示例
- Python tf.raw_ops.SelfAdjointEigV2用法及代碼示例
- Python tf.raw_ops.BatchMatMul用法及代碼示例
- Python tf.raw_ops.OneHot用法及代碼示例
- Python tf.raw_ops.ResourceScatterNdSub用法及代碼示例
- Python tf.raw_ops.ReadVariableXlaSplitND用法及代碼示例
- Python tf.raw_ops.GatherV2用法及代碼示例
注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.raw_ops.Dequantize。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。