tensorflow :: ops :: QuantizeAndDequantizeV2
#include <array_ops.h>
그런 다음 텐서를 양자화합니다.
요약
이 연산은 다음을 통해 양자화 된 순방향 패스의 정밀도 손실을 시뮬레이션합니다.
- 추론에 사용될 때 대상 양자화 방법과 일치해야하는 고정 소수점 숫자로 텐서를 양자화합니다.
- 다음 연산 (대부분 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] : scale_factor -128 / -10.0 = 12.8을 사용합니다.이 경우 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입니다.
- 축 : 지정된 경우이 축은 채널 또는 슬라이스 축으로 처리되고이 축을 따라 각 채널 또는 슬라이스에 대해 별도의 양자화 범위가 사용됩니다.
보고:
-
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 | |
output |
공공 기능 | |
---|---|
node () const | ::tensorflow::Node * |
operator::tensorflow::Input () const | |
operator::tensorflow::Output () const |
공개 정적 함수 | |
---|---|
Axis (int64 x) | |
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 Axis( int64 x )
좁은 범위
Attrs NarrowRange( bool x )
NumBits
2020 년 4 월 6 일RangeGiven
Attrs RangeGiven( bool x )
RoundMode
Attrs RoundMode( StringPiece x )
SignedInput
Attrs SignedInput( bool x )