Spec-Zone.ru › TensorFlow C++ 2.4

tensorflow::ops::QuantizeAndDequantizeV2

#include <array_ops.h>

Квантует, а затем деквантует тензор.

Краткое описание

Данный оператор моделирует потерю точности при квантованном прямом проходе, выполняя следующие действия:

  1. Квантование тензора до чисел с фиксированной точкой, которые должны соответствовать целевому методу квантования при использовании в режиме вывода.
  2. Деквантование обратно в числа с плавающей точкой для последующих операторов, скорее всего, matmul.

Существуют различные способы квантования. Этот вариант использует только масштабирование, поэтому 0.0 отображается в 0.

Из заданного значения 'num_bits' в типе квантованного выхода определяется минимальное и максимальное представимые квантованные значения.

Например:

  • [-128, 127] для знакового типа, num_bits = 8, или
  • [0, 255] для беззнакового типа, num_bits = 8.

Если range_given == False, начальные input_min, input_max будут определены автоматически как минимальное и максимальное значения в тензоре, в противном случае используются заданные значения input_min, input_max.

Примечание: если input_min, input_max заданы, они не обязательно должны быть равны фактическим минимальному и максимальному значениям в тензоре. Например, в некоторых случаях может быть полезно указать эти значения таким образом, чтобы низкочастотные экстремумы распределения входных данных обрезались.

Этот оператор определяет максимальный коэффициент масштабирования, который отобразит начальный диапазон [input_min, input_max] в диапазон, находящийся в пределах представимого квантованного диапазона.

Он определяет масштаб по одному из input_min и input_max, а затем обновляет другой, чтобы максимизировать представимый диапазон.

Например:

  • если выход знаковый, num_bits = 8, [input_min, input_max] = [-10.0, 5.0]: он будет использовать коэффициент масштабирования -128 / -10.0 = 12.8. В этом случае он обновит input_max до 127 / 12.8 = 9.921875
  • если выход знаковый, num_bits = 8, [input_min, input_max] = [-10.0, 10.0]: он будет использовать коэффициент масштабирования 127 / 10.0 = 12.7. В этом случае он обновит input_min до 128.0 / 12.7 = -10.07874
  • если выход беззнаковый, input_min принудительно устанавливается в 0, и используется только заданный input_max.

После определения коэффициента масштабирования и обновления диапазона входных данных, он применяет следующие операции к каждому значению в тензоре 'input'.

output = round(clamp(value, input_min, input_max) * scale_factor) / scale_factor.

Функция round округляет значение в соответствии с заданным режимом округления.

Аргументы:

  • scope: Объект Scope
  • input: Тензор Tensor для квантования и последующего деквантования.
  • input_min: Если range_given == True, это определяет минимальное значение входа, которое необходимо представить, в противном случае оно определяется из минимального значения input тензора.
  • input_max: Если range_given == True, это определяет максимальное значение входа, которое необходимо представить, в противном случае оно определяется из максимального значения input тензора.

Необязательные атрибуты (см. Attrs):

  • signed_input: Определяет, является ли квантование знаковым или беззнаковым. (на самом деле этот параметр следовало бы назвать signed_output )
  • num_bits: Разрядность квантования.
  • range_given: Указывает, задан ли диапазон или должен быть определен из input тензора.
  • round_mode: Атрибут 'round_mode' управляет алгоритмом округления при разрыве связей при округлении чисел с плавающей точкой до их квантованных эквивалентов. В настоящее время поддерживаются следующие режимы округления:
  • HALF_TO_EVEN: по умолчанию.
  • HALF_UP: округление в сторону положительного значения. В этом режиме 7.5 округляется до 8, а -7.5 - до -7.
  • narrow_range: Если True, абсолютное значение минимального квантованного значения равно максимальному квантованному значению, а не на 1 больше. Например, для 8-битного квантования минимальное значение равно -127, а не -128.
  • axis: Если указано, этот ось рассматривается как ось канала или слайса, и для каждого канала или слайса вдоль этой оси используется отдельный диапазон квантования.

Возвращает:

  • Output: Результирующий тензор.
Конструкторы и деструкторы
QuantizeAndDequantizeV2(const ::tensorflow::Scope & scope, ::tensorflow::Input input, ::tensorflow::Input input_min, ::tensorflow::Input input_max)
QuantizeAndDequantizeV2(const ::tensorflow::Scope & scope, ::tensorflow::Input input, ::tensorflow::Input input_min, ::tensorflow::Input input_max, const QuantizeAndDequantizeV2::Attrs & attrs)
Общедоступные атрибуты
operation
Operation
output
::tensorflow::Output
Общедоступные функции
node() const
::tensorflow::Node *
operator::tensorflow::Input() const
operator::tensorflow::Output() const
Общедоступные статические функции
Axis(int64 x)
Attrs
NarrowRange(bool x)
Attrs
NumBits(int64 x)
Attrs
RangeGiven(bool x)
Attrs
RoundMode(StringPiece x)
Attrs
SignedInput(bool x)
Attrs
Структуры
tensorflow::ops::QuantizeAndDequantizeV2::Attrs

Необязательные установки атрибутов для QuantizeAndDequantizeV2.

Общедоступные атрибуты

operation

Operation operation

output

::tensorflow::Output output

Общедоступные функции

QuantizeAndDequantizeV2

 QuantizeAndDequantizeV2(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input input,
  ::tensorflow::Input input_min,
  ::tensorflow::Input input_max
)

QuantizeAndDequantizeV2

 QuantizeAndDequantizeV2(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input input,
  ::tensorflow::Input input_min,
  ::tensorflow::Input input_max,
  const QuantizeAndDequantizeV2::Attrs & attrs
)

node

::tensorflow::Node * node() const 

operator::tensorflow::Input

operator::tensorflow::Input() const 

operator::tensorflow::Output

operator::tensorflow::Output() const 

Общедоступные статические функции

Axis

Attrs Axis(
  int64 x
)

NarrowRange

Attrs NarrowRange(
  bool x
)

NumBits

Attrs NumBits(
  int64 x
)

RangeGiven

Attrs RangeGiven(
  bool x
)

RoundMode

Attrs RoundMode(
  StringPiece x
)

SignedInput

Attrs SignedInput(
  bool x
)

© 2020 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/versions/r2.4/api_docs/cc/class/tensorflow/ops/quantize-and-dequantize-v2

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API