tf.raw_ops.FakeQuantWithMinMaxArgs
Stay organized with collections
Save and categorize content based on your preferences.
Fake-quantize the 'inputs' tensor, type float to 'outputs' tensor of same shape and type.
tf.raw_ops.FakeQuantWithMinMaxArgs(
inputs, min=-6, max=6, num_bits=8, narrow_range=False, name=None
)
Quantization is called fake since the output is still in floating point.
The API converts inputs into values within the range [min and max] and returns
as output.
Attributes
[min; max]
define the clamping range for the inputs
data.
inputs
values are quantized into the quantization range (
[0; 2^num_bits - 1]
when narrow_range
is false and [1; 2^num_bits - 1]
when it is true) and then de-quantized and output as floats in [min; max]
interval.
num_bits
is the bitwidth of the quantization; between 2 and 16, inclusive.
Before quantization, min
and max
values are adjusted with the following
logic.
It is suggested to have min <= 0 <= max
. If 0
is not in the range of values,
the behavior can be unexpected:
- If
0 < min < max
: min_adj = 0
and max_adj = max - min
.
- If
min < max < 0
: min_adj = min - max
and max_adj = 0
.
- If
min <= 0 <= max
: scale = (max - min) / (2^num_bits - 1)
,
min_adj = scale * round(min / scale)
and max_adj = max + min_adj - min
.
Examples
inp = tf.constant ([10.03, -10.23, 3])
out = tf.quantization.fake_quant_with_min_max_args(inp, min=-5, max=5,
num_bits=16)
print(out)
# Output:
# tf.Tensor([ 4.9999237 -5.0000763 3.0000763], shape=(3,), dtype=float32)
Raises |
- InvalidArgumentError:
- If num_bits are outside of range [2, 16].
- If min >= max.
- ValueError: If
inputs are of any other type than float32.
|
Args |
inputs
|
A Tensor of type float32 .
|
min
|
An optional float . Defaults to -6 .
|
max
|
An optional float . Defaults to 6 .
|
num_bits
|
An optional int . Defaults to 8 .
|
narrow_range
|
An optional bool . Defaults to False .
|
name
|
A name for the operation (optional).
|
Returns |
A Tensor of type float32 .
|
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates. Some content is licensed under the numpy license.
Last updated 2023-10-06 UTC.
[null,null,["Last updated 2023-10-06 UTC."],[],[],null,["# tf.raw_ops.FakeQuantWithMinMaxArgs\n\n\u003cbr /\u003e\n\nFake-quantize the 'inputs' tensor, type float to 'outputs' tensor of same shape and type.\n\n#### View aliases\n\n\n**Compat aliases for migration**\n\nSee\n[Migration guide](https://www.tensorflow.org/guide/migrate) for\nmore details.\n\n[`tf.compat.v1.raw_ops.FakeQuantWithMinMaxArgs`](https://www.tensorflow.org/api_docs/python/tf/raw_ops/FakeQuantWithMinMaxArgs)\n\n\u003cbr /\u003e\n\n tf.raw_ops.FakeQuantWithMinMaxArgs(\n inputs, min=-6, max=6, num_bits=8, narrow_range=False, name=None\n )\n\nQuantization is called fake since the output is still in floating point.\nThe API converts inputs into values within the range \\[min and max\\] and returns\nas output.\n\nAttributes\n\n- `[min; max]` define the clamping range for the `inputs` data.\n- `inputs` values are quantized into the quantization range ( `[0; 2^num_bits - 1]` when `narrow_range` is false and `[1; 2^num_bits - 1]` when it is true) and then de-quantized and output as floats in `[min; max]` interval.\n- `num_bits` is the bitwidth of the quantization; between 2 and 16, inclusive.\n\nBefore quantization, `min` and `max` values are adjusted with the following\nlogic.\nIt is suggested to have `min \u003c= 0 \u003c= max`. If `0` is not in the range of values,\nthe behavior can be unexpected:\n\n- If `0 \u003c min \u003c max`: `min_adj = 0` and `max_adj = max - min`.\n- If `min \u003c max \u003c 0`: `min_adj = min - max` and `max_adj = 0`.\n- If `min \u003c= 0 \u003c= max`: `scale = (max - min) / (2^num_bits - 1)`, `min_adj = scale * round(min / scale)` and `max_adj = max + min_adj - min`.\n\nExamples \n\n\n inp = tf.constant ([10.03, -10.23, 3])\n out = tf.quantization.fake_quant_with_min_max_args(inp, min=-5, max=5,\n num_bits=16)\n print(out)\n\n # Output:\n # tf.Tensor([ 4.9999237 -5.0000763 3.0000763], shape=(3,), dtype=float32)\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Raises ------ ||\n|---|---|\n| \u003cbr /\u003e - InvalidArgumentError: - If num_bits are outside of range \\[2, 16\\]. - If min \\\u003e= max. - ValueError: If `inputs` are of any other type than float32. ||\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Args ---- ||\n|----------------|------------------------------------------|\n| `inputs` | A `Tensor` of type `float32`. |\n| `min` | An optional `float`. Defaults to `-6`. |\n| `max` | An optional `float`. Defaults to `6`. |\n| `num_bits` | An optional `int`. Defaults to `8`. |\n| `narrow_range` | An optional `bool`. Defaults to `False`. |\n| `name` | A name for the operation (optional). |\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Returns ------- ||\n|---|---|\n| A `Tensor` of type `float32`. ||\n\n\u003cbr /\u003e"]]