การตรวจสอบความถูกต้องเชิงตัวเลข
ตรวจสอบผลลัพธ์เทียบกับข้อมูลอ้างอิง
การตรวจสอบความถูกต้องเชิงตัวเลข เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การจำลองเทนเซอร์ใน Mojo
- การสร้าง Matmul ทีละขั้นตอน
- การปรับปรุงผลคูณภายใน
- การตรวจสอบความถูกต้องเชิงตัวเลข