tf.raw_ops.QuantizeDownAndShrinkRange
Преобразование квантованного тензора 'input' в тензор 'output' с меньшей точностью, используя
tf.raw_ops.QuantizeDownAndShrinkRange(
input, input_min, input_max, out_type, name=None
)
фактическое распределение значений для максимального использования меньшей разрядности и соответствующей корректировки диапазонов минимального и максимального значений выходных данных.
[input_min, input_max] — скалярные числа с плавающей точкой, определяющие диапазон для представления данных '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. Значение с плавающей точкой, которое представляет минимальное квантованное входное значение. |
input_max | A Tensor типа float32. Значение с плавающей точкой, которое представляет максимальное квантованное входное значение. |
out_type | 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. |
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.4/api_docs/python/tf/raw_ops/QuantizeDownAndShrinkRange