Mojo Academy · บทเรียน

การตรวจสอบความถูกต้องเชิงตัวเลข

ตรวจสอบผลลัพธ์เทียบกับข้อมูลอ้างอิง

บทเรียน 4 จาก 413 ขั้นตอน

การตรวจสอบความถูกต้องเชิงตัวเลข เป็นบทเรียน Mojo Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Mojo Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Mojo Academy มีบทเรียนทั้งหมด 4 บทเรียน

เร็วแต่ผิดก็ไม่มีประโยชน์

เคอร์เนลที่ปรับให้เหมาะสมจะมีความหมายก็ต่อเมื่อคำนวณคำตอบได้ถูกต้อง ตรวจสอบให้แน่ใจก่อน ยืนยันว่าการเร่งความเร็วนั้นเชื่อถือได้

เก็บข้อมูลอ้างอิงไว้

เก็บเวอร์ชันที่เรียบง่ายและเห็นได้ชัดว่าถูกต้องไว้ เวอร์ชันนี้คือ ข้อมูลอ้างอิงและเป็นแหล่งคำตอบที่เคอร์เนลเร็วทุกตัวต้องตรงกัน

จำนวนจุดลอยตัวไม่แม่นยำแน่นอน

การคำนวณเลขจุดลอยตัวมีการปัดเศษ ดังนั้นการเปลี่ยนลำดับการบวกอาจทำให้ตัวเลขท้ายสุดเปลี่ยนไป ผลลัพธ์ที่ปรับให้เหมาะสมอาจต่างกันเล็กน้อยโดยไม่ถือว่า ผิด

หลีกเลี่ยงการเท่ากันแบบตรงตัว

เนื่องจากมีการปัดเศษ อย่าเปรียบเทียบเลขจุดลอยตัวด้วย == ความแตกต่างเพียงเล็กน้อยอาจทำให้โค้ดที่ถูกต้องดูเหมือน เสียหาย

if fast == ref:  # fragile, avoid

เปรียบเทียบด้วยค่าคลาดเคลื่อนที่ยอมรับได้

ให้ตรวจสอบแทนว่าค่าอยู่ใกล้กันภายใน ค่าคลาดเคลื่อนขนาดเล็กหรือไม่ หากช่องว่างต่ำกว่าเอปไซลอน ให้ถือว่าค่าเท่ากัน

if abs(fast - ref) <= 1e-5:
    pass  # close enough

ค่าคลาดเคลื่อนสัมบูรณ์กับสัมพัทธ์

ค่าคลาดเคลื่อนสัมบูรณ์คือช่องว่างจริง ส่วนค่าคลาดเคลื่อน สัมพัทธ์จะปรับตามขนาดของค่า ตัวเลขขนาดใหญ่ต้องใช้การตรวจสอบแบบสัมพัทธ์เพื่อให้การเปรียบเทียบเป็นธรรม

rel = abs(fast - ref) / abs(ref)

ตรวจสอบทุกสมาชิก

วนลูปผ่านผลลัพธ์ทั้งหมดและตรวจสอบแต่ละเซลล์ หากมี ความไม่ตรงกันที่เกินค่าคลาดเคลื่อน แสดงว่าการปรับให้เหมาะสมทำให้เกิดปัญหา

for i in range(n):
    if abs(fast[i] - ref[i]) > tol:
        print("mismatch at", i)

ติดตามช่องว่างที่มากที่สุด

บันทึกความแตกต่างที่มากที่สุดที่พบ ค่าคลาดเคลื่อนสูงสุดของสมาชิกทั้งหมดเป็นตัวเลขเดียวที่บอกสถานะของเคอร์เนลได้อย่างชัดเจน

ทดสอบกรณีขอบ

ลองใช้อินพุตว่าง สมาชิกเพียงหนึ่งตัว และขนาดแปลก ๆ ที่หารด้วยความกว้าง SIMD ไม่ลงตัว กรณีขอบจะเปิดเผยบั๊กที่ ส่วนท้ายได้อย่างรวดเร็ว

ใช้คำตอบที่ทราบอยู่แล้ว

คูณด้วยเมทริกซ์ เอกลักษณ์หรือหาผลรวมของเวกเตอร์ที่มีแต่เลขหนึ่ง อินพุตที่คาดเดาได้ทำให้คุณตรวจคำตอบด้วยมือได้

ทำให้การตรวจสอบเป็นอัตโนมัติ

ห่อการตรวจสอบไว้ในการทดสอบขนาดเล็กที่แจ้งข้อผิดพลาดอย่างชัดเจนเมื่อพบความไม่ตรงกัน เรียกใช้หลังการเปลี่ยนแปลงทุกครั้ง เพื่อไม่ให้ การถดถอยหลุดรอดไป

ตรวจสอบอย่างรวดเร็ว

matmul แบบ SIMD ของคุณต่างจากข้อมูลอ้างอิงอยู่ 0.0000007 คุณควรสรุปอย่างไร

ทบทวน

ตรวจสอบโค้ดที่เร็วกับ ข้อมูลอ้างอิงที่เชื่อถือได้ เปรียบเทียบด้วยค่าคลาดเคลื่อนที่ยอมรับได้แทน == ตรวจสอบกรณีขอบและคำตอบที่ทราบอยู่แล้ว แล้วทำให้กระบวนการเป็นอัตโนมัติ ✅

เริ่มต้นได้ฟรี

เรียนรู้ Mojo ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
30
บทเรียน
120

คำถามที่พบบ่อย

บทเรียน “การตรวจสอบความถูกต้องเชิงตัวเลข” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การตรวจสอบความถูกต้องเชิงตัวเลข” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Mojo Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Mojo Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การตรวจสอบความถูกต้องเชิงตัวเลข”

ตรวจสอบผลลัพธ์เทียบกับข้อมูลอ้างอิง คุณปฏิบัติ Mojo Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Mojo Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Mojo Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “การตรวจสอบความถูกต้องเชิงตัวเลข” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Mojo Academy นี้ได้ไหม

ได้ บทเรียน Mojo Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การจำลองเทนเซอร์ใน Mojo
  2. การสร้าง Matmul ทีละขั้นตอน
  3. การปรับปรุงผลคูณภายใน
  4. การตรวจสอบความถูกต้องเชิงตัวเลข
← กลับไปที่ Mojo Academy