tf.raw_ops.QuantizeDownAndShrinkRange
Преобразует квантованный тензор 'input' в тензор 'output' с меньшей точностью, используя
tf.raw_ops.QuantizeDownAndShrinkRange(
input, input_min, input_max, out_type, name=None
)
фактическое распределение значений для максимально эффективного использования меньшей разрядности и соответствующей корректировки минимального и максимального диапазонов выходных данных.
[input_min, input_max] — скалярные значения типа float, задающие диапазон для интерпретации данных 'input' как чисел с плавающей запятой. Например, если input_min равен -1.0f, а input_max — 1.0f, и мы имеем дело с квантованными данными типа quint16, то значение 0 в 16-битных данных должно интерпретироваться как -1.0f, а значение 65535 — как 1.0f.
Этот оператор пытается сохранить как можно больше точности в выходных данных с меньшей разрядностью, вычисляя фактические минимальное и максимальное значения в данных. Например, возможно, во входных данных quint16 нет значений меньше 16,384 и больше 49,152. Это означает, что фактически требуется только половина диапазона, а все значения при интерпретации как числа с плавающей запятой находятся между -0.5f и 0.5f. Поэтому, если мы хотим сжать данные в выходные данные quint8, можно использовать этот диапазон вместо теоретического диапазона от -1.0f до 1.0f, который задается минимальным и максимальным значениями входных данных.
На практике это особенно полезно для обработки выходных данных таких операций, как QuantizedMatMul, которые могут выдавать результаты с большей разрядностью, чем входные данные, и потенциально иметь большой диапазон выходных значений, хотя на деле распределение входных значений использует лишь небольшую часть возможного диапазона. Передав эти выходные данные оператору, можно уменьшить их разрядность с 32 до 8 бит с минимальной потерей точности.
| Аргументы | |
|---|---|
input | A Tensor. Должен иметь один из следующих типов: qint8, quint8, qint32, qint16, quint16. |
input_min | A Tensor типа float32. Значение типа float, которому соответствует минимальное квантованное значение входных данных. |
input_max | A Tensor типа float32. Значение типа float, которому соответствует максимальное квантованное значение входных данных. |
out_type | A tf.DType из: tf.qint8, tf.quint8, tf.qint32, tf.qint16, tf.quint16. Тип выходных данных. Должен иметь меньшую разрядность, чем Tinput. |
name | Имя операции (необязательно). |
| Возвращаемые значения | |
|---|---|
Кортеж объектов Tensor (output, output_min, output_max). | |
output | A Tensor типа out_type. |
output_min | A Tensor типа float32. |
output_max | A Tensor типа float32. |
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/raw_ops/QuantizeDownAndShrinkRange