Dies zeigt, dass ein VGG16 -basierter Klassifikator beschnitten wird, der einen kleinen Hund/Katzen -Datensatz klassifiziert.
Dies war in der Lage, die CPU -Laufzeit um X3 und die Modellgröße um X4 zu reduzieren.
Für weitere Details können Sie den Blog -Beitrag lesen.
Bei jedem Schnitt werden Schritt 512 Filter aus dem Netzwerk entfernt.
Dieses Repository verwendet den Pytorch ImageFolder Loader, sodass die Bilder für jede Kategorie in einem anderen Verzeichnis sind.
Zug
......... Hunde
......... Katzen
Prüfen
......... Hunde
......... Katzen
Die Bilder wurden von hier aus aufgenommen, aber Sie sollten versuchen, dies für Ihre eigenen Daten zu trainieren und zu prüfen, ob es funktioniert!
Training: python finetune.py --train
Beschneidung: python finetune.py --prune
Ändern Sie das Schnitt in einem Pass. Derzeit wird jeder der 512 Filter sequentlich beschnitten. for layer_index, filter_index in prune_targets: model = prune_vgg16_conv_layer(model, layer_index, filter_index)
Dies ist ineffizient, da die Zuweisung neuer Schichten, insbesondere vollständig verbundene Ebenen mit vielen Parametern, langsam ist.
Grundsätzlich kann dies in einem einzigen Pass erfolgen.
Ändern Sie Prune_VGG16_Conv_Layer, um zusätzliche Architekturen zu unterstützen. Die unmittelbarste wäre VGG mit Stapelnorm.