Esto demuestra podar un clasificador basado en VGG16 que clasifica un pequeño conjunto de datos de perro/gato.
Esto pudo reducir el tiempo de ejecución de CPU por X3 y el tamaño del modelo por X4.
Para más detalles puede leer la publicación del blog.
En cada paso de la poda se eliminan los filtros 512 de la red.
Este repositorio utiliza el cargador de Folder Pytorch, por lo que supone que las imágenes están en un directorio diferente para cada categoría.
Tren
......... perros
......... gatos
Prueba
......... perros
......... gatos
¡Las imágenes fueron tomadas desde aquí, pero debe intentar entrenar esto en sus propios datos y ver si funciona!
Entrenamiento: python finetune.py --train
Poda: python finetune.py --prune
Cambie la poda que se realizará en un solo pase. Actualmente, cada uno de los 512 filtros se poda secuencia. for layer_index, filter_index in prune_targets: model = prune_vgg16_conv_layer(model, layer_index, filter_index)
Esto es ineficiente ya que la asignación de nuevas capas, especialmente capas completamente conectadas con muchos parámetros, es lento.
En principio, esto se puede hacer en un solo pase.
Cambie Prune_VGG16_Conv_Layer para admitir arquitecturas adicionales. El más inmediato sería VGG con norma por lotes.