สืบทอดจาก nn.Module: __init__ และ forward
โครงร่างโมเดล PyTorch มาตรฐาน
สืบทอดจาก nn.Module: __init__ และ forward เป็นบทเรียน Deep Learning Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Deep Learning Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Deep Learning Academy มีบทเรียนทั้งหมด 4 บทเรียน
โมเดลก็คือคลาส
ใน PyTorch โมเดลทุกตัวคือคลาส Python คุณสร้างโมเดลของตนเองโดยสืบทอดจาก nn.Module ซึ่งเป็นคลาสพื้นฐานที่ขับเคลื่อนเครือข่ายทั้งหมด
สองเมธอดเป็นตัวขับเคลื่อนหลัก
โมเดลต้องการเพียงสองเมธอดเพื่อทำงาน: __init__ ใช้เตรียมเลเยอร์ และ forward ใช้อธิบายว่าข้อมูลไหลผ่านเลเยอร์เหล่านั้นอย่างไร
เรียก super().__init__ เสมอ
บรรทัดแรกสุดภายใน __init__ ต้องเรียก super().__init__() การทำเช่นนี้จะเชื่อมโมเดลของคุณเข้ากับ PyTorch และทำให้ PyTorch ติดตามทุกอย่างได้ 🔌
class Net(nn.Module):
def __init__(self):
super().__init__()กำหนดเลเยอร์ใน __init__
ภายใน __init__ ให้สร้างเลเยอร์และจัดเก็บไว้เป็นแอตทริบิวต์ การบันทึกเลเยอร์ไว้บน self จะทำให้ PyTorch ลงทะเบียนเลเยอร์เหล่านั้นโดยอัตโนมัติ
self.fc1 = nn.Linear(4, 8)
self.fc2 = nn.Linear(8, 2)forward คือสูตร
เมธอด forward รับ tensor อินพุตและส่งคืนเอาต์พุต เมธอดนี้ระบุลำดับที่แน่นอนว่าเลเยอร์ของคุณจะประมวลผลข้อมูลอย่างไร
def forward(self, x):
x = self.fc1(x)
return self.fc2(x)อย่าเรียก forward โดยตรง
ให้เรียกโมเดลเหมือนฟังก์ชัน ไม่ใช่ model.forward(x) การใช้ model(x) จะเรียกใช้ hooks และการจัดการเบื้องหลังที่ forward เพียงอย่างเดียวข้ามไป
out = model(x) # preferred
# not: out = model.forward(x)เลเยอร์กลายเป็นพารามิเตอร์
เนื่องจากเลเยอร์อยู่บน self weight ของเลเยอร์จึงถูกรวบรวมเป็น พารามิเตอร์ของโมเดล และ Optimizer จะอัปเดตสิ่งเหล่านี้โดยเฉพาะ
สร้างอินสแตนซ์แล้วใช้งาน
สร้างโมเดลหนึ่งครั้ง แล้วป้อน tensor ให้โมเดลได้หลายครั้ง ทุกการเรียกจะไหลผ่าน weight ที่เรียนรู้ชุดเดิม
model = Net()
prediction = model(sample_input)ขนาดต้องสอดคล้องกัน
ขนาดเอาต์พุตของแต่ละเลเยอร์ต้องตรงกับขนาดอินพุตของเลเยอร์ถัดไป วางแผน มิติเหล่านี้ขณะที่ข้อมูลไหลผ่าน forward
เหตุใดรูปแบบนี้จึงได้ผล
การสืบทอดคลาสช่วยแยกการตั้งค่าออกจากการไหลของข้อมูลได้อย่างเป็นระเบียบ โครงร่างที่เรียบง่ายแบบเดียวกันนี้ขยายจากเครือข่ายขนาดเล็กไปสู่เครือข่ายขนาดใหญ่ได้
ยืดหยุ่นโดยการออกแบบ
ภายใน forward คุณสามารถแยกแขนง ปรับรูปร่างใหม่ หรือใช้เลเยอร์ซ้ำได้อย่างอิสระ นี่คือเหตุผลที่คลาส nn.Module แบบกำหนดเองทรงพลังมาก 💪
ตรวจสอบอย่างรวดเร็ว
ลองคิดดูว่าเมธอดใดเป็นตัวกำหนดว่าข้อมูลจะเคลื่อนผ่านเครือข่ายอย่างไร
สรุป
คุณสร้างโมเดลโดยสืบทอดจาก nn.Module กำหนดเลเยอร์ใน __init__ และกำหนดการไหลของข้อมูลใน forward จากนั้นเพียงเรียก model(x) 🎯
เรียนรู้ Python ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 30
- บทเรียน
- 120
คำถามที่พบบ่อย
บทเรียน “สืบทอดจาก nn.Module: __init__ และ forward” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “สืบทอดจาก nn.Module: __init__ และ forward” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Deep Learning Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Deep Learning Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “สืบทอดจาก nn.Module: __init__ และ forward”
โครงร่างโมเดล PyTorch มาตรฐาน คุณปฏิบัติ Deep Learning Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Deep Learning Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Deep Learning Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “สืบทอดจาก nn.Module: __init__ และ forward” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Deep Learning Academy นี้ได้ไหม
ได้ บทเรียน Deep Learning Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- สืบทอดจาก nn.Module: __init__ และ forward
- วางชั้นเชิงเส้นซ้อนกัน
- nn.Sequential สำหรับโมเดลอย่างรวดเร็ว
- ตรวจสอบพารามิเตอร์และรูปร่างของชั้น