Cela démontre l'élagage d'un classificateur basé sur VGG16 qui classe un petit ensemble de données chien / chat.
Cela a pu réduire le temps d'exécution du CPU de x3 et la taille du modèle par x4.
Pour plus de détails, vous pouvez lire le billet de blog.
À chaque élagage, les filtres 512 sont supprimés du réseau.
Ce référentiel utilise le chargeur Pytorch ImageFolder, il suppose donc que les images sont dans un répertoire différent pour chaque catégorie.
Former
......... chiens
......... CATS
Test
......... chiens
......... CATS
Les images ont été prises à partir d'ici, mais vous devriez essayer de former cela sur vos propres données et voir si cela fonctionne!
Formation: python finetune.py --train
Élagage: python finetune.py --prune
Changez l'élagage à faire en une seule passe. Actuellement, chacun des 512 filtres est taillé séquentiellement. for layer_index, filter_index in prune_targets: model = prune_vgg16_conv_layer(model, layer_index, filter_index)
Ceci est inefficace car l'allocation de nouvelles couches, en particulier les couches entièrement connectées avec beaucoup de paramètres, est lente.
En principe, cela peut être fait en un seul pass.
Modifiez Prune_VGG16_CONV_LAYER pour prendre en charge les architectures supplémentaires. Le plus immédiat serait VGG avec une norme par lots.