Được duy trì bởi Arm ML Tooling
Tài liệu này cung cấp thông tin tổng quan về phân cụm trọng số để giúp bạn xác định mức độ phù hợp với trường hợp sử dụng của bạn.
- Để đi sâu vào ví dụ từ đầu đến cuối, hãy xem ví dụ về phân cụ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 cụm trọng số .
Tổng quan
Phân cụm hoặc chia sẻ trọng số sẽ làm giảm số lượng giá trị trọng số duy nhất trong một mô hình, mang lại 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ị trọng tâm 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 việc nén mô hình. Hỗ trợ khung trong tương lai có thể mở khóa các cải tiến về dung lượng bộ nhớ có thể tạo ra sự khác biệt quan trọng trong việc triển khai các mô hình học sâu trên các hệ thống nhúng có nguồn lực hạn chế.
Chúng tôi đã thử nghiệm phân cụm các nhiệm vụ về tầm nhìn và lời nói. Chúng tôi đã thấy những cải tiến lên tới 5 lần trong khả năng nén mô hình với độ chính xác bị mất ở mức tối thiểu, như được minh họa bằng các kết quả được trình bày bên dưới.
Xin lưu ý rằng việc phân cụm sẽ mang lại lợi ích giảm đi cho các lớp tích chập và dày đặc đứng 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:
keras
chỉ có 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ả đồ thị và háo hức
Kết quả
Phân loại hình ảnh
Người mẫu | Nguyên bản | Được nhóm lại | ||||
---|---|---|---|---|---|---|
Độ chính xác cao nhất (%) | Kích thước của .tflite nén (MB) | Cấu hình | # cụm | Độ chính xác cao nhất (%) | Kích thước của .tflite 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 | Được nhóm lại | ||||
---|---|---|---|---|---|---|
Độ chính xác cao nhất (%) | Kích thước của .tflite nén (MB) | Cấu hình | # cụm | Độ chính xác cao nhất (%) | Kích thước của .tflite 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 huấn luyện và thử nghiệm trên SpeechCommands v0.02.
- Tuần tự hóa 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 zip
Ví dụ
Ngoài ví dụ về Weight clustering trong Keras , hãy xem các ví dụ sau:
- Phân cụm các trọng số của mô hình CNN được đào tạo trên tập 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 Nén sâu: Nén mạng lưới thần kinh sâu bằng cách 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 .