mirror of
https://github.com/zebrajr/tensorflow.git
synced 2026-01-15 12:15:41 +00:00
Add tf.quantize op, which is the same as tf.quantize_v2.
PiperOrigin-RevId: 173735986
This commit is contained in:
committed by
TensorFlower Gardener
parent
3ff9c8d2af
commit
d1c59bd375
@@ -250,5 +250,4 @@ REGISTER_KERNEL_BUILDER(
|
||||
REGISTER_KERNEL_BUILDER(
|
||||
Name("QuantizeV2").Device(DEVICE_CPU).TypeConstraint<qint32>("T"),
|
||||
QuantizeV2Op<CPUDevice, qint32>);
|
||||
|
||||
} // namespace tensorflow
|
||||
|
||||
@@ -4902,10 +4902,10 @@ with the range of qint8.
|
||||
If the mode is 'MIN_FIRST', then this approach is used:
|
||||
|
||||
```
|
||||
number_of_steps = 1 << (# of bits in T)
|
||||
range_adjust = number_of_steps / (number_of_steps - 1)
|
||||
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 = number_of_steps / range
|
||||
range_scale = num_discrete_values / range
|
||||
quantized = round(input * range_scale) - round(range_min * range_scale) +
|
||||
numeric_limits<T>::min()
|
||||
quantized = max(quantized, numeric_limits<T>::min())
|
||||
@@ -5017,10 +5017,10 @@ each value by 128 prior to casting.
|
||||
If the mode is 'MIN_FIRST', then this approach is used:
|
||||
|
||||
```c++
|
||||
number_of_steps = 1 << (# of bits in T)
|
||||
range_adjust = number_of_steps / (number_of_steps - 1)
|
||||
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 / number_of_steps
|
||||
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)
|
||||
```
|
||||
|
||||
@@ -66,6 +66,7 @@ See the @{$python/array_ops} guide.
|
||||
@@one_hot
|
||||
@@sequence_mask
|
||||
@@dequantize
|
||||
@@quantize
|
||||
@@quantize_v2
|
||||
@@quantized_concat
|
||||
@@setdiff1d
|
||||
@@ -2525,7 +2526,10 @@ gather.__doc__ = gen_array_ops.gather_v2.__doc__
|
||||
|
||||
# Define quantize_v2 here in order to make name the second-to-last attribute,
|
||||
# because round_mode was added later.
|
||||
def quantize_v2(input,
|
||||
@deprecation.deprecated(
|
||||
"2017-10-25",
|
||||
"`tf.quantize_v2` is deprecated, please use `tf.quantize` instead.")
|
||||
def quantize_v2(input, # pylint: disable=redefined-builtin
|
||||
min_range,
|
||||
max_range,
|
||||
T,
|
||||
@@ -2541,4 +2545,26 @@ def quantize_v2(input,
|
||||
round_mode=round_mode)
|
||||
|
||||
|
||||
quantize_v2.__doc__ = gen_array_ops.quantize_v2.__doc__
|
||||
quantize_v2.__doc__ = """Please use `tf.quantize` instead."""
|
||||
|
||||
|
||||
# We want to expose tf.quantize instead of tf.quantize_v2; we can deprecate
|
||||
# tf.quantize_v2 in next version of TensorFlow.
|
||||
def quantize(input, # pylint: disable=redefined-builtin
|
||||
min_range,
|
||||
max_range,
|
||||
T,
|
||||
mode="MIN_COMBINED",
|
||||
round_mode="HALF_AWAY_FROM_ZERO",
|
||||
name=None):
|
||||
return gen_array_ops.quantize_v2(
|
||||
input,
|
||||
min_range,
|
||||
max_range,
|
||||
T,
|
||||
mode=mode,
|
||||
round_mode=round_mode,
|
||||
name=name)
|
||||
|
||||
|
||||
quantize.__doc__ = gen_array_ops.quantize_v2.__doc__
|
||||
|
||||
@@ -1480,6 +1480,10 @@ tf_module {
|
||||
name: "qr"
|
||||
argspec: "args=[\'input\', \'full_matrices\', \'name\'], varargs=None, keywords=None, defaults=[\'False\', \'None\'], "
|
||||
}
|
||||
member_method {
|
||||
name: "quantize"
|
||||
argspec: "args=[\'input\', \'min_range\', \'max_range\', \'T\', \'mode\', \'round_mode\', \'name\'], varargs=None, keywords=None, defaults=[\'MIN_COMBINED\', \'HALF_AWAY_FROM_ZERO\', \'None\'], "
|
||||
}
|
||||
member_method {
|
||||
name: "quantize_v2"
|
||||
argspec: "args=[\'input\', \'min_range\', \'max_range\', \'T\', \'mode\', \'name\', \'round_mode\'], varargs=None, keywords=None, defaults=[\'MIN_COMBINED\', \'None\', \'HALF_AWAY_FROM_ZERO\'], "
|
||||
|
||||
Reference in New Issue
Block a user