Como corrigir: runtimewarning: overflow encontrado em exp


Um aviso que você pode encontrar em Python é:

 RuntimeWarning: overflow encountered in exp

Este aviso ocorre quando você usa a função exp NumPy, mas usa um valor que é muito grande para ser manipulado.

É importante observar que isso é apenas um aviso e o NumPy ainda realizará o cálculo solicitado, mas fornece o aviso por padrão.

Ao encontrar esse aviso, você tem duas opções:

1. Ignore isso.

2. Remova completamente o aviso.

O exemplo a seguir mostra como responder a esse aviso na prática.

Como reproduzir o aviso

Suponha que realizemos o seguinte cálculo em 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

Observe que NumPy faz o cálculo (o resultado é 0,0), mas ainda imprime RuntimeWarning .

Este aviso é impresso porque o valor np.exp(1140) representa e 1140 , que é um número enorme .

Basicamente pedimos ao NumPy para realizar o seguinte cálculo:

  • 1 / (1 + número massivo)

Isso pode ser reduzido para:

  • 1 / número enorme

Na verdade, é 0, e é por isso que o NumPy calculou o resultado como 0.0 .

Como remover o aviso

Se quisermos, podemos usar o pacote warnings para suprimir os avisos da seguinte forma:

 import numpy as np
import warnings

#remove warnings
warnings. filterwarnings (' ignore ')

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

0.0

Observe que NumPy realiza o cálculo e não exibe RuntimeWarning.

Nota : Em geral, os avisos podem ser úteis na identificação de trechos de código que demoram muito para serem executados. Portanto, seja muito seletivo ao decidir remover os avisos.

Recursos adicionais

Os tutoriais a seguir explicam como corrigir outros erros comuns em Python:

Como corrigir KeyError em Pandas
Como corrigir: ValueError: não é possível converter float NaN em int
Como corrigir: ValueError: os operandos não puderam ser transmitidos com formas

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *