RuntimeWarning: valeur invalide rencontrées dans la plus grande

J'ai essayé de mettre en œuvre soft-max avec le code suivant (out_vec est un numpy vecteur de chars):

numerator = np.exp(out_vec)
denominator = np.sum(np.exp(out_vec))
out_vec = numerator/denominator

Cependant, j'ai eu une erreur de dépassement de capacité en raison de np.exp(out_vec). Donc, j'ai vérifié (manuellement) que la limite supérieure de la np.exp() est, et a constaté que np.exp(709) est un nombre, mais np.exp(710) est considéré comme np.inf. Ainsi, pour essayer d'éviter l'erreur de dépassement de capacité, j'ai modifié mon code comme suit:

out_vec[out_vec > 709] = 709 #prevent np.exp overflow
numerator = np.exp(out_vec)
denominator = np.sum(np.exp(out_vec))
out_vec = numerator/denominator

Maintenant, je reçois un autre message d'erreur:

RuntimeWarning: invalid value encountered in greater out_vec[out_vec > 709] = 709

Quel est le problème avec la ligne j'ai ajouté? J'ai regardé jusqu'à cette erreur, et tout ce que je trouve que les gens des conseils sur la façon d'ignorer l'erreur. Simplement en ignorant l'erreur de ne pas m'aider, parce que chaque fois que mon code est confronté à cette erreur, il ne donne pas l'habitude résultats.

out_vec tableau contient NaN ou Inf valeurs?
savez-vous comment j'ai pu reprendre la mise en garde afin que je puisse vérifier?
Essayez np.isnan(np.sum(out_vec))
oui, je voulais dire comment fait catch (j'appelle cela du code des milliers de fois, je ne peux pas imprimer la sortie).
S'il vous plaît, voir ma réponse

OriginalL'auteur Cheshie | 2016-06-06