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
Vous devez vous connecter pour publier un commentaire.
Votre problème est causé par le
NaN
ouInf
éléments dans votreout_vec
tableau. Vous pouvez utiliser le code suivant pour éviter ce problème:ou vous pouvez utiliser le code suivant pour quitter le
NaN
les valeurs de votre tableau:S'il vous plaît, voir mise à jour
OriginalL'auteur kvorobiev
De l'OMI, le meilleur moyen serait d'utiliser un plus numériquement stable de la mise en œuvre de la somme des exponentielles.
OriginalL'auteur Ramin Barati
Dans mon cas, l'avertissement ne s'affiche pas lors de l'appel de cette avant de la comparaison (j'ai eu des valeurs NaN arriver comparé)
OriginalL'auteur juerg