Як виправити: runtimewarning: виявлено переповнення в exp


Попередження, яке ви можете зустріти в Python:

 RuntimeWarning: overflow encountered in exp

Це попередження з’являється, коли ви використовуєте функцію exp NumPy, але використовуєте надто велике значення для обробки.

Важливо зауважити, що це лише попередження , і NumPy все одно виконає обчислення, які ви запитали, але надає попередження за замовчуванням.

Коли ви натрапите на це попередження, у вас є два варіанти:

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 .

Як прибрати попередження

Якщо ми хочемо, ми можемо використовувати пакет попереджень , щоб придушити попередження наступним чином:

 import numpy as np
import warnings

#remove warnings
warnings. filterwarnings (' ignore ')

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

0.0

Зауважте, що NumPy виконує обчислення та не відображає попередження RuntimeWarning.

Примітка : загалом попередження можуть бути корисними для виявлення фрагментів коду, виконання яких потребує багато часу. Тому будьте дуже вибірковими, вирішуючи видалити попередження.

Додаткові ресурси

У наступних посібниках пояснюється, як виправити інші типові помилки в Python:

Як виправити KeyError у Pandas
Як виправити: ValueError: неможливо перетворити float NaN на int
Як виправити: ValueError: операнди не можна транслювати з фігурами

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *