Come risolvere il problema: runtimewarning: rilevato overflow nell'exp


Un avviso che potresti incontrare in Python è:

 RuntimeWarning: overflow encountered in exp

Questo avviso si verifica quando si utilizza la funzione exp NumPy, ma si utilizza un valore troppo grande per essere gestito.

È importante notare che questo è solo un avviso e NumPy eseguirà comunque il calcolo richiesto, ma fornisce l’avviso per impostazione predefinita.

Quando incontri questo avviso, hai due opzioni:

1. Ignoralo.

2. Rimuovere completamente l’avviso.

L’esempio seguente mostra come rispondere concretamente a questo avviso.

Come riprodurre l’avviso

Supponiamo di eseguire il seguente calcolo in Python:

 import numpy as np

#perform some calculation
print (1/(1+np. exp (1140)))

0.0

/srv/conda/envs/notebook/lib/python3.7/site-packages/ipykernel_launcher.py:3:
RuntimeWarning: overflow encountered in exp

Tieni presente che NumPy esegue il calcolo (il risultato è 0.0) ma stampa comunque RuntimeWarning .

Questo avviso viene stampato perché il valore np.exp(1140) rappresenta e 1140 , che è un numero enorme .

Fondamentalmente abbiamo chiesto a NumPy di eseguire il seguente calcolo:

  • 1 / (1 + numero massiccio)

Questo può essere ridotto a:

  • 1/numero massiccio

È effettivamente 0, motivo per cui NumPy ha calcolato il risultato come 0.0 .

Come rimuovere l’avviso

Se vogliamo, possiamo usare il pacchetto wars per sopprimere gli avvisi come segue:

 import numpy as np
import warnings

#remove warnings
warnings. filterwarnings (' ignore ')

#perform some calculation
print (1/(1+np. exp (1140)))

0.0

Tieni presente che NumPy esegue il calcolo e non visualizza un RuntimeWarning.

Nota : in generale, gli avvisi possono essere utili per identificare parti di codice la cui esecuzione richiede molto tempo. Quindi sii molto selettivo quando decidi di rimuovere gli avvisi.

Risorse addizionali

I seguenti tutorial spiegano come correggere altri errori comuni in Python:

Come correggere l’errore chiave nei Panda
Come risolvere il problema: ValueError: impossibile convertire float NaN in int
Come risolvere il problema: ValueError: non è stato possibile trasmettere gli operandi con le forme

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *