tensorflow::ops::Dequantize

#include <array_ops.h>

Giải lượng tử hóa tensor 'đầu vào' thành một Tensor kiểu float.

Bản tóm tắt

[min_range, max_range] là các giá trị float vô hướng xác định phạm vi cho đầu ra. Thuộc tính 'mode' kiểm soát chính xác các phép tính nào được sử dụng để chuyển đổi các giá trị float thành các giá trị lượng tử hóa tương ứng.

Ở chế độ 'MIN_COMBINED', mỗi giá trị của tensor sẽ trải qua các bước sau:

if T == qint8: in[i] += (range(T) + 1)/ 2.0
out[i] = min_range + (in[i]* (max_range - min_range) / range(T))
ở đây range(T) = numeric_limits ::max() - numeric_limits ::min()

Ví dụ về chế độ MIN_COMBINED

Nếu đầu vào đến từ QuantizedRelu6 , kiểu dữ liệu đầu ra là quint8 (phạm vi 0-255) nhưng phạm vi có thể có của QuantizedRelu6 là 0-6. Do đó, các giá trị min_range và max_range là 0.0 và 6.0. Quá trình dequantize trên quint8 sẽ lấy từng giá trị, chuyển đổi sang kiểu float, và nhân với 6 / 255. Lưu ý rằng nếu quantizedtype là qint8, thao tác này sẽ cộng thêm 128 vào mỗi giá trị trước khi chuyển đổi.

Nếu chế độ là 'MIN_FIRST', thì phương pháp này sẽ được sử dụng:

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(input) - lowest_quantized;
result = range_min + ((input - numeric_limits::min()) * range_scale)

Nếu chế độ là SCALED , quá trình khử lượng tử được thực hiện bằng cách nhân mỗi giá trị đầu vào với một hệ số tỷ lệ. (Do đó, đầu vào 0 luôn được ánh xạ tới 0,0).

Hệ số scaling_factor được xác định từ min_range , max_range và narrow_range theo cách tương thích với QuantizeAndDequantize{V2|V3} và QuantizeV2 , sử dụng thuật toán sau:

  

  const int min_expected_T = std::numeric_limits::min() +
    (narrow_range ? 1 : 0);
  const int max_expected_T = std::numeric_limits::max();
  const float max_expected_T = std::numeric_limits::max();

  const float scale_factor =
    (std::numeric_limits::min() == 0) ? (max_range / max_expected_T)
                                         : std::max(min_range / min_expected_T,
                                                    max_range / max_expected_T);

Luận điểm:

  • phạm vi: Một đối tượng Phạm vi
  • min_range: Giá trị vô hướng nhỏ nhất có thể tạo ra từ dữ liệu đầu vào.
  • max_range: Giá trị vô hướng tối đa có thể tạo ra từ dữ liệu đầu vào.

Trả về:

Hàm khởi tạo và hàm hủy

Dequantize (const :: tensorflow::Scope & scope, :: tensorflow::Input input, :: tensorflow::Input min_range, :: tensorflow::Input max_range)
Dequantize (const :: tensorflow::Scope & scope, :: tensorflow::Input input, :: tensorflow::Input min_range, :: tensorflow::Input max_range, const Dequantize::Attrs & attrs)

Thuộc tính công khai

operation
output

Chức năng công cộng

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

Các hàm tĩnh công khai

Axis (int64 x)
Mode (StringPiece x)
NarrowRange (bool x)

Cấu trúc

tensorflow::ops::Dequantize::Attrs

Các thiết lập thuộc tính tùy chọn cho Dequantize .

Thuộc tính công khai

hoạt động

Operation operation

đầu ra

::tensorflow::Output output

Chức năng công cộng

giải mã

 Dequantize(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input input,
  ::tensorflow::Input min_range,
  ::tensorflow::Input max_range
)

giải mã

 Dequantize(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input input,
  ::tensorflow::Input min_range,
  ::tensorflow::Input max_range,
  const Dequantize::Attrs & attrs
)

nút

::tensorflow::Node * node() const 

operator::tensorflow::Input

 operator::tensorflow::Input() const 

operator::tensorflow::Output

 operator::tensorflow::Output() const 

Các hàm tĩnh công khai

Trục

Attrs Axis(
  int64 x
)

Cách thức

Attrs Mode(
  StringPiece x
)

Phạm vi hẹp

Attrs NarrowRange(
  bool x
)