Деквантуйте «входной» тензор в число с плавающей запятой или в тензор bfloat16.
[min_range, max_range] — скалярные числа с плавающей запятой, которые определяют диапазон вывода. Атрибут mode определяет, какие именно вычисления используются для преобразования значений с плавающей запятой в их квантованные эквиваленты.
В режиме «MIN_COMBINED» каждое значение тензора будет подвергаться следующим изменениям:
if T == qint8: in[i] += (range(T) + 1)/ 2.0
out[i] = min_range + (in[i]* (max_range - min_range) / range(T))
здесь `range(T) = numeric_limitsПример режима MIN_COMBINED
Если входные данные поступают от QuantizedRelu6, тип выходных данных — quint8 (диапазон 0–255), но возможный диапазон QuantizedRelu6 — 0–6. Таким образом, значения min_range и max_range равны 0,0 и 6,0. Деквантование на quint8 возьмет каждое значение, приведет к плавающему числу и умножит на 6/255. Обратите внимание, что если квантованным типом является qint8, операция дополнительно добавит каждое значение на 128 перед приведением.
Если режим «MIN_FIRST», то используется такой подход:
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 / num_discrete_values
const double offset_input = static_cast<double>(input) - lowest_quantized;
result = range_min + ((input - numeric_limits<T>::min()) * range_scale)
Если выбран режим «SCALED», деквантование выполняется путем умножения каждого входного значения на коэффициент масштабирования. (Таким образом, ввод 0 всегда соответствует 0,0).Коэффициент масштабирования определяется из min_range, max_range и narrow_range способом, совместимым с QuantizeAndDequantize{V2|V3} и QuantizeV2, с использованием следующего алгоритма:
const int min_expected_T = std::numeric_limits<T>::min() +
(narrow_range ? 1 : 0);
const int max_expected_T = std::numeric_limits<T>::max();
const float max_expected_T = std::numeric_limits<float>::max();
const float scale_factor =
(std::numeric_limits<T>::min() == 0) ? (max_range / max_expected_T)
: std::max(min_range / min_expected_T,
max_range / max_expected_T);
Вложенные классы
сорт | Деквантование.Параметры | Дополнительные атрибуты для Dequantize |
Константы
Нить | OP_NAME | Название этой операции, известное основному движку TensorFlow. |
Публичные методы
Выход <U> | какВывод () Возвращает символический дескриптор тензора. |
статический Dequantize.Options | ось (длинная ось) |
static <U расширяет TNumber > Деквантовать <U> | |
статическое деквантование <TFloat32> | |
статический Dequantize.Options | режим (строковый режим) |
статический Dequantize.Options | узкий диапазон (логическое значение узкого диапазона) |
Выход <U> | выход () |
Унаследованные методы
Константы
общедоступная статическая финальная строка OP_NAME
Название этой операции, известное основному движку TensorFlow.
Публичные методы
публичный вывод <U> asOutput ()
Возвращает символический дескриптор тензора.
Входные данные для операций TensorFlow являются выходными данными другой операции TensorFlow. Этот метод используется для получения символического дескриптора, который представляет собой вычисление входных данных.
public static Dequantize <U> create ( Область действия , Операнд <? расширяет TType > input, Операнд < TFloat32 > minRange, Операнд < TFloat32 > maxRange, Class<U> dtype, Опции... опции)
Фабричный метод для создания класса, обертывающего новую операцию деквантования.
Параметры
объем | текущий объем |
---|---|
миндиапазон | Минимальное скалярное значение, которое может быть получено для входа. |
МаксДиапазон | Максимальное скалярное значение, которое возможно получить для входа. |
dtype | Тип выходного тензора. В настоящее время Dequantize поддерживает float и bfloat16. Если «dtype» равен «bfloat16», он поддерживает только режим «MIN_COMBINED». |
параметры | содержит значения необязательных атрибутов |
Возврат
- новый экземпляр Dequantize
public static Dequantize <TFloat32> create ( область действия, операнд <? расширяет TType > input, операнд < TFloat32 > minRange, операнд < TFloat32 > maxRange, параметры... параметры)
Фабричный метод для создания класса, обертывающего новую операцию деквантования с использованием типов вывода по умолчанию.
Параметры
объем | текущий объем |
---|---|
миндиапазон | Минимальное скалярное значение, которое может быть получено для входа. |
МаксДиапазон | Максимальное скалярное значение, которое возможно получить для входа. |
параметры | содержит значения необязательных атрибутов |
Возврат
- новый экземпляр Dequantize