'입력' 텐서를 float 또는 bfloat16 텐서로 역양자화합니다.
[min_range, max_range]는 출력 범위를 지정하는 스칼라 부동 소수점입니다. 'mode' 속성은 float 값을 양자화된 값으로 변환하는 데 사용되는 계산을 정확하게 제어합니다.
'MIN_COMBINED' 모드에서 텐서의 각 값은 다음을 수행합니다.
if T == qint8: in[i] += (range(T) + 1)/ 2.0
out[i] = min_range + (in[i]* (max_range - min_range) / range(T))
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)
scale_factor는 다음 알고리즘을 사용하여 `QuantizeAndDeQuantize{V2|V3}` 및 `QuantizeV2`와 호환되는 방식으로 `min_range`, `max_range` 및 `narrow_range`에서 결정됩니다.
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 | NarrowRange (부울 NarrowRange) |
출력 <U> | 출력 () |
상속된 메서드
상수
공개 정적 최종 문자열 OP_NAME
TensorFlow 핵심 엔진에서 알려진 이 작업의 이름
공개 방법
공개 출력 <U> asOutput ()
텐서의 기호 핸들을 반환합니다.
TensorFlow 작업에 대한 입력은 다른 TensorFlow 작업의 출력입니다. 이 메서드는 입력 계산을 나타내는 기호 핸들을 얻는 데 사용됩니다.
공개 정적 역양자화 <U> 생성 ( 범위 범위, 피연산자 <? 확장 TType > 입력, 피연산자 < TFloat32 > minRange, 피연산자 < TFloat32 > maxRange, Class<U> dtype, 옵션... 옵션)
새로운 DeQuantize 작업을 래핑하는 클래스를 생성하는 팩토리 메서드입니다.
매개변수
범위 | 현재 범위 |
---|---|
최소 범위 | 입력에 대해 생성될 수 있는 최소 스칼라 값입니다. |
최대 범위 | 입력에 대해 생성될 수 있는 최대 스칼라 값입니다. |
dtype | 출력 텐서의 유형입니다. 현재 DeQuantize는 float 및 bfloat16을 지원합니다. 'dtype'이 'bfloat16'인 경우 'MIN_COMBINED' 모드만 지원합니다. |
옵션 | 선택적 속성 값을 전달합니다. |
보고
- DeQuantize의 새로운 인스턴스
공개 정적 역양자화 < TFloat32 > 생성 ( 범위 범위, 피연산자 <? 확장 TType > 입력, 피연산자 < TFloat32 > minRange, 피연산자 < TFloat32 > maxRange, 옵션... 옵션)
기본 출력 유형을 사용하여 새로운 역양자화 작업을 래핑하는 클래스를 생성하는 팩토리 메서드입니다.
매개변수
범위 | 현재 범위 |
---|---|
최소 범위 | 입력에 대해 생성될 수 있는 최소 스칼라 값입니다. |
최대 범위 | 입력에 대해 생성될 수 있는 최대 스칼라 값입니다. |
옵션 | 선택적 속성 값을 전달합니다. |
보고
- DeQuantize의 새로운 인스턴스