บันทึกและโหลดด้วย state_dict
บันทึกจุดตรวจสอบน้ำหนักเพื่อกลับมาทำต่อภายหลัง
บันทึกและโหลดด้วย state_dict เป็นบทเรียน Deep Learning Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Deep Learning Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Deep Learning Academy มีบทเรียนทั้งหมด 4 บทเรียน
เหตุผลที่จุดตรวจสำคัญ
การฝึกอาจใช้เวลาหลายชั่วโมง และข้อขัดข้องก็เกิดขึ้นได้ การบันทึกความคืบหน้าเป็นจุดตรวจช่วยให้คุณหยุด ทำต่อ หรือส่งมอบโมเดลได้โดยไม่ต้องฝึกใหม่ตั้งแต่ต้น
สิ่งที่ state_dict เก็บไว้
state_dict ของโมเดลคือพจนานุกรมธรรมดาที่จับคู่ชื่อชั้นแต่ละชั้นกับเทนเซอร์ที่เรียนรู้แล้ว ซึ่งก็คือทุกสิ่งที่โมเดลเรียนรู้มาและจัดเก็บไว้พร้อมใช้งาน
model.state_dict()บันทึกน้ำหนัก
ใช้ torch.save กับ state_dict เพื่อเขียนน้ำหนักลงดิสก์ ส่วนขยาย .pt หรือ .pth เป็นรูปแบบที่นิยมใช้สำหรับไฟล์เหล่านี้
torch.save(model.state_dict(), 'model.pt')โหลดน้ำหนักกลับมา
หากต้องการกู้คืน ให้อ่านไฟล์ด้วย torch.load แล้วใส่ข้อมูลลงในโมเดลโดยใช้ load_state_dict โครงสร้างโมเดลต้องตรงกับโครงสร้างที่บันทึกไว้
model.load_state_dict(torch.load('model.pt'))สร้างโครงสร้างโมเดลขึ้นมาก่อน
state_dict เก็บตัวเลข ไม่ได้เก็บคลาสไว้ด้วย คุณต้องสร้างออบเจกต์โมเดลเดียวกันในโค้ดก่อน จึงจะโหลดน้ำหนักเข้าไปได้
model = MyNet()
model.load_state_dict(torch.load('model.pt'))ใช้โหมดประเมินหลังโหลด
ทันทีหลังโหลดเพื่ออนุมาน ให้เรียกใช้ model.eval() คำสั่งนี้จะเปลี่ยนการดรอปเอาต์และการทำให้เป็นปกติของกลุ่มข้อมูลให้ทำงานในลักษณะการพยากรณ์ เพื่อให้ผลลัพธ์ถูกต้อง
model.eval()บันทึกตัวปรับเหมาะด้วย
หากต้องการกลับมาฝึกต่ออย่างแท้จริง ให้บันทึก state_dict ของตัวปรับเหมาะด้วย โดยเก็บค่าโมเมนตัมและสถิติการปรับแบบปรับได้ ซึ่งไม่เช่นนั้นจะถูกรีเซ็ตเป็นศูนย์
torch.save(optimizer.state_dict(), 'opt.pt')รวมจุดตรวจฉบับสมบูรณ์
รวมโมเดล ตัวปรับเหมาะ และยุคปัจจุบันไว้ในพจนานุกรมจุดตรวจเดียว ตอนนี้ไฟล์เดียวก็สามารถกู้คืนเซสชันการฝึกทั้งหมดได้
ckpt = {'epoch': epoch, 'model': model.state_dict(), 'opt': optimizer.state_dict()}
torch.save(ckpt, 'ckpt.pt')ฝึกต่อจากจุดตรวจ
โหลดชุดข้อมูลที่รวมไว้ แล้วกู้คืนแต่ละส่วนตามลำดับ การอ่านยุคที่บันทึกไว้ช่วยให้คุณวนรอบต่อจากจุดที่หยุดไว้ได้พอดี
ckpt = torch.load('ckpt.pt')
model.load_state_dict(ckpt['model'])
optimizer.load_state_dict(ckpt['opt'])แมปไปยังอุปกรณ์ที่ถูกต้อง
หากบันทึกบน GPU แล้วโหลดบน CPU ให้ส่งตำแหน่งการแมปไปยัง torch.load วิธีนี้จะย้ายน้ำหนักไปยังอุปกรณ์ที่เครื่องของคุณมีอยู่จริง
torch.load('model.pt', map_location='cpu')บันทึกตัวที่ดีที่สุด ไม่ใช่ตัวสุดท้าย
ติดตามค่าความสูญเสียจากการตรวจสอบ และเขียนทับจุดตรวจเฉพาะเมื่อค่าดีขึ้น วิธีนี้ช่วยให้คุณเก็บโมเดลที่ดีที่สุดไว้ ไม่ใช่โมเดลที่ยุคสุดท้ายสร้างขึ้น
ตรวจสอบอย่างรวดเร็ว
คุณบันทึกไว้เพียง model.state_dict() สิ่งใดต้องมีอยู่ก่อนจึงจะโหลดได้
สรุปทบทวน
บันทึกน้ำหนักด้วย state_dict และ torch.save สร้างโมเดลขึ้นมาใหม่เพื่อโหลดน้ำหนัก และรวมตัวปรับเหมาะกับยุคไว้เพื่อกลับมาฝึกต่อทั้งหมด เก็บตัวที่ดีที่สุดไว้ 💾
เรียนรู้ Python ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 30
- บทเรียน
- 120
คำถามที่พบบ่อย
บทเรียน “บันทึกและโหลดด้วย state_dict” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “บันทึกและโหลดด้วย state_dict” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Deep Learning Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Deep Learning Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “บันทึกและโหลดด้วย state_dict”
บันทึกจุดตรวจสอบน้ำหนักเพื่อกลับมาทำต่อภายหลัง คุณปฏิบัติ Deep Learning Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Deep Learning Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Deep Learning Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “บันทึกและโหลดด้วย state_dict” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Deep Learning Academy นี้ได้ไหม
ได้ บทเรียน Deep Learning Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- แบ่งชุดฝึก ชุดตรวจสอบ และชุดทดสอบ
- วงรอบยุคพร้อมการตรวจสอบ
- บันทึกและโหลดด้วย state_dict
- หยุดก่อนกำหนดเมื่อค่าความสูญเสียชุดตรวจสอบเพิ่มขึ้น