Dequantize

публичный финальный класс Dequantize

Деквантуйте «входной» тензор в число с плавающей запятой или в тензор 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 ::max() - числовые_пределы ::мин()`

Пример режима 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>
create ( Область действия , Операнд <? расширяет TType > input, Операнд < TFloat32 > minRange, Операнд < TFloat32 > maxRange, Class<U> dtype, Опции... опции)
Фабричный метод для создания класса, обертывающего новую операцию деквантования.
статическое деквантование <TFloat32>
create ( Область действия , Операнд <? расширяет TType > input, Операнд < TFloat32 > minRange, Операнд < TFloat32 > maxRange, Опции... опции)
Фабричный метод для создания класса, обертывающего новую операцию деквантования с использованием типов вывода по умолчанию.
статический Dequantize.Options
режим (строковый режим)
статический Dequantize.Options
узкий диапазон (логическое значение узкого диапазона)
Выход <U>

Унаследованные методы

Константы

общедоступная статическая финальная строка OP_NAME

Название этой операции, известное основному движку TensorFlow.

Постоянное значение: «Деквантовать»

Публичные методы

публичный вывод <U> asOutput ()

Возвращает символический дескриптор тензора.

Входные данные для операций TensorFlow являются выходными данными другой операции TensorFlow. Этот метод используется для получения символического дескриптора, который представляет собой вычисление входных данных.

общедоступная статическая ось Dequantize.Options (длинная ось)

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

общедоступный статический режим Dequantize.Options (строчный режим)

public static Dequantize.Options узкий диапазон (логическое значение узкого диапазона)

публичный вывод <U> вывод ()