Chuyển đổi tenxơ 'đầu vào' được lượng tử hóa thành 'đầu ra' có độ chính xác thấp hơn, bằng cách sử dụng
phân phối thực tế của các giá trị để tối đa hóa việc sử dụng độ sâu bit thấp hơn và điều chỉnh phạm vi tối thiểu và tối đa đầu ra tương ứng.
[input_min, input_max] là các số float vô hướng chỉ định phạm vi để diễn giải float của dữ liệu 'đầu vào'. Ví dụ: nếu input_min là -1.0f và input_max là 1.0f và chúng ta đang xử lý dữ liệu lượng tử hóa quint16, thì giá trị 0 trong dữ liệu 16 bit sẽ được hiểu là -1.0f và 65535 có nghĩa là 1.0f.
Toán tử này cố gắng thu được độ chính xác cao nhất có thể vào đầu ra có độ sâu bit thấp hơn bằng cách tính toán các giá trị tối thiểu và tối đa thực tế được tìm thấy trong dữ liệu. Ví dụ: có thể đầu vào quint16 đó không có giá trị nào thấp hơn 16.384 và không có giá trị nào cao hơn 49.152. Điều đó có nghĩa là thực tế chỉ cần một nửa phạm vi, tất cả các cách diễn giải float nằm trong khoảng từ -0,5f đến 0,5f, vì vậy nếu chúng ta muốn nén dữ liệu thành đầu ra quint8, chúng ta có thể sử dụng phạm vi đó thay vì -1,0f đến 1,0 theo lý thuyết f được đề xuất bởi đầu vào tối thiểu và tối đa.
Trong thực tế, điều này hữu ích nhất để lấy đầu ra từ các hoạt động như QuantizedMatMul có thể tạo ra đầu ra có độ sâu bit cao hơn đầu vào của chúng và có thể có phạm vi đầu ra tiềm năng lớn, nhưng trên thực tế có sự phân bổ các giá trị đầu vào chỉ sử dụng một phần nhỏ của phạm vi có thể. Bằng cách đưa đầu ra đó vào toán tử này, chúng ta có thể giảm nó từ 32 bit xuống còn 8 với độ chính xác bị mất ở mức tối thiểu.
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
tĩnh <U mở rộng TType > QuantizeDownAndShrinkRange <U> | |
Đầu ra <U> | đầu ra () |
Đầu ra < TFloat32 > | đầu raMax () Giá trị float mà giá trị đầu ra lượng tử hóa tối đa đại diện. |
Đầu ra < TFloat32 > | đầu raMin () Giá trị float mà giá trị đầu ra lượng tử hóa tối thiểu đại diện. |
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
public static QuantizeDownAndShrinkRange <U> tạo ( Phạm vi phạm vi, Toán hạng <? mở rộng TType > đầu vào, Toán hạng < TFloat32 > inputMin, Toán hạng < TFloat32 > inputMax, Class<U> outType)
Phương thức gốc để tạo một lớp bao bọc một thao tác QuantizeDownAndShrinkRange mới.
Thông số
phạm vi | phạm vi hiện tại |
---|---|
đầu vào tối thiểu | Giá trị float mà giá trị đầu vào lượng tử hóa tối thiểu đại diện. |
đầu vàoMax | Giá trị float mà giá trị đầu vào lượng tử hóa tối đa đại diện. |
outType | Loại đầu ra. Nên có độ sâu bit thấp hơn Tinput. |
Trả lại
- một phiên bản mới của QuantizeDownAndShrinkRange
Đầu ra công khai < TFloat32 > đầu raMax ()
Giá trị float mà giá trị đầu ra lượng tử hóa tối đa đại diện.