Altifigence Academy

7 / 24 · Khái niệm

Độ rộng bộ tích lũy, làm tròn và bão hòa

Mười tám bit có dấu có đủ cho chín tích signed-int8 với bias 0 không?

Tích lũy cần độ rộng riêng

Toán hạng tám bit và đầu ra tám bit không có nghĩa bộ tích lũy tám bit. Mã tám bit có dấu có độ lớn tối đa 128. Với điểm 0 bằng 0 và L số hạng, giới hạn bảo thủ độ lớn tổng là L×128×128 cộng độ lớn bias. Chọn độ rộng có dấu có giá trị dương lớn nhất bao phủ giới hạn đó; bit dấu chiếm một bit.

Tính độ rộng

Với C=3 và kernel 3×3, L=27. Khi cả hai toán hạng là −128, mỗi tích bằng +16384 và tổng là 442368. Mười chín bit có dấu chỉ đạt 262143. Hai mươi bit đạt 524287 và còn bao phủ phần cho phép độ lớn bias 1000, cho giới hạn 443368. Phạm vi toán hạng nhỏ hơn đã chứng minh có thể giảm độ rộng cần, nhưng vài đầu vào thử thông thường không chứng minh được giới hạn.

Mã không dấu có điểm 0 bằng 0 có thể đạt 255, nên giả định 128 sai. Trước hết tính A=max(abs(qmin−zx),abs(qmax−zx)) và B tương tự cho trọng số. Dùng L×A×B+abs(b). Bản thân việc trừ điểm 0 có thể cần nhiều bit hơn mã lưu.

Chốt thứ tự chuyển đổi đầu ra

Hệ số nhân là sx×sw/sy. Với hệ số 0.5 và điểm 0 đầu ra 128, bộ tích lũy chín thành trường hợp giữa 4.5, làm tròn về số chẵn bốn và tạo 132. Bộ tích lũy mười một làm tròn 5.5 thành sáu và tạo 134. Bộ tích lũy −3 làm tròn −1.5 thành −2. Cắt, cắt về 0 và dịch phải số học khác nhau với số âm. Bài tập dùng hàm gần nhất chọn chẵn riêng thay vì hàm làm tròn mặc định của ngôn ngữ.

Với đầu ra int8, giá trị chuyển đổi 300 bão hòa thành 127 và −300 thành −128. Bỏ bit cao sẽ quay vòng thành giá trị không liên quan. Ghi giá trị trước cắt và số lần bão hòa. Bao gồm vị trí ReLU và cách biểu diễn 0 của nó trong quy ước.

Kiểm chứng tổng dương âm lớn, trường hợp đúng giữa, cả hai biên bão hòa và bias lớn. Cố ý so tham chiếu rộng với bộ tích lũy quá hẹp để làm lộ tràn. Dữ liệu có thể chạy của chúng ta nằm trong phạm vi số nguyên JavaScript chính xác; tham chiếu lớn hơn còn phải giải thích độ chính xác số học của môi trường chạy.

Tự thử

Mười tám bit có dấu có đủ cho chín tích signed-int8 với bias 0 không?

Đọc giải thích

Giới hạn dương là 9×16384=147456, vượt tối đa mười tám bit 131071. Mười chín bit có dấu đạt 262143.

Lựa chọn áp dụng cho trình duyệt này. Có thể đổi ở chân trang bất cứ lúc nào.