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 | 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.3/api_docs/python/tf/raw_ops/QuantizeDownAndShrinkRange