วิธีแก้ไข: 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: ตัวถูกดำเนินการไม่สามารถออกอากาศด้วยรูปร่างได้

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *