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 dữ liệu 'input'. 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))
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)
Ví dụ về chế độ thu phóng
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 ta không sử dụng toàn bộ phạm vi của kiểu đầu ra, mà chọn cách bỏ qua giá trị thấp nhất có thể để đảm bảo tính đối xứng (ví dụ: phạm vi đầu ra là -127 đến 127, chứ không phải -128 đến 127 đối với lượng tử hóa 8 bit có dấu), sao cho 0.0 được ánh xạ thành 0.
Trước tiên, chúng ta tìm phạm vi giá trị trong tenxơ của mình. Phạm vi chúng ta sử dụng luôn được đặt ở vị trí trung tâm là 0, vì vậy chúng ta tìm m sao cho
m = max(abs(input_min), abs(input_max))
Phạm vi tensor đầu vào của chúng ta là [-m, m] .
Tiếp theo, chúng ta chọn các khoảng lượng tử hóa điểm cố định, [min_fixed, max_fixed] . Nếu T là số có dấu, thì đâ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 là số không dấu, phạm vi số thập phân cố định là
[min_fixed, max_fixed] = [0, (1 << num_bits) - 1]
Từ đó, chúng ta tính được hệ số tỷ lệ, s:
s = (2 * m) / (max_fixed - min_fixed)
Giờ chúng ta có thể khử lượng tử các phần tử của tenxơ:
result = input * s
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ề:
-
Output: Tensor đầu ra.
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 | |
|---|---|
Mode (StringPiece 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
Cách thức
Attrs Mode( StringPiece x )