dòng chảy căng:: ôi:: giải mã

#include <array_ops.h>

Giảm lượng tử tensor 'đầu vào' thành một tensor float.

Bản tóm tắt

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

Trong chế độ 'MIN_COMBIND', mỗi giá trị của tenxơ 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() range(T) = numeric_limits ::max() - numeric_limits ::min() range(T) = numeric_limits ::max() - numeric_limits ::min()

Ví dụ về chế độ MIN_COMBIND

Nếu đầu vào đến từ QuantizedRelu6 thì loại đầ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. Dequantize trên quint8 sẽ lấy từng giá trị, chuyển thành float và nhân với 6/255. Lưu ý rằng nếu loại lượng tử hóa là qint8, thì thao tác sẽ cộng thêm từng giá trị với 128 trước khi truyền.

Nếu chế độ là 'MIN_FIRST' thì phương pháp này đượ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)

Chế độ SCALED Ví dụ

Chế độ SCALED phù hợp với phương pháp lượng tử hóa được sử dụng trong QuantizeAndDequantize{V2|V3} .

Nếu chế độ là SCALED , chúng tôi không sử dụng toàn bộ phạm vi của loại đầu ra, chọn elide giá trị thấp nhất có thể cho tính đối xứng (ví dụ: phạm vi đầu ra là -127 đến 127, không phải -128 đến 127 đối với lượng tử hóa 8 bit đã ký), sao cho 0,0 ánh xạ tới 0.

Đầu tiên chúng ta tìm phạm vi giá trị trong tensor của mình. Phạm vi chúng tôi sử dụng luôn tập trung vào 0, vì vậy chúng tôi tìm thấy m sao cho

  m = max(abs(input_min), abs(input_max))

Phạm vi tensor đầu vào của chúng tôi sau đó là [-m, m] .

Tiếp theo, chúng tôi chọn nhóm lượng tử hóa điểm cố định, [min_fixed, max_fixed] . Nếu T được ký thì đây là

  num_bits = sizeof(T) * 8
  [min_fixed, max_fixed] =
      [-(1 << (num_bits - 1) - 1), (1 << (num_bits - 1)) - 1]

Mặt khác, nếu T không được ký, phạm vi điểm cố định là

  [min_fixed, max_fixed] = [0, (1 << num_bits) - 1]

Từ đó, chúng tôi tính toán hệ số tỷ lệ của mình, s:

  s = (2 * m) / (max_fixed - min_fixed)

Bây giờ chúng ta có thể khử lượng tử các phần tử của tensor:

result = input * s

Tranh luận:

  • phạm vi: Một đối tượng Phạm vi
  • min_range: Giá trị vô hướng tối thiểu có thể được tạo cho đầu vào.
  • max_range: Giá trị vô hướng tối đa có thể được tạo ra cho đầu vào.

Trả về:

Hàm 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

Mode (StringPiece x)

Cấu trúc

tensorflow:: ops:: Dequantize:: Attrs

Trình 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 

toán tử::tenorflow::Đầu vào

 operator::tensorflow::Input() const 

toán tử::tenorflow::Đầu ra

 operator::tensorflow::Output() const 

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

Cách thức

Attrs Mode(
  StringPiece x
)