Это демонстрирует обрезку классификатора на основе VGG16, который классифицирует небольшой набор данных Dog/Cat.
Это было в состоянии сократить время выполнения процессора на X3 и размер модели на X4.
Для получения более подробной информации вы можете прочитать сообщение в блоге.
На каждом обрезке шага 512 фильтры удаляются из сети.
В этом репозитории используется загрузчик изображений Pytorch, поэтому он предполагает, что изображения находятся в другом каталоге для каждой категории.
Тренироваться
......... собаки
......... кошки
Тест
......... собаки
......... кошки
Изображения были сделаны отсюда, но вы должны попробовать обучить это на своих собственных данных и посмотреть, работает ли это!
Обучение: python finetune.py --train
Обрезка: python finetune.py --prune
Измените обрезку, чтобы сделать это за один проход. В настоящее время каждый из 512 фильтров обрезается последовательно. for layer_index, filter_index in prune_targets: model = prune_vgg16_conv_layer(model, layer_index, filter_index)
Это неэффективно, поскольку выделение новых слоев, особенно полностью подключенных слоев с большим количеством параметров, является медленным.
В принципе это можно сделать за один проход.
Измените prune_vgg16_conv_layer, чтобы поддержать дополнительные архитектуры. Самым непосредственным будет VGG с партийной нормой.