将 '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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。