Giảm lượng tử tenxơ 'đầu vào' thành một tenxơ float hoặc bfloat16.
[min_range, max_range] là các số float vô hướng chỉ định phạm vi cho đầu ra. 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))
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<double>(input) - lowest_quantized;
result = range_min + ((input - numeric_limits<T>::min()) * range_scale)
Hệ số chia tỷ lệ đượ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<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);
Các lớp lồng nhau
lớp học | Dequantize.Options | Các thuộc tính tùy chọn cho Dequantize |
Hằng số
Sợi dây | OP_NAME | Tên của op này, được biết đến bởi công cụ lõi TensorFlow |
Phương pháp công cộng
Đầu ra <U> | asOutput () Trả về tay cầm tượng trưng của tensor. |
tĩnh Dequantize.Options | trục (Trục dài) |
tĩnh <U mở rộng TNumber > Giảm lượng tử hóa <U> | |
Giảm lượng tử tĩnh < TFloat32 > | |
tĩnh Dequantize.Options | chế độ (Chế độ chuỗi) |
tĩnh Dequantize.Options | phạm vi hẹp (Phạm vi hẹp Boolean) |
Đầu ra <U> | đầu ra () |
Phương pháp kế thừa
Hằng số
Chuỗi cuối cùng tĩnh công khai OP_NAME
Tên của op này, được biết đến bởi công cụ lõi TensorFlow
Phương pháp công cộng
Đầu ra công khai <U> asOutput ()
Trả về tay cầm tượng trưng của tensor.
Đầu vào của các hoạt động TensorFlow là đầu ra của một hoạt động TensorFlow khác. Phương pháp này được sử dụng để thu được một thẻ điều khiển mang tính biểu tượng đại diện cho việc tính toán đầu vào.
public static Dequantize <U> tạo ( Phạm vi phạm vi, Toán hạng <? mở rộng đầu vào TType >, Toán hạng < TFloat32 > minRange, Toán hạng < TFloat32 > maxRange, Class<U> dtype, Tùy chọn... tùy chọn)
Phương thức xuất xưởng để tạo một lớp bao bọc một hoạt động Dequantize mới.
Thông số
phạm vi | phạm vi hiện tại |
---|---|
phạm vi phút | Giá trị vô hướng tối thiểu có thể được tạo ra cho đầu vào. |
phạm vi tối đa | Giá trị vô hướng tối đa có thể được tạo ra cho đầu vào. |
dtype | Loại tensor đầu ra. Hiện tại Dequantize hỗ trợ float và bfloat16. Nếu 'dtype' là 'bfloat16' thì nó chỉ hỗ trợ chế độ 'MIN_COMBIND'. |
tùy chọn | mang các giá trị thuộc tính tùy chọn |
Trả lại
- một phiên bản mới của Dequantize
public static Dequantize < TFloat32 > create ( Phạm vi phạm vi, Toán hạng <? mở rộng TType > đầu vào, Toán hạng < TFloat32 > minRange, Toán hạng < TFloat32 > maxRange, Tùy chọn... tùy chọn)
Phương thức xuất xưởng để tạo một lớp bao bọc một thao tác Dequantize mới bằng cách sử dụng các loại đầu ra mặc định.
Thông số
phạm vi | phạm vi hiện tại |
---|---|
phạm vi phút | Giá trị vô hướng tối thiểu có thể được tạo ra cho đầu vào. |
phạm vi tối đa | Giá trị vô hướng tối đa có thể được tạo ra cho đầu vào. |
tùy chọn | mang các giá trị thuộc tính tùy chọn |
Trả lại
- một phiên bản mới của Dequantize