2017-05-18 5 views
0

Je suis nouveau à la flamme et je veux créer une fonction de perte personnalisée dans la flamme qui est une modification de ClassNLLCriterion. Concrètement, la perte ClassNLLCriterion est:Modification ClassNLLCriterion Torch

loss(x, class) = -x[class] 

Je veux modifier ce soit:

loss(x, class) = -x[class] + F(x) 

F(x) est une fonction qui ressemble x dans une table (comme une clé) et renvoie sa valeur.

Ma question est, quelle est la bonne façon de mettre en œuvre ce critère personnalisé? La fonction updateOutput() semble simple, mais comment puis-je mettre en œuvre la fonction updateGradInput()?

+1

quel genre de table est 'f'? Cela ne semble pas différentiable ... – fonfonx

+0

@fonfonx Vous avez raison, 'F' n'est pas différentiable. Quelle est la meilleure stratégie dans ce cas? Est-il logique de traiter F (x) comme une constante? – braindead

+0

Je ne sais pas ce que tu veux faire avec ce 'F', et combien ses valeurs varient. Je suppose que vous pourriez essayer de traiter 'F' comme une constante, mais vous perdez en quelque sorte l'utilité de cette fonction' F' je pense. Peut-être pourriez-vous essayer de trouver une fonction différentiable approximant 'F' ... – fonfonx

Répondre