ML 커뮤니티 데이는 11월 9일입니다! TensorFlow, JAX에서 업데이트를 우리와 함께, 더 자세히 알아보기

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] 범위를 표현 가능한 양자화 된 범위 내에있는 범위로 매핑하는 최대 scale_factor를 결정합니다.

input_min 및 input_max 중 하나에서 스케일을 결정한 다음 다른 하나를 업데이트하여 표현 가능한 범위를 최대화합니다.

예 :

  • 출력이 부호있는 경우 num_bits = 8, [input_min, input_max] = [-10.0, 5.0] : -128 / -10.0 = 12.8의 scale_factor를 사용합니다.이 경우 input_max를 127 / 12.8 =로 업데이트합니다. 9.921875
  • 출력이 부호있는 경우 num_bits = 8, [input_min, input_max] = [-10.0, 10.0] : scale_factor 127 / 10.0 = 12.7을 사용합니다.이 경우 input_min을 128.0 / 12.7 = -10.07874로 업데이트합니다.
  • 출력이 부호없는 경우 input_min은 0이되며 지정된 input_max 만 사용됩니다.

scale_factor를 결정하고 입력 범위를 업데이트 한 후 'input'텐서의 각 값에 다음을 적용합니다.

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

위의 round 함수는 주어진 round_mode에 따라 값을 반올림합니다.

인수 :

  • 범위 : 범위 개체
  • 입력 : 텐서 로 양자화 한 다음 역 양자화합니다.
  • 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'속성은 float 값을 양자화 된 등가로 반올림 할 때 사용되는 반올림 타이 브레이킹 알고리즘을 제어합니다. 현재 다음 반올림 모드가 지원됩니다.
  • HALF_TO_EVEN : 기본 round_mode입니다.
  • HALF_UP : 양수쪽으로 반올림합니다. 이 모드에서 7.5는 8로 반올림되고 -7.5는 -7로 반올림됩니다.
  • 좁은 _ 범위 : True 인 경우 양자화 된 최소값의 절대 값은 1 큰 대신 양자화 된 최대 값과 동일합니다. 즉, 8 비트 양자화의 경우 최소값은 -128 대신 -127입니다.

보고:

생성자와 소멸자

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
output

공공 기능

node () const
::tensorflow::Node *
operator::tensorflow::Input () const
operator::tensorflow::Output () const

공개 정적 함수

NarrowRange (bool x)
NumBits (int64 x)
RangeGiven (bool x)
RoundMode (StringPiece x)
SignedInput (bool x)

구조체

tensorflow :: ops :: QuantizeAndDequantizeV2 :: Attrs

QuantizeAndDequantizeV2에 대한 선택적 속성 설정자.

공용 속성

조작

Operation operation

산출

::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
)

마디

::tensorflow::Node * node() const 

연산자 :: tensorflow :: 입력

 operator::tensorflow::Input() const 

연산자 :: tensorflow :: 출력

 operator::tensorflow::Output() const 

공개 정적 함수

좁은 범위

Attrs NarrowRange(
  bool x
)

NumBits

Attrs NumBits(
  int64 x
)

RangeGiven

Attrs RangeGiven(
  bool x
)

RoundMode

Attrs RoundMode(
  StringPiece x
)

SignedInput

Attrs SignedInput(
  bool x
)