Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

dòng chảy :: hoạt động :: Dequantize

#include <array_ops.h>

Dequantize tensor 'đầu vào' thành Tensor float.

Tóm lược

[min_range, max_range] là các phao 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 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ị tương đương được lượng tử hóa của chúng.

Trong chế độ 'MIN_COMBINED', mỗi giá trị của tensor sẽ trải qua như 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_COMBINED

Nếu đầu vào đến từ QuantizedRelu6 , thì loại đầu ra là nhóm ngũ phân 8 (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 weight8 sẽ lấy từng giá trị, ép kiểu float và nhân với 6 / 255. Lưu ý rằng nếu kiểu lượng tử là qint8, thì thao tác này sẽ cộng thêm từng giá trị 128 trước khi ép kiểu.

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)

Ví dụ về chế độ SCALED

SCALED chế độ phù hợp với cách tiếp cận lượng tử sử dụng trong QuantizeAndDequantize{V2|V3} .

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

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

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

Khi đó phạm vi tensor đầu vào của chúng ta là [-m, m] .

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

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

Ngược lại, nếu T không được đánh dấu, 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ể dequantize các phần tử của tensor của chúng ta:

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 ra cho đầu vào.
  • max_range: Giá trị vô hướng lớn nhất có thể được tạo ra cho đầu vào.

Lợi nhuận:

  • Output : Bộ căng đầu ra.

Người xây dựng và Người phá 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

Chức năng tĩnh công khai

Mode (StringPiece x)

Cấu trúc

tensorflow :: ops :: Dequantize :: Attrs

Bộ 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

Dequantize

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

Dequantize

 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ử :: tensorflow :: Đầu vào

 operator::tensorflow::Input() const 

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

 operator::tensorflow::Output() const 

Chức năng tĩnh công khai

Chế độ

Attrs Mode(
  StringPiece x
)