Được bảo trì bởi Arm ML Tooling
Tài liệu này cung cấp tổng quan về phân cụm trọng lượng để giúp bạn xác định xem nó phù hợp với trường hợp sử dụng của bạn như thế nào.
- Để đi sâu vào ví dụ end-to-end, hãy xem ví dụ phân nhóm trọng số .
- Để nhanh chóng tìm thấy các API bạn cần cho trường hợp sử dụng của mình, hãy xem hướng dẫn toàn diện về phân nhóm trọng số .
Tổng quan
Phân cụm, hoặc chia sẻ trọng số, làm giảm số lượng giá trị trọng số duy nhất trong một mô hình, dẫn đến lợi ích cho việc triển khai. Đầu tiên, nó nhóm các trọng số của mỗi lớp thành N cụm, sau đó chia sẻ giá trị centroid của cụm cho tất cả các trọng số thuộc cụm.
Kỹ thuật này mang lại những cải tiến thông qua nén mô hình. Hỗ trợ khuôn khổ trong tương lai có thể mở khóa các cải tiến về dấu chân bộ nhớ có thể tạo ra sự khác biệt quan trọng cho việc triển khai mô hình học sâu trên các hệ thống nhúng với tài nguyên hạn chế.
Chúng tôi đã thử nghiệm với việc phân nhóm giữa các nhiệm vụ thị giác và giọng nói. Chúng tôi đã chứng kiến những cải tiến lên đến 5 lần trong việc nén mô hình với độ chính xác tối thiểu, như được chứng minh bằng các kết quả được trình bày bên dưới.
Xin lưu ý rằng phân cụm sẽ cung cấp lợi ích giảm bớt cho các lớp chập và dày đặc trước lớp chuẩn hóa hàng loạt, cũng như kết hợp với lượng tử hóa sau đào tạo trên mỗi trục.
Ma trận tương thích API
Người dùng có thể áp dụng phân cụm với các API sau:
- Xây dựng mô hình:
tf.keras
chỉ với các mô hình Tuần tự và Chức năng - Phiên bản TensorFlow: TF 1.x cho phiên bản 1.14+ và 2.x.
-
tf.compat.v1
với gói TF 2.X vàtf.compat.v2
với gói TF 1.X không được hỗ trợ.
-
- Chế độ thực thi TensorFlow: cả biểu đồ và háo hức
Kết quả
Phân loại hình ảnh
Người mẫu | Nguyên bản | Thành cụm | ||||
---|---|---|---|---|---|---|
Độ chính xác top 1 (%) | Kích thước của .tflite được nén (MB) | Cấu hình | # trong số các cụm | Độ chính xác top 1 (%) | Kích thước của .tflite được nén (MB) | |
MobileNetV1 | 70,976 | 14,97 | ||||
Chọn lọc (3 lớp Conv2D cuối cùng) | 16, 16, 16 | 70.294 | 7.69 | |||
Chọn lọc (3 lớp Conv2D cuối cùng) | 32, 32, 32 | 70,69 | 8.22 | |||
Đầy đủ (tất cả các lớp Conv2D) | 32 | 69.4 | 4,43 | |||
MobileNetV2 | 71,778 | 12,38 | ||||
Chọn lọc (3 lớp Conv2D cuối cùng) | 16, 16, 16 | 70,742 | 6,68 | |||
Chọn lọc (3 lớp Conv2D cuối cùng) | 32, 32, 32 | 70,926 | 7,03 | |||
Đầy đủ (tất cả các lớp Conv2D) | 32 | 69,744 | 4.05 |
Các mô hình đã được đào tạo và thử nghiệm trên ImageNet.
Phát hiện từ khóa
Người mẫu | Nguyên bản | Thành cụm | ||||
---|---|---|---|---|---|---|
Độ chính xác top 1 (%) | Kích thước của .tflite được nén (MB) | Cấu hình | # trong số các cụm | Độ chính xác top 1 (%) | Kích thước của .tflite được nén (MB) | |
DS-CNN-L | 95.233 | 1,46 | ||||
Đầy đủ (tất cả các lớp Conv2D) | 32 | 95.09 | 0,39 | |||
Đầy đủ (tất cả các lớp Conv2D) | số 8 | 94.272 | 0,27 |
Mô hình đã được đào tạo và thử nghiệm trên SpeechCommands v0.02.
- Nối tiếp mô hình Keras thành tệp .h5
- Chuyển đổi tệp .h5 thành .tflite bằng
TFLiteConverter.from_keras_model_file()
- Nén tệp .tflite thành một tệp zip
Các ví dụ
Ngoài ví dụ về cụm Trọng lượng trong Keras , hãy xem các ví dụ sau:
- Nhóm các trọng số của mô hình CNN được đào tạo trên bộ dữ liệu phân loại chữ số viết tay MNIST: mã
Việc triển khai phân cụm trọng số dựa trên Deep Compression: Nén mạng thần kinh sâu với giấy cắt tỉa, lượng tử hóa được đào tạo và mã hóa Huffman. Xem chương 3, có tiêu đề Lượng tử hóa được Đào tạo và Chia sẻ Trọng lượng .