TL;DR
Spécifiez la valeur minimale (valeur maximale) avec np.clip
!
Dans le type float de python, la valeur inférieure à «1e-323» sera 0,0. Le type flottant de python peut aller de -1,7976931348623157e + 308 à 1,9796931348623157e + 308 dans de nombreux environnements.
$ python
>>> a = 1e-323
>>> b = 1e-324
>>> print(a)
1e-323
>>> print(b)
0.0
Puisque b devient 0,0, si vous vous connectez pour ce b, une erreur se produira et il deviendra -inf. De plus, un avertissement de 0% apparaîtra.
>>> import numpy as np
>>> b = 1e-324
>>> np.log(b)
__main__:1: RuntimeWarning: divide by zero encountered in log
-inf
Spécifiez la valeur minimale (valeur maximale) avec np.clip
.
>>> import numpy as np
>>> b = 1e-324
>>> np.log(np.clip(a=b, a_min=1e-323, a_max=1e+10))
-743.7469247408213
En spécifiant la valeur minimale (valeur maximale), il sera possible de calculer même si une valeur en dehors de la plage flottante est entrée. Cependant, les valeurs qui dépassent la valeur minimale (valeur maximale) sont arrondies aux valeurs définies, ce qui présente l'inconvénient d'augmenter l'erreur.
Recommended Posts