Je travaille sur une approche de classifier incremental de classe d'image en utilisant un CNN comme extracteur de fonctionnalités et un bloc entièrement connecté pour la classification.
Tout d'abord, j'ai effectué un fine-tuning d'un réseau pré-entraîné VGG pour effectuer une nouvelle tâche. Une fois que le réseau est entraîné pour la nouvelle tâche, je stocke quelques exemples pour chaque classe afin d'éviter d'oublier lorsque de nouvelles classes sont disponibles.
Lorsque certaines classes sont disponibles, je dois calculer chaque sortie des exemples inclus les exemples pour les nouvelles classes. Maintenant, en ajoutant des zéros aux sorties pour les anciennes classes et en ajoutant l'étiquette correspondant à chaque nouvelle classe sur les nouvelles sorties de classe, j'ai mes nouvelles étiquettes, c'est-à-dire : si 3 nouvelles classes entrent....
Sortie du type ancienne classe : [0.1, 0.05, 0.79, ..., 0 0 0]
Sortie du type nouvelle classe : [0.1, 0.09, 0.3, 0.4, ..., 1 0 0]
**les dernières sorties correspondent à la classe.
Ma question est, comment puis-je changer la fonction de perte pour une personnalisée afin de m'entraîner pour les nouvelles classes ? La fonction de perte que je veux implémenter est définie comme suit :
où la perte de distillation correspond aux sorties des anciennes classes pour éviter d'oublier, et la perte de classification correspond aux nouvelles classes.
Si vous pouvez me fournir un exemple de code pour changer la fonction de perte dans Keras, ce serait bien.
Merci!!!!!