Як виправити: 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: операнди не можна транслювати з фігурами