J'ai l'expression suivante: log = np.sum(np.nan_to_num(-y*np.log(a+ 1e-7)-(1-y)*np.log(1-a+ 1e-7)))
cela me donne l'avertissement suivant:
RuntimeWarning: invalid value encountered in log
log = np.sum(np.nan_to_num(-y*np.log(a+ 1e-7)-(1-y)*np.log(1-a+ 1e-7)))
Je ne comprends pas quelle pourrait être la valeur invalide ni pourquoi je l'obtiens. Toute aide est appréciée.
NOTE : Il s'agit d'une fonction de coût d'entropie croisée où j'ai ajouté 1e-7
pour éviter d'avoir des zéros dans le journal. y
& a
sont des tableaux numpy et numpy
est importé sous la forme np
.
Vous avez probablement encore des valeurs négatives à l'intérieur du journal, ce qui donne nan avec des nombres réels.
a
et y
devraient représenter une probabilité comprise entre 0 et 1, vous devez donc vérifier pourquoi vous avez des valeurs plus petites/plus grandes. L'ajout de 1e-7 montre qu'il y a quelque chose de louche, parce que np.log(0)
donne -inf
, dont je pense que c'est la valeur que vous voulez.
Vous pouvez utiliser math.log()
en remplaçant numpy.log()
, ce qui pourrait générer une erreur
>>> import numpy
>>> numpy.log(0)
-inf
>>> numpy.__version__
'1.3.0'
>>> import math
>>> math.log(0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: math domain error