En attendant le prochain cours d'Andrew Ng sur Coursera, j'essaie de programmer sur Python un classifieur avec la fonction softmax sur la dernière couche pour avoir les différentes probabilités. Cependant, lorsque j'essaie de l'utiliser sur l'ensemble de données CIFAR-10 (entrée: (3072, 10000)), je rencontre un débordement lorsqu'il calcule les exponentielles. En effet, j'ai des nombres comme 5000, 10000 ou 25000.
J'ai déjà essayé deux choses:
- soustraire une constante à la matrice avant de calculer l'exponentielle mais j'ai une grande différence entre les nombres donc je ne peux pas faire ça.
- calculer l'exponentielle du log de la matrice mais elle déborde toujours.
Quelqu'un peut-il m'aider à éviter ce problème?
Je vous remercie
MODIFIER: https://github.com/Kentena/softmax/
Réponses:
Observe ceci
De toute évidence, il n'est pas vrai queexi=exi−m , mais les versions normalisées sont les mêmes. Votre problème est que lexi s sont trop gros, donc soustrayez le même nombre m avant de prendre le softmax. Parfois, les gens se mettentm être le maximum de tous les xi s.
la source