dòng chảy căng:: ôi:: giải mã
#include <array_ops.h>
Giảm lượng tử tenxơ 'đầu vào' thành một tenxơ float hoặc bfloat16.
Bản tóm tắt
[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))ở đâ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)
Nếu chế độ là SCALED
, quá trình khử lượng tử được thực hiện bằng cách nhân từng giá trị đầu vào với một hệ số chia tỷ lệ. (Do đó, đầu vào 0 luôn ánh xạ tới 0,0).
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::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); Lập 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.
Thuộc tính tùy chọn (xem Attrs
):
- 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'.
Trả về:
-
Output
: Tenxor đầu ra.
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 | |
---|---|
Axis (int64 x) | |
Dtype (DataType x) | |
Mode (StringPiece x) | |
NarrowRange (bool 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
Trục
Attrs Axis( int64 x )
loại D
Attrs Dtype( DataType x )
Cách thức
Attrs Mode( StringPiece x )
Phạm vi hẹp
Attrs NarrowRange( bool x )