Arm ML Tooling tarafından sürdürülmektedir
Bu belge, kullanım durumunuza nasıl uyduğunu belirlemenize yardımcı olmak için ağırlık kümelemesine genel bir bakış sağlar.
- Uçtan uca bir örneğe dalmak için ağırlık kümeleme örneğine bakın.
- Kullanım durumunuz için ihtiyaç duyduğunuz API'leri hızlı bir şekilde bulmak için ağırlık kümeleme kapsamlı kılavuzuna bakın.
Genel Bakış
Kümeleme veya ağırlık paylaşımı, bir modeldeki benzersiz ağırlık değerlerinin sayısını azaltarak dağıtım açısından avantajlar sağlar. İlk önce her katmanın ağırlıklarını N küme halinde gruplandırır, ardından kümeye ait tüm ağırlıklar için kümenin ağırlık merkezi değerini paylaşır.
Bu teknik, model sıkıştırma yoluyla iyileştirmeler sağlar. Gelecekteki çerçeve desteği, derin öğrenme modellerinin sınırlı kaynaklara sahip gömülü sistemlere dağıtılmasında önemli bir fark yaratabilecek bellek ayak izi iyileştirmelerinin kilidini açabilir.
Görme ve konuşma görevlerinde kümelemeyi denedik. Aşağıda sunulan sonuçların da gösterdiği gibi, minimum doğruluk kaybıyla model sıkıştırmada 5 kata kadar iyileşme gördük.
Kümelemenin, toplu normalleştirme katmanından önce gelen evrişim ve yoğun katmanların yanı sıra eksen başına eğitim sonrası kuantizasyonla kombinasyon halinde azaltılmış faydalar sağlayacağını lütfen unutmayın.
API uyumluluk matrisi
Kullanıcılar aşağıdaki API'lerle kümelemeyi uygulayabilir:
- Model oluşturma: yalnızca Sıralı ve İşlevsel modellere sahip
keras
- TensorFlow sürümleri: 1.14+ ve 2.x sürümleri için TF 1.x.
- TF 2.X paketine sahip
tf.compat.v1
ve TF 1.X paketine sahiptf.compat.v2
desteklenmez.
- TF 2.X paketine sahip
- TensorFlow yürütme modu: hem grafik hem de istekli
Sonuçlar
Görüntü sınıflandırması
Modeli | Orijinal | Kümelenmiş | ||||
---|---|---|---|---|---|---|
İlk 1 doğruluk (%) | Sıkıştırılmış .tflite boyutu (MB) | Yapılandırma | küme sayısı | İlk 1 doğruluk (%) | Sıkıştırılmış .tflite boyutu (MB) | |
MobilNetV1 | 70.976 | 14.97 | ||||
Seçici (son 3 Conv2D katmanı) | 16, 16, 16 | 70.294 | 7.69 | |||
Seçici (son 3 Conv2D katmanı) | 32, 32, 32 | 70.69 | 8.22 | |||
Tam (tüm Conv2D katmanları) | 32 | 69.4 | 4.43 | |||
MobilNetV2 | 71.778 | 12.38 | ||||
Seçici (son 3 Conv2D katmanı) | 16, 16, 16 | 70.742 | 6.68 | |||
Seçici (son 3 Conv2D katmanı) | 32, 32, 32 | 70.926 | 7.03 | |||
Tam (tüm Conv2D katmanları) | 32 | 69.744 | 4.05 |
Modeller ImageNet'te eğitildi ve test edildi.
Anahtar kelime tespit
Modeli | Orijinal | Kümelenmiş | ||||
---|---|---|---|---|---|---|
İlk 1 doğruluk (%) | Sıkıştırılmış .tflite boyutu (MB) | Yapılandırma | küme sayısı | İlk 1 doğruluk (%) | Sıkıştırılmış .tflite boyutu (MB) | |
DS-CNN-L | 95.233 | 1.46 | ||||
Tam (tüm Conv2D katmanları) | 32 | 95.09 | 0,39 | |||
Tam (tüm Conv2D katmanları) | 8 | 94.272 | 0,27 |
Model, SpeechCommands v0.02 üzerinde eğitildi ve test edildi.
- Keras modelini .h5 dosyasına serileştirin
- .h5 dosyasını
TFLiteConverter.from_keras_model_file()
kullanarak .tflite'a dönüştürün - .tflite dosyasını bir zip dosyasına sıkıştırın
Örnekler
Keras örneğinde Ağırlık kümelemesine ek olarak aşağıdaki örneklere bakın:
- MNIST el yazısıyla yazılan rakam sınıflandırma veri kümesinde eğitilmiş bir CNN modelinin ağırlıklarını kümeleyin: kod
Ağırlık kümeleme uygulaması Derin Sıkıştırma: Derin Sinir Ağlarını Budama, Eğitimli Niceleme ve Huffman Kodlama ile Sıkıştırma makalesine dayanmaktadır. Eğitimli Niceleme ve Ağırlık Paylaşımı başlıklı 3. bölüme bakın.