Как исправить: RuntimeWarning

Одно предупреждение, с которым вы можете столкнуться в Python:

image

Когда вы сталкиваетесь с этим предупреждением, у вас есть два варианта:

  1. Не обращайте внимания.

  2. Полностью отключите предупреждение.

В следующем примере показано, как устранить это предупреждение на практике.

Как воспроизвести предупреждение

Предположим, мы выполняем следующий расчет в 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 

Обратите внимание, что NumPy выполняет вычисления (результат равен 0,0), но по-прежнему печатает RuntimeWarning .

Это предупреждение выводится, потому что значение np.exp(1140) представляет e 1140 , что является массивным числом.

В основном мы просили NumPy выполнить следующие вычисления:

  • 1 / (1 + массивное число)

Это можно сократить до:

  • 1 / массивное число

Фактически это 0, поэтому NumPy вычислил результат равным 0.0 .

Как подавить предупреждение Если мы хотим, мы можем использовать пакет warnings для подавления предупреждений следующим образом:

import numpy as np
import warnings

#suppress warnings
warnings. filterwarnings('ignore')

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

0.0

Обратите внимание, что NumPy выполняет вычисления и не отображает RuntimeWarning.

Примечание. Как правило, предупреждения могут быть полезны для определения фрагментов кода, выполнение которых занимает много времени, поэтому будьте очень избирательны при принятии решения об отключении предупреждений.

Written on March 28, 2023
  • Возврат на главную страницу