Personnalisé de perte de fonction dans Keras
Je suis en train de travailler sur une image de la classe-avancement de classificateur approche à l'aide d'un CNN comme un extracteur et entièrement connecté à bloc pour la classification.
Tout d'abord, j'ai fait un réglage fin d'un VGG par réseau formé pour en faire une nouvelle tâche. Une fois le filet est formé de la nouvelle tâche, je stocke quelques exemples pour chaque classe afin d'éviter de l'oublier lorsque de nouvelles classes sont disponibles.
Lorsque certaines classes sont disponibles, j'ai à calculer à chaque sortie des exemplaires inclus le exemplaires pour les nouvelles classes. Maintenant, en ajoutant des zéros pour les sorties pour les anciennes classes et l'ajout de l'étiquette correspondant à chaque nouvelle classe sur les nouvelles catégories de sorties, j'ai mes nouvelles étiquettes, j'.e:
si les 3 nouvelles classes d'entrée....
Vieille classe type de sortie: [0.1, 0.05, 0.79, ..., 0 0 0]
Nouveau type de classe de sortie: [0.1, 0.09, 0.3, 0.4, ..., 1 0 0]
**les dernières sorties correspondent à la classe.
Ma question est, comment je peux changer la perte de la fonction pour une personnalisée pour former de nouvelles classes?
La perte de la fonction que je veux mettre en œuvre est définie comme:
où la distillation perte correspond aux sorties pour les anciennes classes pour éviter de l'oublier, et la classification de la perte correspond à la nouvelles classes.
Si vous pouvez me fournir un exemple de code pour modifier la perte de fonction dans keras, ce serait bien.
Merci!!!!!
OriginalL'auteur Eric | 2017-05-06
Vous devez vous connecter pour publier un commentaire.
Tout ce que vous avez à faire est de définir une fonction pour que, à l'aide de keras backend fonctions pour les calculs. La fonction doit prendre les vraies valeurs et le modèle prédit des valeurs.
Maintenant, puisque je ne suis pas sûr de ce que sont g, q, x un y dans votre fonction, je vais juste créer un exemple de base ici sans se soucier de ce que cela signifie ou si c'est une réelle fonction utile:
Tous backend fonctions peut être vu ici: https://keras.io/backend/
Après que, de compiler votre modèle à l'aide de cette fonction au lieu de l'ordinaire:
Alors, comment ne keras carte personnalisée perte des arguments de la fonction? Faut-il les sorties du modèle et de l'appliquer implicitement à la customLoss? Comme CustomLoss(*model_outputs)?
custom_loss(y_train_converted_to_tensor, model_outputs_tensor)
OriginalL'auteur Daniel Möller